diff --git a/cvarinfo.txt b/cvarinfo.txt index d7721faf9..b6aeb78e3 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -101,6 +101,7 @@ nosave int swwm_numcolor_hp = 7; // font color for health numbers (default: blu nosave int swwm_numcolor_ap = 3; // font color for armor numbers (default: green) server int swwm_drlaskill = 3; // [DRLA Monsters] skill setting for monster spawns nosave bool swwm_itemsparkles = false; // visual aid for low visibility items +server bool swwm_singlefirst = false; // single weapons are selected before dual ones, has to be a server cvar due to limitations // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter diff --git a/language.def_menu b/language.def_menu index fb4d2ad8f..06de99ea8 100644 --- a/language.def_menu +++ b/language.def_menu @@ -208,6 +208,7 @@ SWWM_DRLASKILL_TECHNOPHOBIA = "Technophobia"; SWWM_DRLASKILL_ARMAGEDDON = "Armageddon"; SWWM_DRLASKILL_ADAPTIVE = "Adaptive"; SWWM_ITEMSPARKLES = "Item Sparkles"; +SWWM_SINGLEFIRST = "Single Weapons Take Priority"; SWWM_MMTITLE = "Minimap Settings"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_ROTATE = "Rotate Minimap"; @@ -337,6 +338,7 @@ TOOLTIP_SWWM_NUMCOLOR_HP = "Select the color for health numbers."; TOOLTIP_SWWM_NUMCOLOR_AP = "Select the color for armor numbers."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Sets the skill level for enemy spawns."; TOOLTIP_SWWM_ITEMSPARKLES = "Nearby items will have particles around them, as a visual aid."; +TOOLTIP_SWWM_SINGLEFIRST = "For weapons that have dual-wield variants, enabling this will always select the single weapon first."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter."; TOOLTIP_SWWM_MM_ROTATE = "Rotates the minimap view."; TOOLTIP_SWWM_MM_GRID = "Shows a 128x128 grid on the minimap."; diff --git a/language.es_menu b/language.es_menu index c3a645962..7be9d89b1 100644 --- a/language.es_menu +++ b/language.es_menu @@ -205,6 +205,7 @@ SWWM_DRLASKILL_TECHNOPHOBIA = "Tecnofobia"; SWWM_DRLASKILL_ARMAGEDDON = "Armagedón"; SWWM_DRLASKILL_ADAPTIVE = "Adaptado"; SWWM_ITEMSPARKLES = "Partículas de Ítem"; +SWWM_SINGLEFIRST = "Arma Singular con Prioridad"; SWWM_MMTITLE = "Opciones de Minimapa"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_ROTATE = "Rotar Minimapa"; @@ -334,6 +335,7 @@ TOOLTIP_SWWM_NUMCOLOR_HP = "Selecciona el color para los números de salud."; TOOLTIP_SWWM_NUMCOLOR_AP = "Selecciona el color para los números de armadura."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Elige el nivel de dificultad para spawns de enemigos."; TOOLTIP_SWWM_ITEMSPARKLES = "Los ítems cercanos tendrán partículas alrededor, para mejor visibilidad."; +TOOLTIP_SWWM_SINGLEFIRST = "Para armas que tienen variantes duales, activando esto selecionará siempre primero el arma singular."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación."; TOOLTIP_SWWM_MM_ROTATE = "Gira la vista del minimapa."; TOOLTIP_SWWM_MM_GRID = "Muestra una cuadrícula de 128x128 en el minimapa."; diff --git a/language.version b/language.version index 3264d069e..7066dcb91 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r339 \cu(Mon 8 Mar 21:50:00 CET 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r339 \cu(2021-03-08 21:50:00)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r340 \cu(Tue 9 Mar 00:37:15 CET 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r340 \cu(2021-03-09 00:37:15)\c-"; diff --git a/menudef.txt b/menudef.txt index ebd988b30..784b8aaf3 100644 --- a/menudef.txt +++ b/menudef.txt @@ -171,6 +171,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_ARMORUSE", "swwm_autousearmor", "YesNo" Option "$SWWM_HEALTHUSE", "swwm_autousehealth", "YesNo" Option "$SWWM_AMMOUSE", "swwm_autouseammo", "YesNo" + Option "$SWWM_SINGLEFIRST", "swwm_singlefirst", "YesNo" Option "$SWWM_EARBUSTER", "swwm_earbuster", "YesNo" Option "$SWWM_BUSTERPAUSE", "swwm_cbtpause", "YesNo" Option "$SWWM_COLLECTANIM", "swwm_collectanim", "YesNo" diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index 342655a4f..afd4cc6bb 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -8,6 +8,7 @@ Class Demolitionist : PlayerPawn bool sendtoground; bool key_reentrant; bool bInDefaultInventory; + bool oldsinglefirst; int lastdamage; transient int lastdamagetic; @@ -414,6 +415,7 @@ Class Demolitionist : PlayerPawn override void PostBeginPlay() { Super.PostBeginPlay(); + oldsinglefirst = swwm_singlefirst; // super already sets up the slots, so save the cvar value now mystats = SWWMStats.Find(player); lastground = true; } @@ -742,6 +744,10 @@ Class Demolitionist : PlayerPawn let sc = Inventory(Spawn("SayaCollar")); sc.AttachToOwner(self); } + // this is why we need mod cvar callbacks + if ( swwm_singlefirst != oldsinglefirst ) + WeaponSlots.SetupWeaponSlots(self); + oldsinglefirst = swwm_singlefirst; // strife thing if ( mystats.oldlogtext == "" ) mystats.oldlogtext = player.logtext; diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index d6b4fdb69..3cdf07697 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -106,6 +106,20 @@ Class SWWMWeapon : Weapon abstract return false; } + override int, int CheckAddToSlots() + { + if ( (GetReplacement(GetClass()) == GetClass()) && !bPowered_Up ) + { + if ( swwm_singlefirst && SisterWeaponType ) + { + let sw = GetDefaultByType(SisterWeaponType); + return sw.SlotNumber, int(sw.SlotPriority*65536); + } + return SlotNumber, int(SlotPriority*65536); + } + return -1, 0; + } + // subtracts given ammo from price, drops excess virtual bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) {