extends NPC var rng = RandomNumberGenerator.new() var moveSpeed = 140 var moveSpeedCond = 140 var maxx = 100 var minx = -100 var waitTimer = 0 var lime_mode = false var walking = false var waited = false var GameState = null func _ready(): minx = position.x maxx = position.x + 100 characterName = "Beesly" pronouns = "any" GameState = get_node("/root/GameVariables") dialogueResource = load("res://NPCs/Beesly/beesly.dialogue") if SaveManager.get_save_value("BeeslyLimeMode"): lime_mode = true $Sprite.play("LimeMode") if not SaveManager.get_save_value("LimeEnabled", true): LimeOff() func _process(delta): waitTimer -= delta if waitTimer <= 0: if !waited: waited = true wait_between_actions() else: pick_next_action(delta) if walking and not lime_mode: var movementVector = Vector2(moveSpeed*delta,0) var collisions = move_and_collide(movementVector) if collisions != null: walking = false stand_up() if moveSpeed < 0: $Sprite.flip_h = true elif moveSpeed > 0: $Sprite.flip_h = false func wait_between_actions(): waitTimer = rng.randf_range(0.5, 3) func pick_next_action(delta): if lime_mode: return else: var randomDir if position.x <= minx: randomDir = 1 elif position.x >= maxx: randomDir = -1 else: randomDir = -1 if rng.randi_range(0, 1) == 0 else 1 moveSpeed = moveSpeedCond * randomDir var nextActionResult = rng.randi_range(0, 4) if nextActionResult <= 2: walking = true walk() elif nextActionResult <= 3: walking = false stand_up() elif nextActionResult <= 4: wait_between_actions() waited = false func morph(): SaveManager.set_save_value("BeeslyLimeMode", true) $Sprite.stop() $Sprite.play("LimeMorph") $MorphParticle.emitting = true await $Sprite.animation_finished lime_mode = true $MorphParticle.emitting = false $Sprite.play("LimeMode") LevelManager.get_skill("appreciating").experience_event("Beesley's Lime Move", "watched", 31) func stand_up(): if lime_mode: $Sprite.play("LimeMode") else: $Sprite.play("Stand") waitTimer = 4 func walk(): $Sprite.play("Walk") waitTimer = 1 func LimeOff(): SaveManager.set_save_value("BeeslyLimeMode", false) $Sprite.stop() $Sprite.play("BeeMorph") $MorphParticle.emitting = true await $Sprite.animation_finished lime_mode = false $MorphParticle.emitting = false $Sprite.play("Stand")