void WP_GrenadeThink(gentity_t*ent) { if (ent->genericValue5 < level.time) { ent->think = WP_GrenadeBlow; ent->nextthink = level.time; return; } G_RunObject(ent); ent->nextthink = level.time; }
void thermalThinkStandard(gentity_t *ent) { if (ent->genericValue5 < level.time) { ent->think = thermalDetonatorExplode; ent->nextthink = level.time; return; } G_RunObject(ent); ent->nextthink = level.time; }
void JMSaberThink(gentity_t *ent) { gJMSaberEnt = ent; if (ent->enemy) { if (!ent->enemy->client || !ent->enemy->inuse) { //disconnected? VectorCopy(ent->enemy->s.pos.trBase, ent->s.pos.trBase); VectorCopy(ent->enemy->s.pos.trBase, ent->s.origin); VectorCopy(ent->enemy->s.pos.trBase, ent->r.currentOrigin); ent->s.modelindex = G_ModelIndex("models/weapons2/saber/saber_w.glm"); ent->s.eFlags &= ~(EF_NODRAW); ent->s.modelGhoul2 = 1; ent->s.eType = ET_MISSILE; ent->enemy = NULL; ent->pos2[0] = 1; ent->pos2[1] = 0; //respawn next think trap_LinkEntity(ent); } else { ent->pos2[1] = level.time + JMSABER_RESPAWN_TIME; } } else if (ent->pos2[0] && ent->pos2[1] < level.time) { VectorCopy(ent->s.origin2, ent->s.pos.trBase); VectorCopy(ent->s.origin2, ent->s.origin); VectorCopy(ent->s.origin2, ent->r.currentOrigin); ent->pos2[0] = 0; trap_LinkEntity(ent); } ent->nextthink = level.time + 50; G_RunObject(ent); }
void TrapThink(gentity_t *ent) { //laser trap think ent->nextthink = level.time + 50; G_RunObject(ent); }
void HolocronThink(gentity_t *ent) { if (ent->pos2[0] && (!ent->enemy || !ent->enemy->client || ent->enemy->health < 1)) { if (ent->enemy && ent->enemy->client) { HolocronRespawn(ent); VectorCopy(ent->enemy->client->ps.origin, ent->s.pos.trBase); VectorCopy(ent->enemy->client->ps.origin, ent->s.origin); VectorCopy(ent->enemy->client->ps.origin, ent->r.currentOrigin); //copy to person carrying's origin before popping out of them HolocronPopOut(ent); ent->enemy->client->ps.holocronsCarried[ent->count] = 0; ent->enemy = NULL; goto justthink; } } else if (ent->pos2[0] && ent->enemy && ent->enemy->client) { ent->pos2[1] = level.time + HOLOCRON_RESPAWN_TIME; } if (ent->enemy && ent->enemy->client) { if (!ent->enemy->client->ps.holocronsCarried[ent->count]) { ent->enemy->client->ps.holocronCantTouch = ent->s.number; ent->enemy->client->ps.holocronCantTouchTime = level.time + 5000; HolocronRespawn(ent); VectorCopy(ent->enemy->client->ps.origin, ent->s.pos.trBase); VectorCopy(ent->enemy->client->ps.origin, ent->s.origin); VectorCopy(ent->enemy->client->ps.origin, ent->r.currentOrigin); //copy to person carrying's origin before popping out of them HolocronPopOut(ent); ent->enemy = NULL; goto justthink; } if (!ent->enemy->inuse || (ent->enemy->client && ent->enemy->client->ps.fallingToDeath)) { if (ent->enemy->inuse && ent->enemy->client) { ent->enemy->client->ps.holocronBits &= ~(1 << ent->count); ent->enemy->client->ps.holocronsCarried[ent->count] = 0; } ent->enemy = NULL; HolocronRespawn(ent); VectorCopy(ent->s.origin2, ent->s.pos.trBase); VectorCopy(ent->s.origin2, ent->s.origin); VectorCopy(ent->s.origin2, ent->r.currentOrigin); ent->s.pos.trTime = level.time; ent->pos2[0] = 0; trap_LinkEntity(ent); goto justthink; } } if (ent->pos2[0] && ent->pos2[1] < level.time) { //isn't in original place and has been there for (HOLOCRON_RESPAWN_TIME) seconds without being picked up, so respawn VectorCopy(ent->s.origin2, ent->s.pos.trBase); VectorCopy(ent->s.origin2, ent->s.origin); VectorCopy(ent->s.origin2, ent->r.currentOrigin); ent->s.pos.trTime = level.time; ent->pos2[0] = 0; trap_LinkEntity(ent); } justthink: ent->nextthink = level.time + 50; if (ent->s.pos.trDelta[0] || ent->s.pos.trDelta[1] || ent->s.pos.trDelta[2]) { G_RunObject(ent); } }