90 lines
1.8 KiB
GDScript
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
|