package client import ( "fmt" ) type TriggerEvent string const ( TriggerStartCombat TriggerEvent = "combat.start" TriggerStartTurn TriggerEvent = "turn.start" TriggerEndTurn TriggerEvent = "turn.end" TriggerDamage TriggerEvent = "damage" TriggerHeal TriggerEvent = "heal" TriggerDeath TriggerEvent = "death" TriggerAddEffect TriggerEvent = "effect.add" TriggerRemoveEffect TriggerEvent = "effect.remove" TriggerAction TriggerEvent = "action" ) func GetTriggersForCombatant(combatant *Combatant, trigger TriggerEvent) []string { teamName := "enemy" if combatant.IsPlayer() { teamName = "player" } return []string{ fmt.Sprintf("role.%s.%s", combatant.Role.Name, trigger), fmt.Sprintf("%s.%s", teamName, trigger), string(trigger), } } func GetTriggersForCombatantEffect(combatant *Combatant, effect string, trigger TriggerEvent) []string { out := make([]string, 0) for _, trigger := range GetTriggersForCombatant(combatant, trigger) { out = append(out, fmt.Sprintf("%s.%s", trigger, effect)) } return out }