summaryrefslogtreecommitdiff
path: root/src/baseq2/g_turret.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/baseq2/g_turret.c')
-rw-r--r--src/baseq2/g_turret.c152
1 files changed, 68 insertions, 84 deletions
diff --git a/src/baseq2/g_turret.c b/src/baseq2/g_turret.c
index cd3c3a9..66f9a22 100644
--- a/src/baseq2/g_turret.c
+++ b/src/baseq2/g_turret.c
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
@@ -24,13 +24,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
void AnglesNormalize(vec3_t vec)
{
- while(vec[0] > 360)
+ while (vec[0] > 360)
vec[0] -= 360;
- while(vec[0] < 0)
+ while (vec[0] < 0)
vec[0] += 360;
- while(vec[1] > 360)
+ while (vec[1] > 360)
vec[1] -= 360;
- while(vec[1] < 0)
+ while (vec[1] < 0)
vec[1] += 360;
}
@@ -49,13 +49,12 @@ void turret_blocked(edict_t *self, edict_t *other)
{
edict_t *attacker;
- if (other->takedamage)
- {
+ if (other->takedamage) {
if (self->teammaster->owner)
attacker = self->teammaster->owner;
else
attacker = self->teammaster;
- T_Damage (other, self, attacker, vec3_origin, other->s.origin, vec3_origin, self->teammaster->dmg, 10, 0, MOD_CRUSH);
+ T_Damage(other, self, attacker, vec3_origin, other->s.origin, vec3_origin, self->teammaster->dmg, 10, 0, MOD_CRUSH);
}
}
@@ -75,31 +74,31 @@ Use "angle" to set the starting angle.
"maxyaw" max acceptable yaw angle : default 360
*/
-void turret_breach_fire (edict_t *self)
+void turret_breach_fire(edict_t *self)
{
vec3_t f, r, u;
vec3_t start;
int damage;
int speed;
- AngleVectors (self->s.angles, f, r, u);
- VectorMA (self->s.origin, self->move_origin[0], f, start);
- VectorMA (start, self->move_origin[1], r, start);
- VectorMA (start, self->move_origin[2], u, start);
+ AngleVectors(self->s.angles, f, r, u);
+ VectorMA(self->s.origin, self->move_origin[0], f, start);
+ VectorMA(start, self->move_origin[1], r, start);
+ VectorMA(start, self->move_origin[2], u, start);
damage = 100 + random() * 50;
speed = 550 + 50 * skill->value;
- fire_rocket (self->teammaster->owner, start, f, damage, speed, 150, damage);
- gi.positioned_sound (start, self, CHAN_WEAPON, gi.soundindex("weapons/rocklf1a.wav"), 1, ATTN_NORM, 0);
+ fire_rocket(self->teammaster->owner, start, f, damage, speed, 150, damage);
+ gi.positioned_sound(start, self, CHAN_WEAPON, gi.soundindex("weapons/rocklf1a.wav"), 1, ATTN_NORM, 0);
}
-void turret_breach_think (edict_t *self)
+void turret_breach_think(edict_t *self)
{
edict_t *ent;
vec3_t current_angles;
vec3_t delta;
- VectorCopy (self->s.angles, current_angles);
+ VectorCopy(self->s.angles, current_angles);
AnglesNormalize(current_angles);
AnglesNormalize(self->move_angles);
@@ -112,8 +111,7 @@ void turret_breach_think (edict_t *self)
else if (self->move_angles[PITCH] < self->pos2[PITCH])
self->move_angles[PITCH] = self->pos2[PITCH];
- if ((self->move_angles[YAW] < self->pos1[YAW]) || (self->move_angles[YAW] > self->pos2[YAW]))
- {
+ if ((self->move_angles[YAW] < self->pos1[YAW]) || (self->move_angles[YAW] > self->pos2[YAW])) {
float dmin, dmax;
dmin = fabs(self->pos1[YAW] - self->move_angles[YAW]);
@@ -132,7 +130,7 @@ void turret_breach_think (edict_t *self)
self->move_angles[YAW] = self->pos2[YAW];
}
- VectorSubtract (self->move_angles, current_angles, delta);
+ VectorSubtract(self->move_angles, current_angles, delta);
if (delta[0] < -180)
delta[0] += 360;
else if (delta[0] > 180)
@@ -152,7 +150,7 @@ void turret_breach_think (edict_t *self)
if (delta[1] < -1 * self->speed * FRAMETIME)
delta[1] = -1 * self->speed * FRAMETIME;
- VectorScale (delta, 1.0/FRAMETIME, self->avelocity);
+ VectorScale(delta, 1.0 / FRAMETIME, self->avelocity);
self->nextthink = level.time + FRAMETIME;
@@ -160,8 +158,7 @@ void turret_breach_think (edict_t *self)
ent->avelocity[1] = self->avelocity[1];
// if we have adriver, adjust his velocities
- if (self->owner)
- {
+ if (self->owner) {
float angle;
float target_z;
float diff;
@@ -174,54 +171,50 @@ void turret_breach_think (edict_t *self)
// x & y
angle = self->s.angles[1] + self->owner->move_origin[1];
- angle *= (M_PI*2 / 360);
+ angle *= (M_PI * 2 / 360);
target[0] = SnapToEights(self->s.origin[0] + cos(angle) * self->owner->move_origin[0]);
target[1] = SnapToEights(self->s.origin[1] + sin(angle) * self->owner->move_origin[0]);
target[2] = self->owner->s.origin[2];
- VectorSubtract (target, self->owner->s.origin, dir);
+ VectorSubtract(target, self->owner->s.origin, dir);
self->owner->velocity[0] = dir[0] * 1.0 / FRAMETIME;
self->owner->velocity[1] = dir[1] * 1.0 / FRAMETIME;
// z
- angle = self->s.angles[PITCH] * (M_PI*2 / 360);
+ angle = self->s.angles[PITCH] * (M_PI * 2 / 360);
target_z = SnapToEights(self->s.origin[2] + self->owner->move_origin[0] * tan(angle) + self->owner->move_origin[2]);
diff = target_z - self->owner->s.origin[2];
self->owner->velocity[2] = diff * 1.0 / FRAMETIME;
- if (self->spawnflags & 65536)
- {
- turret_breach_fire (self);
+ if (self->spawnflags & 65536) {
+ turret_breach_fire(self);
self->spawnflags &= ~65536;
}
}
}
-void turret_breach_finish_init (edict_t *self)
+void turret_breach_finish_init(edict_t *self)
{
// get and save info for muzzle location
- if (!self->target)
- {
+ if (!self->target) {
gi.dprintf("%s at %s needs a target\n", self->classname, vtos(self->s.origin));
- }
- else
- {
- self->target_ent = G_PickTarget (self->target);
- VectorSubtract (self->target_ent->s.origin, self->s.origin, self->move_origin);
+ } else {
+ self->target_ent = G_PickTarget(self->target);
+ VectorSubtract(self->target_ent->s.origin, self->s.origin, self->move_origin);
G_FreeEdict(self->target_ent);
}
self->teammaster->dmg = self->dmg;
self->think = turret_breach_think;
- self->think (self);
+ self->think(self);
}
-void SP_turret_breach (edict_t *self)
+void SP_turret_breach(edict_t *self)
{
self->solid = SOLID_BSP;
self->movetype = MOVETYPE_PUSH;
- gi.setmodel (self, self->model);
+ gi.setmodel(self, self->model);
if (!self->speed)
self->speed = 50;
@@ -247,7 +240,7 @@ void SP_turret_breach (edict_t *self)
self->think = turret_breach_finish_init;
self->nextthink = level.time + FRAMETIME;
- gi.linkentity (self);
+ gi.linkentity(self);
}
@@ -256,13 +249,13 @@ This portion of the turret changes yaw only.
MUST be teamed with a turret_breach.
*/
-void SP_turret_base (edict_t *self)
+void SP_turret_base(edict_t *self)
{
self->solid = SOLID_BSP;
self->movetype = MOVETYPE_PUSH;
- gi.setmodel (self, self->model);
+ gi.setmodel(self, self->model);
self->blocked = turret_blocked;
- gi.linkentity (self);
+ gi.linkentity(self);
}
@@ -271,11 +264,11 @@ Must NOT be on the team with the rest of the turret parts.
Instead it must target the turret_breach.
*/
-void infantry_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage);
-void infantry_stand (edict_t *self);
-void monster_use (edict_t *self, edict_t *other, edict_t *activator);
+void infantry_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage);
+void infantry_stand(edict_t *self);
+void monster_use(edict_t *self, edict_t *other, edict_t *activator);
-void turret_driver_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
+void turret_driver_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
{
edict_t *ent;
@@ -292,12 +285,12 @@ void turret_driver_die (edict_t *self, edict_t *inflictor, edict_t *attacker, in
self->target_ent->owner = NULL;
self->target_ent->teammaster->owner = NULL;
- infantry_die (self, inflictor, attacker, damage);
+ infantry_die(self, inflictor, attacker, damage);
}
-qboolean FindTarget (edict_t *self);
+qboolean FindTarget(edict_t *self);
-void turret_driver_think (edict_t *self)
+void turret_driver_think(edict_t *self)
{
vec3_t target;
vec3_t dir;
@@ -308,35 +301,28 @@ void turret_driver_think (edict_t *self)
if (self->enemy && (!self->enemy->inuse || self->enemy->health <= 0))
self->enemy = NULL;
- if (!self->enemy)
- {
- if (!FindTarget (self))
+ if (!self->enemy) {
+ if (!FindTarget(self))
return;
self->monsterinfo.trail_time = level.time;
self->monsterinfo.aiflags &= ~AI_LOST_SIGHT;
- }
- else
- {
- if (visible (self, self->enemy))
- {
- if (self->monsterinfo.aiflags & AI_LOST_SIGHT)
- {
+ } else {
+ if (visible(self, self->enemy)) {
+ if (self->monsterinfo.aiflags & AI_LOST_SIGHT) {
self->monsterinfo.trail_time = level.time;
self->monsterinfo.aiflags &= ~AI_LOST_SIGHT;
}
- }
- else
- {
+ } else {
self->monsterinfo.aiflags |= AI_LOST_SIGHT;
return;
}
}
// let the turret know where we want it to aim
- VectorCopy (self->enemy->s.origin, target);
+ VectorCopy(self->enemy->s.origin, target);
target[2] += self->enemy->viewheight;
- VectorSubtract (target, self->target_ent->s.origin, dir);
- vectoangles (dir, self->target_ent->move_angles);
+ VectorSubtract(target, self->target_ent->s.origin, dir);
+ vectoangles(dir, self->target_ent->move_angles);
// decide if we should shoot
if (level.time < self->monsterinfo.attack_finished)
@@ -351,7 +337,7 @@ void turret_driver_think (edict_t *self)
self->target_ent->spawnflags |= 65536;
}
-void turret_driver_link (edict_t *self)
+void turret_driver_link(edict_t *self)
{
vec3_t vec;
edict_t *ent;
@@ -359,18 +345,18 @@ void turret_driver_link (edict_t *self)
self->think = turret_driver_think;
self->nextthink = level.time + FRAMETIME;
- self->target_ent = G_PickTarget (self->target);
+ self->target_ent = G_PickTarget(self->target);
self->target_ent->owner = self;
self->target_ent->teammaster->owner = self;
- VectorCopy (self->target_ent->s.angles, self->s.angles);
+ VectorCopy(self->target_ent->s.angles, self->s.angles);
vec[0] = self->target_ent->s.origin[0] - self->s.origin[0];
vec[1] = self->target_ent->s.origin[1] - self->s.origin[1];
vec[2] = 0;
self->move_origin[0] = VectorLength(vec);
- VectorSubtract (self->s.origin, self->target_ent->s.origin, vec);
- vectoangles (vec, vec);
+ VectorSubtract(self->s.origin, self->target_ent->s.origin, vec);
+ vectoangles(vec, vec);
AnglesNormalize(vec);
self->move_origin[1] = vec[1];
@@ -384,19 +370,18 @@ void turret_driver_link (edict_t *self)
self->flags |= FL_TEAMSLAVE;
}
-void SP_turret_driver (edict_t *self)
+void SP_turret_driver(edict_t *self)
{
- if (deathmatch->value)
- {
- G_FreeEdict (self);
+ if (deathmatch->value) {
+ G_FreeEdict(self);
return;
}
self->movetype = MOVETYPE_PUSH;
self->solid = SOLID_BBOX;
self->s.modelindex = gi.modelindex("models/monsters/infantry/tris.md2");
- VectorSet (self->mins, -16, -16, -24);
- VectorSet (self->maxs, 16, 16, 32);
+ VectorSet(self->mins, -16, -16, -24);
+ VectorSet(self->maxs, 16, 16, 32);
self->health = 100;
self->gib_health = 0;
@@ -415,12 +400,11 @@ void SP_turret_driver (edict_t *self)
self->takedamage = DAMAGE_AIM;
self->use = monster_use;
self->clipmask = MASK_MONSTERSOLID;
- VectorCopy (self->s.origin, self->s.old_origin);
- self->monsterinfo.aiflags |= AI_STAND_GROUND|AI_DUCKED;
+ VectorCopy(self->s.origin, self->s.old_origin);
+ self->monsterinfo.aiflags |= AI_STAND_GROUND | AI_DUCKED;
- if (st.item)
- {
- self->item = FindItemByClassname (st.item);
+ if (st.item) {
+ self->item = FindItemByClassname(st.item);
if (!self->item)
gi.dprintf("%s at %s has bad item: %s\n", self->classname, vtos(self->s.origin), st.item);
}
@@ -428,5 +412,5 @@ void SP_turret_driver (edict_t *self)
self->think = turret_driver_link;
self->nextthink = level.time + FRAMETIME;
- gi.linkentity (self);
+ gi.linkentity(self);
}