Files
gd-playground/Game/Runtime/Triggers/Templates/OnPhaseEnteredGainBlockTrigger.gd
54shitaimzf e465f1cbb0 feat: 基础卡牌场景与卡牌逻辑可扩展框架,以及todo文档
- 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.
2026-04-22 21:58:15 +08:00

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")
]