diff --git a/language.def_base b/language.def_base index ba575de41..390e0c505 100644 --- a/language.def_base +++ b/language.def_base @@ -569,7 +569,7 @@ OB_SPLASH = "%o got a bit too close there."; OB_R_SPLASH = "%o did an Icarus."; OB_ROCKET = "%o ate a rocket."; OB_KILLEDSELF = "%o self-destructed."; -OB_VOODOO = "%o violated the laws of causality."; +OB_VOODOO = "%o shouldn't have touched that doll."; OB_MPTELEFRAG = "%k overwrote %o."; OB_MONTELEFRAG = "%o was overwritten."; OB_DEFAULT = "%o is ded."; diff --git a/language.es_base b/language.es_base index 64a88f58e..88a3a6435 100644 --- a/language.es_base +++ b/language.es_base @@ -468,7 +468,7 @@ OB_SPLASH = "%o casi que se puso demasiado cerca de eso."; OB_R_SPLASH = "%o hizo un Icarus."; OB_ROCKET = "%o se comió un cohete."; OB_KILLEDSELF = "%o se autodestruyó."; -OB_VOODOO = "%o violó las leyes de la causalidad."; +OB_VOODOO = "%o no debería haber tocado ese muñeco."; OB_MPTELEFRAG = "%k sobrescribió a %o."; OB_MONTELEFRAG = "%o fue sobrescrit@[ao_esp]."; OB_DEFAULT = "%o hizo plaf."; diff --git a/language.version b/language.version index eb8c443c1..896fa342f 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r173 \cu(Sat 26 Feb 20:33:58 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.2pre r173 \cu(2022-02-26 20:33:58)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r174 \cu(Mon 28 Feb 17:31:35 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.2pre r174 \cu(2022-02-28 17:31:35)\c-"; diff --git a/modeldef.demolitionist b/modeldef.demolitionist index 15555fdaa..6d63ded14 100644 --- a/modeldef.demolitionist +++ b/modeldef.demolitionist @@ -578,7 +578,7 @@ Model "Demolitionist" } // Voodoo Doll -Model "Demolitionist" +Model "SWWMVoodooDoll" { Path "models" Model 1 "VoodooDoll_d.3d" diff --git a/zscript/handler/swwm_handler_worldload.zsc b/zscript/handler/swwm_handler_worldload.zsc index 0071c97ea..6eca72a1c 100644 --- a/zscript/handler/swwm_handler_worldload.zsc +++ b/zscript/handler/swwm_handler_worldload.zsc @@ -108,7 +108,7 @@ extend Class SWWMHandler LevelInfo nextlv = LevelInfo.FindLevelInfo(e.NextMap); for ( int i=0; i128),"Turn"); - } + XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(abs(player.cmd.yaw|player.cmd.pitch)>128),"Turn"); Wait; See: // normal walking @@ -3233,22 +3234,14 @@ Class Demolitionist : PlayerPawn Goto Spawn+1; Pain: // ouchy - XZW1 A 1 - { - if ( !player || (player.mo != self) ) return ResolveState("VoodooPain"); - return A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchPain"); - } + XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchPain"); XZW2 M 1 A_DemoPain(); XZW2 NOPQ 1; Goto Spawn+1; Death: XDeath: // ded - XZW1 A 0 - { - if ( !player || (player.mo != self) ) return ResolveState("VoodooDeath"); - return A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchDeath"); - } + XZW1 A 0 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchDeath"); XZW1 A 2 { A_DemoScream(); @@ -3528,15 +3521,41 @@ Class Demolitionist : PlayerPawn #### # 2; XZWE MYZ 2; Goto Float+1; - VoodooSpawn: + } +} + +Class SWWMVoodooDoll : PlayerPawn +{ + override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + // as simple as it gets + return "$OB_VOODOO"; + } + Default + { + Tag "$FN_VOODOO"; + Speed 1; + Health 100; + Radius 16; + Height 56; + Mass 100; + PainChance 255; + +NOBLOOD; + +DONTGIB; + +NOICEDEATH; + +DONTCORPSE; + } + States + { + Spawn: XZWZ A -1; Loop; - VoodooPain: + Pain: XZWZ A 1; XZWZ B 2 A_StartSound("voodoodoll/hit",CHAN_BODY,CHANF_OVERLAP); XZWZ CDEF 2; - Goto VoodooSpawn; - VoodooDeath: + Goto Spawn; + Death: XZWZ A 2 { A_StartSound("voodoodoll/fall",CHAN_BODY,CHANF_OVERLAP);