void A_DualPainAttack (AActor *self) { if (!self->target) return; A_FaceTarget (self); A_PainShootSkull (self, self->angle + ANG45); A_PainShootSkull (self, self->angle - ANG45); }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DualPainAttack) { if (!self->target) return; const PClass *spawntype = GetSpawnType(PUSH_PARAMINFO); A_FaceTarget (self); A_PainShootSkull (self, self->angle + ANG45, spawntype); A_PainShootSkull (self, self->angle - ANG45, spawntype); }
void A_PainDie (AActor *self) { if (self->target != NULL && self->IsFriend (self->target)) { // And I thought you were my friend! self->flags &= ~MF_FRIENDLY; } A_NoBlocking (self); A_PainShootSkull (self, self->angle + ANG90); A_PainShootSkull (self, self->angle + ANG180); A_PainShootSkull (self, self->angle + ANG270); }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PainDie) { if (self->target != NULL && self->IsFriend (self->target)) { // And I thought you were my friend! self->flags &= ~MF_FRIENDLY; } const PClass *spawntype = GetSpawnType(PUSH_PARAMINFO); A_Unblock(self, true); A_PainShootSkull (self, self->angle + ANG90, spawntype); A_PainShootSkull (self, self->angle + ANG180, spawntype); A_PainShootSkull (self, self->angle + ANG270, spawntype); }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DualPainAttack) { PARAM_ACTION_PROLOGUE; if (!self->target) return 0; PClassActor *spawntype = GetSpawnType(numparam > NAP ? ¶m[NAP] : NULL); A_FaceTarget (self); A_PainShootSkull (self, self->angle + ANG45, spawntype); A_PainShootSkull (self, self->angle - ANG45, spawntype); return 0; }
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PainDie) { PARAM_ACTION_PROLOGUE; if (self->target != NULL && self->IsFriend(self->target)) { // And I thought you were my friend! self->flags &= ~MF_FRIENDLY; } PClassActor *spawntype = GetSpawnType(numparam > NAP ? ¶m[NAP] : NULL); A_Unblock(self, true); A_PainShootSkull (self, self->angle + ANG90, spawntype); A_PainShootSkull (self, self->angle + ANG180, spawntype); A_PainShootSkull (self, self->angle + ANG270, spawntype); return 0; }
// // A_PainAttack // Spawn a lost soul and launch it at the target // DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PainAttack) { if (!self->target) return; ACTION_PARAM_START(4); ACTION_PARAM_CLASS(spawntype, 0); ACTION_PARAM_ANGLE(angle, 1); ACTION_PARAM_INT(flags, 2); ACTION_PARAM_INT(limit, 3); if (spawntype == NULL) spawntype = PClass::FindClass("LostSoul"); if (!(flags & PAF_AIMFACING)) A_FaceTarget (self); A_PainShootSkull (self, self->angle+angle, spawntype, flags, limit); }
// // A_PainAttack // Spawn a lost soul and launch it at the target // DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PainAttack) { PARAM_ACTION_PROLOGUE; if (!self->target) return 0; PARAM_CLASS_OPT (spawntype, AActor) { spawntype = NULL; } PARAM_ANGLE_OPT (angle) { angle = 0; } PARAM_INT_OPT (flags) { flags = 0; } PARAM_INT_OPT (limit) { limit = -1; } if (spawntype == NULL) spawntype = PClass::FindActor("LostSoul"); if (!(flags & PAF_AIMFACING)) A_FaceTarget (self); A_PainShootSkull (self, self->angle+angle, spawntype, flags, limit); return 0; }