maleghast-engine/src/Units/Debug.hs

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