Multiplayer end of support. Simplify for ease of maintenance.

This commit is contained in:
Mari the Deer 2022-03-23 10:50:12 +01:00
commit 33f8e060b7
19 changed files with 32 additions and 271 deletions

View file

@ -41,7 +41,7 @@ You are an **Akari Labs Demolitionist Bot**, one of the very first units, fresh
Additional features:
- **Glowing color tags:** Located around various parts of your body, allows quick and easy differentiation between multiple units *(color not directly configurable due to Engine Limitations™, but you can load external patches)*.
- **Glowing color tags:** Located around various parts of your body, allows easy signaling and identification of the unit's presence in darker areas.
- **Lucky Collar:** A little something that your creator gives to all of her creations. Reduces incoming damage by 75% when you're below 25% health. Plus an additional 50% reduction to any damage from your own weapons.
- **High-Resonant Almasteel Plating:** Your chassis is built from one of the hardest alloys known across the universe. Thus, your body is practically indestructible, but not impervious to damage. All splash damage is reduced by 80%, and you only take half damage from crushers *(and may cause them to break, permanently)*.
- **User Menu:** With the press of a button, open a dedicated menu to see all your stats in detail, info on carried items and weapons, check out a grand library of information on things you come across, and access the store for buying extra items with your score points.

View file

@ -15,11 +15,8 @@ nosave int swwm_voiceamp = 2; // additional voice line amplification, up to 4x
nosave int swwm_chatduration = 25; // lifespan of chat messages
nosave int swwm_msgduration = 5; // lifespan of other messages
nosave int swwm_pickduration = 3; // lifespan of pickup messages
server bool swwm_sharekeys = true; // share keys in mp
user bool swwm_autousearmor = true; // automatically use armor items when possible
user bool swwm_autousehealth = true; // automatically use health items when possible
server int swwm_enforceautousearmor = 0; // 1: server enforces auto use, -1: server enforces no auto use, 0: server respects user setting
server int swwm_enforceautousehealth = 0; // likewise for health
nosave bool swwm_targeter = true; // show targeter healthbars
nosave bool swwm_targettags = true; // show enemy tags above healthbars
nosave bool swwm_healthnums = true; // show damage/healing numbers
@ -27,7 +24,6 @@ nosave bool swwm_scorenums = true; // show score numbers
nosave bool swwm_scorebonus = true; // show score bonuses
nosave bool swwm_pois = true; // show points of interest highlighted by omnisight
server bool swwm_fly6dof = false; // flying uses 6dof movement, toggleable for those who get motion sickness
nosave bool swwm_othervoice = true; // can hear other player's voice lines in coop
nosave bool swwm_shaders = true; // use pp shaders for some effects
nosave bool swwm_earbuster = false; // limits loudness of wallbuster fire sounds
server bool swwm_revive = true; // allows the player to do an "emergency reboot" when dying
@ -112,7 +108,6 @@ server bool swwm_ondemandammo = true; // don't spawn ammo for unavailable weapo
user float swwm_bumpstrength = 1.0; // intensity of fov bumping
server bool swwm_nomagdrop = true; // does not drop spent magazines (the "environmentally conscious" option)
user bool swwm_autousebarrier = true; // auto-use elemental coating when standing on damaging floors
server int swwm_enforceautousebarrier = 0; // enforced auto-use for coating
nosave bool swwm_nomapmsg = false; // disables special map dialogue messages
nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation when first selected
nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed

View file

@ -926,11 +926,11 @@ SWWM_INTERTIP12 = "The Refresher will always auto-activate if you're about to di
SWWM_INTERTIP13 = "The Ynykron Artifact will instantly kill everything you aim it at, unless it's really unkillable, though usually that's only the case for gods. You're not planning on going after any gods, right?";
SWWM_INTERTIP14 = "Do not be deceived by the Candy Gun, it may seem like a simple recolor, but it is A LOT stronger than your starting weapon.";
SWWM_INTERTIP15 = "The Ragekit will greatly increase the strength of your melee attacks and reduce incoming damage, but it'll also make you scream, all the time.";
SWWM_INTERTIP16 = "You can share items with other players in multiplayer using the trading tab in your Demolitionist menu. Items that won't fit in the destination inventory will not be traded.";
SWWM_INTERTIP16 = "Finding secrets, important items, and achieving certain milestones such as 100%-ing a map will grant you extra score.";
SWWM_INTERTIP17 = "The Demolitionist Menu is very helpful, do not forget to bind a key to open it.";
SWWM_INTERTIP18 = "All weapons have a quick melee attack available through a dedicated button. With one-handed weapons you will perform a punch, and with two-handed ones a bash.";
SWWM_INTERTIP19 = "With the right combination of boosting and wall jumping, it is perfectly possible to remain in the air for extended periods of time.";
SWWM_INTERTIP20 = "In multiplayer, any keys you pick up will be immediately shared with other players.";
SWWM_INTERTIP20 = "Keys and collectibles will play a first-person animation when picked up. If you feel this gets in the way, it can be disabled in the mod options.";
SWWM_INTERTIP21 = "Aim for a high score! The more enemies you kill the better. Don't forget to put that cash to use at the in-game store when you can.";
SWWM_INTERTIP22 = "With proper timing, you can use your quick melee attack to deflect projectiles. It is even possible to return these to the sender, with increased damage if you're under the effects of a Ragekit.";
SWWM_INTERTIP23 = "Did you know that Saya really hates the UAC?\n\nWhat? You already knew that? Geez, then I have no idea what else to tell you.";

View file

@ -50,14 +50,6 @@ SWWM_ITITLE = "Item Options";
SWWM_ARMORUSE = "Automatically Use Armor";
SWWM_HEALTHUSE = "Automatically Use Health";
SWWM_AMMOUSE = "Automatically Use Fabricators";
SWWM_CTITLE = "Multiplayer Options";
SWWM_SKEYS = "Share Keys";
SWWM_SVARMORUSE = "Enforce Armor Auto-Use";
SWWM_SVHEALTHUSE = "Enforce Health Auto-Use";
SWWM_SVAMMOUSE = "Enforce Fabricator Auto-Use";
SWWM_FORCEDISABLE = "Force Disable";
SWWM_USERSET = "User Set";
SWWM_FORCEENABLE = "Force Enable";
SWWM_6DOF = "6DOF Flight";
SWWM_TARGET = "Show Healthbars";
SWWM_TARGETTAG = "Show Monster Names";
@ -67,7 +59,6 @@ SWWM_SCOREBONUS = "Show Score Bonuses";
SWWM_POIS = "Show Points of Interest";
SWWM_EARBUSTER = "Reduce Wallbuster Loudness";
SWWM_SHADERS = "Use Screen Shaders";
SWWM_OTHERVOICE = "Co-op Voice";
SWWM_REVIVE = "Emergency Reboot System";
SWWM_REVIVECOOLDOWN = "Reboot Cooldown";
SWWM_UNLIMITED = "Unlimited";
@ -204,7 +195,6 @@ SWWM_ENGINE = "Engine";
SWWM_ITEMGLOWS = "Distant Items Glow";
SWWM_NOMAGDROP = "Drop Spent Mags";
SWWM_BARRIERUSE = "Automatically Use Coating";
SWWM_SVBARRIERUSE = "Enforce Coating Auto-Use";
SWWM_NOMAPMSG = "Map Special Messages";
SWWM_WEAPONTOOLTIPS = "Weapon Tooltips";
SWWM_RESETTOOLTIPS = "Reset Weapon Tooltips";
@ -272,13 +262,9 @@ TOOLTIP_SWWM_MAXPICKUP = "Maximum pickup messages visible at any time.";
TOOLTIP_SWWM_CHATDURATION = "Duration of chat messages in seconds.";
TOOLTIP_SWWM_MSGDURATION = "Duration of obituaries and other messages in seconds.";
TOOLTIP_SWWM_PICKDURATION = "Duration of pickup messages in seconds.";
TOOLTIP_SWWM_SHAREKEYS = "When this is enabled, picking up a key item will send a copy to all other players.";
TOOLTIP_SWWM_AUTOUSEARMOR = "When enabled, spare armors will be automatically used when needed (new armors are always automatically worn).";
TOOLTIP_SWWM_AUTOUSEHEALTH = "When enabled, health items are automatically used if they can heal (including spares). This excludes Refreshers since they count as powerups, and always autoactivate on fatal damage.";
TOOLTIP_SWWM_AUTOUSEAMMO = "When enabled, ammo fabricators are automatically used on pickup. This excludes Tier 4 fabricators since they count as powerups.";
TOOLTIP_SWWM_ENFORCEAUTOUSEARMOR = "Enforce a specific armor auto-use setting for all players, or respects per-player settings.";
TOOLTIP_SWWM_ENFORCEAUTOUSEHEALTH = "Enforce a specific health auto-use setting for all players, or respects per-player settings.";
TOOLTIP_SWWM_ENFORCEAUTOUSEAMMO = "Enforce a specific ammo fabricator auto-use setting for all players, or respects per-player settings.";
TOOLTIP_SWWM_FLY6DOF = "Enable 6DOF movement when flying. Disable if this feature causes any discomfort.";
TOOLTIP_SWWM_TARGETER = "Show enemy/player healthbars. Disable if you'd prefer to use another mod for this, such as Target Spy.";
TOOLTIP_SWWM_TARGETTAGS = "Show enemy names above their healthbars.";
@ -288,7 +274,6 @@ TOOLTIP_SWWM_SCOREBONUS = "Show additional bonus strings above score numbers (e.
TOOLTIP_SWWM_POIS = "Show points of interest (such as key items and exits) when you have Omnisight.";
TOOLTIP_SWWM_EARBUSTER = "The Wallbuster's firing sounds may be painfully loud at times. This setting will limit the loudness to something more bearable.";
TOOLTIP_SWWM_SHADERS = "Use postprocess shaders for things like powerups and the Silver Bullet scope. You can disable this if you'd prefer something lighter on the eyes.";
TOOLTIP_SWWM_OTHERVOICE = "Allows you to hear other player's voice lines, provided you're close enough.";
TOOLTIP_SWWM_REVIVE = "Allows the player to get back up after dying by pressing Fire. Has a configurable cooldown.";
TOOLTIP_SWWM_REVIVECOOLDOWN = "Time in seconds of downtime after using a reboot, where if you die again, you can't get back up. Set to 0 to allow unlimited reboots. Alternatively, you can also set it to only allow one reboot per map (enforced on expert difficulties).";
TOOLTIP_SWWM_INTERART = "If enabled, displays randomly selected fanart and official renders during intermissions. There are extra options to only show each category.";
@ -297,7 +282,7 @@ TOOLTIP_SWWM_BOSSHEALTHBARS = "Show a healthbar for vanilla boss encounters at t
TOOLTIP_SWWM_UPGRADEBOSSES = "Buffs the health of vanilla bosses in order to make the fights more \"fair\" with this mod, and less prone to instant wins.";
TOOLTIP_SWWM_EXTRAALERT = "Allows monsters to hear things such as bouncing projectiles, ricocheting bullets, and more. Due to the recursive nature of the A_AlertMonsters function, this has a MASSIVE performance hit on very complex maps.";
TOOLTIP_SWWM_ACCDAMAGE = "Damage dealt to a target within the same tic will be grouped into a single damage number, which may make the screen less cluttered in most cases.";
TOOLTIP_SWWM_MAXTARGETDIST = "Limit the farthest distance at which healthbars for hostile targets are shown. Note that player healthbars in co-op will always show regardless of distance. Non-hostiles are always shown at one quarter of this distance.";
TOOLTIP_SWWM_MAXTARGETDIST = "Limit the farthest distance at which healthbars for hostile targets are shown. Non-hostiles are always shown at one quarter of this distance.";
TOOLTIP_SWWM_MAXTARGETS = "Limit the amount of healthbars to display on-screen. Helps keep the screen less cluttered.";
TOOLTIP_SWWM_MAXDAMNUMS = "Limit the amount of damage/healing numbers to display on-screen. Helps keep the screen less cluttered.";
TOOLTIP_SWWM_MAXSCORENUMS = "Limit the amount of score numbers to display on-screen. Helps keep the screen less cluttered.";
@ -369,7 +354,6 @@ TOOLTIP_SWWM_ENGINE = "Don't touch this.";
TOOLTIP_SWWM_ITEMGLOWS = "If enabled, items that are far away from the player will display a shimmering glow (requires a map restart to take full effect).";
TOOLTIP_SWWM_NOMAGDROP = "By default, the Demolitionist will be somewhat environmentally conscious and not leave spent magazines lying around. Enable if you prefer the added clutter.";
TOOLTIP_SWWM_AUTOUSEBARRIER = "When enabled, elemental coating will be automatically used as needed if standing on damaging floors.";
TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Enforce a specific coating auto-use setting for all players, or respects per-player settings.";
TOOLTIP_SWWM_NOMAPMSG = "Toggles special animated character messages on certain maps (usually vanilla).";
TOOLTIP_SWWM_WEAPONTOOLTIPS = "Shows a summary of controls when a weapon is selected for the first time.";
TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resets weapon tooltips so you can see them all over again.";
@ -537,15 +521,6 @@ SWWM_STOREFULL = "You can't hold more of that.";
SWWM_STOREMUNS = "You don't have enough money.";
SWWM_NOSTORE = "(no items left to buy)";
SWWM_NOSTORESELL = "(no items to be sold)";
SWWM_TRADETAB = "Trading";
SWWM_TRADEFULL = "They can't hold more of that.";
SWWM_TRADEFAIL = "You can't trade this item.";
SWWM_NOTRADE = "(no units found nearby for trade)";
SWWM_TRADETO = "Sent to";
SWWM_TRADEFROM = "Received from";
SWWM_NOTRADEHIST = "(no trades found in history)";
SWWM_MSGSENT = "You sent %dx %s to %s.";
SWWM_MSGRECV = "%s sent you %dx %s.";
SWWM_CHATTAB = "Chat Log";
SWWM_NOCHAT = "(chat history is empty)";
SWWM_SECRETTAB = "Secret";
@ -640,26 +615,6 @@ SWWM_HELPTXT =
"\cfEnter/Left Click:\c- Sell\n"
"\cfBackspace/Right Click:\c- Switch to buying\n"
"\n"
"\cxTrading Tab - Controls (Main)\c-\n"
"\cx—————————————————————————————\c-\n"
"\n"
"\cfUp/Down:\c- Navigate\n"
"\cfEnter/Left Click:\c- Select recipient\n"
"\cfBackspace/Right Click:\c- History\n"
"\n"
"\cxTrading Tab - Controls (Trade)\c-\n"
"\cx——————————————————————————————\c-\n"
"\n"
"\cfArrow Keys:\c- Navigate\n"
"\cfEnter/Left Click:\c- Send item\n"
"\cfBackspace/Right Click:\c- Return\n"
"\n"
"\cxTrading Tab - Controls (History)\c-\n"
"\cx————————————————————————————————\c-\n"
"\n"
"\cfUp/Down:\c- Scroll\n"
"\cfBackspace/Right Click:\c- Return\n"
"\n"
"\cxChat Log Tab - Controls\c-\n"
"\cx———————————————————————\c-\n"
"\n"
@ -744,7 +699,7 @@ SWWM_HELP_ARSE3TXT =
"Each and every active powerup will show up in your HUD, with some lil' numbers telling you how long it's going to last. Much better than just guessing, certainly.";
SWWM_HELP_KBASE = "The Demolitionist Menu";
SWWM_HELP_KBASETXT =
"Lo and behold, the most essential part of this here mod. The \cfDemolitionist Menu\c-, activated through a dedicated keybind (don't forget to bind it). In here, you can do many things, including but not limited to: Managing your inventory in detail, check on your carried keys, look up various stats on your performances, buy goodies with your score points, share items in multiplayer, and also...\n"
"Lo and behold, the most essential part of this here mod. The \cfDemolitionist Menu\c-, activated through a dedicated keybind (don't forget to bind it). In here, you can do many things, including but not limited to: Managing your inventory in detail, check on your carried keys, look up various stats on your performances, buy goodies with your score points, and also...\n"
"\n"
"\cfDEEP LORE!\c-\n"
"\n"

View file

@ -807,11 +807,11 @@ SWWM_INTERTIP12 = "El Refrescador siempre se autoactivará si estás a punto de
SWWM_INTERTIP13 = "El Artefacto Ynykron mata instantáneamente todo lo que tengas en el punto de mira, a menos que sea realmente indestructible, aunque normalmente eso solo puede ser si es un dios. ¿No estarás pensando en enfrentarte a algún dios, verdad?";
SWWM_INTERTIP14 = "No te dejes engañar por la Pistola Caramelo, puede parecer solo un recoloreado, pero es MUCHO MÁS fuerte que tu arma inicial.";
SWWM_INTERTIP15 = "El Ragekit potenciará enormemente la fuerza de tus ataques a melé y reducirá el daño recibido, pero también te hará gritar, todo el rato.";
SWWM_INTERTIP16 = "Puedes compartir ítems con otros en multijugador en la pestaña de intercambio de tu Menú de Demolicionista. Los ítems que no quepan en su inventario no serán intercambiados.";
SWWM_INTERTIP16 = "Encontrar secretos, ítems importantes, y conseguir ciertos logros como completar un mapa al 100% te dará puntos extra.";
SWWM_INTERTIP17 = "El Menú de Demolicionista es muy útil, no te olvides de asignar una tecla para abrirlo.";
SWWM_INTERTIP18 = "Todas las armas tienen un ataque rápido a melé disponible a través de un botón dedicado. Con armas a una mano darás un puñetazo, con armas a dos manos golpearás con ellas.";
SWWM_INTERTIP19 = "Con la combinación adecuada de impulsar y saltar por las paredes, es perfectamente posible mantenerse en el aire durante largos periodos de tiempo.";
SWWM_INTERTIP20 = "En multijugador, cualquier llave que recojas será compartida inmediatemente con otros jugadores.";
SWWM_INTERTIP20 = "Las llaves y coleccionables tienen animaciones en primera persona al recogerse. Si esto resulta molesto puedes desactivarlo en las opciones del mod.";
SWWM_INTERTIP21 = "¡Aumenta tu puntuación! Cuantos más enemigos elimines, mejor. No te olvides de hacer uso de esos puntos en la tienda in-game cuando puedas.";
SWWM_INTERTIP22 = "Con el ritmo adecuado, puedes usar el ataque rápido a melé para desviar proyectiles. Incluso es posible mandarlos de vuelta a su dueño, con daño incrementado si te encuentras bajo los efectos de un Ragekit.";
SWWM_INTERTIP23 = "¿Sabías que Saya realmente odia la UAC?\n\n¿Que? ¿Ya sabías eso? Vaya, pues entonces ya no se me ocurre que otra cosa contarte.";

View file

@ -50,14 +50,6 @@ SWWM_ITITLE = "Opciones de Ítems";
SWWM_ARMORUSE = "Usar Armadura Automáticamente";
SWWM_HEALTHUSE = "Usar Salud Automáticamente";
SWWM_AMMOUSE = "Usar Fabricadores Automáticamente";
SWWM_CTITLE = "Opciones de Multijugador";
SWWM_SKEYS = "Compartir Llaves";
SWWM_SVARMORUSE = "Forzar Auto-Uso de Armadura";
SWWM_SVHEALTHUSE = "Forzar Auto-Uso de Salud";
SWWM_SVAMMOUSE = "Forzar Auto-Uso de Fabricadores";
SWWM_FORCEDISABLE = "Forzar Desactivado";
SWWM_USERSET = "Elegido por Usuario";
SWWM_FORCEENABLE = "Forzar Activado";
SWWM_6DOF = "Vuelo con 6DOF";
SWWM_TARGET = "Mostrar Barras de Salud";
SWWM_TARGETTAG = "Mostrar Nombres de Enemigos";
@ -67,7 +59,6 @@ SWWM_SCOREBONUS = "Mostrar Bonificaciones de Puntuación";
SWWM_POIS = "Mostrar Puntos de Interés";
SWWM_EARBUSTER = "Reducir Estruendo del Wallbuster";
SWWM_SHADERS = "Usar Shaders de Pantalla";
SWWM_OTHERVOICE = "Voz en Cooperativo";
SWWM_REVIVE = "Sistema de Reinicio de Emergencia";
SWWM_REVIVECOOLDOWN = "Tiempo de recarga de Reinicio";
SWWM_UNLIMITED = "Ilimitado";
@ -203,7 +194,6 @@ SWWM_ENGINE = "Motor";
SWWM_ITEMGLOWS = "Los Ítems Lejanos Brillan";
SWWM_NOMAGDROP = "Tirar Cargadores Usados";
SWWM_BARRIERUSE = "Usar Revestimiento Automáticamente";
SWWM_SVBARRIERUSE = "Forzar Auto-Uso de Revestimiento";
SWWM_NOMAPMSG = "Mensajes Especiales de Mapa";
SWWM_WEAPONTOOLTIPS = "Ayuda de Armas";
SWWM_RESETTOOLTIPS = "Resetear Ayuda de Armas";
@ -287,7 +277,6 @@ TOOLTIP_SWWM_SCOREBONUS = "Muestra textos de bonificación extra sobre los punto
TOOLTIP_SWWM_POIS = "Muestra puntos de interés (tales como llaves y salidas) cuando tienes Omnivisión.";
TOOLTIP_SWWM_EARBUSTER = "Los sonidos de disparo del Wallbuster pueden a veces ser dolorosamente estridentes. Esta opción limitará la intensidad a un valor más soportable.";
TOOLTIP_SWWM_SHADERS = "Usa shaders de postprocesado para cosas como potenciadores y la mira del Silver Bullet. Puedes desactivar esto si prefieres algo más ligero para la vista.";
TOOLTIP_SWWM_OTHERVOICE = "Te permite oír los comentarios de voz de otros jugadores, si estás lo suficientemente cerca.";
TOOLTIP_SWWM_REVIVE = "Permite al jugador volver a levantarse tras morir pulsando Fuego. Tiene un cooldown configurable.";
TOOLTIP_SWWM_REVIVECOOLDOWN = "Tiempo en segundos tras reiniciar, durante el cual si mueres otra vez, no puedes volver a levantarte. Pon a 0 para permitir reinicios ilimitados. Alternativamente, puedes elegir que solo se permita un reinicio por mapa (forzado en dificultades expertas).";
TOOLTIP_SWWM_INTERART = "Si está activado, muestra fanart y renders oficiales aleatorios durante intermisiones. Hay opciones extra para mostrar sólo una categoría.";
@ -296,7 +285,7 @@ TOOLTIP_SWWM_BOSSHEALTHBARS = "Muestra una barra de vida para bosses vanilla en
TOOLTIP_SWWM_UPGRADEBOSSES = "Incrementa la salud de bosses vanilla para hacer que las peleas sean más \"justas\" con este mod, y no tan propensas a ganarse al instante.";
TOOLTIP_SWWM_EXTRAALERT = "Permite a los enemigos oír cosas como proyectiles y balas rebotando, entre otros. Debido a la naturaleza recursiva de la función A_AlertMonsters, esto puede tener un impacto MASIVO en el rendimiento en mapas muy complejos.";
TOOLTIP_SWWM_ACCDAMAGE = "El daño hecho a un objetivo en el mismo tic será agrupado en un único número, lo cual resultará en una pantalla más despejada en la mayoría de casos.";
TOOLTIP_SWWM_MAXTARGETDIST = "Limita la distancia máxima a la que se muestran las barras de salud de enemigos hostiles. Ten en cuenta que las barras de vida para jugadores en cooperativo se mostrarán siempre sin importar la distancia. Los objetivos no hostiles se muestran siempre a un cuarto de esta distancia.";
TOOLTIP_SWWM_MAXTARGETDIST = "Limita la distancia máxima a la que se muestran las barras de salud de enemigos hostiles. Los objetivos no hostiles se muestran siempre a un cuarto de esta distancia.";
TOOLTIP_SWWM_MAXTARGETS = "Limita la cantidad de barras de salud a mostrar en pantalla. Ayuda a mantener la pantalla más despejada.";
TOOLTIP_SWWM_MAXDAMNUMS = "Limita la cantidad de números de daño/curación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada.";
TOOLTIP_SWWM_MAXSCORENUMS = "Limita la cantidad de números de puntuación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada.";
@ -511,15 +500,6 @@ SWWM_STOREFULL = "No puedes llevar más de eso.";
SWWM_STOREMUNS = "No tienes suficiente dinero.";
SWWM_NOSTORE = "(no queda nada que comprar)";
SWWM_NOSTORESELL = "(no tienes ítems que vender)";
SWWM_TRADETAB = "Intercambio";
SWWM_TRADEFULL = "No puede llevar más de eso.";
SWWM_TRADEFAIL = "No puedes enviar este ítem.";
SWWM_NOTRADE = "(no hay unidades con las que intercambiar)";
SWWM_TRADETO = "Enviado a";
SWWM_TRADEFROM = "Recibido de";
SWWM_NOTRADEHIST = "(no hay intercambios en el historial)";
SWWM_MSGSENT = "Has enviado %dx %s a %s.";
SWWM_MSGRECV = "%s te ha enviado %dx %s.";
SWWM_CHATTAB = "Hist. de Chat";
SWWM_NOCHAT = "(historial de chat vacío)";
SWWM_SECRETTAB = "Secreto";
@ -614,26 +594,6 @@ SWWM_HELPTXT =
"\cfEnter/Click Izdo.:\c- Vender\n"
"\cfRetroceso/Click Dcho.:\c- Cambiar a compra\n"
"\n"
"\cxPestaña de Intercambio - Controles (Principal)\c-\n"
"\cx——————————————————————————————————————————————\c-\n"
"\n"
"\cfArriba/Abajo:\c- Navegar\n"
"\cfEnter/Click Izdo.:\c- Elegir destinatario\n"
"\cfRetroceso/Click Dcho.:\c- Historial\n"
"\n"
"\cxPestaña de Intercambio - Controles (Intercambio)\c-\n"
"\cx————————————————————————————————————————————————\c-\n"
"\n"
"\cfFlechas:\c- Navegar\n"
"\cfEnter/Click Izdo.:\c- Enviar ítem\n"
"\cfRetroceso/Click Dcho.:\c- Volver\n"
"\n"
"\cxPestaña de Intercambio - Controles (Historial)\c-\n"
"\cx——————————————————————————————————————————————\c-\n"
"\n"
"\cfArriba/Abajo:\c- Scroll\n"
"\cfRetroceso/Click Dcho.:\c- Volver\n"
"\n"
"\cxPestaña de Historial de Chat - Controles\c-\n"
"\cx————————————————————————————————————————\c-\n"
"\n"
@ -718,7 +678,7 @@ SWWM_HELP_ARSE3TXT =
"Todos y cada uno de los potenciadores activos aparecerá en tu HUD, con unos bonitos numeritos indicándote cuanto van a durar. Mucho mejor que tener que adivinarlo, desde luego.";
SWWM_HELP_KBASE = "El Menú de Demolicionista";
SWWM_HELP_KBASETXT =
"He aquí, la parte más esencial de este mod. El \cfMenú de Demolicionista\c-, activado con una tecla dedicada (no te olvides de asignarla). En él, puedes hacer toda clase de cosas, incluyendo: Manejar tu inventario al detalle, comprobar las llaves que tengas, ver estadísticas de tu rendimiento, comprar cositas con tus puntos, compartir ítems en multijugador, y también...\n"
"He aquí, la parte más esencial de este mod. El \cfMenú de Demolicionista\c-, activado con una tecla dedicada (no te olvides de asignarla). En él, puedes hacer toda clase de cosas, incluyendo: Manejar tu inventario al detalle, comprobar las llaves que tengas, ver estadísticas de tu rendimiento, comprar cositas con tus puntos, y también...\n"
"\n"
"\cf¡LORE PROFUNDO!\c-\n"
"\n"

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r192 \cu(Thu 17 Mar 22:05:57 CET 2022)\c-";
SWWM_SHORTVER="\cw1.2pre r192 \cu(2022-03-17 22:05:57)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r193 \cu(Wed 23 Mar 10:50:12 CET 2022)\c-";
SWWM_SHORTVER="\cw1.2pre r193 \cu(2022-03-23 10:50:12)\c-";

View file

@ -101,7 +101,7 @@ OptionMenu "SWWMOptionMenu"
Option "$SWWM_MUTELEVEL", "swwm_mutevoice", "SWWMVoice"
Slider "$SWWM_VOICEAMP", "swwm_voiceamp", 1, 4, 1, 0
Option "$SWWM_BEEPBOOP", "swwm_beepboop", "YesNo"
IfGame(Hexen)
IfGame(Heretic, Hexen)
{
Option "$SWWM_6DOF", "swwm_fly6dof", "YesNo"
}
@ -238,23 +238,12 @@ OptionMenu "SWWMOptionMenu"
Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo"
SafeCommand "$SWWM_RESETTOOLTIPS", "event swwmresettooltips"
StaticText " "
StaticText "$SWWM_CTITLE", 1
Option "$SWWM_SKEYS", "swwm_sharekeys", "YesNo"
Option "$SWWM_SVARMORUSE", "swwm_enforceautousearmor", "SWWMEnforce"
Option "$SWWM_SVHEALTHUSE", "swwm_enforceautousehealth", "SWWMEnforce"
IfGame(Doom)
{
Option "$SWWM_SVBARRIERUSE", "swwm_enforceautousebarrier", "SWWMEnforce"
}
Option "$SWWM_OTHERVOICE", "swwm_othervoice", "YesNo"
StaticText " "
StaticText "$SWWM_MCTITLE", 1
Option "$SWWM_LDSPOIL", "swwm_ldspoil", "YesNo"
IfGame(Doom)
{
Option "$SWWM_DRLASKILL", "swwm_drlaskill", "SWWMDRLASkill"
}
}
OptionValue "SWWMMinimapColorset"
{

View file

@ -72,7 +72,6 @@ version "4.7.1"
#include "zscript/kbase/swwm_kbasetab_keychain.zsc"
#include "zscript/kbase/swwm_kbasetab_library.zsc"
#include "zscript/kbase/swwm_kbasetab_store.zsc"
#include "zscript/kbase/swwm_kbasetab_trading.zsc"
#include "zscript/kbase/swwm_kbasetab_chat.zsc"
#include "zscript/kbase/swwm_kbasetab_help.zsc"
#include "zscript/kbase/swwm_kbasetab_secret.zsc"

View file

@ -433,103 +433,6 @@ extend Class SWWMHandler
players[e.Args[0]].mo.TakeInventory(item,amt);
SWWMCredits.Give(players[e.Args[0]],e.Args[1]);
}
else if ( e.Name.Left(10) ~== "swwmtrade." )
{
Class<Inventory> item = e.Name.Mid(10);
if ( !item ) return;
let def = GetDefaultByType(item);
int amt = def.Amount;
// if it's an ammo, check the largest unit givable
if ( item is 'Ammo' )
{
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
let a = (Class<Ammo>)(AllActorClasses[i]);
if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue;
amt = GetDefaultByType(a).Amount;
}
}
if ( item is 'MagAmmo' )
{
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
let a = (Class<MagAmmo>)(AllActorClasses[i]);
if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue;
amt = GetDefaultByType(a).Amount;
}
}
Inventory ritm = players[e.Args[1]].mo.FindInventory(item);
if ( ritm )
{
int maxgive = ritm.MaxAmount-ritm.Amount;
if ( amt > maxgive ) amt = maxgive;
}
else if ( amt > def.MaxAmount ) amt = def.MaxAmount;
bool rslt = false;
Class<Inventory> giveitem = item;
if ( item is 'HammerspaceEmbiggener' ) giveitem = 'TradedHammerspaceEmbiggener';
if ( (amt > 0) && players[e.Args[1]].mo.GiveInventory(giveitem,amt,true) )
{
// if player currently has the dual wield weapon selected, switch over
if ( item is 'SWWMWeapon' )
{
let c = Weapon(players[e.Args[0]].mo.FindInventory(item));
if ( c.SisterWeapon && (players[e.Args[0]].ReadyWeapon == c.SisterWeapon) )
{
players[e.Args[0]].ReadyWeapon = c;
players[e.Args[0]].SetPSprite(PSP_WEAPON,c.FindState("Ready"));
players[e.Args[0]].SetPSprite(PSP_WEAPON+1,null); // delete left weapon psprite
}
}
// if we're trading an embiggener, we need to readjust ammo
if ( item is 'HammerspaceEmbiggener' )
{
let ritm = players[e.Args[0]].mo.FindInventory(item);
for ( Inventory i=players[e.Args[0]].mo.Inv; i; i=i.Inv )
{
if ( !(i is 'Ammo') ) continue;
if ( Ammo(i).BackpackMaxAmount > 0 )
{
double factor = (Ammo(i).BackpackMaxAmount-i.default.MaxAmount)/double(ritm.MaxAmount);
i.MaxAmount = int(i.default.MaxAmount+(ritm.Amount-amt)*factor);
}
// drop excess ammo
int excess = i.Amount-i.MaxAmount;
if ( excess > 0 ) i.CreateTossable(excess);
}
}
if ( item is 'CandyGun' )
{
// see if we can take a fully loaded spare from us instead
int n = players[e.Args[0]].mo.CountInv('CandyGunSpares');
int na = players[e.Args[0]].mo.CountInv('CandyGunAmmo');
if ( (n >= amt) && (na >= amt) )
{
players[e.Args[0]].mo.TakeInventory('CandyGunSpares',amt);
players[e.Args[0]].mo.TakeInventory('CandyGunAmmo',amt);
}
else players[e.Args[0]].mo.TakeInventory('CandyGun',amt);
}
else players[e.Args[0]].mo.TakeInventory(item,amt);
// add to history
SWWMTradeHistory.RegisterSend(players[e.Args[0]],players[e.Args[1]],item,amt);
SWWMTradeHistory.RegisterReceive(players[e.Args[1]],players[e.Args[0]],item,amt);
// add messages
if ( e.Args[0] == consoleplayer ) Console.Printf(StringTable.Localize("$SWWM_MSGSENT"),amt,def.GetTag(),players[e.Args[1]].GetUserName());
if ( e.Args[1] == consoleplayer ) Console.Printf(StringTable.Localize("$SWWM_MSGRECV"),players[e.Args[0]].GetUserName(),amt,def.GetTag());
rslt = true;
}
if ( e.Args[0] == consoleplayer )
{
let t = new("MenuTransaction");
t.uid = e.Args[2];
t.type = MenuTransaction.TT_ITEMSEND;
t.result = rslt;
t.used = item;
t.usedup = (players[e.Args[1]].mo.CountInv(item)<=0);
checklist.Push(t);
}
}
else if ( e.Name.Left(17) ~== "swwmmarkloreread." )
{
let l = SWWMLoreLibrary.Find(players[e.Args[0]]);
@ -633,14 +536,12 @@ extend Class SWWMHandler
else if ( e.Name.Left(16) ~== "swwmremoteliner." )
{
if ( consoleplayer == e.Args[0] ) return;
if ( !swwm_othervoice ) return;
if ( swwm_mutevoice >= e.Args[1] ) return;
players[e.Args[0]].mo.A_StartSound(e.Name.Mid(16),CHAN_DEMOVOICE,attenuation:.5);
}
else if ( e.Name.Left(19) ~== "swwmremotelinertxt." )
{
if ( consoleplayer == e.Args[0] ) return;
if ( !swwm_othervoice ) return;
if ( swwm_mutevoice >= e.Args[1] ) return;
double dist = players[consoleplayer].Camera.Distance3D(players[e.Args[0]].mo);
if ( dist < 2000 )

View file

@ -92,10 +92,7 @@ Class SWWMArmor : Armor abstract
}
if ( !bNODRAIN ) amount -= saved;
damage = newdamage;
bool shouldautouse = false;
if ( swwm_enforceautousearmor == 1 ) shouldautouse = true;
else if ( swwm_enforceautousearmor == -1 ) shouldautouse = false;
else shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool();
bool shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool();
if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse )
{
if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6);

View file

@ -100,10 +100,7 @@ Class SWWMHealth : Inventory abstract
return; // this damage type is ignored by the player, so it does not affect us
if ( damageType == 'EndLevel' )
return; // don't trigger on endlevel damage
bool shouldautouse = false;
if ( swwm_enforceautousehealth == 1 ) shouldautouse = true;
else if ( swwm_enforceautousehealth == -1 ) shouldautouse = false;
else shouldautouse = CVar.GetCVar('swwm_autousehealth',Owner.player).GetBool();
bool shouldautouse = CVar.GetCVar('swwm_autousehealth',Owner.player).GetBool();
if ( !shouldautouse && !bBIGPOWERUP ) return; // powerup health is always auto-used
if ( (Owner.Health-damage <= (GetDefaultByType(giveme).MaxAmount-GetDefaultByType(giveme).Amount)) )
{

View file

@ -2274,10 +2274,7 @@ Class EBarrier : Inventory
else terrainwait++;
if ( terrainwait <= 20 ) return;
terrainwait = 0;
bool shouldautouse = false;
if ( swwm_enforceautousebarrier == 1 ) shouldautouse = true;
else if ( swwm_enforceautousebarrier == -1 ) shouldautouse = false;
else shouldautouse = CVar.GetCVar('swwm_autousebarrier',Owner.player).GetBool();
bool shouldautouse = CVar.GetCVar('swwm_autousebarrier',Owner.player).GetBool();
if ( shouldautouse ) Owner.UseInventory(self);
}

View file

@ -4,8 +4,7 @@ Class MenuTransaction
enum ETransactionType
{
TT_ITEMUSE,
TT_ITEMDROP,
TT_ITEMSEND
TT_ITEMDROP
};
int uid, type;
@ -185,7 +184,6 @@ Class DemolitionistMenu : GenericMenu
'DemolitionistKeychainTab',
'DemolitionistLibraryTab',
'DemolitionistStoreTab',
'DemolitionistTradeTab',
'DemolitionistChatTab',
'DemolitionistHelpTab',
'DemolitionistSecretTab'

View file

@ -401,19 +401,6 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem
}
}
// player item
Class DemolitionistMenuPlayerItem : DemolitionistMenuListItem
{
PlayerInfo p;
DemolitionistMenuPlayerItem Init( DemolitionistMenu master, PlayerInfo p )
{
Super.Init(master,p.GetUserName());
self.p = p;
return self;
}
}
// chat message item
Class DemolitionistMenuChatItem : DemolitionistMenuListItem
{

View file

@ -220,17 +220,6 @@ extend Class DemolitionistMenu
MenuSound("menu/noinvuse");
}
}
else if ( checklist[i].type == MenuTransaction.TT_ITEMSEND )
{
// check if trade succeeded
if ( !hnd.checklist[j].result )
{
tmsg = StringTable.Localize("$SWWM_TRADEFULL");
tmsgtic = gametic+70;
MenuSound("menu/noinvuse");
}
else MenuSound("menu/demosel");
}
EventHandler.SendNetworkEvent("swwmcleartransaction",checklist[i].uid,consoleplayer);
deleteme = true;
break;

View file

@ -1,18 +0,0 @@
// give 'em the stuff
Class DemolitionistTradeTab : DemolitionistMenuTab
{
override DemolitionistMenuTab Init( DemolitionistMenu master )
{
title = StringTable.Localize("$SWWM_TRADETAB");
bHidden = true;
for ( int i=0; i<MAXPLAYERS; i++ )
{
if ( !playeringame[i] || (i == consoleplayer) ) continue;
if ( deathmatch && (!teamplay || (players[i].GetTeam() != players[consoleplayer].GetTeam())) ) continue;
bHidden = false;
break;
}
return Super.Init(master);
}
}

View file

@ -2795,7 +2795,6 @@ Class Demolitionist : PlayerPawn
SWWMCredits.Give(player,score);
SWWMScoreObj.Spawn(100,player.mo.Vec3Offset(0,0,Height/2));
SWWMHandler.AddOneliner("keyget",2);
if ( !swwm_sharekeys ) return;
// share all keys in mp
for ( int i=0; i<MAXPLAYERS; i++ )
{

View file

@ -24,6 +24,8 @@ Class SWWMStaticHandler : StaticEventHandler
ui Dictionary menustate; // used by Demolitionist Menu to restore old menu positions
// title stuff
bool titlefirst;
// warnings
bool mpwarned;
override void NewGame()
{
@ -42,6 +44,13 @@ Class SWWMStaticHandler : StaticEventHandler
override void WorldTick()
{
maptime++;
// in case we start late?
if ( multiplayer && !mpwarned )
{
mpwarned = true;
Console.Printf("\cgWARNING:\c- Multiplayer is no longer officially supported, desyncs and other issues may potentially happen. You are on your own.");
S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE);
}
}
override void WorldLoaded( WorldEvent e )
@ -113,6 +122,13 @@ Class SWWMStaticHandler : StaticEventHandler
// load up the achievements
if ( swwm_achievementstate == "" ) MigrateAchievements();
else LoadAchievements();
// warn: mp no longer officially maintained
if ( multiplayer )
{
mpwarned = true;
Console.Printf("\cgWARNING:\c- Multiplayer is no longer officially supported, desyncs and other issues may potentially happen. You are on your own.");
S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE);
}
// warning for unsupported
if ( Wads.FindLump("swwmgamesupported.txt") != -1 ) return;
Console.Printf(