diff --git a/client/entities/characters/player.gd b/client/entities/characters/player.gd index f904beffceec7d841a5846aa48bf9cbc2de8b9ab..38ae7d07f75f3caf0f0867e9eb84cb415cf016bb 100644 --- a/client/entities/characters/player.gd +++ b/client/entities/characters/player.gd @@ -4,11 +4,14 @@ extends KinematicBody puppet func getRemoteMovement(position:Vector3): self.set_translation(position) -# Called by the remote player +# Feedback when hurt puppet func hurt(damages:int): print("You suffered a hit and lost " + str(damages) + " HPs !") - + +# Feedback when killed puppet func die(killerId:int): print(str(killerId) + " killed " + self.name) + + # Hide the killed player (NB: the client is only about inputs and display) self.set_visible(false) \ No newline at end of file diff --git a/server/entities/characters/player.gd b/server/entities/characters/player.gd index b9e94cccdeefb9c8f73936aee91639c08f512a09..c6eb89abfa2203731f884cf8e5793a2d3fae6682 100644 --- a/server/entities/characters/player.gd +++ b/server/entities/characters/player.gd @@ -198,13 +198,18 @@ func secondaryAttack(): func hurt(damages:int, killerId:int): hpNow -= damages + # Player still alive if hpNow>0: rpc_id(ownId, "hurt", damages) - + + # Player killed else: rpc("die", killerId) - #self.queue_free() + + # Bool checked in the physics processing isAlive = false + + # Make the player traversable collisionShape.set_disabled(true) diff --git a/server/levels/test/game.gd b/server/levels/test/game.gd index f09e5567d7fad41a3ecf8625e31bbad407613150..fef26315c0d5a9735640147d204db7b116f8f2f5 100644 --- a/server/levels/test/game.gd +++ b/server/levels/test/game.gd @@ -7,5 +7,7 @@ master func sendPlayerInputs(movementInput, jumpInput, jumpId, sprintInput, atta gamestate.get_node("/root/game/"+str(senderId)).getPlayerInputs(movementInput, jumpInput, jumpId, sprintInput, attackStateInput) +# When the player enter the area under the map func _on_killingFallArea_body_entered(body): + # Instant-kill with the server as killer body.hurt(body.hpMax, 0)