Cow_Life_Sim_RPG/NPCs/Arcade/GoatKid3/GoatKid3.gd

90 lines
1.8 KiB
GDScript

extends NPC
var rng = RandomNumberGenerator.new()
var hopSpeed = 400
var minX = 0
var maxX = 0
var waitTimer = 0
var hopping = false
var kicking = false
var flipChance = false
func _ready():
characterName = "Kid"
pronouns = "she/her"
minX = position.x
maxX = position.x + 150
func _process(delta):
waitTimer -= delta
if waitTimer <= 0:
if $Sprite.animation != "default":
wait_between_actions()
else:
pick_next_action()
if hopping:
if $Sprite.frame >= 1:
position.x += hopSpeed*delta
flipChance = true
else:
if flipChance:
flipChance = false
if rng.randi_range(0, 1) == 1:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = !$Sprite.flip_h
if position.x <= minX and hopSpeed < 0:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = false
elif position.x >= maxX and hopSpeed > 0:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = true
if kicking:
if $Sprite.frame == 0:
flipChance = true
else:
if flipChance:
flipChance = false
if rng.randi_range(0, 1) == 1:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = !$Sprite.flip_h
func wait_between_actions():
hopping = false
waitTimer = rng.randf_range(0.5, 1)
$Sprite.play("default")
func pick_next_action():
hopping = false
kicking = false
var nextActionResult = rng.randi_range(0, 4)
if nextActionResult <= 1:
hop()
elif nextActionResult <= 3:
kick()
elif nextActionResult <= 4:
wait_between_actions()
func kick():
$Sprite.play("Kick")
waitTimer = rng.randi_range(1, 5)
kicking = true
func hop():
$Sprite.play("Prance")
waitTimer = rng.randi_range(2, 4)
hopping = true
if position.x <= minX and hopSpeed < 0:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = false
elif position.x >= maxX and hopSpeed > 0:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = true