diff --git a/language.def_base b/language.def_base index aed157c48..8cf79c8d3 100644 --- a/language.def_base +++ b/language.def_base @@ -864,6 +864,7 @@ D_FROGGY2 = "\cj... for \cdFroggy Chair\cj.\c-"; D_BARRIER = "The Elemental Coating wore off."; D_MASHIRO = "\cjShe knows where you are...\c-"; SWWM_YNYKRONREADY = "Ynykron Artifact ready for firing."; +SWWM_YNYKRONLOCKED = "Ynykron Artifact not authorized for use."; SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap \cf%s\cj for \cf%s\cj.\c-"; SWWM_TITLEPRESENTS = "presents"; SWWM_TITLEMODBY = "a mod by \cxMarisa Kirisame"; diff --git a/language.es_base b/language.es_base index 6033f26a2..0dfd5fe13 100644 --- a/language.es_base +++ b/language.es_base @@ -807,6 +807,7 @@ D_FROGGY2 = "\cj... por una \cdSilla Rana\cj.\c-"; D_BARRIER = "El Revestimiento Elemental se ha desvanecido."; D_MASHIRO = "\cjSabe donde estás...\c-"; SWWM_YNYKRONREADY = "Artefacto Ynykron listo para disparar."; +SWWM_YNYKRONLOCKED = "Artefacto Ynykron no autorizado para el uso."; SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar \cf%s\cj por \cf%s\cj.\c-"; SWWM_TITLEPRESENTS = "presenta"; SWWM_TITLEMODBY = "un mod de \cxMarisa Kirisame"; diff --git a/language.version b/language.version index c0eae3cd7..7ad8939b6 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r688 \cu(Fri 18 Dec 00:58:35 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r689 \cu(Fri 18 Dec 02:27:17 CET 2020)"; diff --git a/sndinfo.txt b/sndinfo.txt index 765b07777..96e9e4110 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -880,6 +880,7 @@ ynykron/vortexflash2 sounds/ynykron/mc_vortexflash2.ogg $random ynykron/vortexflash { ynykron/vortexflash1 ynykron/vortexflash2 } ynykron/vortexend sounds/ynykron/mc_vortexend.ogg ynykron/wind sounds/ynykron/mc_vortexwind.ogg +ynykron/locked sounds/ynykron/mc_locked.ogg misc/secret sounds/menu/findsecret.ogg misc/keytry sounds/menu/failuse.ogg diff --git a/sounds/ynykron/mc_locked.ogg b/sounds/ynykron/mc_locked.ogg new file mode 100644 index 000000000..f4d179ca8 Binary files /dev/null and b/sounds/ynykron/mc_locked.ogg differ diff --git a/zscript/swwm_deathlydeathcannon.zsc b/zscript/swwm_deathlydeathcannon.zsc index 1ba6e5c9b..60349bc88 100644 --- a/zscript/swwm_deathlydeathcannon.zsc +++ b/zscript/swwm_deathlydeathcannon.zsc @@ -3105,9 +3105,18 @@ Class Ynykron : SWWMWeapon XZW3 EFGHI 2; XZW2 A 0 { - invoker.chargestate = CS_CHARGING; - invoker.ventcooldown = Random[Ynykron](6,15); - A_StartSound("ynykron/ready",CHAN_WEAPONEXTRA2,CHANF_LOOP,.01,2.); + if ( gameinfo.gametype&GAME_Strife ) + { + A_StartSound("ynykron/locked",CHAN_WEAPON,CHANF_OVERLAP); + if ( player == players[consoleplayer] ) + Console.Printf(StringTable.Localize("$SWWM_YNYKRONLOCKED")); + } + else + { + invoker.chargestate = CS_CHARGING; + invoker.ventcooldown = Random[Ynykron](6,15); + A_StartSound("ynykron/ready",CHAN_WEAPONEXTRA2,CHANF_LOOP,.01,2.); + } } Goto Ready; Reload: diff --git a/zscript/swwm_funstuff.zsc b/zscript/swwm_funstuff.zsc index 895a44dfa..74645c4eb 100644 --- a/zscript/swwm_funstuff.zsc +++ b/zscript/swwm_funstuff.zsc @@ -892,7 +892,7 @@ Class Chancebox : Actor // no candidates? just burst into treats if ( Random[Chancebox](0,1) ) { - let a = Spawn(!Random[Chancebox](0,2)?"GoldShell":Random[Chancebox](0,1)?"GrilledCheeseSandwich":"YnykronAmmo",pos); + let a = Spawn(!Random[Chancebox](0,2)?"GoldShell":(Random[Chancebox](0,1)||(gameinfo.gametype&GAME_Strife))?"GrilledCheeseSandwich":"YnykronAmmo",pos); a.bDROPPED = true; a.bNOGRAVITY = false; a.vel.z = FRandom[Chancebox](2,4); diff --git a/zscript/swwm_kbase.zsc b/zscript/swwm_kbase.zsc index e48662165..c62676812 100644 --- a/zscript/swwm_kbase.zsc +++ b/zscript/swwm_kbase.zsc @@ -2150,6 +2150,8 @@ Class SWWMKnowledgeBaseMenu : GenericMenu if ( !type ) continue; // no collectibles if ( type is 'SWWMCollectible' ) continue; + // no Ynykron in strife + if ( (gameinfo.gametype&GAME_Strife) && (type is 'Ynykron') ) continue; // skip maxed items let cur = players[consoleplayer].mo.FindInventory(type); if ( cur && (cur.Amount >= cur.MaxAmount) ) continue; diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index e422f6452..2d54c37ec 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -225,6 +225,8 @@ Class Demolitionist : PlayerPawn { let type = (class)(AllActorClasses[i]); if ( !type || (type == "Weapon") ) continue; + // no Ynykron in Strife + if ( (gameinfo.gametype&GAME_Strife) && (type is 'Ynykron') ) continue; // Don't give already owned weapons let owned = FindInventory(type); if ( owned && (owned.Amount >= owned.MaxAmount) ) continue;