maleghast-engine/src/Units/Debug.hs

108 lines
2.7 KiB
Haskell

module Units.Debug
( basic
)
where
import GameModel
( Armor(..)
, BaseStats(..)
, CharacterIdentifier
, Choice
, DamageType(..)
, Token(..)
)
import Units.Components
( AttackT(..)
, anyTarget
, buildAttack
, SelfAbilityT(..)
, mkSelfAbility, inflictTokens, pull, push
)
basic :: BaseStats
basic = BaseStats
{ name = "Basic Debug Unit"
, hp = 4
, mov = 4
, df = 4
, arm = NoArmor
, actions = basicActions
, traits = []
}
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)]
}
, buildAttack $ AttackT
{ tName = "Yoink"
, tRange = (1, 4)
, tValidTargets = anyTarget
, tMelee = False
, tDamageType = BasicDamage
, tDamageAmount = 0
, tHeadshotEffects = []
, tStandardEffects = [pull 3]
}
, buildAttack $ AttackT
{ tName = "Yeet"
, tRange = (1, 4)
, tValidTargets = anyTarget
, tMelee = False
, tDamageType = BasicDamage
, tDamageAmount = 0
, tHeadshotEffects = []
, tStandardEffects = [push 3]
}
, 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]
}
]