void vengeance_think(edict_t *self) { if (!self) { return; } /* if we've exited the level, just remove ourselves. */ if (level.intermissiontime) { sphere_think_explode(self); return; } if (!(self->owner) && !(self->spawnflags & SPHERE_DOPPLEGANGER)) { G_FreeEdict(self); return; } if (self->enemy) { sphere_chase(self, 1); } else { sphere_fly(self); } if (self->inuse) { self->nextthink = level.time + 0.1; } }
// ================= // ================= void vengeance_think (edict_t *self) { // if we've exited the level, just remove ourselves. if (level.intermissiontime) { sphere_think_explode(self); return; } if(!(self->owner) && !(self->spawnflags & SPHERE_DOPPLEGANGER)) { // gi.dprintf("think: no owner\n"); G_FreeEdict(self); return; } // if(level.time - self->timestamp > 1) // { // gi.sound (self, CHAN_VOICE, gi.soundindex ("powerup/vsphere.wav"), 0.5, ATTN_NORM, 0); // self->timestamp = level.time; // } if(self->enemy) { // sphere_fire (self, self->owner->enemy); sphere_chase (self, 1); } else sphere_fly (self); if(self->inuse) self->nextthink = level.time + 0.1; }
void hunter_think(edict_t *self) { edict_t *owner; vec3_t dir, ang; if (!self) { return; } /* if we've exited the level, just remove ourselves. */ if (level.intermissiontime) { sphere_think_explode(self); return; } owner = self->owner; if (!owner && !(self->spawnflags & SPHERE_DOPPLEGANGER)) { G_FreeEdict(self); return; } if (owner) { self->ideal_yaw = owner->s.angles[YAW]; } else if (self->enemy) /* fired by doppleganger */ { VectorSubtract(self->enemy->s.origin, self->s.origin, dir); vectoangles2(dir, ang); self->ideal_yaw = ang[YAW]; } M_ChangeYaw(self); if (self->enemy) { sphere_chase(self, 0); /* deal with sam raimi cam */ if (owner && (owner->flags & FL_SAM_RAIMI)) { if (self->inuse) { owner->movetype = MOVETYPE_FLYMISSILE; LookAtKiller(owner, self, self->enemy); /* owner is flying with us, move him too */ owner->movetype = MOVETYPE_FLYMISSILE; owner->viewheight = self->s.origin[2] - owner->s.origin[2]; VectorCopy(self->s.origin, owner->s.origin); VectorCopy(self->velocity, owner->velocity); VectorClear(owner->mins); VectorClear(owner->maxs); gi.linkentity(owner); } else /* sphere timed out */ { VectorClear(owner->velocity); owner->movetype = MOVETYPE_NONE; gi.linkentity(owner); } } } else { sphere_fly(self); } if (self->inuse) { self->nextthink = level.time + 0.1; } }
// ================= // ================= void hunter_think (edict_t *self) { edict_t *owner; vec3_t dir, ang; // if we've exited the level, just remove ourselves. if (level.intermissiontime) { sphere_think_explode(self); return; } owner = self->owner; if(!owner && !(self->spawnflags & SPHERE_DOPPLEGANGER)) { // gi.dprintf("think: no owner\n"); G_FreeEdict(self); return; } if(owner) self->ideal_yaw = owner->s.angles[YAW]; else if(self->enemy) // fired by doppleganger { VectorSubtract(self->enemy->s.origin, self->s.origin, dir); vectoangles2(dir, ang); self->ideal_yaw = ang[YAW]; } M_ChangeYaw(self); // if(level.time - self->timestamp > 1) // { // gi.sound (self, CHAN_VOICE, gi.soundindex ("powerup/hsphere.wav"), 0.5, ATTN_NORM, 0); // self->timestamp = level.time; // } if(self->enemy) { sphere_chase (self, 0); // deal with sam raimi cam if(owner && (owner->flags & FL_SAM_RAIMI)) { if(self->inuse) { owner->movetype = MOVETYPE_FLYMISSILE; // VectorCopy(self->s.angles, owner->s.angles); // VectorCopy(self->s.angles, owner->client->v_angle); LookAtKiller (owner, self, self->enemy); // owner->viewheight = 22; // owner->client->v_angle[YAW]+=5; // owner is flying with us, move him too owner->movetype = MOVETYPE_FLYMISSILE; owner->viewheight = self->s.origin[2] - owner->s.origin[2]; // VectorCopy(self->s.angles, owner->s.angles); // VectorCopy(self->s.angles, owner->client->v_angle); VectorCopy(self->s.origin, owner->s.origin); VectorCopy(self->velocity, owner->velocity); VectorClear(owner->mins); VectorClear(owner->maxs); gi.linkentity(owner); } else // sphere timed out { VectorClear(owner->velocity); owner->movetype = MOVETYPE_NONE; gi.linkentity(owner); } } } else { // self->ideal_yaw+=3; // M_ChangeYaw (self); sphere_fly (self); } if(self->inuse) self->nextthink = level.time + 0.1; }