Implement self obituaries (4.15 feature).

This commit is contained in:
Mari the Deer 2025-08-20 18:09:53 +02:00
commit 11cc137183
19 changed files with 140 additions and 2 deletions

View file

@ -633,6 +633,33 @@ O_ENDLEVEL = "%o had a peculiar teleportation-related mishap.";
O_MYKRADVO = "%o couldn't hide from %k's vengeful wrath.";
O_LEADBALL = "%o was conked by %k's lead ball.";
O_SALTSHOT = "%k made %o very salty.";
// self obituaries
SO_EXPLODIUM = "%o forgot that %p gun deals splash damage.";
SO_EXPLODIUMALT = "%o tried to catch %p own grenade.";
SO_SPREADGUN_GOLD = "%o ate up %p own golden blast.";
SO_EVISCERATOR = "%o bounced some shrapnel right into %p own face.";
SO_EVISCERATORALT = "%o ain't no flak monkey.";
SO_HELLBLAZER = "%o is most definitely good at Doom.";
SO_SPARKSTER = "%o sparked %hself.";
SO_SILVERBULLET = "%o fired a 35mm round at point blank and now regrets it.";
SO_SILVERBULLET2 = "%o forgot that the Silver Bullet's exhaust is very hot.";
SO_CANDYGUN = "%o tried to taste %p own candy (and died).";
SO_CANDYGUNALT = "%o tried to catch %p own candy grenade.";
SO_CANDYGUNCOMBO = "%o tried to catch %p own Candy Gun.";
SO_YNYKRON = "%o instantly removed %hself.";
SO_YNYKRONALT = "%o didn't keep %p distance from %p own singularity.";
SO_PLASMABLAST = "%o ate %p own plasma.";
SO_QUADRAVOL = "%o certainly is good at Doom.";
SO_QUADRAVOL2 = "%o failed the rocket jump.";
SO_QUADRAVOLF = "%o forgot to stop, drop and roll.";
SO_NEWSPARKSTER = "%o really shouldn't use plasma artillery at close range.";
SO_RAYKHOM = "%o forgot that the Ray-Khom is a long range weapon.";
SO_RAYKHOM2 = "%o can feel John Romero laughing at %h.";
SO_MORTALRIFLE = "%o made a very deadly mistake.";
SO_MORTALRIFLEALT = "%o should have kept %p distance from those very deadly grenades.";
SO_RAFANKOS = "%o shouldn't be using superweapons at point blank.";
SO_LEADBALL = "%o shouldn't be playing with %p own balls.";
SO_SALTSHOT = "%o got caught in the crossfire of %p own sentry.";
// edited vanilla obituaries
OB_SUICIDE = "%o committed suikoden.";
OB_FALLING = "%o sprained everything.";

View file

@ -496,6 +496,33 @@ O_ENDLEVEL = "%o tuvo un peculiar contratiempo relacionado con el teletransporte
O_MYKRADVO = "%o no pudo esconderse de la ira vengativa de %k.";
O_LEADBALL = "A %o le salió un chichón con la bola de plomo de %k.";
O_SALTSHOT = "%k puso a %o muy salad@[ao_esp].";
// self obituaries
SO_EXPLODIUM = "%o olvidó que su pistola causa daño por área.";
SO_EXPLODIUMALT = "%o intentó atrapar su propia granada.";
SO_SPREADGUN_GOLD = "%o se tragó su propia explosión dorada.";
SO_EVISCERATOR = "%o hizo rebotar metralla en su propia cara.";
SO_EVISCERATORALT = "%o no es un@[a_esp] máquina del antiaéreo.";
SO_HELLBLAZER = "%o es definitivamente buen@[ao_esp] al Doom.";
SO_SPARKSTER = "%o se chispeó a sí mism@[ao_esp].";
SO_SILVERBULLET = "%o disparó un proyectil de 35mm a bocajarro y ahora lo lamenta.";
SO_SILVERBULLET2 = "%o olvidó que los gases de escape del Silver Bullet están muy calientes.";
SO_CANDYGUN = "%o intentó probar su propio caramelo (y murió).";
SO_CANDYGUNALT = "%o intentó atrapar su propia granada de caramelo.";
SO_CANDYGUNCOMBO = "%o intentó atrapar su propia Pistola de Caramelo.";
SO_YNYKRON = "%o se borró instantáneamente.";
SO_YNYKRONALT = "%o no mantuvo la distancia suficiente de su propia singularidad.";
SO_PLASMABLAST = "%o se tragó su propio plasma.";
SO_QUADRAVOL = "%o ciertamente es buen@[ao_esp] al Doom.";
SO_QUADRAVOL2 = "%o falló el salto con cohete..";
SO_QUADRAVOLF = "%o olvidó tirarse al suelo y rodar.";
SO_NEWSPARKSTER = "%o realmente no debería usar artillería de plasma a una distancia tan corta.";
SO_RAYKHOM = "%o olvidó que la Ray-Khom es un arma de largo alcance.";
SO_RAYKHOM2 = "%o puede sentir como John Romero se ríe de %h.";
SO_MORTALRIFLE = "%o cometió un error muy mortal.";
SO_MORTALRIFLEALT = "%o debería haber mantenido la distancia de esas granadas tan mortales.";
SO_RAFANKOS = "%o no debería usar superarmas a bocajarro.";
SO_LEADBALL = "%o no debería jugar con sus propias bolas.";
SO_SALTSHOT = "%o se vio envuelt@[ao_esp] en el fuego cruzado de su propia torreta.";
// edited vanilla obituaries
OB_SUICIDE = "%o se hizo un sudoku.";
OB_FALLING = "%o se partió las patas.";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1236 \cu(mié 20 ago 2025 16:54:45 CEST)\c-";
SWWM_SHORTVER="\cw1.3pre r1236 \cu(2025-08-20 16:54:45)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1237 \cu(mié 20 ago 2025 18:09:53 CEST)\c-";
SWWM_SHORTVER="\cw1.3pre r1237 \cu(2025-08-20 18:09:53)\c-";

View file

@ -177,6 +177,7 @@ Class MisterFuzzy : SWWMNonInteractiveActor
Default
{
Obituary "$O_MORTALRIFLE";
SelfObituary "$SO_MORTALRIFLE";
DamageType 'CoAb44';
RenderStyle 'Add';
+NODAMAGETHRUST;
@ -305,6 +306,7 @@ Class MisterPop : SWWMNonInteractiveActor
Default
{
Obituary "$O_MORTALRIFLE";
SelfObituary "$SO_MORTALRIFLE";
DamageType 'CoAb44';
RenderStyle 'Add';
Scale .2;
@ -347,6 +349,7 @@ Class MisterBulletImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_MORTALRIFLE";
SelfObituary "$SO_MORTALRIFLE";
DamageType 'CoAb44';
RenderStyle 'Add';
Scale 1.5;
@ -797,6 +800,7 @@ Class MisterRailHit : SWWMNonInteractiveActor
Default
{
Obituary "$O_MORTALRIFLE";
SelfObituary "$SO_MORTALRIFLE";
DamageType 'CoAb44';
+FORCERADIUSDMG;
+FOILINVUL;
@ -823,6 +827,7 @@ Class MisterRailBeam : SWWMNonInteractiveActor
Default
{
Obituary "$O_MORTALRIFLE";
SelfObituary "$SO_MORTALRIFLE";
RenderStyle 'Add';
RenderRadius 10000.;
+FORCEXYBILLBOARD;
@ -948,6 +953,7 @@ Class MisterGrenade : Actor
Default
{
Obituary "$O_MORTALRIFLEALT";
SelfObituary "$SO_MORTALRIFLEALT";
DamageType 'CoAb44';
Radius 3;
Height 6;

View file

@ -426,6 +426,7 @@ Class Quadravol : SWWMWeapon
Inventory.Icon "graphics/HUD/Icons/W_Quadravol.png";
Inventory.PickupMessage "$I_QUADRAVOL";
Obituary "$O_QUADRAVOL";
SelfObituary "$SO_QUADRAVOL2";
SWWMWeapon.Tooltip "$TT_QUADRAVOL";
SWWMWeapon.GetLine "getquadravol";
Weapon.SlotNumber 6;

View file

@ -296,9 +296,17 @@ Class QuadProj : Actor
return Super.GetObituary(victim,inflictor,mod,playerattack);
}
override String GetSelfObituary( Actor inflictor, Name mod )
{
// from melee combo
if ( bAMBUSH ) return StringTable.Localize("$SO_QUADRAVOL2");
return Super.GetSelfObituary(inflictor,mod);
}
Default
{
Obituary "$O_QUADRAVOL";
SelfObituary "$SO_QUADRAVOL";
DamageType 'Fire';
Scale .5;
Radius 6;
@ -334,6 +342,8 @@ Class QuadExplArm : Actor
{
Default
{
Obituary "$O_QUADRAVOL";
SelfObituary "$SO_QUADRAVOL";
PROJECTILE;
+THRUACTORS;
+BOUNCEONWALLS;
@ -881,6 +891,7 @@ Class OnFire : Inventory
Default
{
Obituary "$O_QUADRAVOL";
SelfObituary "$SO_QUADRAVOLF";
Inventory.Amount 1;
Inventory.MaxAmount 500;
+INVENTORY.KEEPDEPLETED; // since our amount can go below 0, we need special cleanup

View file

@ -246,6 +246,7 @@ Class TheBall : Actor
Default
{
Obituary "$O_LEADBALL";
SelfObituary "$SO_LEADBALL";
PROJECTILE;
+BOUNCEONWALLS;
+BOUNCEONFLOORS;
@ -503,6 +504,7 @@ Class SaltImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_SALTSHOT";
SelfObituary "$SO_SALTSHOT";
DamageType 'Salt';
RenderStyle 'Add';
Scale 1.8;
@ -569,6 +571,7 @@ Class SaltBeam : SWWMNonInteractiveActor
Default
{
Obituary "$O_SALTSHOT";
SelfObituary "$SO_SALTSHOT";
DamageType 'Salt';
RenderStyle 'Add';
Stamina 9;

View file

@ -179,6 +179,17 @@ Class Demolitionist : PlayerPawn
return Super.GetObituary(victim,inflictor,mod,playerattack);
}
override String GetSelfObituary( Actor inflictor, Name mod )
{
if ( inflictor && (inflictor != self) )
{
String msg = inflictor.GetSelfObituary(inflictor,mod);
if ( msg != "" ) return msg;
}
if ( mod == 'Massacre' ) return StringTable.Localize("$OB_KILLEDSELF");
return SelfObituary;
}
override double GetDeathHeight()
{
double basedeathheight = Super.GetDeathHeight();

View file

@ -1469,6 +1469,11 @@ Class SWWMPuff : SWWMNonInteractiveActor
if ( master ) return master.GetObituary(victim,master,mod,playerattack);
return Super.GetObituary(victim,inflictor,mod,playerattack);
}
override String GetSelfObituary( Actor inflictor, Name mod )
{
if ( master ) return master.GetSelfObituary(master,mod);
return Super.GetSelfObituary(inflictor,mod);
}
default
{

View file

@ -72,6 +72,7 @@ Class HellblazerArm : Actor
Default
{
Obituary "$O_HELLBLAZER";
SelfObituary "$SO_HELLBLAZER";
DamageType 'Fire';
PROJECTILE;
+THRUACTORS;
@ -189,6 +190,7 @@ Class HellblazerMissile : Actor
Default
{
Obituary "$O_HELLBLAZER";
SelfObituary "$SO_HELLBLAZER";
DamageType 'Sydon';
Radius 2;
Height 4;

View file

@ -133,6 +133,7 @@ Class EvisceratorChunk : Actor
Default
{
Obituary "$O_EVISCERATOR";
SelfObituary "$SO_EVISCERATOR";
Radius 2;
Height 4;
Speed 50;
@ -391,6 +392,7 @@ Class EvisceratorProj : Actor
Default
{
Obituary "$O_EVISCERATOR";
SelfObituary "$SO_EVISCERATORALT";
DamageType 'Explosive';
Radius 2;
Height 4;

View file

@ -188,6 +188,7 @@ Class YnykronVoidBeam : SWWMNonInteractiveActor
{
DamageType 'YnykronAlt';
Obituary "$O_YNYKRONALT";
SelfObituary "$SO_YNYKRONALT";
RenderStyle 'Add';
Alpha 0.;
Stamina 3;
@ -326,6 +327,7 @@ Class YnykronLightningImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_YNYKRONALT";
SelfObituary "$SO_YNYKRONALT";
DamageType 'Electric';
+FOILINVUL;
+FORCERADIUSDMG;
@ -474,6 +476,7 @@ Class YnykronLightningArc : SWWMNonInteractiveActor
Default
{
Obituary "$O_YNYKRONALT";
SelfObituary "$SO_YNYKRONALT";
RenderStyle 'Add';
DamageFunction 1000;
Speed 128;
@ -858,6 +861,7 @@ Class YnykronSingularityExplosion : SWWMNonInteractiveActor
Default
{
Obituary "$O_YNYKRONALT";
SelfObituary "$SO_YNYKRONALT";
DamageType 'YnykronAlt';
RenderStyle 'Add';
Scale 5.;
@ -1007,6 +1011,13 @@ Class YnykronSingularity : SWWMNonInteractiveActor
return Super.GetObituary(victim,inflictor,mod,playerattack);
}
override String GetSelfObituary( Actor inflictor, Name mod )
{
if ( mod == 'Ynykron' )
return StringTable.Localize("$SO_YNYKRON");
return Super.GetSelfObituary(inflictor,mod);
}
void A_SingularityTick()
{
// gather dust particles (minor "background" mass gain)
@ -1320,6 +1331,7 @@ Class YnykronSingularity : SWWMNonInteractiveActor
{
DamageType 'YnykronAlt';
Obituary "$O_YNYKRONALT";
SelfObituary "$SO_YNYKRONALT";
+MISSILE;
Scale .4;
}

View file

@ -318,6 +318,7 @@ Class YnykronImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_YNYKRON";
SelfObituary "$SO_YNYKRON";
DamageType 'Ynykron';
RenderStyle 'Add';
Scale 5.;
@ -831,6 +832,7 @@ Class YnykronBeam : SWWMNonInteractiveActor
Default
{
Obituary "$O_YNYKRON";
SelfObituary "$SO_YNYKRON";
DamageType 'Ynykron';
RenderStyle 'Add';
Alpha .4;

View file

@ -85,6 +85,8 @@ Class GoldenImpact : SWWMNonInteractiveActor
{
Default
{
Obituary "$O_SPREADGUN_GOLD";
SelfObituary "$SO_SPREADGUN_GOLD";
DamageType 'Explodium';
RenderStyle 'Add';
Scale 8.;
@ -187,6 +189,8 @@ Class GoldenSubImpact : SWWMNonInteractiveActor
{
Default
{
Obituary "$O_SPREADGUN_GOLD";
SelfObituary "$SO_SPREADGUN_GOLD";
DamageType 'Explodium';
RenderStyle 'Add';
Scale 6.;
@ -285,6 +289,8 @@ Class GoldenSubSubImpact : SWWMNonInteractiveActor
{
Default
{
Obituary "$O_SPREADGUN_GOLD";
SelfObituary "$SO_SPREADGUN_GOLD";
DamageType 'Explodium';
RenderStyle 'Add';
Scale 3.;

View file

@ -363,6 +363,7 @@ Class BigBiospark : Actor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
RenderStyle 'Add';
Health 1200;
@ -409,6 +410,7 @@ Class BiosparkBall : Actor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
RenderStyle 'Add';
Radius 2;
@ -674,6 +676,7 @@ Class BiosparkBeamImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
RenderStyle 'Add';
+FOILINVUL;
@ -798,6 +801,7 @@ Class BiosparkComboImpactSub : SWWMNonInteractiveActor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
RenderStyle 'Add';
Scale 1.4;
@ -826,6 +830,7 @@ Class BiosparkComboImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
RenderStyle 'Add';
Scale 2.;
@ -1183,6 +1188,7 @@ Class BiosparkBeam : SWWMNonInteractiveActor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
RenderStyle 'Add';
DamageFunction 15;
Speed 256;
@ -1419,6 +1425,7 @@ Class BiosparkArc : SWWMNonInteractiveActor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
RenderStyle 'Add';
DamageFunction 6;
ReactionTime 15;
@ -1507,6 +1514,7 @@ Class BiosparkCore : Actor
Default
{
Obituary "$O_SPARKSTER";
SelfObituary "$SO_SPARKSTER";
DamageType 'Biospark';
PROJECTILE;
BounceType 'Hexen';

View file

@ -35,6 +35,7 @@ Class ExplodiumMagArm : Actor
Default
{
Obituary "$O_EXPLODIUM";
SelfObituary "$SO_EXPLODIUMALT";
DamageType 'Explodium';
PROJECTILE;
+THRUACTORS;
@ -110,6 +111,7 @@ Class ExplodiumMagProj : Actor
Default
{
Obituary "$O_EXPLODIUM";
SelfObituary "$SO_EXPLODIUMALT";
DamageType 'Explodium';
Radius 2;
Height 4;
@ -487,6 +489,7 @@ Class ExplodiumBulletImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_EXPLODIUM";
SelfObituary "$SO_EXPLODIUM";
DamageType 'Explodium';
RenderStyle 'Add';
Scale 1.2;

View file

@ -152,6 +152,7 @@ Class CandyBeam : SWWMNonInteractiveActor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUN";
RenderStyle 'Add';
Alpha 0.4;
DamageFunction 40;
@ -176,6 +177,7 @@ Class CandyPop : SWWMNonInteractiveActor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUN";
DamageType 'Candy';
RenderStyle 'Add';
Scale 2.;
@ -293,6 +295,7 @@ Class CandyMagArm : Actor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUNALT";
DamageType 'Candy';
PROJECTILE;
+THRUACTORS;
@ -386,6 +389,10 @@ Class CandyMagTrailBig : CandyMagTrail
Class CandyMagArmBig : CandyMagArm
{
Default
{
SelfObituary "$SO_CANDYGUNCOMBO";
}
override void PostBeginPlay()
{
Super.PostBeginPlay();
@ -451,6 +458,7 @@ Class CandyGunProj : Actor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUNCOMBO";
DamageType 'Candy';
Radius 3;
Height 6;
@ -591,6 +599,7 @@ Class CandyMagProj : Actor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUNALT";
DamageType 'Candy';
Radius 2;
Height 4;
@ -725,6 +734,7 @@ Class CandyBulletImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_CANDYGUN";
SelfObituary "$SO_CANDYGUN";
DamageType 'Candy';
RenderStyle 'Add';
Scale 2.5;

View file

@ -720,6 +720,7 @@ Class SilverBullet : SWWMWeapon
Inventory.Icon "graphics/HUD/Icons/W_SilverBullet.png";
Inventory.PickupMessage "$T_SILVERBULLET";
Obituary "$O_SILVERBULLET";
SelfObituary "$SO_SILVERBULLET2";
SWWMWeapon.Tooltip "$TT_SILVERBULLET";
SWWMWeapon.GetLine "getsilverbullet";
Weapon.SlotNumber 8;

View file

@ -69,6 +69,7 @@ Class SilverImpact : SWWMNonInteractiveActor
Default
{
Obituary "$O_SILVERBULLET";
SelfObituary "$SO_SILVERBULLET";
DamageType 'Sniped';
+FORCERADIUSDMG;
+NODAMAGETHRUST;