Add ass/ball kill oneliner variants.

This commit is contained in:
Mari the Deer 2022-04-12 17:49:07 +02:00
commit 24d8772796
7 changed files with 42 additions and 24 deletions

View file

@ -420,8 +420,8 @@ SWWM_SUBS_DEFAULT_ASSKILL1 = "It's ASS time!";
SWWM_SUBS_DEFAULT_ASSKILL2 = "Putting the ASS in mASSacre!";
// Lead ball crit
SWWM_SUBS_DEFAULT_NBALLSKILL = "2";
SWWM_SUBS_DERFAULT_BALLSKILL1 = "Dangerous Ball Action!";
SWWM_SUBS_DERFAULT_BALLSKILL2 = "Be careful playing with your balls, lads!";
SWWM_SUBS_DEFAULT_BALLSKILL1 = "Dangerous Ball Action!";
SWWM_SUBS_DEFAULT_BALLSKILL2 = "Be careful playing with your balls, lads!";
// Explosion kill
SWWM_SUBS_DEFAULT_NBLAST = "6";
SWWM_SUBS_DEFAULT_BLAST1 = "Bang!";

View file

@ -377,8 +377,8 @@ SWWM_SUBS_DEFAULT_ASSKILL1 = "¡Es hora del CULO!";
SWWM_SUBS_DEFAULT_ASSKILL2 = "¡Masacrando con las nalgas!";
// Lead ball crit
SWWM_SUBS_DEFAULT_NBALLSKILL = "2";
SWWM_SUBS_DERFAULT_BALLSKILL1 = "¡Peligrosa Acción de Pelotas!";
SWWM_SUBS_DERFAULT_BALLSKILL2 = "¡Cuidado al jugar con vuestras pelotas, chavales!";
SWWM_SUBS_DEFAULT_BALLSKILL1 = "¡Peligrosa Acción de Pelotas!";
SWWM_SUBS_DEFAULT_BALLSKILL2 = "¡Cuidado al jugar con vuestras pelotas, chavales!";
// Explosion kill
SWWM_SUBS_DEFAULT_NBLAST = "6";
SWWM_SUBS_DEFAULT_BLAST1 = "¡Bang!";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r25 \cu(Tue 12 Apr 17:06:20 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r25 \cu(2022-04-12 17:06:20)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r26 \cu(Tue 12 Apr 17:49:07 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r26 \cu(2022-04-12 17:49:07)\c-";

View file

@ -137,11 +137,11 @@ extend Class SWWMHandler
{
if ( (e.DamageSource.bISMONSTER || e.DamageSource.player || (e.DamageSource is 'ScriptedMarine')) && (e.Thing == players[consoleplayer].mo) && (e.Thing.Health > 0) )
{
if ( !lastcombat || (gametic > lastcombat+40) )
if ( !lastcombat || (gametic > lastcombat+20) )
{
if ( e.Thing.IsFriend(e.DamageSource) )
lastcombat = AddOneliner("friendhit",1,10);
else if ( (!lastcombat || (gametic > lastcombat+180)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
else if ( (!lastcombat || (gametic > lastcombat+90)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
lastcombat = AddOneliner("gethit",1,15);
}
highesttic = gametic;
@ -152,7 +152,7 @@ extend Class SWWMHandler
// make sure it's not a moth, because otherwise they won't shut up about accidentally hurting them (it happens a lot)
if ( e.Thing.IsFriend(e.DamageSource) && !(e.Thing is 'LampMoth') )
{
if ( !lastcombat || (gametic > lastcombat+40) )
if ( !lastcombat || (gametic > lastcombat+20) )
lastcombat = AddOneliner("hitfriend",1,10);
highesttic = gametic;
}
@ -176,12 +176,22 @@ extend Class SWWMHandler
if ( src == players[consoleplayer].mo )
{
highesttic = gametic;
if ( !lastcombat || (gametic > lastcombat+40) )
if ( !lastcombat || (gametic > lastcombat+20) )
{
if ( e.Thing.IsFriend(src) )
lastcombat = AddOneliner("friendkill",1,5);
else if ( (!lastcombat || (gametic > lastcombat+120)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
lastcombat = AddOneliner("scorekill",1,15);
else if ( (!lastcombat || (gametic > lastcombat+50)) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
{
int lc = 0;
if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:2) && (e.DamageType == 'CriticalConcussion') ) lc = AddOneliner("ballskill",1,15);
else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?2:5) && (e.DamageType == 'Buttslam') ) lc = AddOneliner("asskill",1,15);
if ( !lc )
{
if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:4) )
lastcombat = AddOneliner("scorekill",1,15);
}
else lastcombat = lc;
}
}
}
int pnum = src.PlayerNumber();

View file

@ -87,6 +87,8 @@ Class Demolitionist : PlayerPawn
int invwipe; // inventory wipe flags for next level
transient bool ingivecheat;
Property DashFuel : dashfuel;
Default
@ -296,6 +298,7 @@ Class Demolitionist : PlayerPawn
override void CheatGive( String name, int amount )
{
if ( !player.mo || (player.health <= 0) ) return;
ingivecheat = true;
int giveall = (name~=="everything")?ALL_YESYES:(name~=="all")?ALL_YES:ALL_NO;
if ( giveall )
{
@ -326,10 +329,12 @@ Class Demolitionist : PlayerPawn
{
if ( CheckLocalView() )
Console.Printf("'%s' is not a valid inventory item",name);
ingivecheat = false;
return;
}
GiveInventory(type,amount,true);
}
ingivecheat = false;
}
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
{
@ -2716,7 +2721,7 @@ Class Demolitionist : PlayerPawn
// add lore if any
SWWMLoreLibrary.Add(player,cn);
// weapon get oneliner
if ( (item is 'Weapon') && !(item is 'SWWMGesture') && !(item is 'SWWMItemGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() )
if ( (item is 'Weapon') && !(item is 'SWWMGesture') && !(item is 'SWWMItemGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && (player == players[consoleplayer]) && !ingivecheat )
{
if ( (item is 'SWWMWeapon') && (SWWMWeapon(item).GetLine != "") )
{
@ -2735,14 +2740,17 @@ Class Demolitionist : PlayerPawn
else Console.Printf(StringTable.Localize("$SWWM_FINDKEYREM"),player.GetUserName(),item.GetTag(),score);
SWWMCredits.Give(player,score);
SWWMScoreObj.Spawn(100,player.mo.Vec3Offset(0,0,Height/2));
if ( !Random[DemoLines](0,5) &&
((item.GetClass() == 'RedSkull') || (item.GetClass() == 'YellowSkull')
|| (item.GetClass() == 'BlueSkull') || (item.GetClassName() == "PurpleSkull")) )
if ( !ingivecheat )
{
if ( !SWWMHandler.AddOneliner("skullget",2) )
SWWMHandler.AddOneliner("keyget",2);
if ( !Random[DemoLines](0,5) &&
((item.GetClass() == 'RedSkull') || (item.GetClass() == 'YellowSkull')
|| (item.GetClass() == 'BlueSkull') || (item.GetClassName() == "PurpleSkull")) )
{
if ( !SWWMHandler.AddOneliner("skullget",2) )
SWWMHandler.AddOneliner("keyget",2);
}
else SWWMHandler.AddOneliner("keyget",2);
}
else SWWMHandler.AddOneliner("keyget",2);
// share all keys in mp
for ( int i=0; i<MAXPLAYERS; i++ )
{
@ -2758,14 +2766,14 @@ Class Demolitionist : PlayerPawn
// add collectible to stats
if ( item is 'SWWMCollectible' )
{
SWWMHandler.AddOneliner(SWWMCollectible(item).GetLine,2);
if ( !ingivecheat ) SWWMHandler.AddOneliner(SWWMCollectible(item).GetLine,2);
if ( !mystats ) return;
let cls = item.GetClass();
if ( (mystats.ownedcollectibles.Size() > 0) && (mystats.ownedcollectibles.Find(cls) < mystats.ownedcollectibles.Size()) ) return;
mystats.ownedcollectibles.Push(cls);
}
// yorick
if ( item is 'PuzzSkull' && mystats && !mystats.gotyorick )
if ( (item is 'PuzzSkull') && mystats && !mystats.gotyorick && !ingivecheat )
{
mystats.gotyorick = true;
SWWMHandler.AddOneliner("skullget",2);

View file

@ -1197,7 +1197,7 @@ Class TheBall : Actor
}
SWWMUtility.DoKnockback(victim,vel.unit(),slamforce);
bool bleeds = (victim && !victim.bINVULNERABLE && !victim.bNOBLOOD && !victim.bDORMANT && is_schutt);
int newdmg = victim.DamageMobj(self,target,dmg,'Concussion',crit?(DMG_THRUSTLESS|DMG_FOILINVUL):DMG_THRUSTLESS); // crits ignore invulnerability
int newdmg = victim.DamageMobj(self,target,dmg,crit?'CriticalConcussion':'Concussion',crit?(DMG_THRUSTLESS|DMG_FOILINVUL):DMG_THRUSTLESS); // crits ignore invulnerability
Vector3 dir = -vel.unit();
// slam jam
if ( bleeds )
@ -1223,7 +1223,7 @@ Class TheBall : Actor
}
// make it so the crit does not propagate to friendlies unless we bonked a friend (you monster!)
if ( crit )
SWWMUtility.DoExplosion(self,dmg/2,25000,150,80,(victim.isFriend(target))?0:DE_NOHURTFRIEND,'',target,DMG_FOILINVUL);
SWWMUtility.DoExplosion(self,dmg/2,25000,150,80,(victim.isFriend(target))?0:DE_NOHURTFRIEND,crit?'CriticalConcussion':'Concussion',target,DMG_FOILINVUL);
if ( crit && victim && (victim.Health <= 0) && (victim.bBOSS || victim.FindInventory("BossMarker")) && target )
SWWMUtility.MarkAchievement("clonk",target.player);
// only rip shootables

View file

@ -83,7 +83,7 @@ Class ExplodiumGun : SWWMWeapon
Owner.player.PendingWeapon = SisterWeapon;
// add the oneliner
let demo = Demolitionist(Owner);
if ( demo && demo.mystats && !demo.mystats.GotWeapon(SisterWeapon.GetClass()) && Owner.CheckLocalView() )
if ( demo && demo.mystats && !demo.mystats.GotWeapon(SisterWeapon.GetClass()) && (Owner.player == players[consoleplayer]) && !demo.ingivecheat )
SWWMHandler.AddOneliner(SWWMWeapon(SisterWeapon).GetLine,2);
item.bPickupGood = true;
}