extends Resource class_name Card enum Rank {RANK_0, RANK_1, RANK_2, RANK_3} enum EffectType { MOVEMENT_MODIFIER, BOARD_EFFECT, PIECE_EFFECT, SPECIAL_ACTION } var card_name: String var rank: Rank var description: String var duration: int = 0 var attached_piece: Pawn = null var burned: bool = false var effect_type: EffectType var remaining_turns: int = 0 var unit_whitelist: Array[String] = [] # List of piece types this card can be attached to func _init(): remaining_turns = duration func can_attach_to_piece(piece: Pawn) -> bool: if unit_whitelist.is_empty(): return true return unit_whitelist.has(piece.name) func apply_effect(target_piece = null, board_flow = null, game_state = null): if burned || (target_piece && !can_attach_to_piece(target_piece)): return false remaining_turns = duration attached_piece = target_piece match rank: Rank.RANK_0: burned = true Rank.RANK_1: burned = true Rank.RANK_2: pass Rank.RANK_3: pass return modify_moves() func update_duration(): if remaining_turns > 0: remaining_turns -= 1 if remaining_turns <= 0: remove_effect() func modify_moves() -> Dictionary: return {} func remove_effect(): if attached_piece: pass