From 0136f32c47d92619edcdaecfe5c4c631ad8c119c Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Mon, 29 Mar 2021 19:05:58 +0200 Subject: [PATCH] Per-game achievement alterations (wow, undocumented LANGUAGE feature). Added achievement for killing a boss using only the Deep Impact primary. --- achievements.lst | 1 + cvarinfo.txt | 1 + .../Achievements/AchievementPlush.png | Bin 0 -> 2672 bytes graphics/Achievements/AchievementPlush.png | Bin 2672 -> 2627 bytes language.def_base | 11 +++++++--- language.es_base | 11 +++++++--- language.version | 4 ++-- zscript/handler/swwm_handler_damage.zsc | 19 ++++++++++++++++++ zscript/weapons/swwm_deepdarkimpact.zsc | 3 ++- 9 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 filter/game-hexen/graphics/Achievements/AchievementPlush.png diff --git a/achievements.lst b/achievements.lst index dcfd42bf5..439bbd45d 100644 --- a/achievements.lst +++ b/achievements.lst @@ -66,6 +66,7 @@ refresh,25,yes salt,0,no sanic,800,yes sekiro,0,no +shame,0,no shock,30,yes slayer,40,yes slemg,50,yes diff --git a/cvarinfo.txt b/cvarinfo.txt index 87d9622ea..184e4160c 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -207,6 +207,7 @@ nosave int swwm_achievement_roast = 0; nosave int swwm_achievement_salt = 0; nosave int swwm_achievement_sanic = 0; nosave int swwm_achievement_sekiro = 0; +nosave int swwm_achievement_shame = 0; nosave int swwm_achievement_shock = 0; nosave int swwm_achievement_slayer = 0; nosave int swwm_achievement_slemg = 0; diff --git a/filter/game-hexen/graphics/Achievements/AchievementPlush.png b/filter/game-hexen/graphics/Achievements/AchievementPlush.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec7bc275ff837bb9c95538063e608e704fb1733 GIT binary patch literal 2672 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 W?>sjaPG?|XVDNPHb6Mw<&;$UXBw#fF literal 0 HcmV?d00001 diff --git a/graphics/Achievements/AchievementPlush.png b/graphics/Achievements/AchievementPlush.png index 4ec7bc275ff837bb9c95538063e608e704fb1733..a35932f0a6c83cb79dd239e31af3f75b7a9e79b8 100644 GIT binary patch delta 2618 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 SDi|0T7(8A5T-G@yGywntFgh3j delta 2663 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 P1_lOCS3j3^P6 s.topdealt ) s.topdealt = e.Damage; } SWWMFlyTracker.Track(e.Thing,e.DamageSource); + if ( e.Thing.bBOSS ) + { + let tk = e.Thing.FindInventory("DeepImpactOnlyToken"); + if ( !tk ) + { + tk = Inventory(Actor.Spawn("DeepImpactOnlyToken")); + tk.AttachToOwner(e.Thing); + tk.special1 = 0; + } + Inventory pb; + if ( (tk.special1 != -1) && ((e.DamageType == 'Push') || (e.Inflictor && (pb = e.Inflictor.FindInventory("ParriedBuff")) && pb.bAMBUSH)) ) + tk.special1 = 1; + else tk.special1 = -1; + } } } @@ -174,6 +190,9 @@ extend Class SWWMHandler SWWMUtility.AchievementProgressInc('swwm_progress_love',1,src.player); if ( e.Inflictor && e.Inflictor.FindInventory('ParriedBuff') ) SWWMUtility.AchievementProgressInc('swwm_progress_reflect',1,src.player); + Inventory tk; + if ( (tk = e.Thing.FindInventory("DeepImpactOnlyToken")) && (tk.special1 == 1) ) + SWWMUtility.MarkAchievement('swwm_achievement_shame',src.player); SWWMUtility.AchievementProgressInc('swwm_progress_mega',1,src.player); } // no credits unless it's a counted kill or marine (that isn't friendly) diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index 9dd7ab3dd..67f56c733 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -221,7 +221,7 @@ Class DeepImpact : SWWMWeapon rdir /= rdist; if ( LineTrace(atan2(rdir.y,rdir.x),rdist,asin(-rdir.z),TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y) || (rdist > 250) || (rdir dot x < .75) ) continue; m.speed = m.vel.length(); - m.vel = m.speed*1.5*(-m.vel.unit()*.4+rdir).unit(); + m.vel = m.speed*1.5*(-m.vel.unit()*.3+rdir+x*.2).unit(); Vector3 ndir = m.vel.unit(); m.angle = atan2(ndir.y,ndir.x); m.pitch = asin(-ndir.z); @@ -231,6 +231,7 @@ Class DeepImpact : SWWMWeapon { let pb = Inventory(Spawn("ParriedBuff")); pb.AttachToOwner(m); + pb.bAMBUSH = true; } if ( s ) s.parries++; SWWMUtility.AchievementProgressInc('swwm_progress_parry',1,player);