From f76e66dd8692fbbb93436f9783a646585e102aeb Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 28 Jan 2018 04:05:58 -0500 Subject: [PATCH] Add preliminary Hero 3: Margarine (Merge) --- scenes/heroes/3.tscn | 17 +++++++++++++++++ scripts/hero_select.gd | 1 + scripts/heroes/3.gd | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 scenes/heroes/3.tscn create mode 100644 scripts/heroes/3.gd diff --git a/scenes/heroes/3.tscn b/scenes/heroes/3.tscn new file mode 100644 index 0000000..0301fca --- /dev/null +++ b/scenes/heroes/3.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://scenes/player.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/heroes/3.gd" type="Script" id=2] + +[node name="RigidBody" instance=ExtResource( 1 )] + +contacts_reported = 3 +contact_monitor = true +script = ExtResource( 2 ) +_sections_unfolded = [ "Angular", "Axis Lock", "Collision", "Linear", "Pause", "Transform", "Visibility", "collision" ] + +[node name="Crosshair" parent="MasterOnly" index="0"] + +text = "" + + diff --git a/scripts/hero_select.gd b/scripts/hero_select.gd index 749699c..03de2aa 100644 --- a/scripts/hero_select.gd +++ b/scripts/hero_select.gd @@ -4,6 +4,7 @@ const hero_names = [ "Wallriding mfer", "WallMAKING mfer", "an ATTRACTIVE mfer", + "Margarine" ] func _ready(): diff --git a/scripts/heroes/3.gd b/scripts/heroes/3.gd new file mode 100644 index 0000000..c7bd2df --- /dev/null +++ b/scripts/heroes/3.gd @@ -0,0 +1,48 @@ +extends "res://scripts/player.gd" + +var merge_power = .1 +var merged = null + +var old_layer +var old_mask + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +func _process(delta): + if not merged: + var cols = get_colliding_bodies() + for col in cols: + if col.is_in_group("player"): + var same_team = col.player_info.is_right_team == player_info.is_right_team + if same_team: + merge(col) + +func merge(other): + hide() + # Disable collisions + old_layer = collision_layer + old_mask = collision_mask + collision_layer = 0 + collision_mask = 0 + if is_network_master(): + # Assume their PoV, but no control + other.get_node("Yaw/Pitch/Camera").make_current() + # Boost them! + other.walk_speed *= (1 + merge_power) + other.air_accel *= (1 + merge_power) + merged = other + +func unmerge(): + show() + # Re-enable collisions + collision_layer = old_layer + collision_mask = old_mask + if is_network_master(): + get_node("Yaw/Pitch/Camera").make_current() + # Undo the boost + merged.walk_speed /= (1 + merge_power) + merged.air_accel /= (1 + merge_power) + merged = null \ No newline at end of file