Cow_Life_Sim_RPG/NPCs/Arcade/GoatKid2/GoatKid2.gd

64 lines
1.2 KiB
GDScript

extends NPC
var rng = RandomNumberGenerator.new()
var hopSpeed = -400
var minX = 0
var maxX = 0
var waitTimer = 0
var hopping = false
var flipChance = false
func _ready():
characterName = "Kid"
pronouns = "she/her"
minX = position.x
maxX = position.x + 500
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 = true
elif position.x >= maxX and hopSpeed > 0:
hopSpeed = hopSpeed*-1
$Sprite.flip_h = false
func wait_between_actions():
hopping = false
waitTimer = rng.randf_range(0.5, 1)
$Sprite.play("default")
func pick_next_action():
hopping = false
var nextActionResult = rng.randi_range(0, 4)
if nextActionResult <= 3:
hop()
elif nextActionResult <= 4:
wait_between_actions()
func hop():
$Sprite.play("Prance")
waitTimer = rng.randi_range(2, 4)
hopping = true