/* ------------------------- void Droid_Spin( void ) ------------------------- */ void Droid_Spin( void ) { vec3_t dir = {0,0,1}; R2D2_TurnAnims(); // Head is gone, spin and spark if ( NPC->client->NPC_class == CLASS_R5D2 || NPC->client->NPC_class == CLASS_R2D2 ) { // No head? if (trap->G2API_GetSurfaceRenderStatus( NPC->ghoul2, 0, "head" )>0) { if (TIMER_Done(NPC,"smoke") && !TIMER_Done(NPC,"droidsmoketotal")) { TIMER_Set( NPC, "smoke", 100); G_PlayEffectID( G_EffectIndex("volumetric/droid_smoke") , NPC->r.currentOrigin,dir); } if (TIMER_Done(NPC,"droidspark")) { TIMER_Set( NPC, "droidspark", Q_irand(100,500)); G_PlayEffectID( G_EffectIndex("sparks/spark"), NPC->r.currentOrigin,dir); } ucmd.forwardmove = Q_irand( -64, 64); if (TIMER_Done(NPC,"roam")) { TIMER_Set( NPC, "roam", Q_irand( 250, 1000 ) ); NPCInfo->desiredYaw = Q_irand( 0, 360 ); // Go in random directions } } else { if (TIMER_Done(NPC,"roam")) { NPCInfo->localState = LSTATE_NONE; } else { NPCInfo->desiredYaw = AngleNormalize360(NPCInfo->desiredYaw + 40); // Spin around } } } else { if (TIMER_Done(NPC,"roam")) { NPCInfo->localState = LSTATE_NONE; } else { NPCInfo->desiredYaw = AngleNormalize360(NPCInfo->desiredYaw + 40); // Spin around } } NPC_UpdateAngles( qtrue, qtrue ); }
void Droid_Patrol( void ) { NPC->pos1.yaw = AngleNormalize360( NPC->pos1.yaw ); if ( NPC->client && NPC->client->NPC_class != CLASS_GONK ) { if ( NPC->client->NPC_class != CLASS_R5D2 ) { //he doesn't have an eye. R2D2_PartsMove(); // Get his eye moving. } R2D2_TurnAnims(); } //If we have somewhere to go, then do that if ( UpdateGoal() ) { ucmd.buttons |= BUTTON_WALKING; NPC_MoveToGoal( qtrue ); if ( NPC->client && NPC->client->NPC_class == CLASS_MOUSE ) { NPCInfo->desiredYaw += sinf( level.time*.5f ) * 25; // Weaves side to side a little if ( TIMER_Done( NPC, "patrolNoise" ) ) { G_SoundOnEnt( NPC, CHAN_AUTO, va( "sound/chars/mouse/misc/mousego%d.wav", Q_irand( 1, 3 ) ) ); TIMER_Set( NPC, "patrolNoise", Q_irand( 2000, 4000 ) ); } } else if ( NPC->client && NPC->client->NPC_class == CLASS_R2D2 ) { if ( TIMER_Done( NPC, "patrolNoise" ) ) { G_SoundOnEnt( NPC, CHAN_AUTO, va( "sound/chars/r2d2/misc/r2d2talk0%d.wav", Q_irand( 1, 3 ) ) ); TIMER_Set( NPC, "patrolNoise", Q_irand( 2000, 4000 ) ); } } else if ( NPC->client && NPC->client->NPC_class == CLASS_R5D2 ) { if ( TIMER_Done( NPC, "patrolNoise" ) ) { G_SoundOnEnt( NPC, CHAN_AUTO, va( "sound/chars/r5d2/misc/r5talk%d.wav", Q_irand( 1, 4 ) ) ); TIMER_Set( NPC, "patrolNoise", Q_irand( 2000, 4000 ) ); } } if ( NPC->client && NPC->client->NPC_class == CLASS_GONK ) { if ( TIMER_Done( NPC, "patrolNoise" ) ) { G_SoundOnEnt( NPC, CHAN_AUTO, va( "sound/chars/gonk/misc/gonktalk%d.wav", Q_irand( 1, 2 ) ) ); TIMER_Set( NPC, "patrolNoise", Q_irand( 2000, 4000 ) ); } } // else // { // R5D2_LookAround(); // } } NPC_UpdateAngles( qtrue, qtrue ); }