|
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 = 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 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("charge", charge)
|
|
|