48 lines
1.4 KiB
GDScript
48 lines
1.4 KiB
GDScript
extends Attack
|
|
# TODO Teach some population of pawns this attack
|
|
func _init():
|
|
id = "PetCommandRoll"
|
|
category = Category.Special
|
|
aiCategory = AICategory.Offensive
|
|
|
|
func getVisibleName(_context = {}):
|
|
return "Command: Roll"
|
|
|
|
func getVisibleDesc(_context = {}):
|
|
return "Use implanted pet directive to make you roll over.."
|
|
|
|
func _doAttack(_attacker, _receiver, _context = {}):
|
|
var texts = [
|
|
"{attacker.name} orders {receiver.name} to roll over like a good puppy {receiver.he} is.",
|
|
"{attacker.name} points at the floor with {attacker.his} finger and commands {receiver.name} to roll over"
|
|
]
|
|
var text = RNG.pick(texts)
|
|
|
|
if(_receiver.addEffect(StatusEffect.Stunned, [2])):
|
|
text += "\n[b]{receiver.name} obeys the command without question.[/b]"
|
|
_receiver.addEffect(StatusEffect.Weakness, [1])
|
|
return {
|
|
text = text,
|
|
}
|
|
|
|
func _canUse(_attacker, _receiver, _context = {}):
|
|
if(_attacker.isGagged()):
|
|
return false
|
|
|
|
if(_receiver.hasPerk("Commands") && !_receiver.statusEffects.has(StatusEffect.Stunned)):
|
|
return true
|
|
|
|
return false
|
|
|
|
func getAnticipationText(_attacker, _receiver):
|
|
return "{attacker.name} opens {attacker.his} mouth while pointing at floor."
|
|
|
|
func getAttackSoloAnimation():
|
|
return "throw"
|
|
|
|
func getRequirements():
|
|
return [AttackRequirement.FreeHands, AttackRequirement.CanTalk]
|
|
|
|
func getRecieverArmorScaling(_attacker, _receiver, _damageType) -> float:
|
|
return 0.0
|