extends ActorState class_name ActorPossessed var sub_state = null func _init(_actor): super(_actor) func _ready(): pass func _process(_delta): if Input.is_action_just_pressed("actor_convulse"): set_sub_state(ActorConvulse.new(self.actor)) if Input.is_action_just_released("actor_convulse"): set_sub_state(null) func _physics_process(_delta): self.actor.modulate = Color.RED var mydir = Vector2(0, 0) if Input.is_action_pressed("actor_up"): mydir.y -= 1 if Input.is_action_pressed("actor_down"): mydir.y += 1 if Input.is_action_pressed("actor_left"): mydir.x -= 1 if Input.is_action_pressed("actor_right"): mydir.x += 1 if mydir.length_squared() > 0: mydir = mydir.normalized() self.actor.sprite().rotation = mydir.angle() - PI/2 self.actor.anim_walk() else: self.actor.anim_idle() if self.actor: self.actor.velocity = mydir * self.actor.SPEED self.actor.move_and_slide() func set_sub_state(new_state): if self.sub_state: remove_child(self.sub_state) self.sub_state = new_state if self.sub_state: add_child(self.sub_state)