void lvl1_sentry_atk3( ) { self->s.v.frame = 0; self->s.v.think = ( func_t ) lvl1_sentry_atk1; self->s.v.nextthink = g_globalvars.time + 0.1; ai_face( ); }
void lvl1_sentry_atk2( ) { self->s.v.frame = 2; self->s.v.think = ( func_t ) lvl1_sentry_atk3; self->s.v.nextthink = g_globalvars.time + 0.1; ai_face( ); Sentry_Fire( ); }
void ai_charge( float d ) { if ( k_bloodfest ) { if ( (int)self->s.v.flags & FL_SWIM ) { d *= 5; // let fish swim faster in bloodfest mode. } else if ( self->bloodfest_boss ) { d *= 2; // let boss move faster } } ai_face (); movetogoal (d); // done in C code... }
void lvl1_sentry_atk1( ) { gedict_t *enemy = PROG_TO_EDICT( self->s.v.enemy ); self->s.v.frame = 1; self->s.v.think = ( func_t ) lvl1_sentry_atk3; self->s.v.nextthink = g_globalvars.time + 0.1; ai_face( ); if ( enemy == world || enemy->is_feigning || enemy->s.v.health <= 0 || !visible( enemy ) || enemy->has_disconnected == 1 ) lvl1_sentry_stand( ); else { if ( self->s.v.ammo_shells <= 0 && !tg_data.sg_unlimit_ammo ) lvl1_sentry_stand( ); else { if ( !Sentry_Fire( ) ) lvl1_sentry_atk3( ); } } }