extends "res://scripts/player.gd" onready var placement = preload("res://scripts/placement.gd").new(self, "res://scenes/heroes/1_wall.tscn") onready var place_wall_ability = get_node("MasterOnly/PlaceWall") export var looked_at_charge_suck = 25 # charge / sec # --- Godot overrides --- func _ready(): placement.start_action = "hero_1_place_wall" placement.confirm_action = "hero_1_confirm_wall" placement.delete_action = "hero_1_remove_wall" placement.max_placed = 5 func _process(delta): if is_network_master(): var can_build = switch_charge > place_wall_ability.cost if can_build: if placement.place_input(): build_charge(-place_wall_ability.cost) func _exit_tree(): ._exit_tree() if placement: placement.clear() # --- Player overrides --- func spawn(): .spawn() if placement: placement.clear() # --- Own --- # Passive: suck the charge out of people who look at us! # This is a special method called by player when any object is looked at func on_looked_at(who, delta): # Why do we check this if we can't look at ourselves? Walls call this method from their looked_at # Also, why not use util.is_friendly? Because we're not master, we're slave (looker is master) if who.player_info.is_right_team != player_info.is_right_team: var subtracted = who.build_charge(-looked_at_charge_suck * delta) build_charge(-subtracted) # We rset our switch_charge because otherwise it won't be acknowledged # because we're not master # The *PICKER* is master, we're slave! Well, let's flip that for a mo' rset("switch_charge", switch_charge)