MCPcopy Create free account
hub / github.com/demoth/jake2 / die

Method die

game/src/main/java/jake2/game/PlayerClient.java:43–139  ·  view source on GitHub ↗
(SubgameEntity self, SubgameEntity inflictor, SubgameEntity attacker,
                        int damage, float[] point, GameExportsImpl gameExports)

Source from the content-addressed store, hash-verified

41 static EntDieAdapter player_die = new EntDieAdapter() {
42 public String getID() { return "player_die"; }
43 public void die(SubgameEntity self, SubgameEntity inflictor, SubgameEntity attacker,
44 int damage, float[] point, GameExportsImpl gameExports) {
45
46 Math3D.VectorClear(self.avelocity);
47
48 self.takedamage = Defines.DAMAGE_YES;
49 self.movetype = GameDefines.MOVETYPE_TOSS;
50
51 self.s.modelindex2 = 0; // remove linked weapon model
52
53 self.s.angles[0] = 0;
54 self.s.angles[2] = 0;
55
56 self.s.sound = 0;
57 gclient_t client = self.getClient();
58 client.weapon_sound = 0;
59
60 self.maxs[2] = -8;
61
62 // self.solid = SOLID_NOT;
63 self.svflags |= Defines.SVF_DEADMONSTER;
64
65 if (self.deadflag == 0) {
66 client.respawn_time = gameExports.level.time + 1.0f;
67 PlayerClient.LookAtKiller(self, inflictor, attacker, gameExports.g_edicts[0]);
68 client.getPlayerState().pmove.pm_type = Defines.PM_DEAD;
69 ClientObituary(self, inflictor, attacker, gameExports);
70 PlayerClient.TossClientWeapon(self, gameExports);
71 if (gameExports.gameCvars.deathmatch.value != 0) {
72 gameExports.Help_f(self); // show scores
73 }
74
75 // clear inventory
76 gameExports.items.forEach(it -> {
77 if (gameExports.gameCvars.coop.value != 0) {
78 if ((gameExports.items.get(it.index).flags & GameDefines.IT_KEY) != 0) {
79 // this is kind of ugly, but it's how we want to handle keys in coop
80 client.resp.coop_respawn.inventory[it.index] = client.pers.inventory[it.index];
81 }
82 }
83 client.pers.inventory[it.index] = 0;
84 });
85 }
86
87 // remove powerups
88 client.quad_framenum = 0;
89 client.invincible_framenum = 0;
90 client.breather_framenum = 0;
91 client.enviro_framenum = 0;
92 self.flags &= ~GameDefines.FL_POWER_ARMOR;
93
94 if (self.health < -40) { // gib
95 gameExports.gameImports
96 .sound(self, Defines.CHAN_BODY, gameExports.gameImports
97 .soundindex("misc/udeath.wav"), 1,
98 Defines.ATTN_NORM, 0);
99 for (int n = 0; n < 4; n++)
100 GameMisc.ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2",

Callers

nothing calls this directly

Calls 14

VectorClearMethod · 0.95
LookAtKillerMethod · 0.95
getPlayerStateMethod · 0.95
ClientObituaryMethod · 0.95
TossClientWeaponMethod · 0.95
ThrowGibMethod · 0.95
ThrowClientHeadMethod · 0.95
randMethod · 0.95
Help_fMethod · 0.80
soundMethod · 0.65
soundindexMethod · 0.65
linkentityMethod · 0.65

Tested by

no test coverage detected