Spaces:
Sleeping
Sleeping
File size: 2,637 Bytes
463f868 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | print("STARTING DEBUG SCRIPT")
import numpy as np
from engine.game.game_state import initialize_game
from engine.models.card import MemberCard
from engine.models.enums import Area, Group
def debug_ability_2():
# {{live_start.png|ライブ開始時}}自分のステージの左サイドエリアにいる『Liella!』のメンバーが{{heart_02.png|heart02}}を3つ以上持つ場合、そのメンバーは、ライブ終了時まで、{{icon_blade.png|ブレード}}{{icon_blade.png|ブレード}}を得る。
state = initialize_game(use_real_data=True)
p0 = state.players[0]
card_no = "PL!SP-bp4-024-L"
card_id = -1
for cid, c in state.live_db.items():
if c.card_no == card_no:
card_id = cid
break
print(f"Found card_id: {card_id}")
# Setup Left Side Member (Area.LEFT = 0)
left_id = 8888
# Liella member, has Heart02 x3 (Red hearts)
hearts = np.zeros(7, dtype=np.int32)
hearts[1] = 3 # 3 Red Hearts
left_member = MemberCard(
card_id=left_id,
card_no="test-left",
name="Kekeru",
cost=2,
hearts=hearts,
blade_hearts=np.zeros(7, dtype=np.int32),
blades=1,
groups=[Group.LIELLA],
)
state.member_db[left_id] = left_member
p0.stage[Area.LEFT] = left_id
p0.live_zone = [card_id]
# Ability 2
ability = state.live_db[card_id].abilities[1]
print(f"Ability trigger: {ability.trigger}")
# Execute
print("DEBUG: Triggering Ability 2")
state.triggered_abilities.append((0, ability, {"card_id": card_id}))
state._process_rule_checks() # This processes the ability queue
print("DEBUG: Finished _process_rule_checks Ability 2")
# Check Buff
base_blades = left_member.blades
breakdown = p0.get_blades_breakdown(Area.LEFT, state.member_db)
current_blades = p0.get_effective_blades(Area.LEFT, state.member_db)
import json
def default_serializer(obj):
return str(obj)
print(f"Base blades: {base_blades}")
print(f"Current blades: {current_blades}")
print(f"Breakdown: {json.dumps(breakdown, indent=2, default=default_serializer)}")
print(f"Continuous effects: {json.dumps(p0.continuous_effects, indent=2, default=default_serializer)}")
if current_blades != base_blades + 2:
print("FAILURE: Buff not applied correctly.")
else:
print("SUCCESS")
if __name__ == "__main__":
try:
debug_ability_2()
except Exception:
import traceback
traceback.print_exc()
|