package engine // Effect is an effect a triggered/activated ability can trigger type Effect struct { Type EffectType TargetType TargetingType // Targets, if not implicit TargetCard *CardInstance TargetPlayer *Player } // EffectType is the type of an effect type EffectType string // All effect types const ( EfDraw EffectType = "draw card" EfTurn EffectType = "turn card over" EfFrighten EffectType = "frighten card" EfRally EffectType = "rally card" EfExhaust EffectType = "exhaust card" EfReady EffectType = "ready card" ) // TargetingType is how an ability is targeted type TargetingType string // All targeting types const ( TargetThisCard TargetingType = "this card" TargetThisProblem TargetingType = "this card's problem" TargetCard TargetingType = "card" TargetFriend TargetingType = "friend" TargetPlayer TargetingType = "player" TargetOpponent TargetingType = "opponent" TargetOwnCard TargetingType = "own card" TargetOwnFriend TargetingType = "own friend" ) // Apply tries to apply an effect func (e *Effect) Apply() error { //TODO return nil }