103 lines
2.6 KiB
Haskell
103 lines
2.6 KiB
Haskell
module Units.Debug
|
|
( basic
|
|
)
|
|
where
|
|
|
|
import GameModel
|
|
( adjacentAllies
|
|
, Armor(..)
|
|
, BaseStats(..)
|
|
, BoardState
|
|
, CharacterIdentifier
|
|
, Choice
|
|
, DamageType(..)
|
|
, Effect(..)
|
|
, Stat(..)
|
|
, Token(..)
|
|
, Trigger(..)
|
|
)
|
|
import Units
|
|
( AttackT(..)
|
|
, anyTarget
|
|
, buildAttack
|
|
, SelfAbilityT(..)
|
|
, mkSelfAbility
|
|
)
|
|
|
|
basic :: BaseStats
|
|
basic = BaseStats
|
|
{ name = "Basic Debug Unit"
|
|
, hp = 4
|
|
, mov = 4
|
|
, df = 4
|
|
, arm = NoArmor
|
|
, hooks = basicHooks
|
|
, actions = basicActions
|
|
, statBonus = basicStatBonuses
|
|
}
|
|
|
|
basicHooks :: BoardState -> CharacterIdentifier -> Trigger -> [Effect]
|
|
basicHooks _ _ TurnStart = []
|
|
basicHooks _ _ (TookDamage _) = []
|
|
basicHooks _ _ (Died _ _) = []
|
|
basicHooks _ _ (EndMove _) = []
|
|
|
|
basicActions :: [CharacterIdentifier -> Choice]
|
|
basicActions =
|
|
[ buildAttack $ AttackT
|
|
{ tName = "Peashooter"
|
|
, tRange = (1, 3)
|
|
, tValidTargets = anyTarget
|
|
, tMelee = False
|
|
, tDamageType = BasicDamage
|
|
, tDamageAmount = 1
|
|
, tHeadshotEffects = []
|
|
, tStandardEffects = []
|
|
}
|
|
, buildAttack $ AttackT
|
|
{ tName = "Jarate"
|
|
, tRange = (1, 3)
|
|
, tValidTargets = anyTarget
|
|
, tMelee = False
|
|
, tDamageType = BasicDamage
|
|
, tDamageAmount = 0
|
|
, tHeadshotEffects = []
|
|
, tStandardEffects = [InflictTokens VitalVulnr (-1)]
|
|
}
|
|
, buildAttack $ AttackT
|
|
{ tName = "Slime"
|
|
, tRange = (1, 3)
|
|
, tValidTargets = anyTarget
|
|
, tMelee = False
|
|
, tDamageType = BasicDamage
|
|
, tDamageAmount = 0
|
|
, tHeadshotEffects = []
|
|
, tStandardEffects = [InflictTokens SpeedSlow (-1)]
|
|
}
|
|
, buildAttack $ AttackT
|
|
{ tName = "Nerf"
|
|
, tRange = (1, 3)
|
|
, tValidTargets = anyTarget
|
|
, tMelee = False
|
|
, tDamageType = BasicDamage
|
|
, tDamageAmount = 0
|
|
, tHeadshotEffects = []
|
|
, tStandardEffects = [InflictTokens StrWeak (-1)]
|
|
}
|
|
, mkSelfAbility $ SelfAbilityT
|
|
{ tName = "Calcify"
|
|
, tEffects = [InflictTokens VitalVulnr 1]
|
|
}
|
|
, mkSelfAbility $ SelfAbilityT
|
|
{ tName = "Zoomify"
|
|
, tEffects = [InflictTokens SpeedSlow 1]
|
|
}
|
|
, mkSelfAbility $ SelfAbilityT
|
|
{ tName = "Get String"
|
|
, tEffects = [InflictTokens StrWeak 1]
|
|
}
|
|
]
|
|
|
|
basicStatBonuses :: BoardState -> CharacterIdentifier -> Stat a -> a
|
|
basicStatBonuses _ _ AttackDice = 0
|
|
basicStatBonuses _ _ DefenseDice = 0 |