- Added BattleState class to manage battle flow, including turn management and event handling. - Introduced BuffInstance class to represent buffs applied to combatants. - Created CardInstance class to handle card definitions and cost calculations. - Developed CombatantState class to manage combatant attributes and actions. - Implemented EffectRegistry to apply effects based on event specifications. - Added various handlers (BlockHandler, DamageHandler, DrawHandler, etc.) to process specific events. - Created IntentPlanner and IntentState classes to manage enemy actions and intents. - Established a queue system for handling battle events with BattleEventQueue and BattleEventTask. - Introduced triggers for applying effects based on game events (e.g., OnCardDrawnGainBlockTrigger). - Added necessary UID files for new scripts to ensure proper resource management.
32 lines
982 B
GDScript
32 lines
982 B
GDScript
class_name OnPhaseEnteredGainBlockTrigger
|
|
extends RefCounted
|
|
|
|
const BattleEventTypeScript = preload("res://Game/Runtime/Queue/BattleEventType.gd")
|
|
const BattleEventTaskScript = preload("res://Game/Runtime/Queue/BattleEventTask.gd")
|
|
|
|
var expected_phase: int = -1
|
|
var block_amount: int = 1
|
|
|
|
func _init(p_expected_phase: int = -1, p_block_amount: int = 1) -> void:
|
|
expected_phase = p_expected_phase
|
|
block_amount = max(0, p_block_amount)
|
|
|
|
func matches(task, _state, owner) -> bool:
|
|
if task == null or owner == null:
|
|
return false
|
|
if task.event_type != BattleEventTypeScript.PHASE_ENTERED:
|
|
return false
|
|
if expected_phase >= 0 and int(task.payload.get("phase", -1)) != expected_phase:
|
|
return false
|
|
return true
|
|
|
|
func build_events(task, _state, owner) -> Array:
|
|
if block_amount <= 0:
|
|
return []
|
|
return [
|
|
BattleEventTaskScript.new(BattleEventTypeScript.BLOCK_REQUESTED, {
|
|
"target": owner,
|
|
"amount": block_amount
|
|
}, task.chain_id, "OnPhaseEnteredGainBlockTrigger")
|
|
]
|