DEFINE_ACTION_FUNCTION(AActor, A_InquisitorAttack) { PARAM_ACTION_PROLOGUE; AActor *proj; if (self->target == NULL) return 0; A_FaceTarget (self); self->AddZ(32); self->Angles.Yaw -= 45./32; proj = P_SpawnMissileZAimed (self, self->Z(), self->target, PClass::FindActor("InquisitorShot")); if (proj != NULL) { proj->Vel.Z += 9; } self->Angles.Yaw += 45./16; proj = P_SpawnMissileZAimed (self, self->Z(), self->target, PClass::FindActor("InquisitorShot")); if (proj != NULL) { proj->Vel.Z += 16; } self->AddZ(-32); return 0; }
DEFINE_ACTION_FUNCTION(AActor, A_CrusaderChoose) { if (self->target == NULL) return; if (Sys_1ed64 (self)) { A_FaceTarget (self); self->angle -= ANGLE_180/16; P_SpawnMissileZAimed (self, self->z + 40*FRACUNIT, self->target, PClass::FindClass("FastFlameMissile")); } else { if (P_CheckMissileRange (self)) { A_FaceTarget (self); P_SpawnMissileZAimed (self, self->z + 56*FRACUNIT, self->target, PClass::FindClass("CrusaderMissile")); self->angle -= ANGLE_45/32; P_SpawnMissileZAimed (self, self->z + 40*FRACUNIT, self->target, PClass::FindClass("CrusaderMissile")); self->angle += ANGLE_45/16; P_SpawnMissileZAimed (self, self->z + 40*FRACUNIT, self->target, PClass::FindClass("CrusaderMissile")); self->angle -= ANGLE_45/16; self->reactiontime += 15; } self->SetState (self->SeeState); } }
DEFINE_ACTION_FUNCTION(AActor, A_SentinelAttack) { PARAM_ACTION_PROLOGUE; AActor *missile, *trail; // [BB] Without a target the P_SpawnMissileZAimed call will crash. if (!self->target) { return 0; } missile = P_SpawnMissileZAimed (self, self->Z() + 32, self->target, PClass::FindActor("SentinelFX2")); if (missile != NULL && (missile->Vel.X != 0 || missile->Vel.Y != 0)) { for (int i = 8; i > 1; --i) { trail = Spawn("SentinelFX1", self->Vec3Angle(missile->radius*i, missile->Angles.Yaw, 32 + missile->Vel.Z / 4 * i), ALLOW_REPLACE); if (trail != NULL) { trail->target = self; trail->Vel = missile->Vel; P_CheckMissileSpawn (trail, self->radius); } } missile->AddZ(missile->Vel.Z / 4); } return 0; }
DEFINE_ACTION_FUNCTION(AActor, A_CrusaderSweepRight) { self->angle -= ANGLE_90/16; AActor *misl = P_SpawnMissileZAimed (self, self->z + 48*FRACUNIT, self->target, PClass::FindClass("FastFlameMissile")); if (misl != NULL) { misl->velz += FRACUNIT; } }
DEFINE_ACTION_FUNCTION(AActor, A_CrusaderSweepRight) { PARAM_ACTION_PROLOGUE; self->angle -= ANGLE_90/16; AActor *misl = P_SpawnMissileZAimed (self, self->Z() + 48*FRACUNIT, self->target, PClass::FindActor("FastFlameMissile")); if (misl != NULL) { misl->velz += FRACUNIT; } return 0; }
DEFINE_ACTION_FUNCTION(AActor, A_InquisitorAttack) { AActor *proj; // [BC] This is handled server-side. if ( NETWORK_InClientMode() ) { return; } if (self->target == NULL) return; A_FaceTarget (self); self->z += 32*FRACUNIT; self->angle -= ANGLE_45/32; proj = P_SpawnMissileZAimed (self, self->z, self->target, PClass::FindClass("InquisitorShot")); if (proj != NULL) { proj->velz += 9*FRACUNIT; // [BC] Tell clients to spawn the missile. if ( NETWORK_GetState( ) == NETSTATE_SERVER ) SERVERCOMMANDS_SpawnMissile( proj ); } self->angle += ANGLE_45/16; proj = P_SpawnMissileZAimed (self, self->z, self->target, PClass::FindClass("InquisitorShot")); if (proj != NULL) { proj->velz += 16*FRACUNIT; // [BC] Tell clients to spawn the missile. if ( NETWORK_GetState( ) == NETSTATE_SERVER ) SERVERCOMMANDS_SpawnMissile( proj ); } self->z -= 32*FRACUNIT; }
void A_InquisitorAttack (AActor *self) { AActor *proj; if (self->target == NULL) return; A_FaceTarget (self); self->z += 32*FRACBITS; self->angle -= ANGLE_45/32; proj = P_SpawnMissileZAimed (self, self->z, self->target, RUNTIME_CLASS(AInquisitorShot)); if (proj != NULL) { proj->momz += 9*FRACUNIT; } self->angle += ANGLE_45/16; proj = P_SpawnMissileZAimed (self, self->z, self->target, RUNTIME_CLASS(AInquisitorShot)); if (proj != NULL) { proj->momz += 16*FRACUNIT; } self->z -= 32*FRACBITS; }
DEFINE_ACTION_FUNCTION(AActor, A_InquisitorAttack) { AActor *proj; if (self->target == NULL) return; A_FaceTarget (self); self->AddZ(32*FRACUNIT); self->angle -= ANGLE_45/32; proj = P_SpawnMissileZAimed (self, self->Z(), self->target, PClass::FindClass("InquisitorShot")); if (proj != NULL) { proj->velz += 9*FRACUNIT; } self->angle += ANGLE_45/16; proj = P_SpawnMissileZAimed (self, self->Z(), self->target, PClass::FindClass("InquisitorShot")); if (proj != NULL) { proj->velz += 16*FRACUNIT; } self->AddZ(-32*FRACUNIT); }