diff options
Diffstat (limited to 'src/baseq2/g_target.c')
-rw-r--r-- | src/baseq2/g_target.c | 396 |
1 files changed, 182 insertions, 214 deletions
diff --git a/src/baseq2/g_target.c b/src/baseq2/g_target.c index 03a2264..1c960f8 100644 --- a/src/baseq2/g_target.c +++ b/src/baseq2/g_target.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. @@ -23,15 +23,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Fire an origin based temp entity event to the clients. "style" type byte */ -void Use_Target_Tent (edict_t *ent, edict_t *other, edict_t *activator) +void Use_Target_Tent(edict_t *ent, edict_t *other, edict_t *activator) { - gi.WriteByte (svc_temp_entity); - gi.WriteByte (ent->style); - gi.WritePosition (ent->s.origin); - gi.multicast (ent->s.origin, MULTICAST_PVS); + gi.WriteByte(svc_temp_entity); + gi.WriteByte(ent->style); + gi.WritePosition(ent->s.origin); + gi.multicast(ent->s.origin, MULTICAST_PVS); } -void SP_target_temp_entity (edict_t *ent) +void SP_target_temp_entity(edict_t *ent) { ent->use = Use_Target_Tent; } @@ -55,43 +55,41 @@ Normal sounds play each time the target is used. The reliable flag can be set f Looped sounds are always atten 3 / vol 1, and the use function toggles it on/off. Multiple identical looping sounds will just increase volume without any speed cost. */ -void Use_Target_Speaker (edict_t *ent, edict_t *other, edict_t *activator) +void Use_Target_Speaker(edict_t *ent, edict_t *other, edict_t *activator) { int chan; - if (ent->spawnflags & 3) - { // looping sound toggles + if (ent->spawnflags & 3) { + // looping sound toggles if (ent->s.sound) ent->s.sound = 0; // turn it off else ent->s.sound = ent->noise_index; // start it - } - else - { // normal sound + } else { + // normal sound if (ent->spawnflags & 4) - chan = CHAN_VOICE|CHAN_RELIABLE; + chan = CHAN_VOICE | CHAN_RELIABLE; else chan = CHAN_VOICE; // use a positioned_sound, because this entity won't normally be // sent to any clients because it is invisible - gi.positioned_sound (ent->s.origin, ent, chan, ent->noise_index, ent->volume, ent->attenuation, 0); + gi.positioned_sound(ent->s.origin, ent, chan, ent->noise_index, ent->volume, ent->attenuation, 0); } } -void SP_target_speaker (edict_t *ent) +void SP_target_speaker(edict_t *ent) { char buffer[MAX_QPATH]; - if(!st.noise) - { + if (!st.noise) { gi.dprintf("target_speaker with no noise set at %s\n", vtos(ent->s.origin)); return; } - if (!strstr (st.noise, ".wav")) - Q_snprintf (buffer, sizeof(buffer), "%s.wav", st.noise); + if (!strstr(st.noise, ".wav")) + Q_snprintf(buffer, sizeof(buffer), "%s.wav", st.noise); else - strncpy (buffer, st.noise, sizeof(buffer)); - ent->noise_index = gi.soundindex (buffer); + strncpy(buffer, st.noise, sizeof(buffer)); + ent->noise_index = gi.soundindex(buffer); if (!ent->volume) ent->volume = 1.0; @@ -109,18 +107,18 @@ void SP_target_speaker (edict_t *ent) // must link the entity so we get areas and clusters so // the server can determine who to send updates to - gi.linkentity (ent); + gi.linkentity(ent); } //========================================================== -void Use_Target_Help (edict_t *ent, edict_t *other, edict_t *activator) +void Use_Target_Help(edict_t *ent, edict_t *other, edict_t *activator) { if (ent->spawnflags & 1) - strncpy (game.helpmessage1, ent->message, sizeof(game.helpmessage2)-1); + strncpy(game.helpmessage1, ent->message, sizeof(game.helpmessage2) - 1); else - strncpy (game.helpmessage2, ent->message, sizeof(game.helpmessage1)-1); + strncpy(game.helpmessage2, ent->message, sizeof(game.helpmessage1) - 1); game.helpchanged++; } @@ -130,16 +128,15 @@ When fired, the "message" key becomes the current personal computer string, and */ void SP_target_help(edict_t *ent) { - if (deathmatch->value) - { // auto-remove for deathmatch - G_FreeEdict (ent); + if (deathmatch->value) { + // auto-remove for deathmatch + G_FreeEdict(ent); return; } - if (!ent->message) - { - gi.dprintf ("%s with no message at %s\n", ent->classname, vtos(ent->s.origin)); - G_FreeEdict (ent); + if (!ent->message) { + gi.dprintf("%s with no message at %s\n", ent->classname, vtos(ent->s.origin)); + G_FreeEdict(ent); return; } ent->use = Use_Target_Help; @@ -151,28 +148,28 @@ void SP_target_help(edict_t *ent) Counts a secret found. These are single use targets. */ -void use_target_secret (edict_t *ent, edict_t *other, edict_t *activator) +void use_target_secret(edict_t *ent, edict_t *other, edict_t *activator) { - gi.sound (ent, CHAN_VOICE, ent->noise_index, 1, ATTN_NORM, 0); + gi.sound(ent, CHAN_VOICE, ent->noise_index, 1, ATTN_NORM, 0); level.found_secrets++; - G_UseTargets (ent, activator); - G_FreeEdict (ent); + G_UseTargets(ent, activator); + G_FreeEdict(ent); } -void SP_target_secret (edict_t *ent) +void SP_target_secret(edict_t *ent) { - if (deathmatch->value) - { // auto-remove for deathmatch - G_FreeEdict (ent); + if (deathmatch->value) { + // auto-remove for deathmatch + G_FreeEdict(ent); return; } ent->use = use_target_secret; if (!st.noise) st.noise = "misc/secret.wav"; - ent->noise_index = gi.soundindex (st.noise); + ent->noise_index = gi.soundindex(st.noise); ent->svflags = SVF_NOCLIENT; level.total_secrets++; // map bug hack @@ -186,31 +183,31 @@ void SP_target_secret (edict_t *ent) Counts a goal completed. These are single use targets. */ -void use_target_goal (edict_t *ent, edict_t *other, edict_t *activator) +void use_target_goal(edict_t *ent, edict_t *other, edict_t *activator) { - gi.sound (ent, CHAN_VOICE, ent->noise_index, 1, ATTN_NORM, 0); + gi.sound(ent, CHAN_VOICE, ent->noise_index, 1, ATTN_NORM, 0); level.found_goals++; if (level.found_goals == level.total_goals) - gi.configstring (CS_CDTRACK, "0"); + gi.configstring(CS_CDTRACK, "0"); - G_UseTargets (ent, activator); - G_FreeEdict (ent); + G_UseTargets(ent, activator); + G_FreeEdict(ent); } -void SP_target_goal (edict_t *ent) +void SP_target_goal(edict_t *ent) { - if (deathmatch->value) - { // auto-remove for deathmatch - G_FreeEdict (ent); + if (deathmatch->value) { + // auto-remove for deathmatch + G_FreeEdict(ent); return; } ent->use = use_target_goal; if (!st.noise) st.noise = "misc/secret.wav"; - ent->noise_index = gi.soundindex (st.noise); + ent->noise_index = gi.soundindex(st.noise); ent->svflags = SVF_NOCLIENT; level.total_goals++; } @@ -224,30 +221,29 @@ Spawns an explosion temporary entity when used. "delay" wait this long before going off "dmg" how much radius damage should be done, defaults to 0 */ -void target_explosion_explode (edict_t *self) +void target_explosion_explode(edict_t *self) { float save; - gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_EXPLOSION1); - gi.WritePosition (self->s.origin); - gi.multicast (self->s.origin, MULTICAST_PHS); + gi.WriteByte(svc_temp_entity); + gi.WriteByte(TE_EXPLOSION1); + gi.WritePosition(self->s.origin); + gi.multicast(self->s.origin, MULTICAST_PHS); - T_RadiusDamage (self, self->activator, self->dmg, NULL, self->dmg+40, MOD_EXPLOSIVE); + T_RadiusDamage(self, self->activator, self->dmg, NULL, self->dmg + 40, MOD_EXPLOSIVE); save = self->delay; self->delay = 0; - G_UseTargets (self, self->activator); + G_UseTargets(self, self->activator); self->delay = save; } -void use_target_explosion (edict_t *self, edict_t *other, edict_t *activator) +void use_target_explosion(edict_t *self, edict_t *other, edict_t *activator) { self->activator = activator; - if (!self->delay) - { - target_explosion_explode (self); + if (!self->delay) { + target_explosion_explode(self); return; } @@ -255,7 +251,7 @@ void use_target_explosion (edict_t *self, edict_t *other, edict_t *activator) self->nextthink = level.time + self->delay; } -void SP_target_explosion (edict_t *ent) +void SP_target_explosion(edict_t *ent) { ent->use = use_target_explosion; ent->svflags = SVF_NOCLIENT; @@ -267,50 +263,46 @@ void SP_target_explosion (edict_t *ent) /*QUAKED target_changelevel (1 0 0) (-8 -8 -8) (8 8 8) Changes level to "map" when fired */ -void use_target_changelevel (edict_t *self, edict_t *other, edict_t *activator) +void use_target_changelevel(edict_t *self, edict_t *other, edict_t *activator) { if (level.intermissiontime) return; // already activated - if (!deathmatch->value && !coop->value) - { + if (!deathmatch->value && !coop->value) { if (g_edicts[1].health <= 0) return; } // if noexit, do a ton of damage to other - if (deathmatch->value && !( (int)dmflags->value & DF_ALLOW_EXIT) && other != world) - { - T_Damage (other, self, self, vec3_origin, other->s.origin, vec3_origin, 10 * other->max_health, 1000, 0, MOD_EXIT); + if (deathmatch->value && !((int)dmflags->value & DF_ALLOW_EXIT) && other != world) { + T_Damage(other, self, self, vec3_origin, other->s.origin, vec3_origin, 10 * other->max_health, 1000, 0, MOD_EXIT); return; } // if multiplayer, let everyone know who hit the exit - if (deathmatch->value) - { + if (deathmatch->value) { if (activator && activator->client) - gi.bprintf (PRINT_HIGH, "%s exited the level.\n", activator->client->pers.netname); + gi.bprintf(PRINT_HIGH, "%s exited the level.\n", activator->client->pers.netname); } // if going to a new unit, clear cross triggers - if (strstr(self->map, "*")) + if (strstr(self->map, "*")) game.serverflags &= ~(SFL_CROSS_TRIGGER_MASK); - BeginIntermission (self); + BeginIntermission(self); } -void SP_target_changelevel (edict_t *ent) +void SP_target_changelevel(edict_t *ent) { - if (!ent->map) - { + if (!ent->map) { gi.dprintf("target_changelevel with no map at %s\n", vtos(ent->s.origin)); - G_FreeEdict (ent); + G_FreeEdict(ent); return; } // ugly hack because *SOMEBODY* screwed up their map - if((Q_stricmp(level.mapname, "fact1") == 0) && (Q_stricmp(ent->map, "fact3") == 0)) - ent->map = "fact3$secret1"; + if ((Q_stricmp(level.mapname, "fact1") == 0) && (Q_stricmp(ent->map, "fact3") == 0)) + ent->map = "fact3$secret1"; ent->use = use_target_changelevel; ent->svflags = SVF_NOCLIENT; @@ -335,24 +327,24 @@ Set "sounds" to one of the following: useful for lava/sparks */ -void use_target_splash (edict_t *self, edict_t *other, edict_t *activator) +void use_target_splash(edict_t *self, edict_t *other, edict_t *activator) { - gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_SPLASH); - gi.WriteByte (self->count); - gi.WritePosition (self->s.origin); - gi.WriteDir (self->movedir); - gi.WriteByte (self->sounds); - gi.multicast (self->s.origin, MULTICAST_PVS); + gi.WriteByte(svc_temp_entity); + gi.WriteByte(TE_SPLASH); + gi.WriteByte(self->count); + gi.WritePosition(self->s.origin); + gi.WriteDir(self->movedir); + gi.WriteByte(self->sounds); + gi.multicast(self->s.origin, MULTICAST_PVS); if (self->dmg) - T_RadiusDamage (self, activator, self->dmg, NULL, self->dmg+40, MOD_SPLASH); + T_RadiusDamage(self, activator, self->dmg, NULL, self->dmg + 40, MOD_SPLASH); } -void SP_target_splash (edict_t *self) +void SP_target_splash(edict_t *self) { self->use = use_target_splash; - G_SetMovedir (self->s.angles, self->movedir); + G_SetMovedir(self->s.angles, self->movedir); if (!self->count) self->count = 32; @@ -375,32 +367,31 @@ For gibs: speed how fast it should be moving otherwise it will just be dropped */ -void ED_CallSpawn (edict_t *ent); +void ED_CallSpawn(edict_t *ent); -void use_target_spawner (edict_t *self, edict_t *other, edict_t *activator) +void use_target_spawner(edict_t *self, edict_t *other, edict_t *activator) { edict_t *ent; ent = G_Spawn(); ent->classname = self->target; - VectorCopy (self->s.origin, ent->s.origin); - VectorCopy (self->s.angles, ent->s.angles); - ED_CallSpawn (ent); - gi.unlinkentity (ent); - KillBox (ent); - gi.linkentity (ent); + VectorCopy(self->s.origin, ent->s.origin); + VectorCopy(self->s.angles, ent->s.angles); + ED_CallSpawn(ent); + gi.unlinkentity(ent); + KillBox(ent); + gi.linkentity(ent); if (self->speed) - VectorCopy (self->movedir, ent->velocity); + VectorCopy(self->movedir, ent->velocity); } -void SP_target_spawner (edict_t *self) +void SP_target_spawner(edict_t *self) { self->use = use_target_spawner; self->svflags = SVF_NOCLIENT; - if (self->speed) - { - G_SetMovedir (self->s.angles, self->movedir); - VectorScale (self->movedir, self->speed, self->movedir); + if (self->speed) { + G_SetMovedir(self->s.angles, self->movedir); + VectorScale(self->movedir, self->speed, self->movedir); } } @@ -413,7 +404,7 @@ dmg default is 15 speed default is 1000 */ -void use_target_blaster (edict_t *self, edict_t *other, edict_t *activator) +void use_target_blaster(edict_t *self, edict_t *other, edict_t *activator) { int effect; @@ -424,15 +415,15 @@ void use_target_blaster (edict_t *self, edict_t *other, edict_t *activator) else effect = EF_BLASTER; - fire_blaster (self, self->s.origin, self->movedir, self->dmg, self->speed, EF_BLASTER, MOD_TARGET_BLASTER); - gi.sound (self, CHAN_VOICE, self->noise_index, 1, ATTN_NORM, 0); + fire_blaster(self, self->s.origin, self->movedir, self->dmg, self->speed, EF_BLASTER, MOD_TARGET_BLASTER); + gi.sound(self, CHAN_VOICE, self->noise_index, 1, ATTN_NORM, 0); } -void SP_target_blaster (edict_t *self) +void SP_target_blaster(edict_t *self) { self->use = use_target_blaster; - G_SetMovedir (self->s.angles, self->movedir); - self->noise_index = gi.soundindex ("weapons/laser2.wav"); + G_SetMovedir(self->s.angles, self->movedir); + self->noise_index = gi.soundindex("weapons/laser2.wav"); if (!self->dmg) self->dmg = 15; @@ -448,13 +439,13 @@ void SP_target_blaster (edict_t *self) /*QUAKED target_crosslevel_trigger (.5 .5 .5) (-8 -8 -8) (8 8 8) trigger1 trigger2 trigger3 trigger4 trigger5 trigger6 trigger7 trigger8 Once this trigger is touched/used, any trigger_crosslevel_target with the same trigger number is automatically used when a level is started within the same unit. It is OK to check multiple triggers. Message, delay, target, and killtarget also work. */ -void trigger_crosslevel_trigger_use (edict_t *self, edict_t *other, edict_t *activator) +void trigger_crosslevel_trigger_use(edict_t *self, edict_t *other, edict_t *activator) { game.serverflags |= self->spawnflags; - G_FreeEdict (self); + G_FreeEdict(self); } -void SP_target_crosslevel_trigger (edict_t *self) +void SP_target_crosslevel_trigger(edict_t *self) { self->svflags = SVF_NOCLIENT; self->use = trigger_crosslevel_trigger_use; @@ -466,16 +457,15 @@ killtarget also work. "delay" delay before using targets if the trigger has been activated (default 1) */ -void target_crosslevel_target_think (edict_t *self) +void target_crosslevel_target_think(edict_t *self) { - if (self->spawnflags == (game.serverflags & SFL_CROSS_TRIGGER_MASK & self->spawnflags)) - { - G_UseTargets (self, self); - G_FreeEdict (self); + if (self->spawnflags == (game.serverflags & SFL_CROSS_TRIGGER_MASK & self->spawnflags)) { + G_UseTargets(self, self); + G_FreeEdict(self); } } -void SP_target_crosslevel_target (edict_t *self) +void SP_target_crosslevel_target(edict_t *self) { if (! self->delay) self->delay = 1; @@ -492,7 +482,7 @@ When triggered, fires a laser. You can either set a target or a direction. */ -void target_laser_think (edict_t *self) +void target_laser_think(edict_t *self) { edict_t *ignore; vec3_t start; @@ -507,88 +497,84 @@ void target_laser_think (edict_t *self) else count = 4; - if (self->enemy) - { - VectorCopy (self->movedir, last_movedir); - VectorMA (self->enemy->absmin, 0.5, self->enemy->size, point); - VectorSubtract (point, self->s.origin, self->movedir); - VectorNormalize (self->movedir); + if (self->enemy) { + VectorCopy(self->movedir, last_movedir); + VectorMA(self->enemy->absmin, 0.5, self->enemy->size, point); + VectorSubtract(point, self->s.origin, self->movedir); + VectorNormalize(self->movedir); if (!VectorCompare(self->movedir, last_movedir)) self->spawnflags |= 0x80000000; } ignore = self; - VectorCopy (self->s.origin, start); - VectorMA (start, 2048, self->movedir, end); - while(1) - { - tr = gi.trace (start, NULL, NULL, end, ignore, CONTENTS_SOLID|CONTENTS_MONSTER|CONTENTS_DEADMONSTER); + VectorCopy(self->s.origin, start); + VectorMA(start, 2048, self->movedir, end); + while (1) { + tr = gi.trace(start, NULL, NULL, end, ignore, CONTENTS_SOLID | CONTENTS_MONSTER | CONTENTS_DEADMONSTER); if (!tr.ent) break; // hurt it if we can if ((tr.ent->takedamage) && !(tr.ent->flags & FL_IMMUNE_LASER)) - T_Damage (tr.ent, self, self->activator, self->movedir, tr.endpos, vec3_origin, self->dmg, 1, DAMAGE_ENERGY, MOD_TARGET_LASER); + T_Damage(tr.ent, self, self->activator, self->movedir, tr.endpos, vec3_origin, self->dmg, 1, DAMAGE_ENERGY, MOD_TARGET_LASER); // if we hit something that's not a monster or player or is immune to lasers, we're done - if (!(tr.ent->svflags & SVF_MONSTER) && (!tr.ent->client)) - { - if (self->spawnflags & 0x80000000) - { + if (!(tr.ent->svflags & SVF_MONSTER) && (!tr.ent->client)) { + if (self->spawnflags & 0x80000000) { self->spawnflags &= ~0x80000000; - gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_LASER_SPARKS); - gi.WriteByte (count); - gi.WritePosition (tr.endpos); - gi.WriteDir (tr.plane.normal); - gi.WriteByte (self->s.skinnum); - gi.multicast (tr.endpos, MULTICAST_PVS); + gi.WriteByte(svc_temp_entity); + gi.WriteByte(TE_LASER_SPARKS); + gi.WriteByte(count); + gi.WritePosition(tr.endpos); + gi.WriteDir(tr.plane.normal); + gi.WriteByte(self->s.skinnum); + gi.multicast(tr.endpos, MULTICAST_PVS); } break; } ignore = tr.ent; - VectorCopy (tr.endpos, start); + VectorCopy(tr.endpos, start); } - VectorCopy (tr.endpos, self->s.old_origin); + VectorCopy(tr.endpos, self->s.old_origin); self->nextthink = level.time + FRAMETIME; } -void target_laser_on (edict_t *self) +void target_laser_on(edict_t *self) { if (!self->activator) self->activator = self; self->spawnflags |= 0x80000001; self->svflags &= ~SVF_NOCLIENT; - target_laser_think (self); + target_laser_think(self); } -void target_laser_off (edict_t *self) +void target_laser_off(edict_t *self) { self->spawnflags &= ~1; self->svflags |= SVF_NOCLIENT; self->nextthink = 0; } -void target_laser_use (edict_t *self, edict_t *other, edict_t *activator) +void target_laser_use(edict_t *self, edict_t *other, edict_t *activator) { self->activator = activator; if (self->spawnflags & 1) - target_laser_off (self); + target_laser_off(self); else - target_laser_on (self); + target_laser_on(self); } -void target_laser_start (edict_t *self) +void target_laser_start(edict_t *self) { edict_t *ent; self->movetype = MOVETYPE_NONE; self->solid = SOLID_NOT; - self->s.renderfx |= RF_BEAM|RF_TRANSLUCENT; + self->s.renderfx |= RF_BEAM | RF_TRANSLUCENT; self->s.modelindex = 1; // must be non-zero // set the beam diameter @@ -609,18 +595,14 @@ void target_laser_start (edict_t *self) else if (self->spawnflags & 32) self->s.skinnum = 0xe0e1e2e3; - if (!self->enemy) - { - if (self->target) - { - ent = G_Find (NULL, FOFS(targetname), self->target); + if (!self->enemy) { + if (self->target) { + ent = G_Find(NULL, FOFS(targetname), self->target); if (!ent) - gi.dprintf ("%s at %s: %s is a bad target\n", self->classname, vtos(self->s.origin), self->target); + gi.dprintf("%s at %s: %s is a bad target\n", self->classname, vtos(self->s.origin), self->target); self->enemy = ent; - } - else - { - G_SetMovedir (self->s.angles, self->movedir); + } else { + G_SetMovedir(self->s.angles, self->movedir); } } self->use = target_laser_use; @@ -629,17 +611,17 @@ void target_laser_start (edict_t *self) if (!self->dmg) self->dmg = 1; - VectorSet (self->mins, -8, -8, -8); - VectorSet (self->maxs, 8, 8, 8); - gi.linkentity (self); + VectorSet(self->mins, -8, -8, -8); + VectorSet(self->maxs, 8, 8, 8); + gi.linkentity(self); if (self->spawnflags & 1) - target_laser_on (self); + target_laser_on(self); else - target_laser_off (self); + target_laser_off(self); } -void SP_target_laser (edict_t *self) +void SP_target_laser(edict_t *self) { // let everything else get spawned before we start firing self->think = target_laser_start; @@ -653,20 +635,17 @@ speed How many seconds the ramping will take message two letters; starting lightlevel and ending lightlevel */ -void target_lightramp_think (edict_t *self) +void target_lightramp_think(edict_t *self) { char style[2]; style[0] = 'a' + self->movedir[0] + (level.time - self->timestamp) / FRAMETIME * self->movedir[2]; style[1] = 0; - gi.configstring (CS_LIGHTS+self->enemy->style, style); + gi.configstring(CS_LIGHTS + self->enemy->style, style); - if ((level.time - self->timestamp) < self->speed) - { + if ((level.time - self->timestamp) < self->speed) { self->nextthink = level.time + FRAMETIME; - } - else if (self->spawnflags & 1) - { + } else if (self->spawnflags & 1) { char temp; temp = self->movedir[0]; @@ -676,61 +655,52 @@ void target_lightramp_think (edict_t *self) } } -void target_lightramp_use (edict_t *self, edict_t *other, edict_t *activator) +void target_lightramp_use(edict_t *self, edict_t *other, edict_t *activator) { - if (!self->enemy) - { + if (!self->enemy) { edict_t *e; // check all the targets e = NULL; - while (1) - { - e = G_Find (e, FOFS(targetname), self->target); + while (1) { + e = G_Find(e, FOFS(targetname), self->target); if (!e) break; - if (strcmp(e->classname, "light") != 0) - { + if (strcmp(e->classname, "light") != 0) { gi.dprintf("%s at %s ", self->classname, vtos(self->s.origin)); gi.dprintf("target %s (%s at %s) is not a light\n", self->target, e->classname, vtos(e->s.origin)); - } - else - { + } else { self->enemy = e; } } - if (!self->enemy) - { + if (!self->enemy) { gi.dprintf("%s target %s not found at %s\n", self->classname, self->target, vtos(self->s.origin)); - G_FreeEdict (self); + G_FreeEdict(self); return; } } self->timestamp = level.time; - target_lightramp_think (self); + target_lightramp_think(self); } -void SP_target_lightramp (edict_t *self) +void SP_target_lightramp(edict_t *self) { - if (!self->message || strlen(self->message) != 2 || self->message[0] < 'a' || self->message[0] > 'z' || self->message[1] < 'a' || self->message[1] > 'z' || self->message[0] == self->message[1]) - { + if (!self->message || strlen(self->message) != 2 || self->message[0] < 'a' || self->message[0] > 'z' || self->message[1] < 'a' || self->message[1] > 'z' || self->message[0] == self->message[1]) { gi.dprintf("target_lightramp has bad ramp (%s) at %s\n", self->message, vtos(self->s.origin)); - G_FreeEdict (self); + G_FreeEdict(self); return; } - if (deathmatch->value) - { - G_FreeEdict (self); + if (deathmatch->value) { + G_FreeEdict(self); return; } - if (!self->target) - { + if (!self->target) { gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin)); - G_FreeEdict (self); + G_FreeEdict(self); return; } @@ -752,19 +722,17 @@ All players and monsters are affected. "count" duration of the quake (default:5) */ -void target_earthquake_think (edict_t *self) +void target_earthquake_think(edict_t *self) { int i; edict_t *e; - if (self->last_move_time < level.time) - { - gi.positioned_sound (self->s.origin, self, CHAN_AUTO, self->noise_index, 1.0, ATTN_NONE, 0); + if (self->last_move_time < level.time) { + gi.positioned_sound(self->s.origin, self, CHAN_AUTO, self->noise_index, 1.0, ATTN_NONE, 0); self->last_move_time = level.time + 0.5; } - for (i=1, e=g_edicts+i; i < globals.num_edicts; i++,e++) - { + for (i = 1, e = g_edicts + i; i < globals.num_edicts; i++, e++) { if (!e->inuse) continue; if (!e->client) @@ -773,8 +741,8 @@ void target_earthquake_think (edict_t *self) continue; e->groundentity = NULL; - e->velocity[0] += crandom()* 150; - e->velocity[1] += crandom()* 150; + e->velocity[0] += crandom() * 150; + e->velocity[1] += crandom() * 150; e->velocity[2] = self->speed * (100.0 / e->mass); } @@ -782,7 +750,7 @@ void target_earthquake_think (edict_t *self) self->nextthink = level.time + FRAMETIME; } -void target_earthquake_use (edict_t *self, edict_t *other, edict_t *activator) +void target_earthquake_use(edict_t *self, edict_t *other, edict_t *activator) { self->timestamp = level.time + self->count; self->nextthink = level.time + FRAMETIME; @@ -790,7 +758,7 @@ void target_earthquake_use (edict_t *self, edict_t *other, edict_t *activator) self->last_move_time = 0; } -void SP_target_earthquake (edict_t *self) +void SP_target_earthquake(edict_t *self) { if (!self->targetname) gi.dprintf("untargeted %s at %s\n", self->classname, vtos(self->s.origin)); @@ -805,5 +773,5 @@ void SP_target_earthquake (edict_t *self) self->think = target_earthquake_think; self->use = target_earthquake_use; - self->noise_index = gi.soundindex ("world/quake.wav"); + self->noise_index = gi.soundindex("world/quake.wav"); } |