]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/player.qc
todo list update, much better
[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 }
98
99 void PlayerHurt (vector hitloc, float damage)
100 {
101         te_blood (hitloc, '0 0 20', floor (damage / 2));
102
103         if (self.pain_finished < time)          //Don't switch pain sequences like crazy
104                 {
105                 if (random() > 0.5)
106                         self.pain_frame = $pain1;
107                 else    self.pain_frame = $pain2;
108
109                 self.pain_finished = time + 0.5;        //Supajoe
110                 }
111 }
112
113 void PlayerDie (void)
114 {
115         self.avelocity = '0 0 0';
116         self.movetype = MOVETYPE_TOSS;
117         self.weaponmodel = "";
118         self.view_ofs = '0 0 -8';
119         self.deadflag = DEAD_DYING;
120         self.solid = SOLID_NOT;
121         self.flags = self.flags - (self.flags & FL_ONGROUND);
122         self.death_time = time + 1;
123         self.dead_angles = self.angles;
124         self.dead_angles_x = 0;
125         self.deadflag = DEAD_DEAD;
126
127 //Supajoe: Working on this
128 //      if (random() > 0.5)
129 //              self.frame = $die1;
130 //      else    self.frame = $die2;
131
132         PlayerWeaponThrow ();
133 }