everything_has_a_price_jam/troup.gd
2026-09-27 15:12:44 -06:00

71 lines
2.3 KiB
GDScript

extends CharacterBody2D
const SPEED = 700.0
const JUMP_VELOCITY = -400.0
@export var target : Node2D
func _ready() -> void:
UserContext. set_target_for . connect(set_target_for)
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 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 _Direction() -> Vector2:
#self.position = self.position.move_toward(target.transform.position, speed * delta)
func _physics_process(delta: float) -> void:
if target != null:
#print(self.global_position.distance_to(target.global_position))
var _num = abs(abs(self.global_position) - abs(target.global_position))
#print(num)
var direction = (target.global_position - self.global_position).normalized() * SPEED * delta
#if (num > Vector2(2,2)):
if (self.global_position.distance_to(target.global_position) > 25):
self.velocity = direction
#self.global_position = self.global_position.move_toward(target.global_position, SPEED * delta)
elif (target.is_class("CharacterBody2D")):
print("is SentientCurrency")
print(target.name)
print(target.get_node("MemberSprite").get_allegiance())
if (target.get_node("MemberSprite").get_allegiance() != get_node("MemberSprite").get_allegiance() ):
#print("different Allegience: "+ target.get_node("CurrencyMemberSprite").alligence)
combat(target)
removed_target()
else:
print("Removed Target")
removed_target()
#target = null
move_and_slide()