]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/player.qc
small changes
[divverent/nexuiz.git] / qcsrc / player.qc
1 $frame die1 die2 draw duck duckwalk duckjump duckidle idle
2 $frame jump pain1 pain2 shoot taunt run runbackwards
3 $frame strafeleft straferight dead1 dead2 forwardright
4 $frame forwardleft backright backleft
5
6 //Begin change by Supajoe on 11:44 PM EST 11/16/03 (Subject: Player animations)
7 void player_run (void);
8 void player_stand (void)
9 {
10         if (self.movement_x || self.movement_y)         // ?
11                 player_run ();
12         else
13         {
14                 if (self.attack_finished > time)
15                         self.frame = $shoot;
16                 else if (self.pain_finished > time)
17                         self.frame = self.pain_frame;
18                 else    self.frame = $idle;
19
20                 self.think = player_stand;
21                 self.nextthink = time + 0.05;
22         }
23 }
24
25 void player_run (void)
26 {
27         if (!self.movement_x && !self.movement_y)       // ?
28                 player_stand ();
29         else
30         {
31                 if (self.movement_x > 0 && self.movement_y == 0)
32                  self.frame = $run;
33                 else if (self.movement_x < 0 && self.movement_y == 0)
34                  self.frame = $runbackwards;
35                 else if (self.movement_x == 0 && self.movement_y > 0)
36                  self.frame = $straferight;
37                 else if (self.movement_x == 0 && self.movement_y < 0)
38                  self.frame = $strafeleft;
39                 else if (self.movement_x > 0 && self.movement_y > 0)
40                  self.frame = $forwardright;
41                 else if (self.movement_x > 0 && self.movement_y < 0)
42                  self.frame = $forwardleft;
43                 else if (self.movement_x < 0 && self.movement_y > 0)
44                  self.frame = $backright;
45                 else if (self.movement_x < 0 && self.movement_y < 0)
46                  self.frame = $backleft;
47                 else if (self.attack_finished > time)
48                         self.frame = $shoot;
49                 else if (self.pain_finished > time)
50                         self.frame = self.pain_frame;
51
52                 self.think = player_run;
53                 self.nextthink = time + 0.05;
54         }
55 }
56 //End change by Supajoe on 11:44 PM EST 11/16/03 (Subject: Player animations)
57
58 void PlayerWeaponThrow (void)
59 {
60         local entity    item;
61         local entity    backup;
62
63         item = spawn();
64
65         backup = self;
66         self = item;
67
68         self.origin = backup.origin - '0 0 24';
69         
70         self.velocity_z = 300;
71         self.velocity_x = -100 + (random() * 200);
72         self.velocity_y = -100 + (random() * 200);
73         self.norespawn = 1;
74
75         if      (backup.weapon == IT_LASER)
76                 remove (self);
77         else if (backup.weapon == IT_UZI)
78                 weapon_uzi ();
79         else if (backup.weapon == IT_SHOTGUN)
80                 weapon_shotgun ();
81         else if (backup.weapon == IT_GRENADE_LAUNCHER)
82                 weapon_grenadelauncher ();
83         else if (backup.weapon == IT_ELECTRO)
84                 weapon_electro ();
85         else if (backup.weapon == IT_CRYLINK)
86                 weapon_crylink ();
87         else if (backup.weapon == IT_NEX)
88                 weapon_nex ();
89         else if (backup.weapon == IT_HAGAR)
90                 weapon_hagar ();
91         else if (backup.weapon == IT_ROCKET_LAUNCHER)
92                 weapon_rocketlauncher ();
93
94         self = backup;
95
96         stuffcmd(self, "chase_active 1");
97         setmodel (self, "models/gibs/gib1.mdl");
98 }
99
100 void PlayerHurt (vector hitloc, float damage)
101 {
102         te_blood (hitloc, '0 0 20', floor (damage / 2));
103
104         if (self.pain_finished < time)          //Don't switch pain sequences like crazy
105                 {
106                 if (random() > 0.5)
107                         self.pain_frame = $pain1;
108                 else    self.pain_frame = $pain2;
109
110                 self.pain_finished = time + 0.5;        //Supajoe
111                 }
112 }
113
114 void PlayerDie (vector hitloc, float damage)
115 {
116         self.avelocity = '0 0 0';
117         self.movetype = MOVETYPE_TOSS;
118         self.weaponmodel = "";
119         self.view_ofs = '0 0 -8';
120         self.deadflag = DEAD_DYING;
121         self.solid = SOLID_NOT;
122         self.flags = self.flags - (self.flags & FL_ONGROUND);
123         self.death_time = time + 1;
124         self.dead_angles = self.angles;
125         self.dead_angles_x = 0;
126         self.deadflag = DEAD_DEAD;
127
128         vector  vel;
129         te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 600, 500);
130         vel = normalize (self.origin - hitloc) * damage * 4;    // blow gibs away from impact point
131         if (vel_z > 0)
132                 vel_z = vel_z * 2;      // more vertical
133         Gib (vel);
134
135         PlayerWeaponThrow ();
136 }