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 000000000..4ec7bc275 Binary files /dev/null and b/filter/game-hexen/graphics/Achievements/AchievementPlush.png differ diff --git a/graphics/Achievements/AchievementPlush.png b/graphics/Achievements/AchievementPlush.png index 4ec7bc275..a35932f0a 100644 Binary files a/graphics/Achievements/AchievementPlush.png and b/graphics/Achievements/AchievementPlush.png differ diff --git a/language.def_base b/language.def_base index 73b0bdfbd..8609d0337 100644 --- a/language.def_base +++ b/language.def_base @@ -884,7 +884,9 @@ SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %d enemies with a single Ynykron Artifact sh SWWM_ACHIEVEMENT_FLIGHT_TAG = "Blasting Off Again"; SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send an enemy flying over %d map units away"; SWWM_ACHIEVEMENT_FRIEND_TAG = "Shaped like a Friend"; -SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Cacodemons, Weredragons or Ettins with headpats"; +SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Cacodemons with headpats"; +$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Weredragons with headpats"; +$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Ettins with headpats"; SWWM_ACHIEVEMENT_FUEL_TAG = "Hydrogenated"; SWWM_ACHIEVEMENT_FUEL_TXT = "Consume a total of %dL of fuel"; SWWM_ACHIEVEMENT_FULLER_TAG = "You Gained Brouzouf"; @@ -897,7 +899,7 @@ SWWM_ACHIEVEMENT_GHOST_TAG = "Cloak Engaged"; SWWM_ACHIEVEMENT_GHOST_TXT = "Use %d Ghost Artifacts"; SWWM_ACHIEVEMENT_GIB_TAG = "Gibbitude"; SWWM_ACHIEVEMENT_GIB_TXT = "Overkill %d enemies"; -SWWM_ACHIEVEMENT_GOLDEN_TAG = "Golden Shower"; +SWWM_ACHIEVEMENT_GOLDEN_TAG = "Midas Massacre"; SWWM_ACHIEVEMENT_GOLDEN_TXT = "Use %d golden shells"; SWWM_ACHIEVEMENT_GRAVITY_TAG = "Decent Ascent"; SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %d Gravity Suppressors"; @@ -936,7 +938,8 @@ SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %d maps"; SWWM_ACHIEVEMENT_PENE_TAG = "Penetrator"; SWWM_ACHIEVEMENT_PENE_TXT = "Strike through %d enemies in a row with a single Grand Lance secondary"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Lovestruck"; -SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same session"; +SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya plush %d times in the same session"; +$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same session"; SWWM_ACHIEVEMENT_RAGE_TAG = "No Talk me Angy"; SWWM_ACHIEVEMENT_RAGE_TXT = "Use %d Ragekits"; SWWM_ACHIEVEMENT_REFLECT_TAG = "Return to Sender"; @@ -951,6 +954,8 @@ SWWM_ACHIEVEMENT_SANIC_TAG = "CHILLI DOGS"; SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d km/h"; SWWM_ACHIEVEMENT_SEKIRO_TAG = "Hesitation is Defeat"; SWWM_ACHIEVEMENT_SEKIRO_TXT = "Die and reboot two times in the same map"; +SWWM_ACHIEVEMENT_SHAME_TAG = "Shameful"; +SWWM_ACHIEVEMENT_SHAME_TXT = "Kill a boss solely by using the Deep Impact primary"; SWWM_ACHIEVEMENT_SHOCK_TAG = "Shockmaster"; SWWM_ACHIEVEMENT_SHOCK_TXT = "Perform %d Biospark combos"; SWWM_ACHIEVEMENT_SLAYER_TAG = "I am Become Death"; diff --git a/language.es_base b/language.es_base index 2e9e23bb1..feeadc109 100644 --- a/language.es_base +++ b/language.es_base @@ -784,7 +784,9 @@ SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %d enemigos con un solo disparo de Artefacto SWWM_ACHIEVEMENT_FLIGHT_TAG = "Despega de Nuevo"; SWWM_ACHIEVEMENT_FLIGHT_TXT = "Lanza a un enemigo en volandas más allá de %d unidades de mapa"; SWWM_ACHIEVEMENT_FRIEND_TAG = "Con Forma de Amigo"; -SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Cacodemonios, Hombres-Dragón o Ettins a base de caricias"; +SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Cacodemonios a base de caricias"; +$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Hombres-Dragón a base de caricias"; +$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Ettins a base de caricias"; SWWM_ACHIEVEMENT_FUEL_TAG = "Hidrogenado"; SWWM_ACHIEVEMENT_FUEL_TXT = "Consume un total de %dL de combustible"; SWWM_ACHIEVEMENT_FULLER_TAG = "Has Ganado Brouzouf"; @@ -797,7 +799,7 @@ SWWM_ACHIEVEMENT_GHOST_TAG = "Camuflaje Activado"; SWWM_ACHIEVEMENT_GHOST_TXT = "Usa %d Artefactos Fantasma"; SWWM_ACHIEVEMENT_GIB_TAG = "Carnaza"; SWWM_ACHIEVEMENT_GIB_TXT = "Haz overkill a %d enemigos"; -SWWM_ACHIEVEMENT_GOLDEN_TAG = "Lluvia Dorada"; +SWWM_ACHIEVEMENT_GOLDEN_TAG = "Masacre de Midas"; SWWM_ACHIEVEMENT_GOLDEN_TXT = "Usa %d cartuchos dorados"; SWWM_ACHIEVEMENT_GRAVITY_TAG = "Ascenso Decente"; SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %d Supresores de Gravedad"; @@ -835,7 +837,8 @@ SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %d mapas"; SWWM_ACHIEVEMENT_PENE_TAG = "Penetrador"; SWWM_ACHIEVEMENT_PENE_TXT = "Atraviesa %d enemigos en fila con un solo secundario de la Gran Lanza"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito"; -SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida"; +SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con el peluche de Saya %d veces en la misma partida"; +$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida"; SWWM_ACHIEVEMENT_RAGE_TAG = "No Hablo me Enfado"; SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %d Ragekits"; SWWM_ACHIEVEMENT_REFLECT_TAG = "Devuelto a Remitente"; @@ -850,6 +853,8 @@ SWWM_ACHIEVEMENT_SANIC_TAG = "PERRITOS DE CHILE"; SWWM_ACHIEVEMENT_SANIC_TXT = "Alcanza una velocidad punta de %d km/h"; SWWM_ACHIEVEMENT_SEKIRO_TAG = "Dudar es Fracasar"; SWWM_ACHIEVEMENT_SEKIRO_TXT = "Muere y reinicia dos veces en el mismo mapa"; +SWWM_ACHIEVEMENT_SHAME_TAG = "Vergonzoso"; +SWWM_ACHIEVEMENT_SHAME_TXT = "Mata un boss usando solo el modo primario de la Deep Impact"; SWWM_ACHIEVEMENT_SHOCK_TXT = "Realiza %d combos de Biospark"; SWWM_ACHIEVEMENT_SLAYER_TAG = "Me he Convertido en Muerte"; SWWM_ACHIEVEMENT_SLAYER_TXT = "Mata %d enemigos con una sola Cabeza Nuclear Slayer"; diff --git a/language.version b/language.version index 501202803..71e3bbe3e 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r419 \cu(Sun 28 Mar 16:00:32 CEST 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r419 \cu(2021-03-28 16:00:32)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r421 \cu(Mon 29 Mar 19:07:02 CEST 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r421 \cu(2021-03-29 19:07:02)\c-"; diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index 54716a909..d119dd0c0 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -1,5 +1,7 @@ // WorldThingDamaged and friends +Class DeepImpactOnlyToken : Inventory {} + extend Class SWWMHandler { bool tookdamage[MAXPLAYERS]; @@ -102,6 +104,20 @@ extend Class SWWMHandler if ( e.Damage > 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);