Annotation of quakeworld/progs/player.qc, revision 1.1.1.1

1.1       root        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();};

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.