summaryrefslogtreecommitdiff
path: root/godot/scripts/characters
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scripts/characters')
-rw-r--r--godot/scripts/characters/NetworkedCharacter.gd17
-rw-r--r--godot/scripts/characters/player_controller_new.gd17
2 files changed, 21 insertions, 13 deletions
diff --git a/godot/scripts/characters/NetworkedCharacter.gd b/godot/scripts/characters/NetworkedCharacter.gd
index 8a0282d..d904593 100644
--- a/godot/scripts/characters/NetworkedCharacter.gd
+++ b/godot/scripts/characters/NetworkedCharacter.gd
@@ -2,7 +2,7 @@ extends RigidBody
class_name NetChar
# Game
-export var team: String = "RED"
+export var team = 0
export var health: int = 100
export var weapon_slot1: Resource = null
export var weapon_slot2: Resource = null
@@ -40,7 +40,7 @@ remote func set_phys_transform(trfrm: Transform, lvel: Vector3):
transform = trfrm
linear_velocity = lvel
-remotesync func set_net_owner(owner_id: int):
+remotesync func set_net_owner(owner_id: int, singleplayer_reset: bool = false):
$Nametag.text = ""
set_network_master(owner_id)
if owner_id != 1:
@@ -55,12 +55,19 @@ remotesync func set_net_owner(owner_id: int):
$Nametag.visible = true
is_player = false
world.get_node("HUD").update_characters()
+ elif world.is_local:
+ if singleplayer_reset:
+ is_player = false
+ else:
+ world.player_char = self
+ is_player = true
+ world.cam.attach(self, "FIRSTPERSON", "./Neck/Head")
func deselect_character():
- if is_network_master():
+ if is_network_master() and world.player_char == self:
world.player_char = null
- if world.client_id != 1: world.cam.attach(world, "STATIC", "./DEFAULTCAM")
- rpc("set_net_owner", 1)
+ world.cam.attach(world, "STATIC", "./DEFAULTCAM")
+ rpc("set_net_owner", 1, true)
func take_control_of_machine(slave_machine: RigidBody):
machine = slave_machine
diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd
index 62f5ef6..232e5e0 100644
--- a/godot/scripts/characters/player_controller_new.gd
+++ b/godot/scripts/characters/player_controller_new.gd
@@ -63,6 +63,9 @@ const DROWN_DICT: Dictionary = {"type" : "DROWN", "attacker_net_id" : 1, "attack
# Called when the node enters the scene tree
func _ready() -> void:
+ if get_parent().name == "CREW":
+ team = owner.team
+
if weapon_slot1 == null:
weapon_slot1 = preload("res://scenes/weapons/hands.res")
weapons = [weapon_slot1,weapon_slot2,weapon_slot3,weapon_slot4,weapon_slot5]
@@ -74,8 +77,6 @@ func _ready() -> void:
$"%UseRay".add_exception(self)
$"%MeleeRay".add_exception(self)
- $"%UseRay".add_exception($AreaDetect)
- $"%MeleeRay".add_exception($AreaDetect)
if ai_target_machine_path:
ai_target_machine = get_node(ai_target_machine_path)
@@ -181,15 +182,15 @@ func load_process(delta) -> void:
if use_ray.is_colliding() and use_ray.get_collider().get_parent() == load_target and use_held:
var progress: float =load_target.increase_load(delta)
if progress < 0:
- if get_network_master() != 1: world.hud.hide_progress()
+ if is_player: world.hud.hide_progress()
load_target.reset_load()
loading = false
load_target = null
inventory[load_ammo] -= 1
else:
- if get_network_master() != 1: world.hud.set_progress(progress)
+ if is_player: world.hud.set_progress(progress)
else:
- if get_network_master() != 1: world.hud.hide_progress()
+ if is_player: world.hud.hide_progress()
load_target.reset_load()
loading = false
load_target = null
@@ -263,7 +264,7 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void:
return
player_state = state
velocity = state.get_linear_velocity()
- for i in range(player_state.get_contact_count()):
+ if is_player: for i in range(player_state.get_contact_count()):
var contact_angle_from_up : float = Vector3.UP.angle_to(player_state.get_contact_local_normal(i))
if contact_angle_from_up > FLOOR_MAX_ANGLE and !is_on_floor:
physics_material_override.friction = 0
@@ -271,11 +272,11 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void:
if i == player_state.get_contact_count() - 1:
physics_material_override.friction = 1
- rpc("set_phys_transform", transform, linear_velocity)
+ rpc_unreliable("set_phys_transform", transform, linear_velocity)
if global_transform.origin.y < -30:
rpc("damage", 500000, DROWN_DICT)
- nav.set_velocity(velocity)
+ #nav.set_velocity(velocity)
func walk(_delta: float) -> void:
if floor_normal != Vector3.UP: direction = direction.rotated(floor_normal.cross(Vector3.UP).normalized(), Vector3.UP.angle_to(floor_normal))