diff --git a/language.def_voice b/language.def_voice index 471bddb38..219d3778e 100644 --- a/language.def_voice +++ b/language.def_voice @@ -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!"; diff --git a/language.es_voice b/language.es_voice index f2af955a4..f3aa15287 100644 --- a/language.es_voice +++ b/language.es_voice @@ -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!"; diff --git a/language.version b/language.version index 1dd09b1d9..a05b91fae 100644 --- a/language.version +++ b/language.version @@ -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-"; diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index 8ff142a33..f468a6716 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -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(); diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index c703d4f8d..32fbd377f 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -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 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); diff --git a/zscript/weapons/swwm_shot_fx.zsc b/zscript/weapons/swwm_shot_fx.zsc index 1768c73df..fc3856b4d 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -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 diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index 39f47381b..5d6c2ea9f 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -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; }