BOOL P_ActivateMobj (AActor *mobj, AActor *activator) { if (mobj->flags & MF_COUNTKILL) { mobj->flags2 &= !(MF2_DORMANT | MF2_INVULNERABLE); return true; } else { switch (mobj->type) { case MT_SPARK: { int count = mobj->args[0]; char sound[16]; if (count == 0) count = 32; P_DrawSplash (count, mobj->x, mobj->y, mobj->z, mobj->angle, 1); sprintf (sound, "world/spark%d", 1+(M_Random() % 3)); S_Sound (mobj, CHAN_AUTO, sound, 1, ATTN_STATIC); break; } case MT_FOUNTAIN: mobj->effects &= ~FX_FOUNTAINMASK; mobj->effects |= mobj->args[0] << FX_FOUNTAINSHIFT; break; case MT_SECRETTRIGGER: if (activator->player->mo == consoleplayer().camera) { if (mobj->args[0] <= 1) { C_MidPrint ("A secret is revealed!"); } if (mobj->args[0] == 0 || mobj->args[0] == 2) { S_Sound (activator, CHAN_AUTO, "misc/secret", 1, ATTN_NORM); } } level.found_secrets++; mobj->Destroy (); break; default: break; } } return false; }
void ASpark::Activate (AActor *activator) { Super::Activate (activator); P_DrawSplash (args[0] ? args[0] : 32, X(), Y(), Z(), angle, 1); S_Sound (this, CHAN_AUTO, "world/spark", 1, ATTN_STATIC); }