extends CharacterBody2D const SPEED = 700.0 const JUMP_VELOCITY = -400.0 @export var target : Node2D @export var enemTarget : Node2D func _ready() -> void: UserContext. set_target_for . connect(set_target_for) #enemTarget = %PlayerGates func set_target_for(who: CurrencyMemberSprite, t: Node2D): if %MemberSprite == who: if target != null: target.tree_exiting.disconnect(removed_target) t.tree_exiting.connect(removed_target) target = t UserContext.modal(null) func removed_target(): target = null func sprite() -> CurrencyMemberSprite: return %MemberSprite func combat(target): if get_node("MemberSprite").get_combat() == false: var p := Production.new() p.amount = -1 p.currency = %MemberSprite.currency Economy.produce(p) self.queue_free() return var winner = randf_range(0,2) if %MemberSprite.currency.name == "Dinosaur" or %MemberSprite.currency.name == "Wizard": winner -= 0.5 if target.get_node("MemberSprite").currency.name == "Dinosaur" or target.get_node("MemberSprite").currency.name == "Wizard": winner += 0.5 if winner <= 1: target.queue_free() else: var p := Production.new() p.amount = -1 p.currency = %MemberSprite.currency Economy.produce(p) Economy.log.emit("A " + p.currency.name +" died in combat!") self.queue_free() func _physics_process(delta: float) -> void: if %MemberSprite.get_allegiance() == "Rivaldom" and %MemberSprite.get_combat() == true and target != enemTarget: target = enemTarget elif %MemberSprite.get_allegiance() == "You" and target == enemTarget: removed_target() if target != null: var _num = abs(abs(self.global_position) - abs(target.global_position)) var direction = (target.global_position - self.global_position).normalized() * SPEED * delta if (self.global_position.distance_to(target.global_position) > 25): self.velocity = direction elif (target.is_class("CharacterBody2D")): if (target.get_node("MemberSprite").get_allegiance() != get_node("MemberSprite").get_allegiance() ): combat(target) removed_target() else: removed_target() move_and_slide()