From b224765351033bc5bb7e8ac87445d1726bd6bebf Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Mon, 11 May 2009 15:24:44 +0000 Subject: [PATCH] - Added customizable mage lightning patch. SVN r1574 (trunk) --- src/g_hexen/a_magelightning.cpp | 24 ++++++++++++++------ wadsrc/static/actors/hexen/magelightning.txt | 5 +++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/g_hexen/a_magelightning.cpp b/src/g_hexen/a_magelightning.cpp index 88d0d3c1c3..a430aa5443 100644 --- a/src/g_hexen/a_magelightning.cpp +++ b/src/g_hexen/a_magelightning.cpp @@ -51,7 +51,7 @@ int ALightning::SpecialMissileHit (AActor *thing) P_DamageMobj(thing, this, target, 3, NAME_Electric); if (!(S_IsActorPlayingSomething (this, CHAN_WEAPON, -1))) { - S_Sound (this, CHAN_WEAPON, "MageLightningZap", 1, ATTN_NORM); + S_Sound (this, CHAN_WEAPON, this->AttackSound, 1, ATTN_NORM); } if (thing->flags3&MF3_ISMONSTER && pr_hit() < 64) { @@ -207,6 +207,9 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningClip) DEFINE_ACTION_FUNCTION(AActor, A_LightningZap) { + + const PClass *lightning=PClass::FindClass((ENamedName) self->GetClass()->Meta.GetMetaInt (ACMETA_MissileName, NAME_None)); + if (lightning == NULL) lightning = PClass::FindClass("LightningZap"); AActor *mo; fixed_t deltaZ; @@ -226,7 +229,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningZap) { deltaZ = -10*FRACUNIT; } - mo = Spawn (self->x+((pr_zap()-128)*self->radius/256), + mo = Spawn(lightning, self->x+((pr_zap()-128)*self->radius/256), self->y+((pr_zap()-128)*self->radius/256), self->z+deltaZ, ALLOW_REPLACE); if (mo) @@ -246,7 +249,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningZap) } if ((self->flags3 & MF3_FLOORHUGGER) && pr_zapf() < 160) { - S_Sound (self, CHAN_BODY, "MageLightningContinuous", 1, ATTN_NORM); + S_Sound (self, CHAN_BODY, self->ActiveSound, 1, ATTN_NORM); } } @@ -256,12 +259,16 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningZap) // //============================================================================ -DEFINE_ACTION_FUNCTION(AActor, A_MLightningAttack) +DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_MLightningAttack) { + ACTION_PARAM_START(2); + ACTION_PARAM_CLASS(floor, 0); + ACTION_PARAM_CLASS(ceiling, 1); + AActor *fmo, *cmo; - fmo = P_SpawnPlayerMissile (self, PClass::FindClass ("LightningFloor")); - cmo = P_SpawnPlayerMissile (self, PClass::FindClass ("LightningCeiling")); + fmo = P_SpawnPlayerMissile (self, floor); + cmo = P_SpawnPlayerMissile (self, ceiling); if (fmo) { fmo->special1 = 0; @@ -319,9 +326,12 @@ DEFINE_ACTION_FUNCTION(AActor, A_ZapMimic) DEFINE_ACTION_FUNCTION(AActor, A_LastZap) { + const PClass *lightning=PClass::FindClass((ENamedName) self->GetClass()->Meta.GetMetaInt (ACMETA_MissileName, NAME_None)); + if (lightning == NULL) lightning = PClass::FindClass("LightningZap"); + AActor *mo; - mo = Spawn (self->x, self->y, self->z, ALLOW_REPLACE); + mo = Spawn(lightning, self->x, self->y, self->z, ALLOW_REPLACE); if (mo) { mo->SetState (mo->FindState (NAME_Death)); diff --git a/wadsrc/static/actors/hexen/magelightning.txt b/wadsrc/static/actors/hexen/magelightning.txt index 73907a0de2..02658bcba5 100644 --- a/wadsrc/static/actors/hexen/magelightning.txt +++ b/wadsrc/static/actors/hexen/magelightning.txt @@ -14,7 +14,7 @@ ACTOR MWeapLightning : MageWeapon 8040 Inventory.PickupMessage "$TXT_WEAPON_M3" action native A_LightningReady(); - action native A_MLightningAttack(); + action native A_MLightningAttack(class floor = "LightningFloor", class ceiling = "LightningCeiling"); States { @@ -53,6 +53,9 @@ ACTOR MWeapLightning : MageWeapon 8040 ACTOR Lightning native { + MissileType "LightningZap" + AttackSound "MageLightningZap" + ActiveSound "MageLightningContinuous" } ACTOR LightningCeiling : Lightning