Home | History | Annotate | Download | only in progs
      1 
      2 void() bubble_bob;
      3 
      4 /*
      5 ==============================================================================
      6 
      7 PLAYER
      8 
      9 ==============================================================================
     10 */
     11 
     12 $cd /raid/quake/id1/models/player_4
     13 $origin 0 -6 24
     14 $base base              
     15 $skin skin
     16 
     17 //
     18 // running
     19 //
     20 $frame axrun1 axrun2 axrun3 axrun4 axrun5 axrun6
     21 
     22 $frame rockrun1 rockrun2 rockrun3 rockrun4 rockrun5 rockrun6
     23 
     24 //
     25 // standing
     26 //
     27 $frame stand1 stand2 stand3 stand4 stand5
     28 
     29 $frame axstnd1 axstnd2 axstnd3 axstnd4 axstnd5 axstnd6
     30 $frame axstnd7 axstnd8 axstnd9 axstnd10 axstnd11 axstnd12
     31 
     32 
     33 //
     34 // pain
     35 //
     36 $frame axpain1 axpain2 axpain3 axpain4 axpain5 axpain6
     37 
     38 $frame pain1 pain2 pain3 pain4 pain5 pain6
     39 
     40 
     41 //
     42 // death
     43 //
     44 
     45 $frame axdeth1 axdeth2 axdeth3 axdeth4 axdeth5 axdeth6
     46 $frame axdeth7 axdeth8 axdeth9
     47 
     48 $frame deatha1 deatha2 deatha3 deatha4 deatha5 deatha6 deatha7 deatha8
     49 $frame deatha9 deatha10 deatha11
     50 
     51 $frame deathb1 deathb2 deathb3 deathb4 deathb5 deathb6 deathb7 deathb8
     52 $frame deathb9
     53 
     54 $frame deathc1 deathc2 deathc3 deathc4 deathc5 deathc6 deathc7 deathc8
     55 $frame deathc9 deathc10 deathc11 deathc12 deathc13 deathc14 deathc15
     56 
     57 $frame deathd1 deathd2 deathd3 deathd4 deathd5 deathd6 deathd7
     58 $frame deathd8 deathd9
     59 
     60 $frame deathe1 deathe2 deathe3 deathe4 deathe5 deathe6 deathe7
     61 $frame deathe8 deathe9
     62 
     63 //
     64 // attacks
     65 //
     66 $frame nailatt1 nailatt2
     67 
     68 $frame light1 light2
     69 
     70 $frame rockatt1 rockatt2 rockatt3 rockatt4 rockatt5 rockatt6
     71 
     72 $frame shotatt1 shotatt2 shotatt3 shotatt4 shotatt5 shotatt6
     73 
     74 $frame axatt1 axatt2 axatt3 axatt4 axatt5 axatt6
     75 
     76 $frame axattb1 axattb2 axattb3 axattb4 axattb5 axattb6
     77 
     78 $frame axattc1 axattc2 axattc3 axattc4 axattc5 axattc6
     79 
     80 $frame axattd1 axattd2 axattd3 axattd4 axattd5 axattd6
     81 
     82 
     83 /*
     84 ==============================================================================
     85 PLAYER
     86 ==============================================================================
     87 */
     88 
     89 void() player_run;
     90 
     91 void()  player_stand1 =[        $axstnd1,       player_stand1   ]
     92 {
     93 	self.weaponframe=0;
     94 	if (self.velocity_x || self.velocity_y)
     95 	{
     96 		self.walkframe=0;
     97 		player_run();
     98 		return;
     99 	}
    100 
    101 	if (self.weapon == IT_AXE)
    102 	{
    103 		if (self.walkframe >= 12)
    104 			self.walkframe = 0;
    105 		self.frame = $axstnd1 + self.walkframe;
    106 	}
    107 	else
    108 	{
    109 		if (self.walkframe >= 5)
    110 			self.walkframe = 0;
    111 		self.frame = $stand1 + self.walkframe;
    112 	}
    113 	self.walkframe = self.walkframe + 1;    
    114 };
    115 
    116 void()  player_run =[   $rockrun1,      player_run      ]
    117 {
    118 	self.weaponframe=0;
    119 	if (!self.velocity_x && !self.velocity_y)
    120 	{
    121 		self.walkframe=0;
    122 		player_stand1();
    123 		return;
    124 	}
    125 
    126 	if (self.weapon == IT_AXE)
    127 	{
    128 		if (self.walkframe == 6)
    129 			self.walkframe = 0;
    130 		self.frame = $axrun1 + self.walkframe;
    131 	}
    132 	else
    133 	{
    134 		if (self.walkframe == 6)
    135 			self.walkframe = 0;
    136 		self.frame = self.frame + self.walkframe;
    137 	}
    138 	self.walkframe = self.walkframe + 1;
    139 };
    140 
    141 void()muzzleflash =
    142 {
    143 	WriteByte (MSG_MULTICAST, SVC_MUZZLEFLASH);
    144 	WriteEntity (MSG_MULTICAST, self);
    145 	multicast (self.origin, MULTICAST_PVS);
    146 };
    147 
    148 
    149 void()  player_shot1 =  [$shotatt1, player_shot2        ] {self.weaponframe=1;muzzleflash();};
    150 void()  player_shot2 =  [$shotatt2, player_shot3        ] {self.weaponframe=2;};
    151 void()  player_shot3 =  [$shotatt3, player_shot4        ] {self.weaponframe=3;};
    152 void()  player_shot4 =  [$shotatt4, player_shot5        ] {self.weaponframe=4;};
    153 void()  player_shot5 =  [$shotatt5, player_shot6        ] {self.weaponframe=5;};
    154 void()  player_shot6 =  [$shotatt6, player_run  ] {self.weaponframe=6;};
    155 
    156 void()  player_axe1 =   [$axatt1, player_axe2   ] {self.weaponframe=1;};
    157 void()  player_axe2 =   [$axatt2, player_axe3   ] {self.weaponframe=2;};
    158 void()  player_axe3 =   [$axatt3, player_axe4   ] {self.weaponframe=3;W_FireAxe();};
    159 void()  player_axe4 =   [$axatt4, player_run    ] {self.weaponframe=4;};
    160 
    161 void()  player_axeb1 =  [$axattb1, player_axeb2 ] {self.weaponframe=5;};
    162 void()  player_axeb2 =  [$axattb2, player_axeb3 ] {self.weaponframe=6;};
    163 void()  player_axeb3 =  [$axattb3, player_axeb4 ] {self.weaponframe=7;W_FireAxe();};
    164 void()  player_axeb4 =  [$axattb4, player_run   ] {self.weaponframe=8;};
    165 
    166 void()  player_axec1 =  [$axattc1, player_axec2 ] {self.weaponframe=1;};
    167 void()  player_axec2 =  [$axattc2, player_axec3 ] {self.weaponframe=2;};
    168 void()  player_axec3 =  [$axattc3, player_axec4 ] {self.weaponframe=3;W_FireAxe();};
    169 void()  player_axec4 =  [$axattc4, player_run   ] {self.weaponframe=4;};
    170 
    171 void()  player_axed1 =  [$axattd1, player_axed2 ] {self.weaponframe=5;};
    172 void()  player_axed2 =  [$axattd2, player_axed3 ] {self.weaponframe=6;};
    173 void()  player_axed3 =  [$axattd3, player_axed4 ] {self.weaponframe=7;W_FireAxe();};
    174 void()  player_axed4 =  [$axattd4, player_run   ] {self.weaponframe=8;};
    175 
    176 
    177 //============================================================================
    178 
    179 void() player_nail1   =[$nailatt1, player_nail2  ] 
    180 {
    181 	muzzleflash();
    182 
    183 	if (!self.button0 || intermission_running || self.impulse)
    184 		{player_run ();return;}
    185 	self.weaponframe = self.weaponframe + 1;
    186 	if (self.weaponframe == 9)
    187 		self.weaponframe = 1;
    188 	SuperDamageSound();
    189 	W_FireSpikes (4);
    190 	self.attack_finished = time + 0.2;
    191 };
    192 void() player_nail2   =[$nailatt2, player_nail1  ]
    193 {
    194 	muzzleflash();
    195 
    196 	if (!self.button0 || intermission_running || self.impulse)
    197 		{player_run ();return;}
    198 	self.weaponframe = self.weaponframe + 1;
    199 	if (self.weaponframe == 9)
    200 		self.weaponframe = 1;
    201 	SuperDamageSound();
    202 	W_FireSpikes (-4);
    203 	self.attack_finished = time + 0.2;
    204 };
    205 
    206 //============================================================================
    207 
    208 void() player_light1   =[$light1, player_light2  ] 
    209 {
    210 	muzzleflash();
    211 
    212 	if (!self.button0 || intermission_running)
    213 		{player_run ();return;}
    214 	self.weaponframe = self.weaponframe + 1;
    215 	if (self.weaponframe == 5)
    216 		self.weaponframe = 1;
    217 	SuperDamageSound();
    218 	W_FireLightning();
    219 	self.attack_finished = time + 0.2;
    220 };
    221 void() player_light2   =[$light2, player_light1  ]
    222 {
    223 	muzzleflash();
    224 
    225 	if (!self.button0 || intermission_running)
    226 		{player_run ();return;}
    227 	self.weaponframe = self.weaponframe + 1;
    228 	if (self.weaponframe == 5)
    229 		self.weaponframe = 1;
    230 	SuperDamageSound();
    231 	W_FireLightning();
    232 	self.attack_finished = time + 0.2;
    233 };
    234 
    235 //============================================================================
    236 
    237 
    238 void() player_rocket1   =[$rockatt1, player_rocket2  ] {self.weaponframe=1;
    239 	muzzleflash();};
    240 void() player_rocket2   =[$rockatt2, player_rocket3  ] {self.weaponframe=2;};
    241 void() player_rocket3   =[$rockatt3, player_rocket4  ] {self.weaponframe=3;};
    242 void() player_rocket4   =[$rockatt4, player_rocket5  ] {self.weaponframe=4;};
    243 void() player_rocket5   =[$rockatt5, player_rocket6  ] {self.weaponframe=5;};
    244 void() player_rocket6   =[$rockatt6, player_run  ] {self.weaponframe=6;};
    245 void(float num_bubbles) DeathBubbles;
    246 
    247 void() PainSound =
    248 {
    249 local float             rs;
    250 
    251 	if (self.health < 0)
    252 		return;
    253 
    254 	if (damage_attacker.classname == "teledeath")
    255 	{
    256 		sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
    257 		return;
    258 	}
    259 
    260 // water pain sounds
    261 	if (self.watertype == CONTENT_WATER && self.waterlevel == 3)
    262 	{
    263 		DeathBubbles(1);
    264 		if (random() > 0.5)
    265 			sound (self, CHAN_VOICE, "player/drown1.wav", 1, ATTN_NORM);
    266 		else
    267 			sound (self, CHAN_VOICE, "player/drown2.wav", 1, ATTN_NORM);
    268 		return;
    269 	}
    270 
    271 // slime pain sounds
    272 	if (self.watertype == CONTENT_SLIME)
    273 	{
    274 // FIX ME       put in some steam here
    275 		if (random() > 0.5)
    276 			sound (self, CHAN_VOICE, "player/lburn1.wav", 1, ATTN_NORM);
    277 		else
    278 			sound (self, CHAN_VOICE, "player/lburn2.wav", 1, ATTN_NORM);
    279 		return;
    280 	}
    281 
    282 	if (self.watertype == CONTENT_LAVA)
    283 	{
    284 		if (random() > 0.5)
    285 			sound (self, CHAN_VOICE, "player/lburn1.wav", 1, ATTN_NORM);
    286 		else
    287 			sound (self, CHAN_VOICE, "player/lburn2.wav", 1, ATTN_NORM);
    288 		return;
    289 	}
    290 
    291 	if (self.pain_finished > time)
    292 	{
    293 		self.axhitme = 0;
    294 		return;
    295 	}
    296 	self.pain_finished = time + 0.5;
    297 
    298 // don't make multiple pain sounds right after each other
    299 
    300 // ax pain sound
    301 	if (self.axhitme == 1)
    302 	{
    303 		self.axhitme = 0;
    304 		sound (self, CHAN_VOICE, "player/axhit1.wav", 1, ATTN_NORM);
    305 		return;
    306 	}
    307 	
    308 
    309 	rs = rint((random() * 5) + 1);
    310 
    311 	self.noise = "";
    312 	if (rs == 1)
    313 		self.noise = "player/pain1.wav";
    314 	else if (rs == 2)
    315 		self.noise = "player/pain2.wav";
    316 	else if (rs == 3)
    317 		self.noise = "player/pain3.wav";
    318 	else if (rs == 4)
    319 		self.noise = "player/pain4.wav";
    320 	else if (rs == 5)
    321 		self.noise = "player/pain5.wav";
    322 	else
    323 		self.noise = "player/pain6.wav";
    324 
    325 	sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
    326 	return;
    327 };
    328 
    329 void()  player_pain1 =  [       $pain1, player_pain2    ] {PainSound();self.weaponframe=0;};
    330 void()  player_pain2 =  [       $pain2, player_pain3    ] {};
    331 void()  player_pain3 =  [       $pain3, player_pain4    ] {};
    332 void()  player_pain4 =  [       $pain4, player_pain5    ] {};
    333 void()  player_pain5 =  [       $pain5, player_pain6    ] {};
    334 void()  player_pain6 =  [       $pain6, player_run      ] {};
    335 
    336 void()  player_axpain1 =        [       $axpain1,       player_axpain2  ] {PainSound();self.weaponframe=0;};
    337 void()  player_axpain2 =        [       $axpain2,       player_axpain3  ] {};
    338 void()  player_axpain3 =        [       $axpain3,       player_axpain4  ] {};
    339 void()  player_axpain4 =        [       $axpain4,       player_axpain5  ] {};
    340 void()  player_axpain5 =        [       $axpain5,       player_axpain6  ] {};
    341 void()  player_axpain6 =        [       $axpain6,       player_run      ] {};
    342 
    343 void() player_pain =
    344 {
    345 	if (self.weaponframe)
    346 		return;
    347 
    348 	if (self.invisible_finished > time)
    349 		return;         // eyes don't have pain frames
    350 
    351 	if (self.weapon == IT_AXE)
    352 		player_axpain1 ();
    353 	else
    354 		player_pain1 ();
    355 };
    356 
    357 void() player_diea1;
    358 void() player_dieb1;
    359 void() player_diec1;
    360 void() player_died1;
    361 void() player_diee1;
    362 void() player_die_ax1;
    363 
    364 void() DeathBubblesSpawn =
    365 {
    366 local entity    bubble;
    367 	if (self.owner.waterlevel != 3)
    368 		return;
    369 	bubble = spawn();
    370 	setmodel (bubble, "progs/s_bubble.spr");
    371 	setorigin (bubble, self.owner.origin + '0 0 24');
    372 	bubble.movetype = MOVETYPE_NOCLIP;
    373 	bubble.solid = SOLID_NOT;
    374 	bubble.velocity = '0 0 15';
    375 	bubble.nextthink = time + 0.5;
    376 	bubble.think = bubble_bob;
    377 	bubble.classname = "bubble";
    378 	bubble.frame = 0;
    379 	bubble.cnt = 0;
    380 	setsize (bubble, '-8 -8 -8', '8 8 8');
    381 	self.nextthink = time + 0.1;
    382 	self.think = DeathBubblesSpawn;
    383 	self.air_finished = self.air_finished + 1;
    384 	if (self.air_finished >= self.bubble_count)
    385 		remove(self);
    386 };
    387 
    388 void(float num_bubbles) DeathBubbles =
    389 {
    390 local entity    bubble_spawner;
    391 	
    392 	bubble_spawner = spawn();
    393 	setorigin (bubble_spawner, self.origin);
    394 	bubble_spawner.movetype = MOVETYPE_NONE;
    395 	bubble_spawner.solid = SOLID_NOT;
    396 	bubble_spawner.nextthink = time + 0.1;
    397 	bubble_spawner.think = DeathBubblesSpawn;
    398 	bubble_spawner.air_finished = 0;
    399 	bubble_spawner.owner = self;
    400 	bubble_spawner.bubble_count = num_bubbles;
    401 	return;
    402 };
    403 
    404 
    405 void() DeathSound =
    406 {
    407 local float             rs;
    408 
    409 	// water death sounds
    410 	if (self.waterlevel == 3)
    411 	{
    412 		DeathBubbles(5);
    413 		sound (self, CHAN_VOICE, "player/h2odeath.wav", 1, ATTN_NONE);
    414 		return;
    415 	}
    416 	
    417 	rs = rint ((random() * 4) + 1);
    418 	if (rs == 1)
    419 		self.noise = "player/death1.wav";
    420 	if (rs == 2)
    421 		self.noise = "player/death2.wav";
    422 	if (rs == 3)
    423 		self.noise = "player/death3.wav";
    424 	if (rs == 4)
    425 		self.noise = "player/death4.wav";
    426 	if (rs == 5)
    427 		self.noise = "player/death5.wav";
    428 
    429 	sound (self, CHAN_VOICE, self.noise, 1, ATTN_NONE);
    430 	return;
    431 };
    432 
    433 
    434 void() PlayerDead =
    435 {
    436 	self.nextthink = -1;
    437 // allow respawn after a certain time
    438 	self.deadflag = DEAD_DEAD;
    439 };
    440 
    441 vector(float dm) VelocityForDamage =
    442 {
    443 	local vector v;
    444 
    445 	if (vlen(damage_inflictor.velocity)>0)
    446 	{
    447 		v = 0.5 * damage_inflictor.velocity;
    448 		v = v + (25 * normalize(self.origin-damage_inflictor.origin));
    449 		v_z = 100 + 240 * random();
    450 		v_x = v_x + (200 * crandom());
    451 		v_y = v_y + (200 * crandom());
    452 		//dprint ("Velocity gib\n");                
    453 	}
    454 	else
    455 	{
    456 		v_x = 100 * crandom();
    457 		v_y = 100 * crandom();
    458 		v_z = 200 + 100 * random();
    459 	}
    460 
    461 	//v_x = 100 * crandom();
    462 	//v_y = 100 * crandom();
    463 	//v_z = 200 + 100 * random();
    464 
    465 	if (dm > -50)
    466 	{
    467 	//      dprint ("level 1\n");
    468 		v = v * 0.7;
    469 	}
    470 	else if (dm > -200)
    471 	{
    472 	//      dprint ("level 3\n");
    473 		v = v * 2;
    474 	}
    475 	else
    476 		v = v * 10;
    477 
    478 	return v;
    479 };
    480 
    481 void(string gibname, float dm) ThrowGib =
    482 {
    483 	local   entity new;
    484 
    485 	new = spawn();
    486 	new.origin = self.origin;
    487 	setmodel (new, gibname);
    488 	setsize (new, '0 0 0', '0 0 0');
    489 	new.velocity = VelocityForDamage (dm);
    490 	new.movetype = MOVETYPE_BOUNCE;
    491 	new.solid = SOLID_NOT;
    492 	new.avelocity_x = random()*600;
    493 	new.avelocity_y = random()*600;
    494 	new.avelocity_z = random()*600;
    495 	new.think = SUB_Remove;
    496 	new.ltime = time;
    497 	new.nextthink = time + 10 + random()*10;
    498 	new.frame = 0;
    499 	new.flags = 0;
    500 };
    501 
    502 void(string gibname, float dm) ThrowHead =
    503 {
    504 	setmodel (self, gibname);
    505 	self.frame = 0;
    506 	self.nextthink = -1;
    507 	self.movetype = MOVETYPE_BOUNCE;
    508 	self.takedamage = DAMAGE_NO;
    509 	self.solid = SOLID_NOT;
    510 	self.view_ofs = '0 0 8';
    511 	setsize (self, '-16 -16 0', '16 16 56');
    512 	self.velocity = VelocityForDamage (dm);
    513 	self.origin_z = self.origin_z - 24;
    514 	self.flags = self.flags - (self.flags & FL_ONGROUND);
    515 	self.avelocity = crandom() * '0 600 0';
    516 };
    517 
    518 
    519 void() GibPlayer =
    520 {
    521 	ThrowHead ("progs/h_player.mdl", self.health);
    522 	ThrowGib ("progs/gib1.mdl", self.health);
    523 	ThrowGib ("progs/gib2.mdl", self.health);
    524 	ThrowGib ("progs/gib3.mdl", self.health);
    525 
    526 	self.deadflag = DEAD_DEAD;
    527 
    528 	if (damage_attacker.classname == "teledeath")
    529 	{
    530 		sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
    531 		return;
    532 	}
    533 
    534 	if (damage_attacker.classname == "teledeath2")
    535 	{
    536 		sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
    537 		return;
    538 	}
    539 		
    540 	if (random() < 0.5)
    541 		sound (self, CHAN_VOICE, "player/gib.wav", 1, ATTN_NONE);
    542 	else
    543 		sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NONE);
    544 };
    545 
    546 void() PlayerDie =
    547 {
    548 	local   float   i;
    549 	local	string	s;	
    550 	self.items = self.items - (self.items & IT_INVISIBILITY);
    551 
    552 	if ((stof(infokey(world,"dq"))) != 0)
    553 	{
    554 		if (self.super_damage_finished > 0)
    555 		{
    556 			DropQuad (self.super_damage_finished - time);
    557 			bprint (PRINT_LOW, self.netname);
    558 			if (deathmatch == 4)
    559 				bprint (PRINT_LOW, " lost an OctaPower with ");
    560 			else
    561 				bprint (PRINT_LOW, " lost a quad with ");
    562 			s = ftos(rint(self.super_damage_finished - time));
    563 			bprint (PRINT_LOW, s);
    564 			bprint (PRINT_LOW, " seconds remaining\n");
    565 		}
    566 	}
    567 
    568 	if ((stof(infokey(world,"dr"))) != 0)
    569 	{
    570 		if (self.invisible_finished > 0)
    571 		{
    572 			bprint (PRINT_LOW, self.netname);
    573 			bprint (PRINT_LOW, " lost a ring with ");
    574 			s = ftos(rint(self.invisible_finished - time));
    575 			bprint (PRINT_LOW, s);
    576 			bprint (PRINT_LOW, " seconds remaining\n");
    577 			DropRing (self.invisible_finished - time);
    578 		}
    579 	}
    580 
    581 	self.invisible_finished = 0;    // don't die as eyes
    582 	self.invincible_finished = 0;
    583 	self.super_damage_finished = 0;
    584 	self.radsuit_finished = 0;
    585 	self.modelindex = modelindex_player;    // don't use eyes
    586 
    587 	DropBackpack();
    588 	
    589 	self.weaponmodel="";
    590 	self.view_ofs = '0 0 -8';
    591 	self.deadflag = DEAD_DYING;
    592 	self.solid = SOLID_NOT;
    593 	self.flags = self.flags - (self.flags & FL_ONGROUND);
    594 	self.movetype = MOVETYPE_TOSS;
    595 	if (self.velocity_z < 10)
    596 		self.velocity_z = self.velocity_z + random()*300;
    597 
    598 	if (self.health < -40)
    599 	{
    600 		GibPlayer ();
    601 		return;
    602 	}
    603 
    604 	DeathSound();
    605 	
    606 	self.angles_x = 0;
    607 	self.angles_z = 0;
    608 	
    609 	if (self.weapon == IT_AXE)
    610 	{
    611 		player_die_ax1 ();
    612 		return;
    613 	}
    614 	
    615 	i = cvar("temp1");
    616 	if (!i)
    617 		i = 1 + floor(random()*6);
    618 	
    619 	if (i == 1)
    620 		player_diea1();
    621 	else if (i == 2)
    622 		player_dieb1();
    623 	else if (i == 3)
    624 		player_diec1();
    625 	else if (i == 4)
    626 		player_died1();
    627 	else
    628 		player_diee1();
    629 
    630 };
    631 
    632 void() set_suicide_frame =
    633 {       // used by klill command and diconnect command
    634 	if (self.model != "progs/player.mdl")
    635 		return; // allready gibbed
    636 	self.frame = $deatha11;
    637 	self.solid = SOLID_NOT;
    638 	self.movetype = MOVETYPE_TOSS;
    639 	self.deadflag = DEAD_DEAD;
    640 	self.nextthink = -1;
    641 };
    642 
    643 
    644 void()  player_diea1    =       [       $deatha1,       player_diea2    ] {};
    645 void()  player_diea2    =       [       $deatha2,       player_diea3    ] {};
    646 void()  player_diea3    =       [       $deatha3,       player_diea4    ] {};
    647 void()  player_diea4    =       [       $deatha4,       player_diea5    ] {};
    648 void()  player_diea5    =       [       $deatha5,       player_diea6    ] {};
    649 void()  player_diea6    =       [       $deatha6,       player_diea7    ] {};
    650 void()  player_diea7    =       [       $deatha7,       player_diea8    ] {};
    651 void()  player_diea8    =       [       $deatha8,       player_diea9    ] {};
    652 void()  player_diea9    =       [       $deatha9,       player_diea10   ] {};
    653 void()  player_diea10   =       [       $deatha10,      player_diea11   ] {};
    654 void()  player_diea11   =       [       $deatha11,      player_diea11 ] {PlayerDead();};
    655 
    656 void()  player_dieb1    =       [       $deathb1,       player_dieb2    ] {};
    657 void()  player_dieb2    =       [       $deathb2,       player_dieb3    ] {};
    658 void()  player_dieb3    =       [       $deathb3,       player_dieb4    ] {};
    659 void()  player_dieb4    =       [       $deathb4,       player_dieb5    ] {};
    660 void()  player_dieb5    =       [       $deathb5,       player_dieb6    ] {};
    661 void()  player_dieb6    =       [       $deathb6,       player_dieb7    ] {};
    662 void()  player_dieb7    =       [       $deathb7,       player_dieb8    ] {};
    663 void()  player_dieb8    =       [       $deathb8,       player_dieb9    ] {};
    664 void()  player_dieb9    =       [       $deathb9,       player_dieb9    ] {PlayerDead();};
    665 
    666 void()  player_diec1    =       [       $deathc1,       player_diec2    ] {};
    667 void()  player_diec2    =       [       $deathc2,       player_diec3    ] {};
    668 void()  player_diec3    =       [       $deathc3,       player_diec4    ] {};
    669 void()  player_diec4    =       [       $deathc4,       player_diec5    ] {};
    670 void()  player_diec5    =       [       $deathc5,       player_diec6    ] {};
    671 void()  player_diec6    =       [       $deathc6,       player_diec7    ] {};
    672 void()  player_diec7    =       [       $deathc7,       player_diec8    ] {};
    673 void()  player_diec8    =       [       $deathc8,       player_diec9    ] {};
    674 void()  player_diec9    =       [       $deathc9,       player_diec10   ] {};
    675 void()  player_diec10   =       [       $deathc10,      player_diec11   ] {};
    676 void()  player_diec11   =       [       $deathc11,      player_diec12   ] {};
    677 void()  player_diec12   =       [       $deathc12,      player_diec13   ] {};
    678 void()  player_diec13   =       [       $deathc13,      player_diec14   ] {};
    679 void()  player_diec14   =       [       $deathc14,      player_diec15   ] {};
    680 void()  player_diec15   =       [       $deathc15,      player_diec15 ] {PlayerDead();};
    681 
    682 void()  player_died1    =       [       $deathd1,       player_died2    ] {};
    683 void()  player_died2    =       [       $deathd2,       player_died3    ] {};
    684 void()  player_died3    =       [       $deathd3,       player_died4    ] {};
    685 void()  player_died4    =       [       $deathd4,       player_died5    ] {};
    686 void()  player_died5    =       [       $deathd5,       player_died6    ] {};
    687 void()  player_died6    =       [       $deathd6,       player_died7    ] {};
    688 void()  player_died7    =       [       $deathd7,       player_died8    ] {};
    689 void()  player_died8    =       [       $deathd8,       player_died9    ] {};
    690 void()  player_died9    =       [       $deathd9,       player_died9    ] {PlayerDead();};
    691 
    692 void()  player_diee1    =       [       $deathe1,       player_diee2    ] {};
    693 void()  player_diee2    =       [       $deathe2,       player_diee3    ] {};
    694 void()  player_diee3    =       [       $deathe3,       player_diee4    ] {};
    695 void()  player_diee4    =       [       $deathe4,       player_diee5    ] {};
    696 void()  player_diee5    =       [       $deathe5,       player_diee6    ] {};
    697 void()  player_diee6    =       [       $deathe6,       player_diee7    ] {};
    698 void()  player_diee7    =       [       $deathe7,       player_diee8    ] {};
    699 void()  player_diee8    =       [       $deathe8,       player_diee9    ] {};
    700 void()  player_diee9    =       [       $deathe9,       player_diee9    ] {PlayerDead();};
    701 
    702 void()  player_die_ax1  =       [       $axdeth1,       player_die_ax2  ] {};
    703 void()  player_die_ax2  =       [       $axdeth2,       player_die_ax3  ] {};
    704 void()  player_die_ax3  =       [       $axdeth3,       player_die_ax4  ] {};
    705 void()  player_die_ax4  =       [       $axdeth4,       player_die_ax5  ] {};
    706 void()  player_die_ax5  =       [       $axdeth5,       player_die_ax6  ] {};
    707 void()  player_die_ax6  =       [       $axdeth6,       player_die_ax7  ] {};
    708 void()  player_die_ax7  =       [       $axdeth7,       player_die_ax8  ] {};
    709 void()  player_die_ax8  =       [       $axdeth8,       player_die_ax9  ] {};
    710 void()  player_die_ax9  =       [       $axdeth9,       player_die_ax9  ] {PlayerDead();};
    711