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 cardName: String var rank: Rank var description: String var duration: int = 0 var attached_piece: Pawn = null var burned: bool = false var effectType: EffectType var remaining_turns: int = 0 var unitWhitelist: Array[String] = [] # List of piece types this card can be attached to var id: String = Utils.generate_guid() func _init(): remaining_turns = duration # print(id) func can_attach_to_piece(piece: Pawn) -> bool: # print(unitWhitelist, " | ", piece.name , " | ", unitWhitelist.has(piece.name)) if unitWhitelist.is_empty(): return true return unitWhitelist.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)): print("CARD CANT APPLY AFFECT", burned, " ", 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 true func update_duration(): if remaining_turns > 0: remaining_turns -= 1 if remaining_turns <= 0: remove_effect() burn_or() func burn_or(): match rank: Rank.RANK_0: burned = true Rank.RANK_1: burned = true Rank.RANK_2: pass Rank.RANK_3: pass return true func modify_moves() -> Dictionary: return {} func remove_effect(): if attached_piece: pass