void NPC_Use( gentity_t *self, gentity_t *other, gentity_t *activator ) { if (self->client->ps.pm_type == PM_DEAD) {//or just remove ->pain in player_die? return; } SaveNPCGlobals(); SetNPCGlobals( self ); if(self->client && self->NPC) { if ( Jedi_WaitingAmbush( NPC ) ) { Jedi_Ambush( NPC ); } //Run any use instructions if ( activator && activator->s.number == 0 && self->client->NPC_class == CLASS_GONK ) { // must be using the gonk, so attempt to give battery power. // NOTE: this will steal up to MAX_BATTERIES for the activator, leaving the residual on the gonk for potential later use. Add_Batteries( activator, &self->client->ps.batteryCharge ); } // Not using MEDICs anymore /* if ( self->NPC->behaviorState == BS_MEDIC_HIDE && activator->client ) {//Heal me NOW, dammit! if ( activator->health < activator->max_health ) {//person needs help if ( self->NPC->eventualGoal != activator ) {//not my current patient already NPC_TakePatient( activator ); G_ActivateBehavior( self, BSET_USE ); } } else if ( !self->enemy && activator->s.number == 0 && !gi.VoiceVolume[self->s.number] && !(self->NPC->scriptFlags&SCF_NO_RESPONSE) ) {//I don't have an enemy and I'm not talking and I was used by the player NPC_UseResponse( self, other, qfalse ); } } */ // else if ( self->behaviorSet[BSET_USE] ) if ( self->behaviorSet[BSET_USE] ) { NPC_UseResponse( self, other, qtrue ); } // else if ( isMedic( self ) ) // {//Heal me NOW, dammit! // NPC_TakePatient( activator ); // } else if ( !self->enemy && activator->s.number == 0 && !gi.VoiceVolume[self->s.number] && !(self->NPC->scriptFlags&SCF_NO_RESPONSE) ) {//I don't have an enemy and I'm not talking and I was used by the player NPC_UseResponse( self, other, qfalse ); } } RestoreNPCGlobals(); }
//------------------------------------------------------- int Pickup_Battery( gentity_t *ent, gentity_t *other ) { int quantity; if ( ent->count ) { quantity = ent->count; } else { quantity = ent->item->quantity; } // There may be some left over in quantity if the player is close to full, but with pickup items, this amount will just be lost Add_Batteries( other, &quantity ); return 30; }
void NPC_Use( gentity_t *self, gentity_t *other, gentity_t *activator ) { if (self->client->ps.pm_type == PM_DEAD) {//or just remove ->pain in player_die? return; } SaveNPCGlobals(); SetNPCGlobals( self ); if(self->client && self->NPC) { // If this is a vehicle, let the other guy board it. Added 12/14/02 by AReis. if ( self->client->NPC_class == CLASS_VEHICLE ) { Vehicle_t *pVeh = self->m_pVehicle; if ( pVeh && pVeh->m_pVehicleInfo && other && other->client ) {//safety //if I used myself, eject everyone on me if ( other == self ) { pVeh->m_pVehicleInfo->EjectAll( pVeh ); } // If other is already riding this vehicle (self), eject him. else if ( other->owner == self ) { pVeh->m_pVehicleInfo->Eject( pVeh, other, qfalse ); } // Otherwise board this vehicle. else { pVeh->m_pVehicleInfo->Board( pVeh, other ); } } } else if ( Jedi_WaitingAmbush( NPC ) ) { Jedi_Ambush( NPC ); } //Run any use instructions if ( activator && activator->s.number == 0 && self->client->NPC_class == CLASS_GONK ) { // must be using the gonk, so attempt to give battery power. // NOTE: this will steal up to MAX_BATTERIES for the activator, leaving the residual on the gonk for potential later use. Add_Batteries( activator, &self->client->ps.batteryCharge ); } // Not using MEDICs anymore /* if ( self->NPC->behaviorState == BS_MEDIC_HIDE && activator->client ) {//Heal me NOW, dammit! if ( activator->health < activator->max_health ) {//person needs help if ( self->NPC->eventualGoal != activator ) {//not my current patient already NPC_TakePatient( activator ); G_ActivateBehavior( self, BSET_USE ); } } else if ( !self->enemy && activator->s.number == 0 && !gi.VoiceVolume[self->s.number] && !(self->NPC->scriptFlags&SCF_NO_RESPONSE) ) {//I don't have an enemy and I'm not talking and I was used by the player NPC_UseResponse( self, other, qfalse ); } } */ // else if ( self->behaviorSet[BSET_USE] ) if ( self->behaviorSet[BSET_USE] ) { NPC_UseResponse( self, other, qtrue ); } // else if ( isMedic( self ) ) // {//Heal me NOW, dammit! // NPC_TakePatient( activator ); // } else if ( !self->enemy //&& self->client->NPC_class == CLASS_VEHICLE && activator->s.number == 0 && !gi.VoiceVolume[self->s.number] && !(self->NPC->scriptFlags&SCF_NO_RESPONSE) ) {//I don't have an enemy and I'm not talking and I was used by the player NPC_UseResponse( self, other, qfalse ); } } RestoreNPCGlobals(); }