diff --git a/ENDSWWM.bin b/ENDSWWM.bin index c3b22c4a2..7dc097d97 100644 Binary files a/ENDSWWM.bin and b/ENDSWWM.bin differ diff --git a/FuturePlans.md b/FuturePlans.md index 807186b14..eb36efda7 100644 --- a/FuturePlans.md +++ b/FuturePlans.md @@ -1,18 +1,8 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add later on. -## 1.2 update *(A Needed Change)*: - -I REALLY need to do this, it's starting to become very problematic to maintain the Demolitionist Menu as-is. - -* **Demolitionist Menu Refactor:** - - Non 16:10 ratio support - - Smooth scrolling, better mouse input - - Much cleaner code, easier maintenance and extension - - Modular design, add-on tab support - ## 1.3 update *(The Second Batch)*: -More weapons, because we need 'em. +More weapons, because we need 'em. In addition, all the "easy to implement" minigames, because the rest can wait until 1.5. * **DLC Weaponset:** - [1] Itamex Reinforced Hammer *(UnSX 5)* @@ -27,70 +17,91 @@ More weapons, because we need 'em. - Dakka *(Fire the Sheen HMG for one minute straight)* - [6] Quadravol *(UnSX)* - Gravely Roast *(Perform 50 bayonet combos with the Quadravol)* - - [7] Blackfire Igniter *(UnSX 5, Ultra Suite 3)* - - Ice Ice Baby *(Impale 40 enemies with the Blackfire Igniter secondary)* - - [8] Rail Carbine *("Tesla Beamer" in Ultra Suite 2 & 3)* - - John Romero's Curse *(Fry yourself by discharging an electric weapon in water)* - - [9] Ray-Khom *(UnSX)* - - The Most Silent Takedown *(Kill 30 enemies with the Ray-Khom primary without alerting them)* - - [0] Grand Lance *(SWWM Iridium)* - - Penetrator *(Strike through 20 enemies in a row with a single Grand Lance secondary)* - -## 1.4 update *(Arsenal Appendix)*: - -A couple extra weapons, not enough for a full batch, but still worthy additions. - -* **DLC Weaponset 2:** - - [1] Hand of Divine *(Total Madness)* - - Facepunching Extraordinaire *(Kill 300 enemies with the Hand of Divine)* - [7] Sparkster x3 *(UnSX 2)* - A Fine Sparking *(Kill 30 enemies at once with a Sparkster Rifle combo shot)* - - [9] Mortal Rifle *(UnSX 2)* + - [8] Mortal Rifle *(UnSX 2)* - Railed Hard *(Shoot through 16 enemies with a single Mortal Rifle overpressure shot)* + - [9] Ray-Khom *(UnSX)* + - The Most Silent Takedown *(Kill 30 enemies with the Ray-Khom primary without alerting them)* + - John Romero's Curse *(Fry yourself by discharging an electric weapon in water)* - [0] Rafan-Kos *(UnSX 4)* - Blasting Ropes *(Melt a grand total of 1000 enemies with the Rafan-Kos)* +* **Minigames:** + - Tetris + - Breakout + - Snake + - Minesweeper + - Solitaire +* **Additional Voice Acting:** + - Extra lines for item pickups/usage + - Additional taunts and others + - Reactions to hurtfloor damage + - Caco petting + - Explosion lines + - Lead ball crit lines + - Buttslam lines +* **Additional Collectibles:** + - Saya's Mug + +## 1.4 update *(Fine Refinements)*: + +Re-animation of old FK models. Plus extra score incentives and achievements. + +* **Re-animate all base models with IK *(important for consistency)*** +* **Additional Score Bonuses:** + - Double-Cheeked *(Buttslam kill, 1.5x)* + - Mixup *(Different weapon between kills, +200, add +50 with each switch, 10 second cooldown)* + - Unseen *(Kill an enemy without a line of sight to yourself, +300)* + - Aerial *(Kill an enemy while in mid-air, +500)* + - YEET *(Kill a non-flying enemy while it's in the air, AFTER you sent it flying, +1000)* + - OVERWRITE *(Telefrag an enemy, overrides OVERKILL bonus, 4x)* + - Revenge *(Kill the enemy that killed you within 30 seconds of reviving, 3x)* + - Longshot *(Kill an enemy from over 2000 map units away, +600, add +100 for each extra 1000 map units)* + - Redirect *(Kill an enemy with another enemy's projectile, +900)* +* **Additional Achievements:** + - Spicy Tennis *(Parry a thrown Explodium Mag)* + - Pachinko Code *(Find the Secret Menu)* + - Double Succ *(Merge two Ynykron singularities)* + - The Ultimate Combo *(Hit a Ynykron singularity with a Ynykron beam)* + - Author Appeal *(Smooch a boss brain)* + - Power of Love *(Recover a total of 500 health by kissing the Kirin Plush)* + - Arsenal of Olden Times *(Find all classic UnSX weapons)*
+ *(Quadravol, Biospark Carbine, Sparkster Rifle, Ray-Khom, Mortal Rifle, Ynykron, Rafan-Kos and K79-D)*
+ *(The K79-D was turned into the generic cube, so it still counts)* + - Know Thy Armaments *(Find all weapons)* + - Assortment of Thingamajigs *(Find all items)* + - Words Words Words *(Read 100 library entries)* + - Oops I Pressed It *(Turn the engine off)* + - Dangerous Ball Action *(Knock yourself out with your own lead ball)* + - Total Ball Destruction *(Kill the Icon of Sin with a lead ball)* + - Say The Line Vinny *(Spin attack with the Itamex Hammer for 60 seconds)* + - Whateverbuster *(Use the Wallbuster shuffle function 100 times)* ## 1.5 update *(The Final Stage)*: All the hard stuff *(some of these aren't guaranteed)*. * **DLC Gameset:** - - Tetris - - Pong - - Snake - **[Doom]** Demo Land Adventure *(platformer with shooty gameplay)* - **[Heretic]** Interstellar Demolitionist *(a somewhat simple vertical SHMUP, kinda Touhou styled)* - **[Hexen]** Demolition Quest *(a JRPG, kinda like early FF / BoF)* * **Mothgirl summon for Lämp easter egg** - Layers of White *(Summon the White Lady)* -* **Replace all hitscan with *"light projectiles"*** -* **Crouch sliding *(+ proper crouch dashing)*** -* **Expand third person animations** - - 4-directional movement variants - - Height-dependent headpats (current animation was designed for dogs on same floor) -* **Additional gestures + gesture menu** - - Clap - - The Bird - - How Very Brutal *(Flip off 20 enemies)* - - Thumbs Down - - Giggle - - Shrug - - Beckon + - Fluffy Moth *(Pet the White Lady 50 times)* + - Ara Ara *(Have the White Lady kill a total of 100 enemies)* * **Photo Mode** - Dedicated poses - Stickers -* **Virtual Training Map** +* ***(Maybe)* Virtual Training Map** - Featuring Maidbot as assistant ## Unspecified -Things that I'm unsure whether or not they'll be made. +Things that I'm unsure when will be added *(or if they can be added)*. -* **Japanese localization???** -* ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff** * **Customized cluster text stuff if that ever gets scriptified** * **Official Sunder support *(when the WAD is complete)*** -* **Original English Voice Acting** +* **Gib models *(May happen by 1.3, hopefully)*** ## Other Projects @@ -98,36 +109,36 @@ Add-ons and other related stuff. * **Monster/decoration replacements add-on:** - Potentially standalone, usable with other mods - - Balanced for this mod + - Balanced for this mod, as well as the side mods - Unique bosses - Some extra enemy variants - Coverage for all supported WADs *(oof)* -* **Ibuki side mod *(Red Oni):*** +* **Ibuki side mod *(Red Oni)*:** - A more *"mundane"* arsenal - Featuring a very big girl with very big... Assets - - Possibly will have its own DLC Weaponset too - - Featuring a toggleable companion - - Nudity, in a Doom mod? Wow, never seen that one before - - This one's surprisingly meant to be more of a power trip than SWWM GZ -* **Saya side mod *(Red-Eyed Rampage)*** + - Slightly more *"grounded"*, but still powerful + - See, I got tired of playing modded Fallout 4 so... +* **Saya side mod *(Red-Eyed Rampage)*:** - The first mod where you play as a mere squishy person - - Spellcasting! - - A more interesting take on "infinite lives" + - Even more fun weapons, including one made by a god! + - Spellcards! + - A more interesting take on *"infinite lives"* - Featuring the Pancor Jackhammer *(lol)* -* **[Hexen]** **Kirin side mod *(Red Star of Innocence)*** +* **Kirin side mod *(Red Star of Innocence)*:** - Finally, you get to play as the precious femboy emperor + - Anarukon firearms? Anarukon firearms - Designed entirely for Hexen's funky gameplay™ - Watch as our boy complains about *"puzzles"* - Some unique touches to spice things up - Basically a lite version of what you could expect in **UNDEATH** -* ***(Maybe)* Hardcore Mode sub-mod:** - - Featuring Demolitionist on Maidbot frame - - More complex game mechanics - - Manual Hammerspace management - - Manual reloading and weapon maintenance - - Alternate mobility options *(no jetpack)* - - Non-instant item usage -* **Official Campaign:** +* **Marisa side mod *(Child of Ash)*:** + - An unexpected character turns up, Ibuki's very adventurous roommate + - What happens when an actual, full-on Anarukon warrior decides to join the fight + - Big focus on melee, as well as quick spellcasting + - Featuring a summonable AI companion + - Basically even more of what **UNDEATH** will feature +* **Official Game *(VOID - The Dark Alliance)*:** - Retell the events of UnSX 2 *(but with the Demolitionist's participation)* - - Basically give SWWM GZ its own IWAD as a standalone game + - Basically give the Demolitionist their own standalone game - Some new weapons, some renovations + - Lots of world exploration, more lore diff --git a/LICENSE.code b/LICENSE.code index 4317721b1..4190e6460 100644 --- a/LICENSE.code +++ b/LICENSE.code @@ -1,4 +1,4 @@ -Copyright (c) 2020-2021 Marisa Kirisame, UnSX Team +Copyright (c) 2020-2022 Marisa Kirisame, UnSX Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/LOCALIZATION.md b/LOCALIZATION.md index d8c33c48f..e0a6c903f 100644 --- a/LOCALIZATION.md +++ b/LOCALIZATION.md @@ -1,4 +1,4 @@ -# Notes on localizing SWWM GZ +# Notes on localizing this mod There are two parts to this: @@ -16,6 +16,10 @@ In regards to what should and should not be localized, this will be noted in com Each entry must have only one of each TAG, TAB and REL section, and at least one TXT section. When localizing, DO NOT copy the TAB and REL sections, as these are for internal use and mustn't be translated, instead handle only the TAG and TXT sections. +## Font support + +Both fonts in use fully support Latin, Greek and Cyrillic scripts. + ## Language codes -For a list of these, consult the ZDoom wiki article for [LANGUAGE](https://zdoom.org/wiki/LANGUAGE#Language_codes). \ No newline at end of file +For a list of these, consult the ZDoom wiki article for [LANGUAGE](https://zdoom.org/wiki/LANGUAGE#Language_codes). diff --git a/README.md b/README.md index a28c0cafb..0a3975544 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ -## Some Weird Weapons Mod ~ GZDoom Edition ![](docimg/logo.png) -**SWWM GZ** brings to **GZDoom** a "best of" collection of custom weapons I've made for **Unreal Tournament**, plus many new things that didn't make the cut there. It is also effectively a reboot of the entire **SWWM** series, which unfortunately ended with the cancelled **SWWM Z**, this mod's direct predecessor. +--- + +## The Introduction + +**Codename: Demolitionist** is an all-original gameplay mod for **GZDoom** with a basis on rapid, fluid movement mechanics as well as very satisfying, punchy, strong weaponry. In it, you play as the titular **Demolitionist**, a robot with quite a personality, who's destined to save the day, as explosively as necessary. + +The mod's arsenal could be seen as a *"best of"* collection of custom weapons I've made for **Unreal Tournament**, plus many new things that didn't make the cut there. It is also effectively a reboot of the entire **Some Weird Weapons Mod *(SWWM)*** series, which unfortunately ended with the cancelled **SWWM Z**, this mod's direct predecessor *(hence this project originally starting its days under the name of **SWWM GZ**)*. It contains weapons and items remastered and revived from old projects such as the previous **SWWM** entries, along with the **Zanaveth Ultra Suite** side project, and also notably, the main **UnSX** series that never truly saw the light of day, as all work done on it so far has been lost forever. There may also be some original things here and there just to spice things up. @@ -13,7 +18,7 @@ Hope you have fun exploding demon knees. — *Marisa* -## Disclaimers +## The Disclaimers This mod features loud sounds and flashing lights, which may be harmful to certain people. There are options to dampen some of these effects, but it may still be unsafe nonetheless. @@ -21,34 +26,34 @@ The UI design and color schemes of the mod may be problematic to people with col The characters and stories featured in this mod are part of my own personal lore. Any similarities to real world individuals or events are entirely coincidental or, in some cases, loosely referential. -The mod's overarching story and themes often tackle topics of world politics, economy, human rights and others. No work of fiction is free of politics, especially those that reflect the author's own beliefs. If you feel discomfort from political views opposite to your own, this may not be for you (especially if you're right-leaning/conservative). +The mod's overarching story and themes often tackle topics of world politics, economy, human rights and others. No work of fiction is free of politics, especially those that reflect the author's own beliefs. If you feel discomfort from political views opposite to your own, this may not be for you *(especially if you're right-leaning/conservative)*. -The mod contains certain sexual undertones (or overtones in the story itself). Some parts could be considered explicit in nature, so please take this with a grain of salt. You've been warned: The mod *IS* horny (and so am I, as its author). +The mod contains certain sexual undertones *(or overtones in the story itself)*. Some parts could be considered explicit in nature, so please take this with a grain of salt. You've been warned: The mod *IS* horny *(and so am I, as its author)*. This mod is not compatible with **Brutal Doom** for obvious reasons. If you want to combine both, use the "Monsters Only" version of it, but do note that some glitches may still happen. This mod is, funny enough, readily compatible with **H-Doom**. You will not be able to engage in erotic acts with the demon girls, however, but they will be very vulnerable to kisses and headpats. -## The Player +## The Demolitionist ![](docimg/demolitionist_actionshot.png) You are an **Akari Labs Demolitionist Bot**, one of the very first units, fresh off the factory. You are the company's greatest achievement in AI-controlled combat units, trained to efficiently use all sorts of weaponry, built with premium quality armor plating and robust but flexible joints. In order to show off your capabilities, your creator has decided to send you out to fight the demonic invasion brought upon by *"those big stinkin' idiots at the **UAC**"*. Your time has come to kick ass and blow 'em up. 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™*). - - **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). + - **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 gift from your creator, to keep you safe. 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. - **Magnetic Utility Belt:** Holds important equipment tightly, and is also the secret to how you can reload some weapons so damn fast. - **Keychain:** A lil' something to bring some extra good luck charms with you. - **Pocket Hammerspace™ containers:** These will store and deploy items on demand, along with keeping hold of any keys you find. The capacity for ammo storage can be increased by finding **Hammerspace™ Embiggener** modules. - **Forx JetBurst™ Impulsors:** Can be used for quick dashes in any direction, or even for short bursts of flight. - - **Impact Absorption Boots:** Will negate any and all fall damage, and also allow extra boosts of speed to chained jumps (i.e.: bunnyhopping). + - **Impact Absorption Boots:** Will negate any and all fall damage, and also allow extra boosts of speed to chained jumps *(i.e.: bunnyhopping)*. - **Targetting Array:** Tracks nearby foes and provides basic information on their health. Compatible with **Omnisight™** mapping modules for tracking key items and nearby exits. Can also highlight nearby pickups by holding a dedicated button. - **Akari Labs CuteEmotion™ Display:** Equipped onto your visor to show a wide range of predefined facial expressions in order to convey simple emotions to others. - - **Akari Labs LoudBoi™ Voicebox:** Allows you to 🇪 🇲 🇮 🇹. Easily moddable to allow alternate voicepack add-ons. Note that the default voice is in Japanese, but subtitles will be provided when needed. - - **On-demand Item Obtainers:** AKA "hands". You can pick up the mod's items from a distance by pressing Use (this is mainly a workaround for any quirks that might come from them having modified collision). + - **Akari Labs LoudBoi™ Voicebox:** Allows you to **EMIT**. Easily moddable to allow alternate voicepack add-ons *(If someone were to make them)*. Your usual voice is quite robotty, due to a built-in filter. + - **On-demand Item Obtainers:** AKA "hands". You can pick up the mod's items from a distance by pressing Use *(this is mainly a workaround for any quirks that might come from them having modified collision)*. **Note:** Since you're a robutt you pretty much can swim indefinitely and are also immune to poison. @@ -63,7 +68,7 @@ All weapons also have a quick melee attack using the **Weapon State 1** button, If a weapon has no actions on either the reload or zoom buttons, it may be replaced with some special idle action, such as spinning or fiddling around with it. -For now, the following are all weapons planned for the first release. More will be added afterwards, in a future update (oh boy). +For now, the following are all weapons available. More will be added afterwards, in future updates *(oh boy)*. ### Deep Impact (slot 1) ~ Replaces Fist, Staff, Hexen starting weapons ![](docimg/deepimpact.png) @@ -147,7 +152,7 @@ A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms* - While loading shells, you can cancel by holding the reload button. - For a skilled combat robot like you, reloading this should be very fast. 10 seconds tops, for all 25 barrels. -People like to nickname it the ***"Ballbuster"***. You'll see why. +Should you make use of its multi-fire functionality, you will soon learn why it bears the name of ***"Wallbuster"***. ### Eviscerator (slot 5) ~ Replaces Chaingun, Dragon Claw, Quietus (hilt) ![](docimg/eviscerator.png) @@ -158,14 +163,14 @@ The pleasure of shrapnel spamming. Make hot steaming pain rain upon your enemies **Secondary fire:** Launch the entire shell. Hot lead will be deployed wherever it hits. -**Tertiary fire (Zoom):** Toggle between wide spread (default) and tight spread for primary. Apart from that, also affects the effective range of the secondary fire, allowing you to lob these bombs farther away. +**Tertiary fire (Zoom):** Toggle between wide spread *(default)* and tight spread for primary. With a tighter spread, chunks will be closer together and reach higher speeds, but bounce more erratically. In addition, lobbed shells will also go much farther. This weapon made the **Unreal Engine** cry, so **GZDoom** may suffer a lot too. ### Eviscerator shells ~ Replaces Ammo Box, Claw Orb ![](docimg/evisceratorammo.png) -Little bundles of fun (in hot lead form) found either as single units (sometimes bunched up) or six-packs. There is no explanation for why they have an **owo** face scribbled on. +Little bundles of fun (in hot lead form) found either as single units *(sometimes bunched up)* or six-packs. There is no explanation for why they have an **OwO** face scribbled on. ### Hellblazer (slot 6) ~ Replaces Rocket Launcher, Phoenix Rod, Hammer of Retribution ![](docimg/hellblazer.png) @@ -176,7 +181,7 @@ Another signature weapon of the **SWWM** series. This time in its third and far **Secondary fire:** Lob the rocket as a grenade that will bounce around. Hold to load up to 2 additional grenades, then release for burst fire. You can tap the primary fire button at any time to cancel the preload and go straight to holding. -**Tertiary fire (Zoom):** Change the ammo type, there are four options (see ammo section below). While holding rockets, tap to select seek targets. +**Tertiary fire (Zoom):** Change the ammo type, there are four options *(see ammo section below)*. While holding rockets, tap to select seek targets. **Reload:** Obviously does what you'd expect. If you're holding rockets and have targets locked on, tap to clear. @@ -215,19 +220,19 @@ Ammunition for the Biospark Carbine. They contain a lot of energy, despite the s ### Silver Bullet JET (slot 8) ~ Replaces Plasma Rifle, Hellstaff, Arc of Death ![](docimg/silverbullet.png) -The definitive model of **Blackmann Arms**'s legendary **Silver Bullet** series. A lighter (43kg), lower caliber (1.150) variant of the former 1.350 **BEHEMOTH** model, discontinued due to being seen as too impractical. +The definitive model of **Blackmann Arms**'s legendary **Silver Bullet** series. A lighter *(43kg)*, lower caliber *(1.150)* variant of the former 1.350 **BEHEMOTH** model, discontinued due to being seen as too impractical *(it was full auto, no, really)*. **Primary fire:** Shoot the bullet. A second press chambers another round. -**Secondary fire:** On tap, picks the ammo for the next reload. On hold, also tap primary to manually cock (in case you want to eject unfired rounds). +**Secondary fire:** On tap, picks the ammo for the next reload. On hold, also tap primary to manually cock *(in case you want to eject unfired rounds)*. -**Reload:** Reload (what else is new) or switch ammo types. +**Reload:** Reload *(what else is new)* or switch ammo types. -**Zoom:** Press and hold to enter scoped mode. Release to pick the desired zoom level (can go up to 16x). Press again to exit scoped mode. +**Zoom:** Press and hold to enter scoped mode. Release to pick the desired zoom level *(can go up to 16x)*. Press again to exit scoped mode. This weapon is generally not recommended for human use outside of power armor. Good thing you're not a human, then. Still, the recoil compensator jet engines can potentially deal damage to yourself if you don't have any armor, so be careful. -Note that going prone (crouching) will automatically disable the recoil compensators, increasing the potential damage of the bullets, but also reducing your mobility. +Note that going prone *(crouching)* will automatically disable the recoil compensators, increasing the potential damage of the bullets, but also reducing your mobility. ### 1.150 XSB Bullets ~ Replaces Cells, Runes ![](docimg/xsbbullet.png) @@ -246,15 +251,15 @@ Same spawn conditions as the standard bullets. ### Candy Gun (slot 9) ~ Replaces BFG9000, Firemace, Bloodscourge (stub) ![](docimg/candygun.png) -Coming from an old unreleased weapon mini-mod, the **Candy Gun** is like an **Explodium Gun** on steroids (or more specifically, on strawberry candy and pop rocks). +Coming from an old unreleased weapon mini-mod, the **Candy Gun** is like an **Explodium Gun** on steroids *(or more specifically, on strawberry candy and pop rocks)*. **Primary fire:** Explosive candy bullets. The blasts are a tasty treat of pain. -**Secondary fire:** Like its weaker counterpart, the mag is armed and yeeted with extreme prejudice. +**Secondary fire:** Like its weaker counterpart, the mag is armed and yeeted with extreme prejudice *(you cannot perform this action if you have no more ammo left)*. **Reload:** Does what you'd expect. -Holding secondary fire and primary fire (in that order) will throw the weapon itself, armed and ready to explode if it hits anyone or anything. The blast area for this is pretty ridiculous. You can hold spare guns, by the way (up to four). +Holding secondary fire and primary fire *(in that order)* will throw the weapon itself, armed and ready to explode if it hits anyone or anything. The blast area for this is pretty ridiculous. You can hold spare guns, by the way *(up to four)*. ### Candy Gun Bullets ~ Replaces Cells, Runes ![](docimg/candybullet.png) @@ -274,9 +279,9 @@ Popularly known as the ***"Death Cannon"***. One of the four ultimate weapons co **Reload:** If charging, cancel the charge. Ammo will not be wasted, but it will have to vent for a while longer than after firing normally. If the ammo was spent, reloads as usual. -Unlike its previous incarnation in **SWWM Platinum**, this one doesn't have such an obscene pre-fire delay, so it's much easier to land a shot (not to mention also being far more lethal, thanks to the added chain reaction effect). +Unlike its previous incarnation in **SWWM Platinum**, this one doesn't have such an obscene pre-fire delay, so it's much easier to land a shot *(not to mention also being far more lethal, thanks to the added chain reaction effect)*. -Due to its rarity, you can't buy it from the store, so you gotta find one (and only one) in the field. +Due to its rarity, you can't buy it from the store, so you gotta find one *(and only one)* in the field. ### Crystal Box ~ Replaces Cell Pack, Greater Rune ![](docimg/ynykronammo.png) @@ -290,9 +295,9 @@ These spawn VERY rarely and, like the weapon that uses them, you can't buy them Of course, one cannot go without little helpers along their journey. -Healing items restore health (duh), armor items do exactly what you'd expect, and then there's all the various powerups that grant you useful abilities. +Healing items restore health *(duh)*, armor items do exactly what you'd expect, and then there's all the various powerups that grant you useful abilities. -All of these can be carried in your inventory indefinitely before use, except in deathmatch, where they're activated immediately. Healing items are automatically used whenever possible (with the lowest tier healing items taking priority). Armor is immediately carried if you don't have any of that type on you, or if your existing armor drains and you have a spare. Most powerups can be toggled, unless specified otherwise. +All of these can be carried in your inventory indefinitely before use, except in deathmatch, where they're activated immediately. Healing items are automatically used whenever possible *(with the lowest tier healing items taking priority)*. Armor is immediately carried if you don't have any of that type on you, or if your existing armor drains and you have a spare. Most powerups can be toggled, unless specified otherwise. ### Health Nugget ~ Replaces Health Bonus, Timebomb of the Ancients, Disc of Repulsion, Flechette, Mystic Ambit Incant ![](docimg/nuggethealth.png) @@ -312,12 +317,12 @@ All of these can be carried in your inventory indefinitely before use, except in ### Refresher ~ Replaces Soulsphere, Mystic Urn ![](docimg/refresher.png) -This artifact provides a +100 health boost plus a regeneration effect that heals +10 every 5 seconds, for up to 50 seconds, thus it doubles as a powerup. Its overhealing effects cap at 500 points (including the regen). Once its effects wear out, however, your excess health will gradually settle towards the typical 200 point cap. Unlike other health items, the **Refresher** auto-activates only if you're about to die. This usually prevents such a grim outcome... unless the damage is too high to counter. +This artifact provides a +100 health boost plus a regeneration effect that heals +10 every 5 seconds, for up to 50 seconds, thus it doubles as a powerup. Its overhealing effects cap at 500 points *(including the regen)*. Once its effects wear out, however, your excess health will gradually settle towards the typical 200 point cap. Unlike other health items, the **Refresher** auto-activates only if you're about to die. This usually prevents such a grim outcome... unless the damage is too high to counter. ### Armor Nugget ~ Replaces Armor Bonus, Timebomb of the Ancients, Disc of Repulsion, Flechette, Mystic Ambit Incant ![](docimg/nuggetarmor.png) -Cumulative armor items that can increase resistance to all damage by as much as you can find. Each nugget adds 1% to the total. Above 100%, damage gets turned into additional health (up to the standard 100% cap). The upper cap for these is 200%. Comes in bundles when replacing things other than armor bonuses. +Cumulative armor items that can increase resistance to all damage by as much as you can find. Each nugget adds 1% to the total. Above 100%, damage gets turned into additional health *(up to the standard 100% cap)*. The upper cap for these is 200%. Comes in bundles when replacing things other than armor bonuses. ### Blast Suit ~ Replaces Green Armor, Silver Shield, Platinum Helm, Amulet of Warding ![](docimg/blastsuit.png) @@ -331,23 +336,23 @@ Can handle a total of 150 damage points before breaking. Decent armor, protects very well against all damage. Reduction factors are as follows: - * 80% reduction for elemental (fire, ice, electric, etc.) + * 80% reduction for elemental *(fire, ice, electric, etc.)* * 50% reduction to everything else - * 70% reduction for all splash damage (multiplicative on top of the other two) + * 70% reduction for all splash damage *(multiplicative on top of the other two)* Can eat up a total of 250 damage points before breaking. ### Grilled Cheese Sandwich ~ Replaces Megasphere, Morph Ovum, Dragonskin Bracers ![](docimg/sandwich.png) -The ultimate meal. Grants a full 1000 health and magically gives you a full stack of **Armor Nuggets**, a **Blast Suit** and a **War Armor**. In addition it prevents you from dying at all when it activates automatically (this wondrous artifact can even save you from the destruction of the **Ynykron Artifact**). Keep in mind that this overhealing above 500 points fades away much quicker than the **Refresher**'s, and you can't use another sandwich again until the overheal fades. +The ultimate meal. Grants a full 1000 health and magically gives you a full stack of **Armor Nuggets**, a **Blast Suit** and a **War Armor**. In addition it prevents you from dying at all when it activates automatically *(this wondrous artifact can even save you from the destruction of the **Ynykron Artifact**)*. Keep in mind that this overhealing above 500 points fades away much quicker than the **Refresher**'s, and you can't use another sandwich again until the overheal fades. ### Ghost Artifact ~ Replaces Blur Sphere, Shadowsphere ![](docimg/ghost.png) Actual 100% invisibility, a relic from the old **UnSX** days. -This powerup is capable of turning you absolutely invisible. However, it does not prevent you from making noise, so it's best to use it to sneak past certain encounters, or prepare surprise attacks. +This powerup is capable of turning you absolutely invisible. However, it does not prevent you from making noise, so it's best to use it to sneak past certain encounters, or prepare surprise attacks. Enemies will be very confused and try to attack where they last heard you, until they eventually take notice that you're not there. Lasts 60 seconds once activated. @@ -384,7 +389,7 @@ You're fucking invincible for a total of 20 seconds. ### Hammerspace Embiggener ~ Replaces Backpack, Bag of Holding, Dragonskin Bracers ![](docimg/embiggener.png) -Each of these you pick up increases your ammo capacity (not necessarily doubling it), stacking up to 8 times. They also give you some extra ammo, like a vanilla backpack would (though not for all weapons). +Each of these you pick up increases your ammo capacity *(not necessarily doubling it)*, stacking up to 8 times. They also give you some extra ammo, like a vanilla backpack would *(though not for all weapons)*. In some special cases you may find "Bulk" versions. These generally only pop up if the mapper decided to spawn several overlapping backpacks in one spot, as they result from all of those items merging together. @@ -393,7 +398,7 @@ Note: In multiplayer, these can be traded between players, but do note that the ### Universal Ammo Fabricator ~ Replaces Mana / Krater of Might ![](docimg/fabricator.png) -Separated into four tiers, they work pretty much like the ammo cubes in **Doom Tournament**, except they try to *"balance"* the total ammo given. The max tier fabricator is the only one capable of producing ammo for all weapons (excluding the **Ynykron Artifact**). Due to some unspecified reasons, they cannot be held in your inventory. +Separated into four tiers, they work pretty much like the ammo cubes in **Doom Tournament**, except they try to *"balance"* the total ammo given. The max tier fabricator is the only one capable of producing ammo for all weapons *(excluding the **Ynykron Artifact**)*. Due to some unspecified reasons, they cannot be held in your inventory, something to do with their nature conflicting with **Hammerspace**. ### Lamp ~ Replaces Lite-Amp, Torch ![](docimg/lamp.png) @@ -434,7 +439,7 @@ Same conditions as the other two. Make sure you find the perfect chance to unlea ## The Collectibles ![](docimg/chancebox.png) -Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In Hexen, they will also replace Dark Servants, Banishment Devices and Porkalators (as the game generally doesn't have secret areas). +Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In Hexen, they will also replace Dark Servants, Banishment Devices and Porkalators *(as the game generally doesn't have secret areas)*. While some will drop very useful goodies, others may provide you instead with a randomly selected item from a pool of various *"collectibles"*. On pickup, these will give you a nice extra score based on their estimated market price. Some of these collectibles will only appear when you play specific IWADs (or those that go chronologically after them, e.g.: Heretic collectibles appearing in Hexen). @@ -456,7 +461,7 @@ A copy of Saya's famous sci-fi novel about interdimensional travel. Saya has fre ### Meidobot - Love Signals ![](docimg/lovesignals.png) -Debut album of Maidbot Miyamoto. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to Saya, although it should be noted that this predates Maidbot gaining sentience (not that it makes much of a difference, as her feelings for Saya turned out to be very real). +Debut album of Maidbot Miyamoto. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to Saya, although it should be noted that this predates Maidbot gaining sentience *(not that it makes much of a difference, as her feelings for Saya turned out to be very real)*. ### Perfectly Generic Cube ![](docimg/generic.png) @@ -505,61 +510,69 @@ Pretty simplistic so it doesn't get in the way of the action. Some things may be ### Top left corner -Message display. Can be configured to show different numbers of messages depending on whether the chat prompt is open. Chat messages take much longer to expire than others, so there's less of a chance to miss them, as they might pop back up when the less important ones expire. A full chat history can be read at any time in the **Demolitionist Menu** (if there were any actual messages). Repeated messages are compressed with a multiplier suffix. +Message display. Can be configured to show different numbers of messages depending on whether the chat prompt is open. Chat messages take much longer to expire than others, so there's less of a chance to miss them, as they might pop back up when the less important ones expire. A full chat history can be read at any time in the **Demolitionist Menu** *(if there were any actual messages)*. Repeated messages are compressed with a multiplier suffix. ### Top right corner Current score. -The scoring system is pretty straightforward. Each enemy you kill will give you points according to 5% of its base health, rounded up to the nearest multiple of 10 and capped to 1000, plus some bonuses (in order of application): +The scoring system is pretty straightforward. Each enemy you kill will give you points according to 5% of its base health, rounded up to the nearest multiple of 10 and capped to 1000, plus some extra bonuses for feats such as multikills *(within 5 seconds of each other)*, gibbing enemies, killing bosses, and much more! - * +500 if the enemy was killed with the **Deep Impact** primary (humiliation). - * +300 if the enemy was killed with your butt while dashing (no, seriously). - * +600 if the enemy was killed with a blown kiss (oh my~). - * +200 if the enemy was killed with a parried projectile (+200 more if it was a perfect parry). - * x2 for an overkill (enemy was gibbed or received twice its base health in damage). - * x1.5 for each combo level, up to x8 in steps of x0.5. Kills are considered combos if multiple enemies are killed within 5 seconds of each other. - * +100 for killing an enemy without having taken damage since last spawn, with extra +10 boosts for consecutive kills (extra boosts taper off after 10x). - * +2000 if the enemy killed is a boss. - * +1000 if you've killed the last enemy in the map. +You are also given score for finding secrets and counted items, +100 for each secret, +1000 if it's the final one and +10 for each item or +500 if it's the final one. In addition, +5000 will be given to all players if the level is fully cleared *(100% kills/items/secrets)*. -You are also given +100 points for each secret found, +1000 if it's the final secret. Countable items give +10 points each or +500 if it's the final item. In addition, +5000 will be given to all players if the level is fully cleared (100% kills/items/secrets). +Score can be used to buy items on the in-game store *(or gained from selling them)*, and it is preserved between hubs, but pistol starts will reset it *(configurable, like most things)*. -Score can be used to buy items on the in-game store (or gained from selling them), and it is preserved between hubs, but pistol starts will reset it. +Right below your score box, a toggleable minimap will be shown. It works mostly like the radar did in **SWWM Z**, but has the added benefit of also showing map geometry *(an absolute nightmare to code)*. Has its own custom color scheme, but it can also be set to inherit these from GZDoom's own automap settings, or various vanilla presets. -In **Doom** and **Heretic**, collected keys will be displayed below the score box. +In addition, you may also see the stats for the level *(as well as its name if the automap is active)*, and below, any collected keys. -When the **Automap** is open, the map name and stats will also be shown here. +### Center -Optionally, a minimap can be shown below the score box too. This works mostly like the radar did in **SWWM Z**, but it has the added benefit of also showing map geometry. Has its own configurable color scheme, but it can also be set to inherit these from GZDoom's own custom automap settings, or various vanilla presets. +Your crosshair, of course. This mod features a physically projected crosshair that's pointing exactly where your current weapon will *(usually)* hit whenever you fire. If a weapon fires from multiple barrels, more crosshairs will of course appear for each of them. + +It's likely that somewhere in this general area you'll see, on occasion when playing supported maps, some dialogue boxes with characters *(usually **Saya**)* letting you know their thoughts on your progress in the mission, and what lies ahead. Do note that these communications are entirely voice-to-text and one-way. + +Oh, and also, when bringing up a certain weapon for the first time, you will see a tooltip detailing its basic controls. If you feel this gets in the way, you can disable it, of course. ### Bottom left corner -Your health and fuel, along with an inventory box, and all active armors and powerups (with their respective durability/duration). +Your health and fuel, along with an inventory box, and all active armors and powerups *(with their respective durability/duration)*. ### Bottom border -Voice acting subtitles and pickup messages. Repeated pickups will have a multiplier suffix added. Total messages shown are also configurable. Achievement popups might also show here sporadically (yup, the mod has those). +Voice acting subtitles and pickup messages. Repeated pickups will have a multiplier suffix added. Total messages shown are also configurable. Achievement popups might also show here sporadically *(yup, the mod has those)*. ### Bottom right corner -The weapon slots. Above them, the currently equipped weapon's stats (i.e.: ammo(s) and such). +The weapon slots. Above them, the currently equipped weapon's stats *(i.e.: ammo(s) and such)*. -### Targeter +### Targeting Array -Because in the middle of the chaos that is this mod you might have a hard time trying to figure out where everything is in between explosions and massive smoke clouds, a targetter has been implemented, which will show the following: +Because in the middle of the chaos that is this mod you might have a hard time trying to figure out where everything is in between explosions and massive smoke clouds, a targeting array has been implemented, which will show the following: -- **Players and monsters:** Draws an identification label and a health bar. The bar can display overhealing, and also indicate when someone is invulnerable. When they take damage or get healed, numbers (either red or green) will pop up around them. The targetter only picks up enemies in your direct line of sight, gradually fading once you lose sight of them, and can only display up to 40 individual bars (configurable), giving priority first to players, then the nearest enemies. The **Omnisight** increases the time out-of-sight targets remain marked. -- **Keys and map exits:** If you've picked up an **Omnisight**, key items and any exit lines will be marked and labeled, along with a little distance indicator in map units. Note that this doesn't work for script-triggered exits. -- **Highlighted items:** Holding the ***"Item Sense"*** button will mark and label nearby items, in case they're hard to see among countless piles of corpses or dim lighting. If you have an **Omnisight**, items that are out of view (e.g.: behind walls) will be marked too. +- **Players and monsters:** Draws an identification label and a health bar. The bar can display overhealing, and also indicate when someone is invulnerable. When they take damage or get healed, numbers *(either red or green)* will pop up around them. Only enemies in your direct line of sight are picked up, gradually fading once you lose sight of them, and only up to 40 individual bars can be displayed at a time *(configurable)*, giving priority first to players, then the nearest enemies. The **Omnisight** increases the time out-of-sight targets remain marked. +- **Keys and map exits:** If you've picked up an **Omnisight**, key items and any exit lines will be marked and labeled, along with a little distance indicator in map units. Note that this doesn't work for script-triggered exits *(the exit line detection is also kind of wonky with the way some of them are laid out, so you might see duplicate markers and whatnot)*. +- **Highlighted items:** Holding the ***"Item Sense"*** button will mark and label nearby items, in case they're hard to see among countless piles of corpses or dim lighting. If you have an **Omnisight**, items that are out of view *(e.g.: behind walls)* will be marked too. These components are toggleable. +## Multiplayer + +![](docimg/demolitionist_mp.png) + +Although it's not officially supported, it is possible to play both co-op and deathmatch with this mod. Some caveats apply, such as the need to disable network prediction, as the various changes to player physics and behavior would quickly cause desyncs otherwise. Thus, the only recommendation I can give is to only try it out if there's low latency between players *(e.g.: LAN multiplayer)*. + +Due to engine limitations, it's not possible to color-code individual players, so you'll have to rely on the target array to identify others. Note that the named healthbars of other players are always displayed in co-op, regardless of distance or visibility. + +When playing deathmatch, detailed ranking and score stats will be shown on the right side of the HUD, so you know who's winning and by how far of a margin. Note that in deathmatch, the full map is always revealed, but other players will NOT appear in the minimap or target array unless they're visible, or they're part of your team *(if teamplay is enabled)*. + +Now, all things considered, the experience of multiplayer with this mod can only be described as *"pure unadulterated chaos"*. If one **Demolitionist** can already wreak intense havoc, imagine up to 8 of them on the same map. + ## The End ![](docimg/demolitionist_doublev.png) That's all the info I can provide on this here Readme file, at least for now. Stay tuned for much more that will come in the future, as this mod is in constant development. -Anyway, hope you have lots of fun playing **SWWM GZ**. Godspeed, and happy fragging! +Anyway, hope you have lots of fun playing **Codename: Demolitionist**. Godspeed, and happy fragging! — *Marisa* diff --git a/achievements.lst b/achievements.lst index 3e202bdd8..687fbaeb9 100644 --- a/achievements.lst +++ b/achievements.lst @@ -3,10 +3,11 @@ # basename: the base name used to construct cvars and localization strings # maxval: limit progress value (if any), a value of -1 means it needs special # handling in zscript (usually for cases where this is dynamic, like -# the "all collectibles" achievement) +# the "all collectibles" achievement), and a value below -1 indicates +# this is a bitfield, where abs(maxval) bits must be set # hasformat: the TXT string has a %d in it to substitute for maxval # gametype: the game this belongs to (any, doom, heretic, hexen, raven, etc.) -acid,50,yes,any +acid,40,yes,any allcoll,-1,no,any allitems,30,yes,nothexen allkills,30,yes,nothexen @@ -14,24 +15,23 @@ allsecrets,30,yes,nothexen anom,10,yes,any anone,0,no,any balls,10,yes,any -barrel,1000,yes,doom +barrel,500,yes,doom barrier,20,yes,doom baseball,0,no,doom blaze,0,no,nothexen -bonk,300,yes,any +bonk,200,yes,any bossdash,5,yes,any brake,10,yes,any -bune,500,yes,any -bustin,50,yes,any +bune,400,yes,any +bustin,40,yes,any butts,100,yes,any -candy,1000,yes,any -cheat,0,no,any +candy,500,yes,any cliffyb,0,no,nothexen clonk,0,no,any conga,10,yes,any crush,0,no,any cybully,0,no,doom -#cum,1000,yes,any +#cum,500,yes,any #dab,200,yes,any #dakka,60,no,any deadeye,7,yes,any @@ -39,25 +39,23 @@ deva,10,yes,any dime,0,no,any divine,10,yes,any doodle,20,yes,doom -dosh,1000000000,no,any everything,0,no,any -ezkill,50,yes,any -#fisto,300,yes,any +ezkill,50,yes,doom +ezkill,30,yes,raven flight,2000,yes,any -friend,40,yes,any -fuel,500,yes,any +friend,20,yes,any +fuel,400,yes,any #fuller,0,no,any gcsandwich,10,yes,any #gepgun,30,yes,any -ghost,30,yes,any +ghost,20,yes,any gib,1500,yes,any golden,24,yes,any gravity,10,yes,raven -grenade,30,yes,any +grenade,20,yes,any #hnd,6,yes,any hurry,0,no,any -#ice,40,yes,any -jump,150,yes,any +jump,100,yes,any kancho,0,no,hexen keen,0,no,doom lead,1500,yes,any @@ -65,38 +63,39 @@ lead,1500,yes,any ligma,0,no,any love,10,yes,any #mashiro,0,no,any +matryoshka,0,no,any mbf,0,no,doom mega,10000,yes,any -moth,50,yes,any +moth,30,yes,any nice,0,no,nothexen oneguy,0,no,any onehp,10,yes,any onestanding,0,no,nothexen oopsie,0,no,any par,15,yes,doom -parry,200,yes,any +parry,100,yes,any peace,0,no,nothexen -#pene,20,yes,any -#plasma,50,yes,any +#plasma,30,yes,any plush,10,yes,any puzzle,0,no,hexen rage,20,yes,any #rail,16,yes,any reflect,20,yes,any refresh,30,yes,any -#roast,50,yes,any +#roast,40,yes,any salt,0,no,any sanic,800,yes,any sekiro,0,no,any shame,0,no,any shock,30,yes,any -slayer,40,yes,any +slayer,40,yes,doom +slayer,20,yes,raven slemg,100,yes,any sneaky,10,yes,raven sneeze,20,yes,any #spark,30,yes,any step,30,yes,any -stomp,50,yes,any +stomp,40,yes,any sunny,15,yes,any tele,0,no,any tender,100,yes,any diff --git a/acs/swwmcomp.o b/acs/swwmcomp.o index e7af79370..033d4c445 100644 Binary files a/acs/swwmcomp.o and b/acs/swwmcomp.o differ diff --git a/animdefs.misc b/animdefs.misc new file mode 100644 index 000000000..b06d2f36b --- /dev/null +++ b/animdefs.misc @@ -0,0 +1 @@ +cameratexture LOGOFADE 64 64 diff --git a/ccards.txt b/ccards.txt new file mode 100644 index 000000000..874b237f3 --- /dev/null +++ b/ccards.txt @@ -0,0 +1,5 @@ +// exclude secret Wolfenstein enemies +excludeactor SWWMGuard +excludeactor SWWMSS +excludeactor SWWMHans +excludeactor SWWMDog diff --git a/credits.txt b/credits.txt index c21bc0d64..b81589174 100644 --- a/credits.txt +++ b/credits.txt @@ -1,6 +1,5 @@ Most of the work here is original, but there are some notable exceptions: - - Default player voices are edited from the Fallout 4 Japanese dub. - * Special Thanks to Gargorias for Player Comments and Head Tracking (https://www.nexusmods.com/fallout4/mods/22166), which was of great help for tracking down all these lines. + - Demolitionist voice lines by Vyolette - Many sounds have been mixed and matched and filtered and whatnot from the following games: * Fallout New Vegas * Fallout 4 diff --git a/cvarinfo.achievements b/cvarinfo.achievements deleted file mode 100644 index 3e38b75af..000000000 --- a/cvarinfo.achievements +++ /dev/null @@ -1,143 +0,0 @@ -// shared achievements - -// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified) -nosave int swwm_achievement_acid = 0; -nosave int swwm_achievement_allcoll = 0; -nosave int swwm_achievement_anom = 0; -nosave int swwm_achievement_anone = 0; -nosave int swwm_achievement_balls = 0; -nosave int swwm_achievement_bonk = 0; -nosave int swwm_achievement_bossdash = 0; -nosave int swwm_achievement_brake = 0; -nosave int swwm_achievement_bune = 0; -nosave int swwm_achievement_bustin = 0; -nosave int swwm_achievement_butts = 0; -nosave int swwm_achievement_candy = 0; -nosave int swwm_achievement_cheat = 0; -nosave int swwm_achievement_clonk = 0; -nosave int swwm_achievement_conga = 0; -nosave int swwm_achievement_crush = 0; -nosave int swwm_achievement_cum = 0; -nosave int swwm_achievement_dab = 0; -nosave int swwm_achievement_dakka = 0; -nosave int swwm_achievement_deadeye = 0; -nosave int swwm_achievement_deva = 0; -nosave int swwm_achievement_dime = 0; -nosave int swwm_achievement_divine = 0; -nosave int swwm_achievement_dosh = 0; -nosave int swwm_achievement_everything = 0; -nosave int swwm_achievement_ezkill = 0; -nosave int swwm_achievement_fisto = 0; -nosave int swwm_achievement_flight = 0; -nosave int swwm_achievement_friend = 0; -nosave int swwm_achievement_fuel = 0; -nosave int swwm_achievement_fuller = 0; -nosave int swwm_achievement_gcsandwich = 0; -nosave int swwm_achievement_gepgun = 0; -nosave int swwm_achievement_ghost = 0; -nosave int swwm_achievement_gib = 0; -nosave int swwm_achievement_golden = 0; -nosave int swwm_achievement_grenade = 0; -nosave int swwm_achievement_hnd = 0; -nosave int swwm_achievement_hurry = 0; -nosave int swwm_achievement_ice = 0; -nosave int swwm_achievement_jump = 0; -nosave int swwm_achievement_lead = 0; -nosave int swwm_achievement_lightning = 0; -nosave int swwm_achievement_ligma = 0; -nosave int swwm_achievement_love = 0; -nosave int swwm_achievement_mashiro = 0; -nosave int swwm_achievement_mega = 0; -nosave int swwm_achievement_moth = 0; -nosave int swwm_achievement_oneguy = 0; -nosave int swwm_achievement_onehp = 0; -nosave int swwm_achievement_oopsie = 0; -nosave int swwm_achievement_parry = 0; -nosave int swwm_achievement_pene = 0; -nosave int swwm_achievement_plasma = 0; -nosave int swwm_achievement_plush = 0; -nosave int swwm_achievement_rage = 0; -nosave int swwm_achievement_rail = 0; -nosave int swwm_achievement_reflect = 0; -nosave int swwm_achievement_refresh = 0; -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; -nosave int swwm_achievement_sneeze = 0; -nosave int swwm_achievement_spark = 0; -nosave int swwm_achievement_step = 0; -nosave int swwm_achievement_stomp = 0; -nosave int swwm_achievement_sunny = 0; -nosave int swwm_achievement_tele = 0; -nosave int swwm_achievement_tender = 0; -nosave int swwm_achievement_thicc = 0; -nosave int swwm_achievement_thruwall = 0; -nosave int swwm_achievement_travel = 0; -nosave int swwm_achievement_wantdie = 0; -nosave int swwm_achievement_wave = 0; -// cross-session progress cvars -nosave int swwm_progress_acid = 0; -nosave int swwm_progress_allcoll = 0; -nosave int swwm_progress_anom = 0; -nosave int swwm_progress_balls = 0; -nosave int swwm_progress_bonk = 0; -nosave int swwm_progress_bossdash = 0; -nosave int swwm_progress_brake = 0; -nosave int swwm_progress_bune = 0; -nosave int swwm_progress_bustin = 0; -nosave int swwm_progress_butts = 0; -nosave int swwm_progress_candy = 0; -nosave int swwm_progress_conga = 0; -nosave int swwm_progress_cum = 0; -nosave int swwm_progress_dab = 0; -nosave int swwm_progress_dakka = 0; -nosave int swwm_progress_deadeye = 0; -nosave int swwm_progress_deva = 0; -nosave int swwm_progress_divine = 0; -nosave int swwm_progress_dosh = 0; -nosave int swwm_progress_ezkill = 0; -nosave int swwm_progress_fisto = 0; -nosave int swwm_progress_flight = 0; -nosave int swwm_progress_friend = 0; -nosave float swwm_progress_fuel = 0; // this one needs to be float -nosave int swwm_progress_gcsandwich = 0; -nosave int swwm_progress_gepgun = 0; -nosave int swwm_progress_ghost = 0; -nosave int swwm_progress_gib = 0; -nosave int swwm_progress_golden = 0; -nosave int swwm_progress_grenade = 0; -nosave int swwm_progress_hnd = 0; -nosave int swwm_progress_ice = 0; -nosave int swwm_progress_jump = 0; -nosave int swwm_progress_lead = 0; -nosave int swwm_progress_love = 0; -nosave int swwm_progress_mega = 0; -nosave int swwm_progress_moth = 0; -nosave int swwm_progress_onehp = 0; -nosave int swwm_progress_parry = 0; -nosave int swwm_progress_pene = 0; -nosave int swwm_progress_plasma = 0; -nosave int swwm_progress_plush = 0; -nosave int swwm_progress_rage = 0; -nosave int swwm_progress_rail = 0; -nosave int swwm_progress_reflect = 0; -nosave int swwm_progress_refresh = 0; -nosave int swwm_progress_roast = 0; -nosave int swwm_progress_sanic = 0; -nosave int swwm_progress_shock = 0; -nosave int swwm_progress_slayer = 0; -nosave int swwm_progress_slemg = 0; -nosave int swwm_progress_sneeze = 0; -nosave int swwm_progress_spark = 0; -nosave int swwm_progress_step = 0; -nosave int swwm_progress_stomp = 0; -nosave int swwm_progress_sunny = 0; -nosave int swwm_progress_tender = 0; -nosave int swwm_progress_thicc = 0; -nosave int swwm_progress_thruwall = 0; -nosave float swwm_progress_travel = 0; // also needs to be float diff --git a/cvarinfo.base b/cvarinfo.base index da357f967..73b6886e9 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -3,38 +3,32 @@ user string swwm_voicetype = "default"; // voice for your demolitionist nosave float swwm_flashstrength = 1.0; // strength of screen flashes nosave int swwm_hudmargin = 10; // margin around fullscreen hud elements nosave int swwm_maxshown = 4; // max messages to show normally -nosave int swwm_maxshownbig = 10; // max messages to show when chatting +nosave int swwm_maxshownbig = 10; // max messages to show when chatting nosave int swwm_maxpickup = 5; // total pickup messages visible nosave int swwm_mutevoice = 0; // mute demolitionist voice // 0 - none // 1 - combat comments - // 2 - item/secret comments + // 2 - interaction comments // 3 - map start comment // 4 - pain/death and grunts +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 -nosave noarchive int swwm_lasttab = 0; // last selected tab in the menu -nosave noarchive int swwm_lastloretab = 0; // last selected tab in the library submenu -nosave noarchive int swwm_laststattab = 0; // last selected tab in the stats submenu 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_targeter = true; // show targeter healthbars nosave bool swwm_targettags = true; // show enemy tags above healthbars nosave bool swwm_healthnums = true; // show damage/healing numbers 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 server int swwm_revivecooldown = 60; // cooldown after using a revive, in seconds (0: no limit) -nosave bool swwm_interart = true; // show fanart on intermissions +nosave int swwm_interart = 1; // show art on intermissions (2: only fanart, 3: only official renders) server bool swwm_balluse = true; // lead ball can "press" switches remotely nosave bool swwm_bosshealthbars = true; // display large healthbars for vanilla boss encounters server bool swwm_upgradebosses = true; // vanilla bosses will be "upgraded" to be less insta-die prone @@ -44,18 +38,18 @@ nosave int swwm_maxtargetdist = 2000; // maximum distance for target healthbars nosave int swwm_maxtargets = 40; // maximum targeter healthbars to display (0 = unlimited) nosave int swwm_maxscorenums = 0; // maximum score numbers to display (0 = unlimited) nosave int swwm_maxdamnums = 0; // maximum damage/healing numbers to display (0 = unlimited) -nosave int swwm_hudscale = 0; // HUD scaling (0 = use GZDoom scaling) -nosave int swwm_barscale = 2; // target healthbar scaling (0 = use GZDoom scaling) -nosave int swwm_scrscale = 2; // score scaling (0 = use GZDoom scaling) -nosave int swwm_numscale = 3; // damnum scaling (0 = use GZDoom scaling) -nosave int swwm_poiscale = 1; // point of interest scaling (0 = use GZDoom scaling) -nosave int swwm_detscale = 2; // item sense scaling (0 = use GZDoom scaling) +nosave bool swwm_hudscale = false; // HUD scaling (false = tight scaling, true = loose scaling) +nosave int swwm_barscalerel = -1; // target healthbar scaling (relative) +nosave int swwm_numscalerel = 0; // damnum scaling (relative) +nosave int swwm_scrscalerel = -1; // score scaling (relative) +nosave int swwm_poiscalerel = -2; // point of interest scaling (relative) +nosave int swwm_detscalerel = -1; // item sense scaling (relative) server bool swwm_blood = true; // custom blood/gibbing server int swwm_maxblood = 200; // max blood effects at any time server int swwm_maxgibs = 100; // max gibs at any time server int swwm_maxcasings = 100; // max casings and spent mags at any time server int swwm_maxdebris = 200; // max chunks of debris at any time -nosave bool swwm_fuzz = true; // allows toggling the fuzz shader on the demolitionist menus, useful if you're streaming/recording since it destroys the encoding quality +nosave bool swwm_fuzz = true; // allows toggling the fuzz shader on menus/backgrounds, useful if you're streaming/recording since it destroys the encoding quality nosave bool swwm_cbtpause = true; // wallbuster menu pauses the game nosave noarchive int swwm_cbtlast = 0; // last selected ammo for the wallbuster server bool swwm_cbtall = false; // wallbuster breaks any wall, not just movable ones @@ -105,7 +99,6 @@ server bool swwm_singlefirst = false; // single weapons are selected before dua nosave bool swwm_uniqstats = false; // only list stats from the same map once, rather than for each single visit nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - no filter, 1 - obscure text, 2 - don't show nosave noarchive bool swwm_debugview = false; // debug visual aid for various things, such as actor collision, trajectories, relationships, etc. -nosave bool swwm_oldcheat = false; // set to true if you used a SWWM Platinum cheat, so the easter egg only appears once per iwad server bool swwm_selflight = true; // player emits light server bool swwm_usetopickup = false; // allow item pickup only by pressing use server bool swwm_meleepickup = true; // allow picking up items through melee @@ -115,13 +108,18 @@ 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 nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to disable tooltips was already displayed nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them +nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying) +nosave bool swwm_oldlogo = false; // restores the old SWWM GZ logo and intro +nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling +nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling +nosave noarchive int swwm_profstart = 0; // starts profiling as soon as handler is registered for specified >0 tics +server bool swwm_nodeathexit = false; // completely sidesteps the inventory resetting of death exits, if you hate those // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter @@ -130,7 +128,7 @@ nosave bool swwm_mm_rotate = true; // rotate minimap nosave bool swwm_mm_grid = false; // show blockmap grid plus (0,0) crosshair nosave bool swwm_mm_portaloverlay = true; // show portal overlays, like the gzdoom automap (but unlike the gzdoom automap, we also overlay actors) nosave bool swwm_mm_missiles = true; // show projectiles (how revolutionary) -nosave int swwm_mm_colorset = 0; // 0: SWWM GZ, 1: GZDoom, 2: Doom, 3: Strife, 4: Raven +nosave int swwm_mm_colorset = 0; // 0: Demolitionist, 1: GZDoom, 2: Doom, 3: Strife, 4: Raven nosave color swwm_mm_backcolor = "10 10 10"; nosave color swwm_mm_cdwallcolor = "30 50 70"; nosave color swwm_mm_efwallcolor = "80 a0 c0"; @@ -161,4 +159,6 @@ nosave color swwm_mm_yourcolor = "80 ff 00"; server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; // self-explanatory -nosave int swwm_playtime = 0; // total playtime in seconds +nosave int swwm_playtime = 0; // total playtime in seconds +nosave string swwm_achievementstate = ""; // stores dictionary with all achievement states +nosave string swwm_achievementprogress = ""; // stores dictionary with all achievement progress diff --git a/decaldef.txt b/decaldef.txt index fe578c84a..5db06c8cb 100644 --- a/decaldef.txt +++ b/decaldef.txt @@ -570,5 +570,7 @@ decal HeartyGlow decal DemoSpray { pic DemoIcon + x-scale 0.25 + y-scale 0.25 solid } diff --git a/docimg/demolitionist_mp.png b/docimg/demolitionist_mp.png new file mode 100644 index 000000000..46748d2de Binary files /dev/null and b/docimg/demolitionist_mp.png differ diff --git a/docimg/logo.png b/docimg/logo.png index f41076870..1502470e2 100644 Binary files a/docimg/logo.png and b/docimg/logo.png differ diff --git a/filter/game-doom/cvarinfo.doomachievements b/filter/game-doom/cvarinfo.doomachievements deleted file mode 100644 index 762a47dd0..000000000 --- a/filter/game-doom/cvarinfo.doomachievements +++ /dev/null @@ -1,30 +0,0 @@ -// doom-exclusive achievements - -// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified) -nosave int swwm_achievement_allitems = 0; -nosave int swwm_achievement_allkills = 0; -nosave int swwm_achievement_allsecrets = 0; -nosave int swwm_achievement_barrel = 0; -nosave int swwm_achievement_barrier = 0; -nosave int swwm_achievement_baseball = 0; -nosave int swwm_achievement_blaze = 0; -nosave int swwm_achievement_cliffyb = 0; -nosave int swwm_achievement_cybully = 0; -nosave int swwm_achievement_doodle = 0; -nosave int swwm_achievement_keen = 0; -nosave int swwm_achievement_mbf = 0; -nosave int swwm_achievement_nice = 0; -nosave int swwm_achievement_onestanding = 0; -nosave int swwm_achievement_par = 0; -nosave int swwm_achievement_peace = 0; -nosave int swwm_achievement_trash = 0; -nosave int swwm_achievement_untouchable = 0; -nosave int swwm_achievement_yeet = 0; -// cross-session progress cvars -nosave int swwm_progress_allitems = 0; -nosave int swwm_progress_allkills = 0; -nosave int swwm_progress_allsecrets = 0; -nosave int swwm_progress_barrel = 0; -nosave int swwm_progress_barrier = 0; -nosave int swwm_progress_doodle = 0; -nosave int swwm_progress_par = 0; diff --git a/filter/game-heretic/cvarinfo.hereticachievements b/filter/game-heretic/cvarinfo.hereticachievements deleted file mode 100644 index 1627939dd..000000000 --- a/filter/game-heretic/cvarinfo.hereticachievements +++ /dev/null @@ -1,21 +0,0 @@ -// heretic-exclusive achievements - -// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified) -nosave int swwm_achievement_allitems = 0; -nosave int swwm_achievement_allkills = 0; -nosave int swwm_achievement_allsecrets = 0; -nosave int swwm_achievement_blaze = 0; -nosave int swwm_achievement_cliffyb = 0; -nosave int swwm_achievement_gravity = 0; -nosave int swwm_achievement_nice = 0; -nosave int swwm_achievement_onestanding = 0; -nosave int swwm_achievement_peace = 0; -nosave int swwm_achievement_sneaky = 0; -nosave int swwm_achievement_tornado = 0; -nosave int swwm_achievement_untouchable = 0; -// cross-session progress cvars -nosave int swwm_progress_allitems = 0; -nosave int swwm_progress_allkills = 0; -nosave int swwm_progress_allsecrets = 0; -nosave int swwm_progress_gravity = 0; -nosave int swwm_progress_sneaky = 0; diff --git a/filter/game-hexen/cvarinfo.hexenachievements b/filter/game-hexen/cvarinfo.hexenachievements deleted file mode 100644 index 170bd8b9c..000000000 --- a/filter/game-hexen/cvarinfo.hexenachievements +++ /dev/null @@ -1,10 +0,0 @@ -// hexen-exclusive achievements - -// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified) -nosave int swwm_achievement_gravity = 0; -nosave int swwm_achievement_kancho = 0; -nosave int swwm_achievement_puzzle = 0; -nosave int swwm_achievement_sneaky = 0; -// cross-session progress cvars -nosave int swwm_progress_gravity = 0; -nosave int swwm_progress_sneaky = 0; diff --git a/filter/game-raven/graphics/KBase/PFP_Demolitionist.png b/filter/game-raven/graphics/KBase/PFP_Demolitionist.png new file mode 100644 index 000000000..13dacbba9 Binary files /dev/null and b/filter/game-raven/graphics/KBase/PFP_Demolitionist.png differ diff --git a/fonts.wad b/fonts.wad index 4b1871f3a..ba4928907 100644 Binary files a/fonts.wad and b/fonts.wad differ diff --git a/gameinfo.txt b/gameinfo.txt index 7a6e05ed1..24848f5d5 100644 --- a/gameinfo.txt +++ b/gameinfo.txt @@ -1,5 +1,5 @@ STARTUPCOLORS = "FF FF FF", "80 40 FF" -STARTUPTITLE = "Some Weird Weapons Mod: GZDoom Edition" +STARTUPTITLE = "Codename: DEMOLITIONIST" STARTUPTYPE = "Hexen" STARTUPSONG = "music/H2I4D2E.XM" LOADWIDESCREEN = 1 diff --git a/gldefs.keys b/gldefs.keys index 90b44a8ac..fb5e3f9c2 100644 --- a/gldefs.keys +++ b/gldefs.keys @@ -99,6 +99,10 @@ Brightmap Texture "models/DoomYellowSkull.png" { map "models/DoomSkull_bright.png" } +Brightmap Texture "models/DoomPurpleSkull.png" +{ + map "models/DoomSkull_bright.png" +} HardwareShader Texture "models/DoomRedSkull.png" { Shader "shaders/glsl/Shinemask.fp" diff --git a/gldefs.misc b/gldefs.misc index 9960d0c44..c4a214b21 100644 --- a/gldefs.misc +++ b/gldefs.misc @@ -60,6 +60,112 @@ HardwareShader Texture "graphics/M_SWWM.png" Texture "Layer6" "graphics/M_SWWM_Layer6.png" Define "NO_BILINEAR" } +HardwareShader Texture "graphics/NewLogo.png" +{ + Shader "shaders/glsl/NewLogoAnimated.fp" + // what no 2d arrays does to a mf + Texture "Layer1" "graphics/NewLogo_Layer1.png" + Texture "Layer2" "graphics/NewLogo_Layer2.png" + Texture "Layer3" "graphics/NewLogo_Layer3.png" + Texture "gradtex" "graphics/NewLogo_Grad.png" + Texture "fadetex" "LOGOFADE" +} +HardwareShader Texture "graphics/M_DEMOLITIONIST.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/DemoIcon.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_DEEPIMPACT.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_EXPLOGUN.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_SPREADGUN.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_WALLBUSTER.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_EVISCERATOR.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_HELLBLAZER.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_BIOSPARK.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_SILVERBULLET.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_CANDYGUN.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_YNYKRON.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_PUSHER.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_DAB.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_DOUBLEV.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_HEALTH.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_LOVE.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_RAGEKIT.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_SANDWICH.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_SHELLS.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_SKULL.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_THONK.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/M_DEMOCHAN_THUMBUP.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/UnSXLogo.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} HardwareShader Sprite "MBRNB0" { Shader "shaders/glsl/Whew.fp" @@ -108,6 +214,58 @@ HardwareShader Texture "graphics/Fanart/Marisa7.jpg" { Shader "shaders/glsl/Bilinear.fp" } +HardwareShader Texture "graphics/Fanart/Marisa8.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa9.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa10.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa11.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa12.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa13.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa14.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa15.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Marisa16.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Monsoon.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Monsoon2.jpg" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Monsoon3.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} +HardwareShader Texture "graphics/Fanart/Monsoon4.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} HardwareShader Texture "graphics/Fanart/RedeadITA.png" { Shader "shaders/glsl/Oversample.fp" diff --git a/graphics/Achievements/AchievementDosh.png b/graphics/Achievements/AchievementDosh.png deleted file mode 100644 index c726fb809..000000000 Binary files a/graphics/Achievements/AchievementDosh.png and /dev/null differ diff --git a/graphics/Achievements/AchievementCheat.png b/graphics/Achievements/AchievementMatryoshka.png similarity index 100% rename from graphics/Achievements/AchievementCheat.png rename to graphics/Achievements/AchievementMatryoshka.png diff --git a/graphics/Achievements/BarAchievementBase.png b/graphics/Achievements/BarAchievementBase.png new file mode 100644 index 000000000..853422dc8 Binary files /dev/null and b/graphics/Achievements/BarAchievementBase.png differ diff --git a/graphics/Achievements/BarAchievementDone.png b/graphics/Achievements/BarAchievementDone.png new file mode 100644 index 000000000..7f0c6c57e Binary files /dev/null and b/graphics/Achievements/BarAchievementDone.png differ diff --git a/graphics/Achievements/BarAchievementProgress.png b/graphics/Achievements/BarAchievementProgress.png new file mode 100644 index 000000000..187340fe5 Binary files /dev/null and b/graphics/Achievements/BarAchievementProgress.png differ diff --git a/graphics/DemoIcon.png b/graphics/DemoIcon.png index 94297bc57..569e6a148 100644 Binary files a/graphics/DemoIcon.png and b/graphics/DemoIcon.png differ diff --git a/graphics/Fanart/Marisa10.jpg b/graphics/Fanart/Marisa10.jpg new file mode 100644 index 000000000..3b518b166 Binary files /dev/null and b/graphics/Fanart/Marisa10.jpg differ diff --git a/graphics/Fanart/Marisa11.jpg b/graphics/Fanart/Marisa11.jpg new file mode 100644 index 000000000..79158e341 Binary files /dev/null and b/graphics/Fanart/Marisa11.jpg differ diff --git a/graphics/Fanart/Marisa12.jpg b/graphics/Fanart/Marisa12.jpg new file mode 100644 index 000000000..6a5959648 Binary files /dev/null and b/graphics/Fanart/Marisa12.jpg differ diff --git a/graphics/Fanart/Marisa13.jpg b/graphics/Fanart/Marisa13.jpg new file mode 100644 index 000000000..a1cf45283 Binary files /dev/null and b/graphics/Fanart/Marisa13.jpg differ diff --git a/graphics/Fanart/Marisa14.jpg b/graphics/Fanart/Marisa14.jpg new file mode 100644 index 000000000..fe1e31e21 Binary files /dev/null and b/graphics/Fanart/Marisa14.jpg differ diff --git a/graphics/Fanart/Marisa15.jpg b/graphics/Fanart/Marisa15.jpg new file mode 100644 index 000000000..8d7d2e503 Binary files /dev/null and b/graphics/Fanart/Marisa15.jpg differ diff --git a/graphics/Fanart/Marisa16.jpg b/graphics/Fanart/Marisa16.jpg new file mode 100644 index 000000000..a1ce76f0d Binary files /dev/null and b/graphics/Fanart/Marisa16.jpg differ diff --git a/graphics/Fanart/Marisa8.jpg b/graphics/Fanart/Marisa8.jpg new file mode 100644 index 000000000..fdea42e4d Binary files /dev/null and b/graphics/Fanart/Marisa8.jpg differ diff --git a/graphics/Fanart/Marisa9.jpg b/graphics/Fanart/Marisa9.jpg new file mode 100644 index 000000000..b58e0a09f Binary files /dev/null and b/graphics/Fanart/Marisa9.jpg differ diff --git a/graphics/Fanart/Monsoon.jpg b/graphics/Fanart/Monsoon.jpg new file mode 100644 index 000000000..1e8f06a5a Binary files /dev/null and b/graphics/Fanart/Monsoon.jpg differ diff --git a/graphics/Fanart/Monsoon2.jpg b/graphics/Fanart/Monsoon2.jpg new file mode 100644 index 000000000..b680479e4 Binary files /dev/null and b/graphics/Fanart/Monsoon2.jpg differ diff --git a/graphics/Fanart/Monsoon3.png b/graphics/Fanart/Monsoon3.png new file mode 100644 index 000000000..e90c1457f Binary files /dev/null and b/graphics/Fanart/Monsoon3.png differ diff --git a/graphics/Fanart/Monsoon4.png b/graphics/Fanart/Monsoon4.png new file mode 100644 index 000000000..2074fa5cc Binary files /dev/null and b/graphics/Fanart/Monsoon4.png differ diff --git a/graphics/HUD/ChatBoxTop.png b/graphics/HUD/ChatBoxTop.png index 963ba861c..dc6cbc3e2 100644 Binary files a/graphics/HUD/ChatBoxTop.png and b/graphics/HUD/ChatBoxTop.png differ diff --git a/graphics/HUD/ChatBoxTop_Smol.png b/graphics/HUD/ChatBoxTop_Smol.png index 1c1e32453..08ec5867f 100644 Binary files a/graphics/HUD/ChatBoxTop_Smol.png and b/graphics/HUD/ChatBoxTop_Smol.png differ diff --git a/graphics/HUD/Icons/A_CandyBullet.png b/graphics/HUD/Icons/A_CandyBullet.png index c8e1f590b..8003a594d 100644 Binary files a/graphics/HUD/Icons/A_CandyBullet.png and b/graphics/HUD/Icons/A_CandyBullet.png differ diff --git a/graphics/HUD/Icons/A_DarkAmmo.png b/graphics/HUD/Icons/A_DarkAmmo.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/A_DarkAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_EMPCore.png b/graphics/HUD/Icons/A_EMPCore.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/A_EMPCore.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_GrandAmmo.png b/graphics/HUD/Icons/A_GrandAmmo.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/A_GrandAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_GrandSpear.png b/graphics/HUD/Icons/A_GrandSpear.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/A_GrandSpear.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_MRAmmo.png b/graphics/HUD/Icons/A_MRAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_MRAmmo.png and b/graphics/HUD/Icons/A_MRAmmo.png differ diff --git a/graphics/HUD/Icons/A_MRGrenade.png b/graphics/HUD/Icons/A_MRGrenade.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_MRGrenade.png and b/graphics/HUD/Icons/A_MRGrenade.png differ diff --git a/graphics/HUD/Icons/A_MRRound.png b/graphics/HUD/Icons/A_MRRound.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_MRRound.png and b/graphics/HUD/Icons/A_MRRound.png differ diff --git a/graphics/HUD/Icons/A_QuadAmmo.png b/graphics/HUD/Icons/A_QuadAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_QuadAmmo.png and b/graphics/HUD/Icons/A_QuadAmmo.png differ diff --git a/graphics/HUD/Icons/A_RayAmmo.png b/graphics/HUD/Icons/A_RayAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_RayAmmo.png and b/graphics/HUD/Icons/A_RayAmmo.png differ diff --git a/graphics/HUD/Icons/A_RayBattery.png b/graphics/HUD/Icons/A_RayBattery.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_RayBattery.png and b/graphics/HUD/Icons/A_RayBattery.png differ diff --git a/graphics/HUD/Icons/A_RayBolt.png b/graphics/HUD/Icons/A_RayBolt.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_RayBolt.png and b/graphics/HUD/Icons/A_RayBolt.png differ diff --git a/graphics/HUD/Icons/A_SMW05Ammo.png b/graphics/HUD/Icons/A_SMW05Ammo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_SMW05Ammo.png and b/graphics/HUD/Icons/A_SMW05Ammo.png differ diff --git a/graphics/HUD/Icons/A_SheenAmmo.png b/graphics/HUD/Icons/A_SheenAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_SheenAmmo.png and b/graphics/HUD/Icons/A_SheenAmmo.png differ diff --git a/graphics/HUD/Icons/A_SilverBullet2.png b/graphics/HUD/Icons/A_SilverBullet2.png index 4597d055d..fe8df615e 100644 Binary files a/graphics/HUD/Icons/A_SilverBullet2.png and b/graphics/HUD/Icons/A_SilverBullet2.png differ diff --git a/graphics/HUD/Icons/A_SilverBulletBullet.png b/graphics/HUD/Icons/A_SilverBulletBullet.png index dff86ef16..6dfdf28d6 100644 Binary files a/graphics/HUD/Icons/A_SilverBulletBullet.png and b/graphics/HUD/Icons/A_SilverBulletBullet.png differ diff --git a/graphics/HUD/Icons/A_SilverBulletBullet2.png b/graphics/HUD/Icons/A_SilverBulletBullet2.png index 588f26316..ded4f8264 100644 Binary files a/graphics/HUD/Icons/A_SilverBulletBullet2.png and b/graphics/HUD/Icons/A_SilverBulletBullet2.png differ diff --git a/graphics/HUD/Icons/A_SparkBAmmo.png b/graphics/HUD/Icons/A_SparkBAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_SparkBAmmo.png and b/graphics/HUD/Icons/A_SparkBAmmo.png differ diff --git a/graphics/HUD/Icons/A_SparkRAmmo.png b/graphics/HUD/Icons/A_SparkRAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_SparkRAmmo.png and b/graphics/HUD/Icons/A_SparkRAmmo.png differ diff --git a/graphics/HUD/Icons/A_UltimateAmmo.png b/graphics/HUD/Icons/A_UltimateAmmo.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_UltimateAmmo.png and b/graphics/HUD/Icons/A_UltimateAmmo.png differ diff --git a/graphics/HUD/Icons/A_UltimatePod.png b/graphics/HUD/Icons/A_UltimatePod.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/A_UltimatePod.png and b/graphics/HUD/Icons/A_UltimatePod.png differ diff --git a/graphics/HUD/Icons/W_Blackfire.png b/graphics/HUD/Icons/W_Blackfire.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/W_Blackfire.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_EMPCarbine.png b/graphics/HUD/Icons/W_EMPCarbine.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/W_EMPCarbine.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_ExplodiumGun2.png b/graphics/HUD/Icons/W_ExplodiumGun2.png index 673b16cef..3c4380d55 100644 Binary files a/graphics/HUD/Icons/W_ExplodiumGun2.png and b/graphics/HUD/Icons/W_ExplodiumGun2.png differ diff --git a/graphics/HUD/Icons/W_FistGun.png b/graphics/HUD/Icons/W_FistGun.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/W_FistGun.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_GrandLance.png b/graphics/HUD/Icons/W_GrandLance.png deleted file mode 100644 index 7b43c4c2f..000000000 Binary files a/graphics/HUD/Icons/W_GrandLance.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_ItamexHammer.png b/graphics/HUD/Icons/W_ItamexHammer.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_ItamexHammer.png and b/graphics/HUD/Icons/W_ItamexHammer.png differ diff --git a/graphics/HUD/Icons/W_MortalRifle.png b/graphics/HUD/Icons/W_MortalRifle.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_MortalRifle.png and b/graphics/HUD/Icons/W_MortalRifle.png differ diff --git a/graphics/HUD/Icons/W_NewSparkster.png b/graphics/HUD/Icons/W_NewSparkster.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_NewSparkster.png and b/graphics/HUD/Icons/W_NewSparkster.png differ diff --git a/graphics/HUD/Icons/W_PlasmaBlast.png b/graphics/HUD/Icons/W_PlasmaBlast.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_PlasmaBlast.png and b/graphics/HUD/Icons/W_PlasmaBlast.png differ diff --git a/graphics/HUD/Icons/W_PlasmaBlast2.png b/graphics/HUD/Icons/W_PlasmaBlast2.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_PlasmaBlast2.png and b/graphics/HUD/Icons/W_PlasmaBlast2.png differ diff --git a/graphics/HUD/Icons/W_PuntzerBeta.png b/graphics/HUD/Icons/W_PuntzerBeta.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_PuntzerBeta.png and b/graphics/HUD/Icons/W_PuntzerBeta.png differ diff --git a/graphics/HUD/Icons/W_PuntzerGamma.png b/graphics/HUD/Icons/W_PuntzerGamma.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_PuntzerGamma.png and b/graphics/HUD/Icons/W_PuntzerGamma.png differ diff --git a/graphics/HUD/Icons/W_Quadravol.png b/graphics/HUD/Icons/W_Quadravol.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_Quadravol.png and b/graphics/HUD/Icons/W_Quadravol.png differ diff --git a/graphics/HUD/Icons/W_RafanKos.png b/graphics/HUD/Icons/W_RafanKos.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_RafanKos.png and b/graphics/HUD/Icons/W_RafanKos.png differ diff --git a/graphics/HUD/Icons/W_RayKhom.png b/graphics/HUD/Icons/W_RayKhom.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_RayKhom.png and b/graphics/HUD/Icons/W_RayKhom.png differ diff --git a/graphics/HUD/Icons/W_SheenHMG.png b/graphics/HUD/Icons/W_SheenHMG.png index 7b43c4c2f..b516b82d2 100644 Binary files a/graphics/HUD/Icons/W_SheenHMG.png and b/graphics/HUD/Icons/W_SheenHMG.png differ diff --git a/graphics/KBase/FrameTex.png b/graphics/KBase/FrameTex.png new file mode 100644 index 000000000..79a975e64 Binary files /dev/null and b/graphics/KBase/FrameTex.png differ diff --git a/graphics/KBase/HSepTex.png b/graphics/KBase/HSepTex.png new file mode 100644 index 000000000..d7f1095b4 Binary files /dev/null and b/graphics/KBase/HSepTex.png differ diff --git a/graphics/KBase/LibraryTabSeparator.png b/graphics/KBase/LibraryTabSeparator.png deleted file mode 100644 index 614fc728e..000000000 Binary files a/graphics/KBase/LibraryTabSeparator.png and /dev/null differ diff --git a/graphics/KBase/LibraryTabSeparatorJP.png b/graphics/KBase/LibraryTabSeparatorJP.png deleted file mode 100644 index be0670830..000000000 Binary files a/graphics/KBase/LibraryTabSeparatorJP.png and /dev/null differ diff --git a/graphics/KBase/MainWindow.png b/graphics/KBase/MainWindow.png deleted file mode 100644 index acea0d714..000000000 Binary files a/graphics/KBase/MainWindow.png and /dev/null differ diff --git a/graphics/KBase/PFP_Ashley.png b/graphics/KBase/PFP_Ashley.png new file mode 100644 index 000000000..425e3c0b9 Binary files /dev/null and b/graphics/KBase/PFP_Ashley.png differ diff --git a/graphics/KBase/PFP_Bigshot.png b/graphics/KBase/PFP_Bigshot.png new file mode 100644 index 000000000..8c600d624 Binary files /dev/null and b/graphics/KBase/PFP_Bigshot.png differ diff --git a/graphics/KBase/PFP_Cytho.png b/graphics/KBase/PFP_Cytho.png new file mode 100644 index 000000000..29a110a88 Binary files /dev/null and b/graphics/KBase/PFP_Cytho.png differ diff --git a/graphics/KBase/PFP_Demolitionist.png b/graphics/KBase/PFP_Demolitionist.png new file mode 100644 index 000000000..47a19c4af Binary files /dev/null and b/graphics/KBase/PFP_Demolitionist.png differ diff --git a/graphics/KBase/PFP_Ellen.png b/graphics/KBase/PFP_Ellen.png new file mode 100644 index 000000000..d09b2036b Binary files /dev/null and b/graphics/KBase/PFP_Ellen.png differ diff --git a/graphics/KBase/PFP_Ibuki.png b/graphics/KBase/PFP_Ibuki.png new file mode 100644 index 000000000..76b50f3e5 Binary files /dev/null and b/graphics/KBase/PFP_Ibuki.png differ diff --git a/graphics/KBase/PFP_Kirin.png b/graphics/KBase/PFP_Kirin.png new file mode 100644 index 000000000..d250999e0 Binary files /dev/null and b/graphics/KBase/PFP_Kirin.png differ diff --git a/graphics/KBase/PFP_Kmonn.png b/graphics/KBase/PFP_Kmonn.png new file mode 100644 index 000000000..6253f687d Binary files /dev/null and b/graphics/KBase/PFP_Kmonn.png differ diff --git a/graphics/KBase/PFP_Locke.png b/graphics/KBase/PFP_Locke.png new file mode 100644 index 000000000..d3710be34 Binary files /dev/null and b/graphics/KBase/PFP_Locke.png differ diff --git a/graphics/KBase/PFP_Maidbot.png b/graphics/KBase/PFP_Maidbot.png new file mode 100644 index 000000000..9d15fbfd3 Binary files /dev/null and b/graphics/KBase/PFP_Maidbot.png differ diff --git a/graphics/KBase/PFP_Nana.png b/graphics/KBase/PFP_Nana.png new file mode 100644 index 000000000..088c63ccc Binary files /dev/null and b/graphics/KBase/PFP_Nana.png differ diff --git a/graphics/KBase/PFP_Ryuji.png b/graphics/KBase/PFP_Ryuji.png new file mode 100644 index 000000000..5fa4547e1 Binary files /dev/null and b/graphics/KBase/PFP_Ryuji.png differ diff --git a/graphics/KBase/PFP_Saya.png b/graphics/KBase/PFP_Saya.png new file mode 100644 index 000000000..6640007b4 Binary files /dev/null and b/graphics/KBase/PFP_Saya.png differ diff --git a/graphics/KBase/PFP_Taro.png b/graphics/KBase/PFP_Taro.png new file mode 100644 index 000000000..cd5fe629b Binary files /dev/null and b/graphics/KBase/PFP_Taro.png differ diff --git a/graphics/KBase/PFP_Unissix.png b/graphics/KBase/PFP_Unissix.png new file mode 100644 index 000000000..b9faab43e Binary files /dev/null and b/graphics/KBase/PFP_Unissix.png differ diff --git a/graphics/KBase/PFP_Yui.png b/graphics/KBase/PFP_Yui.png new file mode 100644 index 000000000..ca40a884a Binary files /dev/null and b/graphics/KBase/PFP_Yui.png differ diff --git a/graphics/KBase/PFP_Zanaveth2.png b/graphics/KBase/PFP_Zanaveth2.png new file mode 100644 index 000000000..a0bdf04e3 Binary files /dev/null and b/graphics/KBase/PFP_Zanaveth2.png differ diff --git a/graphics/KBase/PFP_Zanaveth3.png b/graphics/KBase/PFP_Zanaveth3.png new file mode 100644 index 000000000..bcf4046b0 Binary files /dev/null and b/graphics/KBase/PFP_Zanaveth3.png differ diff --git a/graphics/KBase/TabSeparator.png b/graphics/KBase/TabSeparator.png deleted file mode 100644 index b22e21515..000000000 Binary files a/graphics/KBase/TabSeparator.png and /dev/null differ diff --git a/graphics/KBase/VSepTex.png b/graphics/KBase/VSepTex.png new file mode 100644 index 000000000..aa8fcc3fa Binary files /dev/null and b/graphics/KBase/VSepTex.png differ diff --git a/graphics/KBase/WindowSeparator.png b/graphics/KBase/WindowSeparator.png deleted file mode 100644 index 295b8cbab..000000000 Binary files a/graphics/KBase/WindowSeparator.png and /dev/null differ diff --git a/graphics/KBase/WindowSeparatorH.png b/graphics/KBase/WindowSeparatorH.png deleted file mode 100644 index 76c433582..000000000 Binary files a/graphics/KBase/WindowSeparatorH.png and /dev/null differ diff --git a/graphics/M_DEMOCHAN_BIOSPARK.png b/graphics/M_DEMOCHAN_BIOSPARK.png new file mode 100644 index 000000000..19180f59e Binary files /dev/null and b/graphics/M_DEMOCHAN_BIOSPARK.png differ diff --git a/graphics/M_DEMOCHAN_CANDYGUN.png b/graphics/M_DEMOCHAN_CANDYGUN.png new file mode 100644 index 000000000..1b7e2e757 Binary files /dev/null and b/graphics/M_DEMOCHAN_CANDYGUN.png differ diff --git a/graphics/M_DEMOCHAN_DAB.png b/graphics/M_DEMOCHAN_DAB.png new file mode 100644 index 000000000..ee4194464 Binary files /dev/null and b/graphics/M_DEMOCHAN_DAB.png differ diff --git a/graphics/M_DEMOCHAN_DEEPIMPACT.png b/graphics/M_DEMOCHAN_DEEPIMPACT.png new file mode 100644 index 000000000..a235c0ce9 Binary files /dev/null and b/graphics/M_DEMOCHAN_DEEPIMPACT.png differ diff --git a/graphics/M_DEMOCHAN_DOUBLEV.png b/graphics/M_DEMOCHAN_DOUBLEV.png new file mode 100644 index 000000000..dff26ef2f Binary files /dev/null and b/graphics/M_DEMOCHAN_DOUBLEV.png differ diff --git a/graphics/M_DEMOCHAN_EVISCERATOR.png b/graphics/M_DEMOCHAN_EVISCERATOR.png new file mode 100644 index 000000000..122837a26 Binary files /dev/null and b/graphics/M_DEMOCHAN_EVISCERATOR.png differ diff --git a/graphics/M_DEMOCHAN_EXPLOGUN.png b/graphics/M_DEMOCHAN_EXPLOGUN.png new file mode 100644 index 000000000..96785cf5f Binary files /dev/null and b/graphics/M_DEMOCHAN_EXPLOGUN.png differ diff --git a/graphics/M_DEMOCHAN_HEALTH.png b/graphics/M_DEMOCHAN_HEALTH.png new file mode 100644 index 000000000..d47ab5e2b Binary files /dev/null and b/graphics/M_DEMOCHAN_HEALTH.png differ diff --git a/graphics/M_DEMOCHAN_HELLBLAZER.png b/graphics/M_DEMOCHAN_HELLBLAZER.png new file mode 100644 index 000000000..c0eaef577 Binary files /dev/null and b/graphics/M_DEMOCHAN_HELLBLAZER.png differ diff --git a/graphics/M_DEMOCHAN_LOVE.png b/graphics/M_DEMOCHAN_LOVE.png new file mode 100644 index 000000000..c27ab00ce Binary files /dev/null and b/graphics/M_DEMOCHAN_LOVE.png differ diff --git a/graphics/M_DEMOCHAN_PUSHER.png b/graphics/M_DEMOCHAN_PUSHER.png new file mode 100644 index 000000000..80f5c3cf7 Binary files /dev/null and b/graphics/M_DEMOCHAN_PUSHER.png differ diff --git a/graphics/M_DEMOCHAN_RAGEKIT.png b/graphics/M_DEMOCHAN_RAGEKIT.png new file mode 100644 index 000000000..0b9ab6087 Binary files /dev/null and b/graphics/M_DEMOCHAN_RAGEKIT.png differ diff --git a/graphics/M_DEMOCHAN_SANDWICH.png b/graphics/M_DEMOCHAN_SANDWICH.png new file mode 100644 index 000000000..ab493fe14 Binary files /dev/null and b/graphics/M_DEMOCHAN_SANDWICH.png differ diff --git a/graphics/M_DEMOCHAN_SHELLS.png b/graphics/M_DEMOCHAN_SHELLS.png new file mode 100644 index 000000000..ccc052d7b Binary files /dev/null and b/graphics/M_DEMOCHAN_SHELLS.png differ diff --git a/graphics/M_DEMOCHAN_SILVERBULLET.png b/graphics/M_DEMOCHAN_SILVERBULLET.png new file mode 100644 index 000000000..b954e550f Binary files /dev/null and b/graphics/M_DEMOCHAN_SILVERBULLET.png differ diff --git a/graphics/M_DEMOCHAN_SKULL.png b/graphics/M_DEMOCHAN_SKULL.png new file mode 100644 index 000000000..79e9798ea Binary files /dev/null and b/graphics/M_DEMOCHAN_SKULL.png differ diff --git a/graphics/M_DEMOCHAN_SPREADGUN.png b/graphics/M_DEMOCHAN_SPREADGUN.png new file mode 100644 index 000000000..235ad2bc7 Binary files /dev/null and b/graphics/M_DEMOCHAN_SPREADGUN.png differ diff --git a/graphics/M_DEMOCHAN_THONK.png b/graphics/M_DEMOCHAN_THONK.png new file mode 100644 index 000000000..d13021f71 Binary files /dev/null and b/graphics/M_DEMOCHAN_THONK.png differ diff --git a/graphics/M_DEMOCHAN_THUMBUP.png b/graphics/M_DEMOCHAN_THUMBUP.png new file mode 100644 index 000000000..8c06766a0 Binary files /dev/null and b/graphics/M_DEMOCHAN_THUMBUP.png differ diff --git a/graphics/M_DEMOCHAN_WALLBUSTER.png b/graphics/M_DEMOCHAN_WALLBUSTER.png new file mode 100644 index 000000000..da2839e95 Binary files /dev/null and b/graphics/M_DEMOCHAN_WALLBUSTER.png differ diff --git a/graphics/M_DEMOCHAN_YNYKRON.png b/graphics/M_DEMOCHAN_YNYKRON.png new file mode 100644 index 000000000..3c2151d3d Binary files /dev/null and b/graphics/M_DEMOCHAN_YNYKRON.png differ diff --git a/graphics/M_DEMOLITIONIST.png b/graphics/M_DEMOLITIONIST.png new file mode 100644 index 000000000..b9f3a1723 Binary files /dev/null and b/graphics/M_DEMOLITIONIST.png differ diff --git a/graphics/M_GRAD.png b/graphics/M_GRAD.png new file mode 100644 index 000000000..1793e8453 Binary files /dev/null and b/graphics/M_GRAD.png differ diff --git a/graphics/NewLogo.png b/graphics/NewLogo.png new file mode 100644 index 000000000..26e519b0d Binary files /dev/null and b/graphics/NewLogo.png differ diff --git a/graphics/NewLogo_Grad.png b/graphics/NewLogo_Grad.png new file mode 100644 index 000000000..ab24d4aae Binary files /dev/null and b/graphics/NewLogo_Grad.png differ diff --git a/graphics/NewLogo_Layer1.png b/graphics/NewLogo_Layer1.png new file mode 100644 index 000000000..8e54d66db Binary files /dev/null and b/graphics/NewLogo_Layer1.png differ diff --git a/graphics/NewLogo_Layer2.png b/graphics/NewLogo_Layer2.png new file mode 100644 index 000000000..e40010ac2 Binary files /dev/null and b/graphics/NewLogo_Layer2.png differ diff --git a/graphics/NewLogo_Layer3.png b/graphics/NewLogo_Layer3.png new file mode 100644 index 000000000..f6a3bf37a Binary files /dev/null and b/graphics/NewLogo_Layer3.png differ diff --git a/graphics/NewLogo_Letter0.png b/graphics/NewLogo_Letter0.png new file mode 100644 index 000000000..1ebffda96 Binary files /dev/null and b/graphics/NewLogo_Letter0.png differ diff --git a/graphics/NewLogo_Letter1.png b/graphics/NewLogo_Letter1.png new file mode 100644 index 000000000..05cb28140 Binary files /dev/null and b/graphics/NewLogo_Letter1.png differ diff --git a/graphics/NewLogo_Letter10.png b/graphics/NewLogo_Letter10.png new file mode 100644 index 000000000..a6b3fb34b Binary files /dev/null and b/graphics/NewLogo_Letter10.png differ diff --git a/graphics/NewLogo_Letter11.png b/graphics/NewLogo_Letter11.png new file mode 100644 index 000000000..2367c1676 Binary files /dev/null and b/graphics/NewLogo_Letter11.png differ diff --git a/graphics/NewLogo_Letter12.png b/graphics/NewLogo_Letter12.png new file mode 100644 index 000000000..b82e01b0e Binary files /dev/null and b/graphics/NewLogo_Letter12.png differ diff --git a/graphics/NewLogo_Letter2.png b/graphics/NewLogo_Letter2.png new file mode 100644 index 000000000..d34de4b4b Binary files /dev/null and b/graphics/NewLogo_Letter2.png differ diff --git a/graphics/NewLogo_Letter3.png b/graphics/NewLogo_Letter3.png new file mode 100644 index 000000000..c7d6842cc Binary files /dev/null and b/graphics/NewLogo_Letter3.png differ diff --git a/graphics/NewLogo_Letter4.png b/graphics/NewLogo_Letter4.png new file mode 100644 index 000000000..89eab4ef8 Binary files /dev/null and b/graphics/NewLogo_Letter4.png differ diff --git a/graphics/NewLogo_Letter5.png b/graphics/NewLogo_Letter5.png new file mode 100644 index 000000000..dfab5f003 Binary files /dev/null and b/graphics/NewLogo_Letter5.png differ diff --git a/graphics/NewLogo_Letter6.png b/graphics/NewLogo_Letter6.png new file mode 100644 index 000000000..4d411999e Binary files /dev/null and b/graphics/NewLogo_Letter6.png differ diff --git a/graphics/NewLogo_Letter7.png b/graphics/NewLogo_Letter7.png new file mode 100644 index 000000000..e3a2d69a9 Binary files /dev/null and b/graphics/NewLogo_Letter7.png differ diff --git a/graphics/NewLogo_Letter8.png b/graphics/NewLogo_Letter8.png new file mode 100644 index 000000000..65af7caea Binary files /dev/null and b/graphics/NewLogo_Letter8.png differ diff --git a/graphics/NewLogo_Letter9.png b/graphics/NewLogo_Letter9.png new file mode 100644 index 000000000..86dcd2692 Binary files /dev/null and b/graphics/NewLogo_Letter9.png differ diff --git a/graphics/bord_bl.png b/graphics/bord_bl.png index ce41492fc..40360f20c 100644 Binary files a/graphics/bord_bl.png and b/graphics/bord_bl.png differ diff --git a/graphics/bord_tr.png b/graphics/bord_tr.png index 8a2ed1dc1..68e3fc65d 100644 Binary files a/graphics/bord_tr.png and b/graphics/bord_tr.png differ diff --git a/graphics/swwmback.png b/graphics/swwmback.png index 573538768..e173f3f8d 100644 Binary files a/graphics/swwmback.png and b/graphics/swwmback.png differ diff --git a/graphics/swwmpause.png b/graphics/swwmpause.png deleted file mode 100644 index 58c76b731..000000000 Binary files a/graphics/swwmpause.png and /dev/null differ diff --git a/language.def_base b/language.def_base index 254518ac6..07c2f86f6 100644 --- a/language.def_base +++ b/language.def_base @@ -33,15 +33,10 @@ T_SHEENHMG = "Sheen HMG"; I_SHEENHMG = "\"Sheen\" Heavy Machine Gun"; T_QUADRAVOL = "Quadravol"; I_QUADRAVOL = "\"Quadravol\" Fireball Launcher"; -T_BLACKFIRE = "Blackfire Igniter"; -T_EMPCARBINE = "Rail Carbine"; -I_EMPCARBINE = "EMP Rail Carbine"; -T_RAYKHOM = "Ray-Khom"; -T_GRANDLANCE = "Grand Lance"; -T_FISTGUN = "Hand of Divine"; T_NEWSPARKSTER = "Sparkster Rifle"; I_NEWSPARKSTER = "Series x3 Sparkster Rifle"; T_MORTALRIFLE = "Mortal Rifle"; +T_RAYKHOM = "Ray-Khom"; T_RAFANKOS = "Rafan-Kos"; T_REDSHELL = "Shell"; T_REDSHELLS = "Shells"; @@ -101,20 +96,6 @@ T_SHEENBULLET = "14.5x114mm MT Bullet"; T_SHEENBULLETS = "14.5x114mm MT Bullets"; T_QUADAMMO = "Quadravol Cell"; T_QUADAMMOS = "Quadravol Cells"; -T_DARKAMMO = "Blackfire Canister"; -T_DARKAMMOS = "Blackfire Canisters"; -T_EMPCORE = "Dysedum Rod"; -T_EMPCORES = "Dysedum Rods"; -T_RAYBOLT = "Ray-Khom Bolt"; -T_RAYBOLTS = "Ray-Khom Bolts"; -T_RAYAMMO = "Ray-Khom Magazine"; -T_RAYAMMOS = "Ray-Khom Magazines"; -T_RAYBATTERY = "Ray-Khom Battery"; -T_RAYBATTERYS = "Ray-Khom Batteries"; -T_GRANDSPEAR = "Grand Lance Spear"; -T_GRANDSPEARS = "Grand Lance Spears"; -T_GRANDAMMO = "Grand Lance Magazine"; -T_GRANDAMMOS = "Grand Lance Magazines"; T_SPARKBCELL = "Kinylum Cell"; T_SPARKBCELLS = "Kinylum Cells"; T_SPARKRCELL = "Nokron Cell"; @@ -125,6 +106,12 @@ T_MRAMMO = "Mortal Magazine"; T_MRAMMOS = "Mortal Magazines"; T_MRGRENADE = "Mortal Grenade"; T_MRGRENADES = "Mortal Grenades"; +T_RAYBOLT = "Ray-Khom Bolt"; +T_RAYBOLTS = "Ray-Khom Bolts"; +T_RAYAMMO = "Ray-Khom Magazine"; +T_RAYAMMOS = "Ray-Khom Magazines"; +T_RAYBATTERY = "Ray-Khom Battery"; +T_RAYBATTERYS = "Ray-Khom Batteries"; T_ULTIMATEPOD = "Rafan-Kos Pod"; T_ULTIMATEPODS = "Rafan-Kos Pods"; T_ULTIMATEAMMO = "Rafan-Kos Magazine"; @@ -173,14 +160,7 @@ T_MILKBREAD = "Akkouxhei Milk Bread"; T_KIRINMANGA = "Saya Miyamoto - I Married A Cherry Boy Emperor But It Turns Out He's Really Cute In Lingerie?!"; T_KIRINPLUSH = "Emperor Kirin Plush"; T_MOTHPLUSH = "Mashiro Plush"; -T_AA12 = "Auto Assault-12 Replica"; -T_HEGE = "Hege Cactus"; -T_HOAGIE = "Hoagie"; -T_IBUKIMILK = "Akari Labs All-Natural Red Oni Milk"; -T_BRCALBUM = "Black Rat's Coven - Counter-Inquisition"; -T_MANAROKOU = "Manarock"; -T_LITHIUM = "Lithium - Volume One"; -T_PSYKKONOVEXX = "Psykkonovexx"; +T_SAYASMUG = "Saya's Coffee Mug"; // colored tags for keys T_REDCARD = "\cgRed Keycard\c-"; T_BLUECARD = "\chBlue Keycard\c-"; @@ -221,7 +201,7 @@ TXT_DEFAULTPICKUPMSG = "Unidentified Item"; QUITMSG = "You really want to go?\nWhat a shame..."; QUITMSG1 = "Wow, don't just go and leave!\nThere's still a lot of stuff to do!"; QUITMSG2 = "Oh, you're going now?\nWell, see you around, then."; -QUITMSG3 = "Thanks for playing \cySWWM GZ\c-.\nI hope to see you again soon."; +QUITMSG3 = "Thank you for playing.\nI hope to see you again soon."; QUITMSG4 = ""; QUITMSG5 = "Ah, fun time is over, I guess..."; QUITMSG6 = "My love for you is like a truck.\n\cg!!BERSERKER!!\c-"; @@ -241,9 +221,9 @@ QUITMSG19 = "World hard and cold,\ntiddy soft and warm."; // startup (don't localize) STARTUP1 = "\n" -" \ck★\cf∼\c- \cvDemo-chan says\c- \cf∼\ck★\c-\n" +" \ck★\cf~\c- \cvDemo-chan says\c- \cf~\ck★\c-\n" "\n" -" \ck★\cf∼\c- \cvTERFs can fuck off\c- \cf∼\ck★\c-\n" +" \ck★\cf~\c- \cvTERFs can fuck off\c- \cf~\ck★\c-\n" "\n"; STARTUP2 = ""; STARTUP3 = ""; @@ -347,12 +327,13 @@ FN_MANCU_FUN2 = "Lard Lad"; FN_MANCU_FUN3 = "Fatass"; FN_MANCU_FUN4 = "Hump Yo Mom"; FN_MANCU_FUN5 = "Fat Bastard"; -FN_ARCH_FUNN = "5"; +FN_ARCH_FUNN = "6"; FN_ARCH_FUN1 = "1000 Points Off"; FN_ARCH_FUN2 = "Lanky Martian"; FN_ARCH_FUN3 = "Pls No"; FN_ARCH_FUN4 = "Fuck You"; FN_ARCH_FUN5 = "Your Day Has Been Ruined"; +FN_ARCH_FUN6 = "Flaming Hot Cheeks"; FN_SPIDER_FUNN = "5"; FN_SPIDER_FUN1 = "Mama Spooder"; FN_SPIDER_FUN2 = "Big Momma"; @@ -460,6 +441,7 @@ FN_BOSSBRAIN_FUN = "YOU WERE EXPECTING JOHN ROMERO BUT IT WAS ME, MARISA!"; FN_KEEN = "Commander Keen"; FN_KEEN_FUN = "Ruined by Bethesda"; FN_VOODOO = "Voodoo doll of %s"; +FN_VOODOO_NP = "Voodoo doll"; FN_PIG = "Pig"; FN_PIG_FUN = "Porker"; FN_WOLFGUARD = "Guard"; @@ -531,18 +513,11 @@ O_PUNTZERGAMMA = "%k drilled several holes through %o."; O_SHEENHMG = "%k drowned %o in bullets."; O_QUADRAVOL = "%k made delicious barbecue out of %o."; O_QUADRAVOL2 = "%o was gravely roasted by %k."; -O_BLACKFIRE = "%k turned %o into a popsicle."; -O_BLACKFIRE2 = "%o was very coldly impaled by %k."; -O_EMPCARBINE = "%o was quite shocked by %k's lightning powers."; -O_RAYKHOM = "%o received an express delivery of deadly plasma from %k."; -O_RAYKHOM2 = "%o witnessed %k's UNLIMITED POWER."; -O_GRANDLANCE = "%o was torn asunder by %k's Grand Lance."; -O_GRANDLANCE2 = "%k showed %o how efficient nuclear fusion is."; -O_FISTGUN = "%o ate %k's divine knuckle sandwich."; -O_FISTGUN2 = "%k delivered a divine bitchslap upon %o."; O_NEWSPARKSTER = "%o witnessed the might of %k's plasma artillery."; O_MORTALRIFLE = "%k killed %o very dead."; O_MORTALRIFLEALT = "%o caught a very deadly grenade from %k."; +O_RAYKHOM = "%o received an express delivery of deadly plasma from %k."; +O_RAYKHOM2 = "%o witnessed %k's UNLIMITED POWER."; O_RAFANKOS = "%o stood no chance against %k's ultimate weapon."; O_POUND = "%o was very impressed by %k's landing."; O_DASH = "%o was discombobulated by a very fast moving %k."; @@ -574,7 +549,7 @@ OB_SPLASH = "%o got a bit too close there."; OB_R_SPLASH = "%o did an Icarus."; OB_ROCKET = "%o ate a rocket."; OB_KILLEDSELF = "%o self-destructed."; -OB_VOODOO = "%o violated the laws of causality."; +OB_VOODOO = "%o shouldn't have touched that doll."; OB_MPTELEFRAG = "%k overwrote %o."; OB_MONTELEFRAG = "%o was overwritten."; OB_DEFAULT = "%o is ded."; @@ -686,36 +661,56 @@ D_TETHERFAIL = "The Safety Tether link was obstructed."; D_MASHIRO = "\cjShe knows where you are...\c-"; SWWM_YNYKRONREADY = "Ynykron Artifact ready for firing."; SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap \cf%s\cj for \cf%s\cj.\c-"; +SWWM_TITLEPRESENTSA = "UnSX Team"; +SWWM_TITLEPRESENTSB = "presents"; SWWM_TITLEPRESENTS = "presents"; +SWWM_TITLEMODBYA = "a mod by"; +SWWM_TITLEMODBYB = "Marisa Kirisame"; SWWM_TITLEMODBY = "a mod by \cxMarisa Kirisame"; -SWWM_TITLESCROLL = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons\n" -"A wondrous GZDoom gameplay mod by Marisa Kirisame of UnSX Team\n" -"Lovingly designed 3D models with hand-painted 256-color dithered textures\n" -"Almost 60k lines of ZScript, and still counting (god help me)\n" -"The deepest lore this side of the Doom Modiverse\n" -"And much much more!\n" -"Greetz to Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney and last but not least my beloved pet dragon\n" -"I tried to squeeze as many names as possible in there, that I could remember, at least, so if you're not in there and want in, feel free to ask\n" -"There's nothing else to see here, the scroll will now wrap around, see you again, have a nice day"; +SWWM_TITLEINTROA = "On that day, humankind saw itself in dire danger, facing an impending doom."; +SWWM_TITLEINTROB = "But one machine stood up, who fought back, who could end this whole invasion."; +SWWM_TITLEINTROC = "The demons would learn to fear that machine, who they know only by one name..."; +SWWM_NTITLESCROLL = "9"; +SWWM_TITLESCROLL1 = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons"; +SWWM_TITLESCROLL1_NEW = "Codename: Demolitionist ~ Cute Robutt Whomst Love To Explode Demons"; +SWWM_TITLESCROLL2 = "A wondrous GZDoom gameplay mod by Marisa Kirisame of UnSX Team"; +SWWM_TITLESCROLL3 = "Lovingly designed 3D models with hand-painted 256-color dithered textures"; +SWWM_TITLESCROLL4 = "Over 60k lines of ZScript, and still counting (god help me)"; +SWWM_TITLESCROLL5 = "The deepest lore this side of the Doom Modiverse"; +SWWM_TITLESCROLL6 = "And much much more!"; +SWWM_TITLESCROLL7 = "Greetz to Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney and last but not least my beloved pet dragon"; +SWWM_TITLESCROLL8 = "I tried to squeeze as many names as possible in there, that I could remember, at least, so if you're not in there and want in, feel free to ask"; +SWWM_TITLESCROLL9 = "There's nothing else to see here, the scroll will now wrap around, see you again, have a nice day"; +SWWM_NTITLESUB = "14"; +SWWM_TITLESUB1 = "The World Is In Danger And We Have Just Sent\nThis Double-Cheeked Sassy Robot To Save It!?"; +SWWM_TITLESUB2 = "&Knuckles"; +SWWM_TITLESUB3 = "The mod previously known as SWWM GZ"; +SWWM_TITLESUB4 = "I'm so sorry, Icarus, but you\ncan no longer call this Swim Jizz"; +SWWM_TITLESUB5 = "Do you like guns? We got guns!\nBig guns! Small guns! All the guns!"; +SWWM_TITLESUB6 = "Featuring revolutionary Shiny Metal Cheeks™ technology!"; +SWWM_TITLESUB7 = "This ain't your ordinary gameplay mod, no sir"; +SWWM_TITLESUB8 = "The misadventures of a very sassy robot\nand all their fun explosive toys"; +SWWM_TITLESUB9 = "Featuring Dante from the Devil May Cry series\n(not really, that's a joke)"; +SWWM_TITLESUB10 = ""; +SWWM_TITLESUB11 = "Slaughterwads too hard? No problem!\nJust play them with this mod!"; +SWWM_TITLESUB12 = " Did you know this subtitle is misaligned?"; +SWWM_TITLESUB13 = "I like big explosions and I cannot lie"; +SWWM_TITLESUB14 = "If you wrapped a cat in a tortilla,\nwould you call that a purrito?"; SWWM_UNIT_METER = "m"; SWWM_UNIT_KILOMETER = "km"; -SWWM_UNIT_KPH = "km/h"; +SWWM_UNIT_KPH = "kph"; SWWM_UNIT_LITER = "l"; SWWM_YOURSELF = "Yourself"; SWWM_DOKIDOKI = "The Power of Love™"; SWWM_GRAVKILL = "Gravity"; SWWM_PARRYKILL = "Deflected Projectiles"; -SWWM_SETSLOTSTRICT = "\cg!!!WARNING!!!\c-\n\cj\"setslotstrict\" is enabled. This will cause SWWM GZ weapons to not have slots assigned. Please go into Miscellaneous Options and toggle the \"Strict KEYCONF Weapons/Players\" setting.\c-"; +SWWM_SETSLOTSTRICT = "\cg!!!WARNING!!!\c-\n\cj\"setslotstrict\" is enabled. This will cause the mod's weapons to not have slots assigned. Please go into Miscellaneous Options and toggle the \"Strict KEYCONF Weapons/Players\" setting.\c-"; SWWM_FCBSEL = "1.150 FCB"; SWWM_XSBSEL = "1.150 XSB"; SWWM_WIDESPREAD = "Wide Spread Mode"; SWWM_TIGHTSPREAD = "Tight Spread Mode"; SWWM_YNYKRONFORWARD = "Beam Mode"; // desya / forward SWWM_YNYKRONBACKWARD = "Vortex Mode"; // busa / backward -SWWM_GAMMAMODE1 = "Semi-Auto"; -SWWM_GAMMAMODE2 = "3-Round Burst"; -SWWM_GAMMAMODE3 = "Full Auto"; -SWWM_GAMMAMODE4 = "FULLER AUTO"; SWWM_MRMODE1 = "Precision Shot"; SWWM_MRMODE2 = "Cluster Shot"; SWWM_MRMODE3 = "Stream Shot"; @@ -725,8 +720,9 @@ SWWM_DMSPREAD = "Spread:"; SWWM_PLACE1 = "1st"; SWWM_PLACE2 = "2nd"; SWWM_PLACE3 = "3rd"; +SWWM_PAUSE = "PAUSED"; // weapon tooltips -SWWM_TTNOTE = "Note: Weapon tooltips can be deactivated in SWWM GZ Options."; +SWWM_TTNOTE = "Note: Weapon tooltips can be deactivated in DEMOLITIONIST Options."; TT_PUSHER = "\cfFire:\c- Drill.\n" "\cfAltfire:\c- Charged attack."; @@ -757,8 +753,8 @@ TT_EVISCERATOR = "\cfAltfire:\c- Grenade shot.\n" "\cfZoom:\c- Toggle spread."; TT_HELLBLAZER = -"\cfFire:\c- Load rockets, release to shoot.\n" -"\cfAltfire:\c- Load grenades, release to shoot.\n" +"\cfFire:\c- Load / shoot rockets.\n" +"\cfAltfire:\c- Load / shoot grenades.\n" "\cfZoom:\c- Select ammo.\n" "\cfReload:\c- Reload / switch ammo.\n" "\cx(More controls in library)\c-"; @@ -799,8 +795,8 @@ TT_PUNTZERBETA = "\cfAltfire:\c- Quickshot mode.\n" "\cfReload:\c- Reload weapon."; TT_PUNTZERGAMMA = -"\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Cycle fire modes.\n" +"\cfFire:\c- Full-auto fire.\n" +"\cfAltfire:\c- Fuller-auto fire.\n" "\cfReload:\c- Reload weapon."; TT_SHEENHMG = "\cfFire:\c- Slow fire.\n" @@ -812,28 +808,6 @@ TT_QUADRAVOL = "\cfReload:\c- Load cells.\n" "\cfZoom+Fire:\c- Toggle spread mode.\n" "\cfZoom+Altfire:\c- Switch firing stance."; -TT_BLACKFIRE = -"\cfFire:\c- Freeze thrower.\n" -"\cfAltfire:\c- Icicle shot.\n" -"\cfReload:\c- Reload canister(s)."; -TT_EMPCARBINE = -"\cfFire:\c- Hold to ionize, release to shoot.\n" -"\cfAltfire:\c- Multi-target ionization.\n" -"\cfZoom:\c- Use scope.\n" -"\cfReload:\c- Load rods."; -TT_RAYKHOM = -"\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Lightning attack.\n" -"\cfReload:\c- Reload weapon.\n" -"\cfZoom:\c- Reload battery."; -TT_GRANDLANCE = -"\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Charged shot.\n" -"\cfReload:\c- Reload weapon.\n" -"\cfZoom:\c- Reload battery."; -TT_FISTGUN = -"\cfFire:\c- Throw punch.\n" -"\cfAltfire:\c- Wide slap."; TT_NEWSPARKSTER = "\cfFire:\c- Kinylum shot.\n" "\cfAltfire:\c- Nokron shot.\n" @@ -845,253 +819,15 @@ TT_MORTALRIFLE = "\cfAltfire:\c- Shoot grenade.\n" "\cfZoom:\c- Cycle fire modes.\n" "\cfReload:\c- Reload weapon."; +TT_RAYKHOM = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Lightning attack.\n" +"\cfReload:\c- Reload weapon.\n" +"\cfZoom:\c- Reload battery."; TT_RAFANKOS = "\cfFire:\c- Single beam.\n" "\cfAltfire:\c- Multi beam.\n" "\cfReload:\c- Reload weapon."; -// "Direct messages" -SWWM_INCOMINGMSG = "Incoming direct message from %s..."; -SWWM_SAYANAME = "\cgSaya Miyamoto\c-"; -SWWM_SAYASNAME = "\cgSaya\c-"; -SWWM_CYTHONAME = "\cvArchduke Cytho Valathor\c-"; -SWWM_CYTHOSNAME = "\cvCytho\c-"; -SWWM_IBUKINAME = "\crIbuki Miyamoto\c-"; -SWWM_IBUKISNAME = "\crIbuki\c-"; -SWWM_KIRINNAME = "\cxKirin Xanai\c-"; -SWWM_KIRINSNAME = "\cxKirin\c-"; -SWWM_ZNVNAME = "\chZanaveth Nekuraku III\c-"; -SWWM_ZNVSNAME = "\chZanaveth\c-"; -// E1M8 -SWWM_SAYAPHOBOS1 = "I kinda forgot to mention this in the briefing but... There's a bit of an issue here, \cdDemo-chan\c-."; -SWWM_SAYAPHOBOS2 = "The gate to Deimos is guarded by two nasty pieces of work, and you're gonna have to get rid of them."; -SWWM_SAYAPHOBOS3 = "They're supposedly the \"replacements\" for whatever the other guy killed to go the same route."; -SWWM_SAYAPHOBOS4 = "Well, knowing you, I'm sure they won't be a problem. Anyway, that's everything for now. Good luck."; -// E2M8 -SWWM_SAYADEIMOS1 = "Be careful, \cdDemo\c-, I've got a bad feeling about this."; -SWWM_SAYADEIMOS2 = "There's a large energy reading coming from outside, and I mean LARGE."; -SWWM_SAYADEIMOS3 = "On top of that I can't seem to get in touch with \cvCytho-sama\c- for info on where to go."; -SWWM_SAYADEIMOS4 = "Well, you're on your own here, I guess. If you can't figure a way out, I'll be on stand-by for a recall."; -// E3M8 -SWWM_SAYADIS1 = "And here we are... The very center of it all."; -SWWM_SAYADIS2 = "This is where the first portal to Earth was opened, and you're gonna use it to get back."; -SWWM_SAYADIS3 = "And of course, the place is guarded, why wouldn't it be. You've got to kill stuff, as usual."; -SWWM_SAYADIS4 = "Let's just hope it drops you off at the right place. Keep going, \cdDemo-chan\c-, you're almost there."; -// E4M8 -SWWM_SAYATHY1 = "Alright, good news, for once. There's a portal nearby, and I'm sure it'll take you to the right spot."; -SWWM_SAYATHY2 = "But, of course, you gotta kick some ass to get there. I mean, nothing in life is easy, isn't it?"; -SWWM_SAYATHY3 = "I'll be ready to debrief you later on your ACTUAL mission."; -SWWM_SAYATHY4 = "Yeah, still have no clue why this massive detour happened. But I'll get to the bottom of it, trust me."; -// E5M8 -SWWM_CYTHOSIGIL1 = "\cdDemo\c-, this is \cvCytho\c-. I've got an important message to relay from the royal family."; -SWWM_CYTHOSIGIL2 = "Prince Baphomet is satisfied with your efforts, and has opened a gate for you to return to Earth."; -SWWM_CYTHOSIGIL3 = "Unfortunately, the gate is guarded by high level military demons, two of them, in fact."; -SWWM_CYTHOSIGIL4 = "... Although, knowing you, I'm certain this will not be an issue, correct?"; -// MAP07 -SWWM_SAYADIMPLE1 = "Hold up right there, \cdDemo-chan\c-. You're about to step in on dangerous territory."; -SWWM_SAYADIMPLE2 = "This is the first line of defense that's been set up around the inner starport, and it's a bitch."; -SWWM_SAYADIMPLE3 = "Hopefully, you've got plenty of goodies on ya to smash through... You do, right?"; -SWWM_SAYADIMPLE4 = "Well, we've already seen what you've been able to do so far, so I'm sure you'll be fine."; -SWWM_SAYADIMPLE5 = "Good luck!"; -// MAP11 -SWWM_SAYACIRCLE1 = "You're almost there, \cdDemo\c-. The main switch for the demonic barrier is nearby."; -SWWM_SAYACIRCLE2 = "Since it's still intact, that means you're already ahead of the other guy, which is good."; -SWWM_SAYACIRCLE3 = "Special forces are on stand-by to evacuate everyone once you hit that shit and secure the area."; -SWWM_SAYACIRCLE4 = "With that, the last bastion of the local population will be gone, leaving just demons behind."; -SWWM_SAYACIRCLE5 = "That'll give us time to think of our next step, I suppose."; -// MAP20 -SWWM_SAYAGOTCHA1 = "This is the place, yup. Big fortress surrounded by a lake of toxic blood. Very demonic."; -SWWM_SAYAGOTCHA2 = "These schmucks have the whole place well guarded, so you're gonna find a lot of resistance."; -SWWM_SAYAGOTCHA3 = "Blast through, kill shit, and you'll be there in no time."; -SWWM_SAYAGOTCHA4 = "Once you reach the portal, I'll hit up \cvCytho-sama\c- for instructions on how to close it."; -SWWM_SAYAGOTCHA5 = "That's all, I guess. Good luck, my \cdDemolitionist\c-."; -// MAP20 special (Ultimate Doom 2) -SWWM_SAYAGOTCHAEND1 = "Wait, what the fuck is this? The readings show there's two portals?"; -SWWM_SAYAGOTCHAEND2 = "No, no, that's not right..."; -SWWM_SAYAGOTCHAEND3 = "Uh, ok, \cfDemo-chan\c-, see if you can find a way to close them up, okay?"; -SWWM_SAYAGOTCHAEND4 = "Meanwhile, I'm gonna go call \cvCytho-sama\c-. Something's iffy about this..."; -SWWM_SAYAGOTCHAEND5 = "Just... Try not to get in trouble while I'm away."; -// MAP30 -SWWM_SAYAIOS1 = "\cdDemo-chan\c-... This is it, you're about to face the Psychic Commander, the leader of Hell's army."; -SWWM_SAYAIOS2 = "I don't know if... ... W-well, I shouldn't be worrying about that at this point."; -SWWM_SAYAIOS3 = "You can do it, you can put an end to all of this. You're... My... O-our hero."; -SWWM_SAYAIOS4 = "Oh god I can't do this, my heart rate is spiking..."; -SWWM_SAYAIOS5 = "... \cdD-Demo-chan\c-... Please save the world and... Please return home."; -// MAP30 with Rampancy -SWWM_SAYARAMPANCY1 = "\cdDemo-chan\c-, that thing's bluffing, trust me. I saw those failed login attempts."; -SWWM_SAYARAMPANCY2 = "I'm sure it's going to try pulling some cliched bullshit to \"turn you to its side\" or whatever."; -SWWM_SAYARAMPANCY3 = "What a joke. Whatever it tries to say, don't listen to it. It's all bullshit and lies."; -SWWM_SAYARAMPANCY4 = "Now, go kick some robotic ass, my brave \cdDemolitionist\c-. We're all counting on you over here."; -// LEVEL08 -SWWM_CYTHONERVE1 = "I haven't been able to contact \cgSaya\c-, I assume she must be asleep, since it's so late over there in Japan."; -SWWM_CYTHONERVE2 = "Many other groups have already been suppressed worldwide, their numbers are quickly waning."; -SWWM_CYTHONERVE3 = "You, however, are up against a cybernetic lieutenant known as the \"Last Tyrant\". This will be tough."; -SWWM_CYTHONERVE4 = "Nevertheless... You are the hero \cdDemolitionist\c-, and you are going to teach these vile fiends a lesson."; -SWWM_CYTHONERVE5 = "Extinguish the flames of demonic corruption that tarnish this land.\nWe the Kuriste believe in you."; -// Eviternity MAP30 -SWWM_SAYAEVIA1 = "Psch... Look at this place. This dude couldn't be more of a pretentious show-off even if he tried."; -SWWM_SAYAEVIA2 = "However \"angelic\" he may look, he's just some dude in pretty armor, so you can kick his ass."; -SWWM_SAYAEVIA3 = "This whole place, though... Damn, I sure hope you've taken a lot of high res shots like I told you."; -SWWM_SAYAEVIA4 = "I'm gonna go grab some popcorn now. This is gonna be an epic battle for sure, kihihihihi..."; -SWWM_SAYAEVIB1 = "What? This is some fucking videogame bullshit right there. You're telling me the guy has TWO HEALTHBARS???"; -SWWM_SAYAEVIB2 = "Bullshit, fucking bullshit! Absolute trash garbage bullshit! Kill his ass, \cdDemo-chan\c-!"; -// Heretic E1M8 -SWWM_SAYAMAW1 = "Here we are, in \"Hell's Maw\"."; -SWWM_SAYAMAW2 = "According to the Sidhe this houses the portal that connects to the demons' realm."; -SWWM_SAYAMAW3 = "I think it's gonna be pretty interesting to visit another universe's equivalent of hell, yeah."; -SWWM_SAYAMAW4 = "... And of course, it's going to be even more interesting to blow shit up in it, too, right?"; -SWWM_SAYAMAW5 = "Just... Be on the lookout for whatever it is that's guarding the place."; -// Heretic E2M8 -SWWM_SAYAMASTERS1 = "OK, so... We're one step closer to that serpent rider's home turf. But there's a problem."; -SWWM_SAYAMASTERS2 = "Specifically, several problems. Big, bulky, muscular problems."; -SWWM_SAYAMASTERS3 = "We're talking BIG MINOTAURS with BIG HAMMERS here."; -SWWM_SAYAMASTERS4 = "I don't know about you, but I'm already hearing the Pillar Men theme in my head."; -SWWM_SAYAMASTERS5 = "Go get them, \cdDemo Demostar\c-... ... ... OK maybe that's a terrible pun, forget about it."; -// Heretic E3M8 -SWWM_SAYADSPARIL1 = "This is it, \cdDemo-chan\c-. You're about to face that stupid-ass wizard."; -SWWM_SAYADSPARIL2 = "You're gonna save another world, and all in record time. You're on a roll!"; -SWWM_SAYADSPARIL3 = "... Oh, and remember, there's a surprise waiting for you at home. Oh, you're so gonna love it."; -SWWM_SAYADSPARIL4 = "Splgslshglgh"; -SWWM_SAYADSPARIL5 = "Oh shit that got picked up by the voice recognition? Oops..."; -// Heretic E4M8 -SWWM_SAYAHEADS1 = "Geez, I'm getting impatient with all this stuff. I hope this really takes you back home."; -SWWM_SAYAHEADS2 = "And if not, well, more time for me to refine this \"present\" that I'm going to give ya."; -SWWM_SAYAHEADS3 = "Thanks to this, I've managed to improve its potency even further. This is going to be fun."; -SWWM_SAYAHEADS4 = "I seriously can't wait to try it, and I'm sure you're also dying to know..."; -SWWM_SAYAHEADS5 = "Smite thy foes and come claim thy prize, o \cdDemolitionist\c-."; -SWWM_SAYAHEADS6 = "... I seriously just fucking said that..."; -// Heretic E5M8 -SWWM_SAYABULLS1 = "And it still keeps going, oh my god..."; -SWWM_SAYABULLS2 = "It's like you're getting thrown around random realms. Look, I'm starting to get pissed."; -SWWM_SAYABULLS3 = "I'm so pissed in fact that, if the next portal doesn't immediately send you back to Parthoris, I'll just..."; -SWWM_SAYABULLS4 = "Yeah..."; -SWWM_SAYABULLS5 = "I NEED you to come back home, \cdDemo-chan\c-. I desperately need you here to test this."; -// Seven Portals -SWWM_SAYAGREETA1 = "There it is, \cdDemo-chan\c-. That's your target, that big stinky ugly monster. That's Korax."; -SWWM_SAYAGREETA2 = "... By the way, did you catch the guy's scent? It's bad, isn't it?"; -SWWM_SAYAGREETA3 = "God, imagine the smell in person... Just thinking about it is making my stomach turn."; -SWWM_SAYAGREETB1 = "Coward... Taunting us from afar..."; // Kirin reply -SWWM_SAYAGREETC1 = "Yeah, sneaky and stinky, telltale signs of an ugly bastard."; -SWWM_SAYAGREETD1 = "Ugly... Bastard?"; // Kirin reply -SWWM_SAYAGREETE1 = "I'd rather not explain, \cxKirin-kun\c-. You'd be very disappointed in all of humankind."; -SWWM_SAYAGREETF1 = "That's certainly not reassuring to hear..."; // Kirin reply -// Shadow Wood -SWWM_SAYABLOODA1 = "I don't know how this dude can even smell anything other than that rancid old dog fart stench he wafts."; -SWWM_SAYABLOODA2 = "Like seriously, jesus fucking christ..."; -SWWM_SAYABLOODB1 = "That ugly bastard needs to take a bath."; // Ibuki reply -SWWM_SAYABLOODC1 = "Ugly bastard? What's this now, some lame-ass doujin?"; -SWWM_SAYABLOODD1 = "Heh, nice one, \cgSayacchi\c-."; // Ibuki reply -// Hypostyle -SWWM_SAYAHYPO1 = "Here we are, after all that roaming around. Whatever lies here, we gotta slay it to catch the next portal."; -SWWM_SAYAHYPO2 = "I sure hope it's not a fucking dragon. That'd be the most cheap-ass generic boss ever."; -SWWM_SAYAHYPO3 = "Uh... I totally jinxed it, didn't I? I bet I did. Yeah, I bet it's a fucking dragon."; -SWWM_SAYAHYPO4 = "I bet THAT GUY is going to rise from the grave and fucking sell me his damn game for the thousandth time."; -// Heresiarch's Seminary -SWWM_KIRINWORSHIPA1 = "Pathetic, disgusting creature...\nWho would ever think of worshipping a foul beast such as yourself?"; -SWWM_KIRINWORSHIPB1 = "The only thing I'd worship is that juicy cock of yours, \cxKirin-kun\c-~"; // Saya reply -SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; -SWWM_KIRINWORSHIPD1 = "Guh! \cxKiriiiiin\c-! You got cola all over me! God damn it you spit as hard as you cum!"; // Saya reply -SWWM_KIRINWORSHIPD2 = "O-oh... Wait, this thing's still on. Shit... \cdDemo-chan\c- just read all of that."; -// Castle of Grief -SWWM_SAYAGAMEA1 = "Wow, look at fucking mister chessmaster over here... Fuck you!"; -SWWM_SAYAGAMEA2 = "This guy is a fucking idiot and he's pissing me off even more. I so want to watch you beat his sorry ass..."; -SWWM_SAYAGAMEB1 = "Chess nerd..."; // Ibuki -SWWM_SAYAGAMEC1 = "I bet he was in the chess club."; -// Necropolis -SWWM_SAYAMASTERSA1 = "Masters, masters... Whose masters? Awaken my masters? Well, whatever, I don't care what he says."; -SWWM_SAYAMASTERSA2 = "I so want you to kill this dude..."; -SWWM_SAYAMASTERSB1 = "Are you strong enough to face the fact you SMELL?"; // Ibuki reply -SWWM_SAYAMASTERSC1 = "I showered this morning, \crIbuki\c-."; -SWWM_SAYAMASTERSD1 = "I meant the stinky boy over there. You smell nice."; // Ibuki reply -SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitely has a pleasant scent to her."; // Kirin reply -SWWM_SAYAMASTERSF1 = "Guhuhuhu... Thanks."; -// Zedek -SWWM_SAYAFIGHTER1 = "This is where Zedek lies, the fighty boy. He probably thinks he's strong, but he hasn't met you."; -SWWM_SAYAFIGHTER2 = "Do watch out for any traps, though. I bet there's some nasty shit here."; -// Traductus -SWWM_SAYACLERICA1 = "If there's one thing I've learned from videogames is that clerics are the lowest trash."; -SWWM_SAYACLERICA2 = "That's everything I have to say."; -SWWM_SAYACLERICB1 = "I have never encountered a single cleric who hasn't attempted to assassinate me."; // Kirin reply -SWWM_SAYACLERICC1 = "Oh yeah, the people from the Sacrosanct Empire, right? Totally forgot about those."; -SWWM_SAYACLERICC2 = "Clerics fucking suck..."; -// Menelkir -SWWM_SAYAMAGE1 = "Menelkir's lair, huh... ... Oh god, don't tell \cxKirin-kun\c-, there's puzzles here."; -SWWM_SAYAMAGE2 = "Yeah, he's more than tired of stuff like this. And apparently now we're doing the picture matching kind."; -SWWM_SAYAMAGE3 = "Well, at least those are actual puzzles, and not whatever the fuck the other stuff was."; -SWWM_SAYAMAGE4 = "Even if they're... You know... The really lame and piss-easy kind."; -// Dark Crucible -SWWM_SAYAKORAXA1 = "This is it, \cdDemo\c-. The big stinky ugly bastard is waiting."; -SWWM_SAYAKORAXB1 = "At last, that vile schemer's evil reign shall end."; // Kirin reply -SWWM_SAYAKORAXC1 = "Time for him to take a fucking bath. After you rearrange his knees, of course."; // Ibuki reply -SWWM_SAYAKORAXD1 = "Even though \cvMeido\c- isn't watching, I can tell you the four of us are cheering you on."; -SWWM_SAYAKORAXE1 = "Fight on, \cdDemo-chan\c-. You can do it, we believe in you."; // Kirin reply -// Blight -SWWM_SAYABLIGHTA1 = "Hey, \cdDemo-chan\c-, remember puzzles?"; -SWWM_SAYABLIGHTB1 = "Nnnnngh..."; // Kirin reply -SWWM_SAYABLIGHTC1 = "I think \cxKirin\c- just heard me. Well... You know what to do."; -SWWM_SAYABLIGHTC2 = "I can tell this is going to be yet more bullshit, so be prepared for anything."; -// Constable's Gate -SWWM_SAYACONSTABLEA1 = "Castles and shit... It just keeps going. I said it in the briefing, anyway... So you know..."; -SWWM_SAYACONSTABLEA2 = "Please keep on exploding things. \cvMeido-chan\c- made some snacks, so we've got that at least."; -SWWM_SAYACONSTABLEB1 = "She really is so thoughtful, that girl..."; // Ibuki reply -SWWM_SAYACONSTABLEC1 = "Even though you can hear her curse everything under her breath about what's happening in there."; -SWWM_SAYACONSTABLED1 = "Yeah, that's our \cvMeido\c- alright."; // Ibuki reply -// Nave -SWWM_SAYANAVEA1 = "I want to borrow the reality bending powers of the \ctMishe\c- to destroy this entire world."; -SWWM_SAYANAVEA2 = "I'm seriously pissed, we all are pissed. Hell, even \cxKirin\c- is upset, and we can't calm him down anymore."; -SWWM_SAYANAVEB1 = "It's kind of cute and worrying at the same time."; // Ibuki reply -SWWM_SAYANAVEC1 = "NNNNNNNNGGGGGHHHHHHHH!"; // Kirin reply -SWWM_SAYANAVED1 = "\cxKirin-kun\c-, you're going to suffocate if you keep screaming into the pillow like that."; -SWWM_SAYANAVEE1 = "Maybe that's what he wants, \cgSaya\c-.\nHe seeks the sweet release of death to find inner peace."; // Ibuki -SWWM_SAYANAVEF1 = "If he wasn't immortal that would be an extremely fucked up thing to say, \crIbuki\c-."; -// Dark Citadel -SWWM_SAYADEATHKINGS1 = "I'm so pissed I could punch a hole through reality to tell these fucking Deathkings to fuck off."; -// Kirin's Thrilling Commentary on Puzzles™ -// first puzzle switch on Seven Portals -SWWM_KIRINPUZZLEA1 = "A peculiar contraption... Allegedly it cites to be part of a larger whole, calling itself a \"puzzle\"."; -SWWM_KIRINPUZZLEA2 = "\cgSayacchi\c- did mention you'd be coming across these. That's most certainly intriguing..."; -// second puzzle switch on Seven Portals -SWWM_KIRINPUZZLEB1 = "Another one... Interesting..."; -// third puzzle switch on Seven Portals -SWWM_KIRINPUZZLEC1 = "I fail to see now what makes this exactly a \"puzzle\". This is no more than a switch hunt."; -SWWM_KIRINPUZZLEC2 = "Hardly a challenge to one's intellect, wouldn't you agree, \cdDemo-chan\c-?"; -// first puzzle switch on Shadow Wood -SWWM_KIRINPUZZLED1 = "It does seem that these \"puzzle switches\" simply keep on showing up wherever you go."; -SWWM_KIRINPUZZLED2 = "I'm sure you are as tired as I am of them."; -// fourth puzzle switch on Shadow Wood -SWWM_KIRINPUZZLEE1 = "These so-called \"puzzles\"... They're an insult to our intelligence."; -SWWM_KIRINPUZZLEE2 = "... I hope I'm not sending too many of these messages."; -// first puzzle switch on Heresiarch's Seminary -SWWM_KIRINPUZZLEF1 = "When will it end? Just how many fractions of \"puzzles\" are we to solve???"; -SWWM_KIRINPUZZLEF2 = "Is this how that sayzha axhkhashaar dares to mock us? With these tiresome games?"; -SWWM_KIRINPUZZLEF3 = "They... Nnngh... Kheza sakharei!"; -SWWM_KIRINPUZZLEG1 = "\cxKirin-kun\c-, I think you're getting a bit too worked up about this."; // Saya reply -SWWM_KIRINPUZZLEH1 = "Yes... I... I'll just lie down for a while, s-sorry..."; -SWWM_KIRINPUZZLEI1 = "... Poor guy. I do agree with him, though... This shit really gets on your nerves, doesn't it?"; // Saya reply -SWWM_KIRINPUZZLEI2 = "Well... I'm gonna go give \cxKirin-kun\c- some TLC now. Don't worry, he'll be fine. He's in good hands."; -// first puzzle switch on Blight -SWWM_KIRINPUZZLEJ1 = "We can't escape, can we? These \"puzzles\" continue to haunt us even now..."; -SWWM_KIRINPUZZLEJ2 = "This accursed land... Plagued by these vile contraptions... I shall never set foot in it. Mark my words."; -// last puzzle switch on Blight -SWWM_KIRINPUZZLEK1 = "Please... Make it stop..."; -SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, hey... It's alright. Here... Drink up, it'll help you relax.\c-"; // Ibuki reply -SWWM_KIRINPUZZLEM1 = "Gulp... Gulp... Gulp..."; -SWWM_KIRINPUZZLEN1 = "Man, look at him go... Drinking it all up like a champ."; // Saya reply -SWWM_KIRINPUZZLEO1 = "You know how it is... Once they find a breast to suckle on, all their worries fade away..."; // Ibuki reply -SWWM_KIRINPUZZLEP1 = "You know \cdDemo-chan\c- can read what we're saying, right?"; // Saya reply -SWWM_KIRINPUZZLEQ1 = "Oh, I'm sure they'd be more than happy to have their turn once the mission's over, hm?"; // Ibuki reply -// first puzzle switch on Constable's Gate -SWWM_KIRINPUZZLER1 = "Let this be the last of these \"puzzles\" that we may encounter..."; -SWWM_KIRINPUZZLER2 = "Urp..."; -SWWM_KIRINPUZZLER3 = "My apologies."; -SWWM_KIRINPUZZLES1 = "That was some good milk, wasn't it?"; // Saya reply -SWWM_KIRINPUZZLET1 = "Certainly... I am grateful for \crIbuki\c-'s blessing."; -SWWM_KIRINPUZZLEU1 = "Making her able to lactate at will is a blessing, yeah. I'm sure \cdDemo\c- agrees too."; // Saya reply -// super secret cheats -SWWM_ZNVTXT1 = "\cdDemolitionist\c-, it is me, \chZanaveth The Corruptor\c-. I have been witness of the act you have now acted, yes."; -SWWM_ZNVTXT2 = "It is \cf%d\c- years since... and those magic words, I can see them again. Much impressed, very much impressed."; -SWWM_ZNVTXT3 = "So, you can do the thing... As have the \ctMishe\c- also taught to myself. This is a nonexpected surprise, yes."; -SWWM_ZNVTXT4 = "There are many such powerful words to use, \cdDemolitionist\c-. Do keep keeping to discover all of them."; -SWWM_ZNVTXT5 = "And now I have to take off. Please extend greetings to aunt \cgSaya\c- for my part. Good luck, \cdDemolitionist\c-."; // boss tags BT_BRUISERS = "Bruiser Brothers"; BT_CYBIE = "Tyrant of Babel"; @@ -1190,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."; @@ -1238,11 +974,11 @@ SWWM_INTERTIP60 = "Despite its seemingly puny size, the Plasma Blaster has a lot SWWM_INTERTIP61 = "The Puntzer guns can easily pierce through solid objects or even thin walls. No enemy will ever be safe behind cover."; SWWM_INTERTIP62 = "\"The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me unleash Leviathan in my panties, and you can quote me on that.\" — Saya Miyamoto"; SWWM_INTERTIP63 = "Pressing fire immediately after hitting something with the Quadravol's blades will result in a boosted point-blank explosion that'll send whatever's at the other end of the gun flying."; -SWWM_INTERTIP64 = "The Blackfire Igniter leaves a lingering trail of coldness long after its flames have died down, dealing even more damage."; -SWWM_INTERTIP65 = "The Blackfire Igniter can produce blocks of ice that float above liquids, becoming temporary walkable platforms. Do note that this obviously won't work on lava."; -SWWM_INTERTIP66 = "You can mark multiple targets with the Rail Carbine's ionizer and then hit them all in a single discharge. Do be quick, however, because the charge fades over time."; +SWWM_INTERTIP64 = "Holding down the triggers with the Sparkster Rifle will gradually increase firing potency upon release. Fortunately, there is no potential here for the weapon to blow up if you keep them held long enough, only badly designed human weaponry could be so haphazard."; +SWWM_INTERTIP65 = "The Sparkster Rifle can fire both ammo types simultaneously, blending them together into a deadly combo projectile."; +SWWM_INTERTIP66 = "The Mortal Rifle (\"Mister\" for short) was devised as a potential \"standard\" battle rifle for the X'Animen Coalition that \"even the Xekkians would consider powerful\". It seems to have succeeded in that aspect, considering how truly mortal it is, although it is not widely adopted... Yet."; SWWM_INTERTIP67 = "Being primarily a coilgun, the Ray-Khom is almost entirely silent and perfect for stealthy kills. Do note though that the impact of the projectile itself will be very loud."; -SWWM_INTERTIP68 = "The Grand Lance is a much safer alternative to the Ynykron Artifact if you don't want to accidentally kill yourself or your friends."; +SWWM_INTERTIP68 = "The Rafan-Kos is truly an Ultimate Weapon, as its name implies."; SWWM_INTERTIP69 = "Nice."; SWWM_INTERTIP70 = "Did you know that even with seat belts people die all the time in car crashes? I thought that was interesting."; SWWM_INTERTIP71 = "\"On the internet nobody can hear you being subtle.\" — Linus Torvalds"; @@ -1257,7 +993,7 @@ SWWM_INTERTIP79 = "Punching fascists is perfectly reasonable."; SWWM_INTERTIP80 = "Ceci n'est pas un conseil."; SWWM_INTERTIP81 = "Age only affects appearance, and has no bearing on ability. Gender has no bearing on ability. Everyone has imperfections, prejudice births malcontents, become a dark spirit.\nTime for crab."; SWWM_INTERTIP82 = "\"IF THE ZOO BANS ME FOR HOLLERING AT THE ANIMALS I WILL FACE GOD AND WALK BACKWARDS INTO HELL\" — dril"; -SWWM_INTERTIP83 = "SWWM GZ is truly Some Weird Weapons Mod for GZDoom."; +SWWM_INTERTIP83 = "This is truly some weird weapons mod for GZDoom."; SWWM_INTERTIP84 = "\"In its vastness, the universe is no more than a mere grain of sand when compared to the limitless bounds of one's imagination.\" — Zanaveth Nekuraku III"; SWWM_INTERTIP85 = "You can shuffle the intermission art with Zoom, and these tips with Reload. Holding Altfire will hide the UI so you can see the art in full."; SWWM_INTERTIP86 = "Add minced garlic, white pepper and basil to your tomato sauce, goes really well with pasta, you can thank me later."; @@ -1290,7 +1026,7 @@ SWWM_INTERTIP112 = "There are no buses in Gensokyo."; SWWM_INTERTIP113 = "Carbonated drinks are best consumed with a straw, to avoid damaging your teeth."; SWWM_INTERTIP114 = "A non-lethal takedown is the most silent takedown."; SWWM_INTERTIP115 = "There was a tip here, but it's gone now."; -SWWM_INTERTIP116 = "Over two billion devices run Java. That's two billion too many."; +SWWM_INTERTIP116 = "Over thirteen billion devices run Java. It is already too late, we're all doomed."; SWWM_INTERTIP117 = "Food tastes best when you make it yourself."; SWWM_INTERTIP118 = "This tip mesage contains a typo."; SWWM_INTERTIP119 = "If enemies are getting in your way while you're admiring the shiny new key you just found, you can punch them with your free hand."; @@ -1308,12 +1044,12 @@ SWWM_INTERTIP130 = "The Ragekit's speed boost may make you violently bump agains SWWM_INTERTIP131 = "In Heretic and Hexen, an item known as the Safety Tether may appear. If by any chance you get stuck in some seemingly inescapable trap, this will be your trump card."; SWWM_INTERTIP132 = "The Devastation Sigil is rather unstable, but provides a much higher boost of damage than the Ragekit, for ALL damage you may deal, including to yourself. Yeah, quite a dangerous little toy, that one."; SWWM_INTERTIP133 = "The Divine Sprite can boost your health to absurd levels, but its effects fade quickly after a while. It is the most potent healing item you have in hand, but do keep in mind it has to be activated manually. Unlike most others, it won't come to save your ass by itself."; -SWWM_INTERTIP134 = "The Hand of Divine is yet another weapon that can benefit from the effects of the Ragekit, turning what's already a lethal punch into something truly god-like."; -SWWM_INTERTIP135 = "Holding down the triggers with the Sparkster Rifle will gradually increase firing potency upon release. Fortunately, there is no potential here for the weapon to blow up if you keep them held long enough, only badly designed human weaponry could be so haphazard."; -SWWM_INTERTIP136 = "The Sparkster Rifle can fire both ammo types simultaneously, blending them together into a deadly combo projectile."; -SWWM_INTERTIP137 = "The Mortal Rifle (\"Mister\" for short) was devised as a potential \"standard\" battle rifle for the X'Animen Coalition that \"even the Xekkians would consider powerful\". It seems to have succeeded in that aspect, considering how truly mortal it is, although it is not widely adopted... Yet."; -SWWM_INTERTIP138 = "The Rafan-Kos is truly an Ultimate Weapon, as its name implies."; -SWWM_INTERTIP139 = "It's said that the Hand of Divine bears only a minuscule fraction of its original creator's power. Guy must pack one hell of a wallop, then."; +SWWM_INTERTIP134 = "The Demolitionist is not alone in their mission. Many more heroes have been known to be fighting out there as well."; +SWWM_INTERTIP135 = "Demo-chan has a crush on a certain videogame robot who also kills demons in style."; +SWWM_INTERTIP136 = "Generally, your enemies are stupid enough to run into your line of fire. If they were smarter, they wouldn't even try to fight you."; +SWWM_INTERTIP137 = "Powerups exist to be used, so don't be afraid of \"wasting\" them. If the chance comes, just hit it. You'll find more eventually."; +SWWM_INTERTIP138 = "The Demons avoided invading Australia for some reason. Maybe the climate there is worse than in Hell."; +SWWM_INTERTIP139 = "If you feel the game is throwing way too much stuff at you, you can make some quick cash selling excess items."; SWWM_INTERTIP140 = "The Demolitionist's chassis carries a faint lime scent."; SWWM_INTERTIP141 = "\"In the future, everything is Chrome.\"\n\nNever has a line from a children's cartoon rung more true after the inevitable rise of the web-app supremacy."; SWWM_INTERTIP142 = "This mod is in constant development. Remember to report any bugs you may find."; @@ -1327,7 +1063,7 @@ SWWM_INTERTIP149 = "Always take breaks during long play sessions. You'll play be SWWM_INTERTIP150 = "This is the 150th tip. I can't believe I've written so many of them."; // intermission fanart SWWM_FANART = "Art: "; -SWWM_NFANART = "14"; +SWWM_NFANART = "27"; SWWM_FANART1 = "S20TBL.jpg;Substance20 (@S20_TBL)"; SWWM_FANART2 = "CaptainJ.png;Captain J (@Jho7835)"; SWWM_FANART3 = "RedeadITA.png;Redead-ITA"; @@ -1342,6 +1078,19 @@ SWWM_FANART11 = "Marisa4.jpg"; SWWM_FANART12 = "Marisa5.jpg"; SWWM_FANART13 = "Marisa6.jpg"; SWWM_FANART14 = "Marisa7.jpg"; +SWWM_FANART15 = "Marisa8.jpg"; +SWWM_FANART16 = "Marisa9.jpg"; +SWWM_FANART17 = "Marisa10.jpg"; +SWWM_FANART18 = "Marisa11.jpg"; +SWWM_FANART19 = "Marisa12.jpg"; +SWWM_FANART20 = "Marisa13.jpg"; +SWWM_FANART21 = "Marisa14.jpg"; +SWWM_FANART22 = "Monsoon.jpg;Monsoon-Soft (@MonsoonSoft)"; +SWWM_FANART23 = "Monsoon2.jpg;Monsoon-Soft (@MonsoonSoft)"; +SWWM_FANART24 = "Monsoon3.png;Monsoon-Soft (@MonsoonSoft)"; +SWWM_FANART25 = "Monsoon4.png;Monsoon-Soft (@MonsoonSoft)"; +SWWM_FANART26 = "Marisa15.jpg"; +SWWM_FANART27 = "Marisa16.jpg"; // achievements SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness"; SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes"; @@ -1381,8 +1130,6 @@ SWWM_ACHIEVEMENT_BUTTS_TAG = "Let's get to Bashing Butts"; SWWM_ACHIEVEMENT_BUTTS_TXT = "Kill %d enemies by dashing backwards"; SWWM_ACHIEVEMENT_CANDY_TAG = "Piece of Candy"; SWWM_ACHIEVEMENT_CANDY_TXT = "Collect %d nuggets"; -SWWM_ACHIEVEMENT_CHEAT_TAG = "Mishe Trickery"; -SWWM_ACHIEVEMENT_CHEAT_TXT = "Successfully input a cheat code"; SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Errand Boy Bullshit"; SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Finish a map without collecting any keys"; SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK"; @@ -1409,14 +1156,10 @@ SWWM_ACHIEVEMENT_DIVINE_TAG = "Divine Delight"; SWWM_ACHIEVEMENT_DIVINE_TXT = "Use %d Divine Sprites"; SWWM_ACHIEVEMENT_DOODLE_TAG = "Graffiti Master"; SWWM_ACHIEVEMENT_DOODLE_TXT = "Doodle mustaches on %d demon faces"; -SWWM_ACHIEVEMENT_DOSH_TAG = "Unchecked Capitalism"; -SWWM_ACHIEVEMENT_DOSH_TXT = "Accumulate ¥1,000,000,000 across your playthroughs"; SWWM_ACHIEVEMENT_EVERYTHING_TAG = "The Demolitionist"; SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Unlock all achievements"; SWWM_ACHIEVEMENT_EZKILL_TAG = "Misa's Pride"; SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %d enemies with a single Ynykron Artifact shot (excluding altfire)"; -SWWM_ACHIEVEMENT_FISTO_TAG = "Facepunching Extraordinaire"; -SWWM_ACHIEVEMENT_FISTO_TXT = "Kill %d enemies with the Hand of Divine"; SWWM_ACHIEVEMENT_FLIGHT_TAG = "Blasting Off Again"; SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send an enemy flying over %d map units away"; SWWM_ACHIEVEMENT_FRIEND_TAG = "Do You Like Caco?"; @@ -1447,8 +1190,6 @@ SWWM_ACHIEVEMENT_HND_TAG = "High Noon"; SWWM_ACHIEVEMENT_HND_TXT = "Land %d killing shots in a single Puntzer Beta reload"; SWWM_ACHIEVEMENT_HURRY_TAG = "In a Hurry"; SWWM_ACHIEVEMENT_HURRY_TXT = "Beat a map with 0 kills, items and secrets"; -SWWM_ACHIEVEMENT_ICE_TAG = "Ice Ice Baby"; -SWWM_ACHIEVEMENT_ICE_TXT = "Impale %d enemies with the Blackfire Igniter secondary"; SWWM_ACHIEVEMENT_JUMP_TAG = "Verticality"; SWWM_ACHIEVEMENT_JUMP_TXT = "Walljump %d times"; SWWM_ACHIEVEMENT_KANCHO_TAG = "Extreme Kancho"; @@ -1465,6 +1206,8 @@ SWWM_ACHIEVEMENT_LOVE_TAG = "Lethal Love"; SWWM_ACHIEVEMENT_LOVE_TXT = "Kill %d enemies with a blown kiss (not counting insta-kills)"; SWWM_ACHIEVEMENT_MASHIRO_TAG = "Layers of White"; SWWM_ACHIEVEMENT_MASHIRO_TXT = "Summon the White Lady"; +SWWM_ACHIEVEMENT_MATRYOSHKA_TAG = "Mishe Trickery"; +SWWM_ACHIEVEMENT_MATRYOSHKA_TXT = "A Chancebox inside a Chancebox inside a Chancebox inside a Chancebox inside a..."; SWWM_ACHIEVEMENT_MBF_TAG = "You can Pet the Dog"; SWWM_ACHIEVEMENT_MBF_TXT = "Pet a dog"; SWWM_ACHIEVEMENT_MEGA_TAG = "Mass Massacre"; @@ -1487,8 +1230,6 @@ SWWM_ACHIEVEMENT_PAR_TAG = "Fast"; SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %d maps"; SWWM_ACHIEVEMENT_PEACE_TAG = "Pacifist"; SWWM_ACHIEVEMENT_PEACE_TXT = "Finish a map without dealing damage"; -SWWM_ACHIEVEMENT_PENE_TAG = "Penetrator"; -SWWM_ACHIEVEMENT_PENE_TXT = "Strike through %d enemies in a row with a single Grand Lance secondary"; SWWM_ACHIEVEMENT_PLASMA_TAG = "Blastin' Plasma"; SWWM_ACHIEVEMENT_PLASMA_TXT = "Kill an enemy at full health with a Plasma Blaster charged shot %d times"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Lovestruck"; @@ -1509,7 +1250,7 @@ SWWM_ACHIEVEMENT_ROAST_TXT = "Perform %d bayonet combos with the Quadravol"; SWWM_ACHIEVEMENT_SALT_TAG = "Maximum Oversalt"; SWWM_ACHIEVEMENT_SALT_TXT = "Shoot 25 Saltshot rounds simultaneously"; SWWM_ACHIEVEMENT_SANIC_TAG = "CHILLI DOGS"; -SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d km/h"; +SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d kph"; 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"; diff --git a/language.def_dlg b/language.def_dlg new file mode 100644 index 000000000..d7afa1853 --- /dev/null +++ b/language.def_dlg @@ -0,0 +1,252 @@ +[default] +// "Direct messages" +SWWM_INCOMINGMSG = "Incoming direct message from %s..."; +SWWM_SAYANAME = "\cgSaya Miyamoto\c-"; +SWWM_SAYASNAME = "\cgSaya\c-"; +SWWM_CYTHONAME = "\cvArchduke Cytho Valathor\c-"; +SWWM_CYTHOSNAME = "\cvCytho\c-"; +SWWM_IBUKINAME = "\crIbuki Miyamoto\c-"; +SWWM_IBUKISNAME = "\crIbuki\c-"; +SWWM_KIRINNAME = "\cxKirin Xanai\c-"; +SWWM_KIRINSNAME = "\cxKirin\c-"; +SWWM_ZNVNAME = "\chZanaveth Nekuraku III\c-"; +SWWM_ZNVSNAME = "\chZanaveth\c-"; +// E1M8 +SWWM_SAYAPHOBOS1 = "I kinda forgot to mention this in the briefing but... There's a bit of an issue here, \cdDemo-chan\c-."; +SWWM_SAYAPHOBOS2 = "The gate to Deimos is guarded by two nasty pieces of work, and you're gonna have to get rid of them."; +SWWM_SAYAPHOBOS3 = "They're apparently \"replacements\" for whatever the other guy killed to go the same route."; +SWWM_SAYAPHOBOS4 = "Well, knowing you, I'm sure they won't be a problem. Anyway, that's everything for now. Good luck."; +// E2M8 +SWWM_SAYADEIMOS1 = "Be careful, \cdDemo\c-, I've got a bad feeling about this."; +SWWM_SAYADEIMOS2 = "There's a large energy reading coming from outside, and I mean LARGE."; +SWWM_SAYADEIMOS3 = "On top of that I can't seem to get in touch with \cvCytho-sama\c- for info on where to go."; +SWWM_SAYADEIMOS4 = "You're on your own here, I guess. If you can't figure a way out, I'll be on stand-by for a recall."; +// E3M8 +SWWM_SAYADIS1 = "And here we are... The very center of it all."; +SWWM_SAYADIS2 = "This is where the first portal to Earth was opened, and you're gonna use it to get back."; +SWWM_SAYADIS3 = "And of course, the place is guarded, why wouldn't it be. You've got to kill stuff, as usual."; +SWWM_SAYADIS4 = "Let's just hope it drops you off at the right place. Keep going, \cdDemo-chan\c-, you're almost there."; +// E4M8 +SWWM_SAYATHY1 = "Alright, good news for once. There's a portal nearby and I'm sure it'll take you to the right spot."; +SWWM_SAYATHY2 = "But, of course, you gotta kick some ass to get there. I mean, nothing in life is easy, isn't it?"; +SWWM_SAYATHY3 = "I'll be ready to debrief you later on your ACTUAL mission."; +SWWM_SAYATHY4 = "Yeah, still have no clue why this massive detour happened. But I'll get to the bottom of it, trust me."; +// E5M8 +SWWM_CYTHOSIGIL1 = "\cdDemo\c-, this is \cvCytho\c-. I've got an important message to relay from the royal family."; +SWWM_CYTHOSIGIL2 = "Prince Baphomet is satisfied with your efforts, and has opened a gate for you to return to Earth."; +SWWM_CYTHOSIGIL3 = "Unfortunately, the gate is guarded by high level military demons, two of them, in fact."; +SWWM_CYTHOSIGIL4 = "... Although, knowing you, I'm certain this will not be an issue, correct?"; +// MAP07 +SWWM_SAYADIMPLE1 = "Hold up right there, \cdDemo-chan\c-. You're about to step in on dangerous territory."; +SWWM_SAYADIMPLE2 = "This is the first line of defense that's been set up around the inner starport, and it's a bitch."; +SWWM_SAYADIMPLE3 = "Hopefully, you've got plenty of goodies on ya to smash through... You do, right?"; +SWWM_SAYADIMPLE4 = "Well, we've already seen what you've been able to do so far, so I'm sure you'll be fine."; +SWWM_SAYADIMPLE5 = "Good luck!"; +// MAP11 +SWWM_SAYACIRCLE1 = "You're almost there, \cdDemo\c-. The main switch for the demonic barrier is nearby."; +SWWM_SAYACIRCLE2 = "Since it's still intact, that means you're already ahead of the other guy, which is good."; +SWWM_SAYACIRCLE3 = "Special forces are on stand-by to evacuate everyone once you hit that shit and secure the area."; +SWWM_SAYACIRCLE4 = "With that, the last bastion of the local population will be gone, leaving just demons behind."; +SWWM_SAYACIRCLE5 = "That'll give us time to think of our next step, I suppose."; +// MAP20 +SWWM_SAYAGOTCHA1 = "This is the place, yup. Big fortress surrounded by a lake of toxic blood. Very demonic."; +SWWM_SAYAGOTCHA2 = "These schmucks have the whole place well guarded, so you're gonna find a lot of resistance."; +SWWM_SAYAGOTCHA3 = "Blast through, kill shit, and you'll be there in no time."; +SWWM_SAYAGOTCHA4 = "Once you reach the portal, I'll hit up \cvCytho-sama\c- for instructions on how to close it."; +SWWM_SAYAGOTCHA5 = "That's all, I guess. Good luck, my \cdDemolitionist\c-."; +// MAP20 special (Ultimate Doom 2) +SWWM_SAYAGOTCHAEND1 = "Wait, what the fuck is this? The readings show there's two portals?"; +SWWM_SAYAGOTCHAEND2 = "No, no, that's not right..."; +SWWM_SAYAGOTCHAEND3 = "Uh, ok, \cfDemo-chan\c-, see if you can find a way to close them up, okay?"; +SWWM_SAYAGOTCHAEND4 = "Meanwhile, I'm gonna go call \cvCytho-sama\c-. Something's iffy about this..."; +SWWM_SAYAGOTCHAEND5 = "Just... Try not to get in trouble while I'm away."; +// MAP30 +SWWM_SAYAIOS1 = "\cdDemo-chan\c-... This is it, you're about to face the Psychic Commander, the leader of Hell's army."; +SWWM_SAYAIOS2 = "I don't know if... ... W-well, I shouldn't be worrying about that at this point."; +SWWM_SAYAIOS3 = "You can do it, you can put an end to all of this. You're... My... O-our hero."; +SWWM_SAYAIOS4 = "Oh god I can't do this, my heart rate is spiking..."; +SWWM_SAYAIOS5 = "... \cdD-Demo-chan\c-... Please save the world and... Please return home."; +// MAP30 with Rampancy +SWWM_SAYARAMPANCY1 = "\cdDemo-chan\c-, that thing's bluffing, trust me. I saw those failed login attempts."; +SWWM_SAYARAMPANCY2 = "I'm sure it's going to try pulling some cliched bullshit to \"turn you to its side\" or whatever."; +SWWM_SAYARAMPANCY3 = "What a joke. Whatever it tries to say, don't listen to it. It's all bullshit and lies."; +SWWM_SAYARAMPANCY4 = "Now, go kick some robotic ass, my brave \cdDemolitionist\c-. We're all counting on you over here."; +// LEVEL08 +SWWM_CYTHONERVE1 = "I haven't been able to contact \cgSaya\c-, I assume she's asleep, seeing as it's night-time in Japan."; +SWWM_CYTHONERVE2 = "Many other groups have already been suppressed worldwide, their numbers are quickly waning."; +SWWM_CYTHONERVE3 = "You, however, are up against a cybernetic lieutenant known as the \"Last Tyrant\". This will be tough."; +SWWM_CYTHONERVE4 = "Nevertheless... You are the hero \cdDemolitionist\c-, and you are going to teach these vile fiends a lesson."; +SWWM_CYTHONERVE5 = "Extinguish the flames of demonic corruption that tarnish this land.\nWe the Kuriste believe in you."; +// Eviternity MAP30 +SWWM_SAYAEVIA1 = "Psch... Look at this place. This dude couldn't be more of a pretentious show-off if he tried."; +SWWM_SAYAEVIA2 = "However \"angelic\" he may look, he's just some dude in pretty armor, so you can kick his ass."; +SWWM_SAYAEVIA3 = "This whole place, though... Damn, I sure hope you've taken a lot of high res shots like I told you."; +SWWM_SAYAEVIA4 = "I'm gonna go grab some popcorn now. This is gonna be an epic battle for sure, kihihihihi..."; +SWWM_SAYAEVIB1 = "What? This is some fucking videogame bullshit right there. You're telling me the guy has TWO HEALTHBARS???"; +SWWM_SAYAEVIB2 = "Bullshit, fucking bullshit! Absolute trash garbage bullshit! Kill his ass, \cdDemo-chan\c-!"; +// Heretic E1M8 +SWWM_SAYAMAW1 = "Here we are, in \"Hell's Maw\"."; +SWWM_SAYAMAW2 = "According to the Sidhe this houses the portal that connects to the demons' realm."; +SWWM_SAYAMAW3 = "I think it's gonna be pretty interesting to visit another universe's equivalent of hell, yeah."; +SWWM_SAYAMAW4 = "... And of course, it's going to be even more interesting to blow shit up in it, too, right?"; +SWWM_SAYAMAW5 = "Just... Be on the lookout for whatever it is that's guarding the place."; +// Heretic E2M8 +SWWM_SAYAMASTERS1 = "OK, so... We're one step closer to that serpent rider's home turf. But there's a problem."; +SWWM_SAYAMASTERS2 = "Specifically, several problems. Big, bulky, muscular problems."; +SWWM_SAYAMASTERS3 = "We're talking BIG MINOTAURS with BIG HAMMERS here."; +SWWM_SAYAMASTERS4 = "I don't know about you, but I'm already hearing the Pillar Men theme in my head."; +SWWM_SAYAMASTERS5 = "Go get them, \cdDemo Demostar\c-... ... ... OK maybe that's a terrible pun, forget about it."; +// Heretic E3M8 +SWWM_SAYADSPARIL1 = "This is it, \cdDemo-chan\c-. You're about to face that stupid-ass wizard."; +SWWM_SAYADSPARIL2 = "You're gonna save another world, and all in record time. You're on a roll!"; +SWWM_SAYADSPARIL3 = "... Oh, and remember, there's a surprise waiting for you at home. Oh, you're so gonna love it."; +SWWM_SAYADSPARIL4 = "Splgslshglgh"; +SWWM_SAYADSPARIL5 = "Oh shit that got picked up by the voice recognition? Oops..."; +// Heretic E4M8 +SWWM_SAYAHEADS1 = "Geez, I'm getting impatient with all this stuff. I hope this really takes you back home."; +SWWM_SAYAHEADS2 = "And if not, well, more time for me to refine this \"present\" that I'm going to give ya."; +SWWM_SAYAHEADS3 = "Thanks to this, I've managed to improve its potency even further. This is going to be fun."; +SWWM_SAYAHEADS4 = "I seriously can't wait to try it, and I'm sure you're also dying to know..."; +SWWM_SAYAHEADS5 = "Smite thy foes and come claim thy prize, o \cdDemolitionist\c-."; +SWWM_SAYAHEADS6 = "... I seriously just fucking said that..."; +// Heretic E5M8 +SWWM_SAYABULLS1 = "And it still keeps going, oh my god..."; +SWWM_SAYABULLS2 = "It's like you're getting thrown around random realms. Look, I'm starting to get pissed."; +SWWM_SAYABULLS3 = "I'm so pissed in fact that, if the next portal doesn't immediately send you back to Parthoris, I'll just..."; +SWWM_SAYABULLS4 = "Yeah..."; +SWWM_SAYABULLS5 = "I NEED you to come back home, \cdDemo-chan\c-. I desperately need you here to test this."; +// Seven Portals +SWWM_SAYAGREETA1 = "There it is, \cdDemo-chan\c-. That's your target, that big stinky ugly monster. That's Korax."; +SWWM_SAYAGREETA2 = "... By the way, did you catch the guy's scent? It's bad, isn't it?"; +SWWM_SAYAGREETA3 = "God, imagine the smell in person... Just thinking about it is making my stomach turn."; +SWWM_SAYAGREETB1 = "Coward... Taunting us from afar..."; // Kirin reply +SWWM_SAYAGREETC1 = "Yeah, sneaky and stinky, telltale signs of an ugly bastard."; +SWWM_SAYAGREETD1 = "Ugly... Bastard?"; // Kirin reply +SWWM_SAYAGREETE1 = "I'd rather not explain, \cxKirin-kun\c-. You'd be very disappointed in all of humankind."; +SWWM_SAYAGREETF1 = "That's certainly not reassuring to hear..."; // Kirin reply +// Shadow Wood +SWWM_SAYABLOODA1 = "I don't know how this dude can even smell anything other than that rancid old dog fart stench he wafts."; +SWWM_SAYABLOODA2 = "Like seriously, jesus fucking christ..."; +SWWM_SAYABLOODB1 = "That ugly bastard needs to take a bath."; // Ibuki reply +SWWM_SAYABLOODC1 = "Ugly bastard? What's this now, some lame-ass doujin?"; +SWWM_SAYABLOODD1 = "Heh, nice one, \cgSayacchi\c-."; // Ibuki reply +// Hypostyle +SWWM_SAYAHYPO1 = "Here we are, after all that roaming around. Whatever lies here, we gotta slay it to catch the next portal."; +SWWM_SAYAHYPO2 = "I sure hope it's not a fucking dragon. That'd be the most cheap-ass generic boss ever."; +SWWM_SAYAHYPO3 = "Uh... I totally jinxed it, didn't I? I bet I did. Yeah, I bet it's a fucking dragon."; +SWWM_SAYAHYPO4 = "I bet THAT GUY is going to rise from the grave and fucking sell me his damn game for the thousandth time."; +// Heresiarch's Seminary +SWWM_KIRINWORSHIPA1 = "Pathetic, disgusting creature...\nWho would ever think of worshipping a foul beast such as yourself?"; +SWWM_KIRINWORSHIPB1 = "The only thing I'd worship is that juicy cock of yours, \cxKirin-kun\c-~"; // Saya reply +SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; +SWWM_KIRINWORSHIPD1 = "Guh! \cxKiriiiiin\c-! You got cola all over me! God damn it you spit as hard as you cum!"; // Saya reply +SWWM_KIRINWORSHIPD2 = "O-oh... Wait, this thing's still on. Shit... \cdDemo-chan\c- just read all of that."; +// Castle of Grief +SWWM_SAYAGAMEA1 = "Wow, look at fucking mister chessmaster over here... Fuck you!"; +SWWM_SAYAGAMEA2 = "This guy is a fucking idiot and he's pissing me off even more. I so want to watch you beat his sorry ass..."; +SWWM_SAYAGAMEB1 = "Chess nerd..."; // Ibuki +SWWM_SAYAGAMEC1 = "I bet he was in the chess club."; +// Necropolis +SWWM_SAYAMASTERSA1 = "Masters, masters... Whose masters? Awaken my masters? Well, whatever, I don't care what he says."; +SWWM_SAYAMASTERSA2 = "I so want you to kill this dude..."; +SWWM_SAYAMASTERSB1 = "Are you strong enough to face the fact you SMELL?"; // Ibuki reply +SWWM_SAYAMASTERSC1 = "I showered this morning, \crIbuki\c-."; +SWWM_SAYAMASTERSD1 = "I meant the stinky boy over there. You smell nice."; // Ibuki reply +SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitely has a pleasant scent to her."; // Kirin reply +SWWM_SAYAMASTERSF1 = "Guhuhuhu... Thanks."; +// Zedek +SWWM_SAYAFIGHTER1 = "This is where Zedek lies, the fighty boy. He probably thinks he's strong, but he hasn't met you."; +SWWM_SAYAFIGHTER2 = "Do watch out for any traps, though. I bet there's some nasty shit here."; +// Traductus +SWWM_SAYACLERICA1 = "If there's one thing I've learned from videogames is that clerics are the lowest trash."; +SWWM_SAYACLERICA2 = "That's everything I have to say."; +SWWM_SAYACLERICB1 = "I have never encountered a single cleric who hasn't attempted to assassinate me."; // Kirin reply +SWWM_SAYACLERICC1 = "Oh yeah, the people from the Sacrosanct Empire, right? Totally forgot about those."; +SWWM_SAYACLERICC2 = "Clerics fucking suck..."; +// Menelkir +SWWM_SAYAMAGE1 = "Menelkir's lair, huh... ... Oh god, don't tell \cxKirin-kun\c-, there's puzzles here."; +SWWM_SAYAMAGE2 = "Yeah, he's more than tired of stuff like this. And apparently now we're doing the picture matching kind."; +SWWM_SAYAMAGE3 = "Well, at least those are actual puzzles, and not whatever the fuck the other stuff was."; +SWWM_SAYAMAGE4 = "Even if they're... You know... The really lame and piss-easy kind."; +// Dark Crucible +SWWM_SAYAKORAXA1 = "This is it, \cdDemo\c-. The big stinky ugly bastard is waiting."; +SWWM_SAYAKORAXB1 = "At last, that vile schemer's evil reign shall end."; // Kirin reply +SWWM_SAYAKORAXC1 = "Time for him to take a fucking bath. After you rearrange his knees, of course."; // Ibuki reply +SWWM_SAYAKORAXD1 = "Even though \cvMeido\c- isn't watching, I can tell you the four of us are cheering you on."; +SWWM_SAYAKORAXE1 = "Fight on, \cdDemo-chan\c-. You can do it, we believe in you."; // Kirin reply +// Blight +SWWM_SAYABLIGHTA1 = "Hey, \cdDemo-chan\c-, remember puzzles?"; +SWWM_SAYABLIGHTB1 = "Nnnnngh..."; // Kirin reply +SWWM_SAYABLIGHTC1 = "I think \cxKirin\c- just heard me. Well... You know what to do."; +SWWM_SAYABLIGHTC2 = "I can tell this is going to be yet more bullshit, so be prepared for anything."; +// Constable's Gate +SWWM_SAYACONSTABLEA1 = "Castles and shit... It just keeps going. I said it in the briefing, anyway... So you know..."; +SWWM_SAYACONSTABLEA2 = "Please keep on exploding things. \cvMeido-chan\c- made some snacks, so we've got that at least."; +SWWM_SAYACONSTABLEB1 = "She really is so thoughtful, that girl..."; // Ibuki reply +SWWM_SAYACONSTABLEC1 = "Even though you can hear her curse everything under her breath about what's happening in there."; +SWWM_SAYACONSTABLED1 = "Yeah, that's our \cvMeido\c- alright."; // Ibuki reply +// Nave +SWWM_SAYANAVEA1 = "I want to borrow the reality bending powers of the \ctMishe\c- to destroy this entire world."; +SWWM_SAYANAVEA2 = "I'm seriously pissed, we all are pissed. Hell, even \cxKirin\c- is upset, and we can't calm him down anymore."; +SWWM_SAYANAVEB1 = "It's kind of cute and worrying at the same time."; // Ibuki reply +SWWM_SAYANAVEC1 = "NNNNNNNNGGGGGHHHHHHHH!"; // Kirin reply +SWWM_SAYANAVED1 = "\cxKirin-kun\c-, you're going to suffocate if you keep screaming into the pillow like that."; +SWWM_SAYANAVEE1 = "Maybe that's what he wants, \cgSaya\c-.\nHe seeks the sweet release of death to find inner peace."; // Ibuki +SWWM_SAYANAVEF1 = "If he wasn't immortal that would be an extremely fucked up thing to say, \crIbuki\c-."; +// Dark Citadel +SWWM_SAYADEATHKINGS1 = "I'm so pissed I could punch a hole through reality to tell these fucking Deathkings to fuck off."; +// Kirin's Thrilling Commentary on Puzzles™ +// first puzzle switch on Seven Portals +SWWM_KIRINPUZZLEA1 = "A peculiar contraption... Allegedly it cites to be part of a larger whole, calling itself a \"puzzle\"."; +SWWM_KIRINPUZZLEA2 = "\cgSayacchi\c- did mention you'd be coming across these. That's most certainly intriguing..."; +// second puzzle switch on Seven Portals +SWWM_KIRINPUZZLEB1 = "Another one... Interesting..."; +// third puzzle switch on Seven Portals +SWWM_KIRINPUZZLEC1 = "I fail to see now what makes this exactly a \"puzzle\". This is no more than a switch hunt."; +SWWM_KIRINPUZZLEC2 = "Hardly a challenge to one's intellect, wouldn't you agree, \cdDemo-chan\c-?"; +// first puzzle switch on Shadow Wood +SWWM_KIRINPUZZLED1 = "It does seem that these \"puzzle switches\" simply keep on showing up wherever you go."; +SWWM_KIRINPUZZLED2 = "I'm sure you are as tired as I am of them."; +// fourth puzzle switch on Shadow Wood +SWWM_KIRINPUZZLEE1 = "These so-called \"puzzles\"... They're an insult to our intelligence."; +SWWM_KIRINPUZZLEE2 = "... I hope I'm not sending too many of these messages."; +// first puzzle switch on Heresiarch's Seminary +SWWM_KIRINPUZZLEF1 = "When will it end? Just how many fractions of \"puzzles\" are we to solve???"; +SWWM_KIRINPUZZLEF2 = "Is this how that sayzha axhkhashaar dares to mock us? With these tiresome games?"; +SWWM_KIRINPUZZLEF3 = "They... Nnngh... Kheza sakharei!"; +SWWM_KIRINPUZZLEG1 = "\cxKirin-kun\c-, I think you're getting a bit too worked up about this."; // Saya reply +SWWM_KIRINPUZZLEH1 = "Yes... I... I'll just lie down for a while, s-sorry..."; +SWWM_KIRINPUZZLEI1 = "... Poor guy. I do agree with him, though... This shit really gets on your nerves, doesn't it?"; // Saya reply +SWWM_KIRINPUZZLEI2 = "Well... Gonna go give \cxKirin-kun\c- some TLC now. Don't worry, he'll be fine. He's in good hands."; +// first puzzle switch on Blight +SWWM_KIRINPUZZLEJ1 = "We can't escape, can we? These \"puzzles\" continue to haunt us even now..."; +SWWM_KIRINPUZZLEJ2 = "This accursed land... Plagued by these vile contraptions... I shall never set foot in it. Mark my words."; +// last puzzle switch on Blight +SWWM_KIRINPUZZLEK1 = "Please... Make it stop..."; +SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, hey... It's alright. Here... Drink up, it'll help you relax.\c-"; // Ibuki reply +SWWM_KIRINPUZZLEM1 = "Gulp... Gulp... Gulp..."; +SWWM_KIRINPUZZLEN1 = "Man, look at him go... Drinking it all up like a champ."; // Saya reply +SWWM_KIRINPUZZLEO1 = "You know how it is... Once they find a breast to suckle on, all their worries fade away..."; // Ibuki reply +SWWM_KIRINPUZZLEP1 = "You know \cdDemo-chan\c- can read what we're saying, right?"; // Saya reply +SWWM_KIRINPUZZLEQ1 = "Oh, I'm sure they'd be more than happy to have their turn once the mission's over, hm?"; // Ibuki reply +// first puzzle switch on Constable's Gate +SWWM_KIRINPUZZLER1 = "Let this be the last of these \"puzzles\" that we may encounter..."; +SWWM_KIRINPUZZLER2 = "Urp..."; +SWWM_KIRINPUZZLER3 = "My apologies."; +SWWM_KIRINPUZZLES1 = "That was some good milk, wasn't it?"; // Saya reply +SWWM_KIRINPUZZLET1 = "Certainly... I am grateful for \crIbuki\c-'s blessing."; +SWWM_KIRINPUZZLEU1 = "Making her able to lactate at will is a blessing, yeah. I'm sure \cdDemo\c- agrees too."; // Saya reply +// super secret cheats +SWWM_ZNVTXT1 = "\cdDemolitionist\c-, it is me, \chZanaveth The Corruptor\c-. I have been witness of the act you have now acted, yes."; +SWWM_ZNVTXT2 = "It is \cf%d\c- years since... and those magic words, I can see them again. Much impressed, very much impressed."; +SWWM_ZNVTXT3 = "So, you can do the thing... As have the \ctMishe\c- also taught to myself. This is a nonexpected surprise, yes."; +SWWM_ZNVTXT4 = "There are many such powerful words to use, \cdDemolitionist\c-. Do keep keeping to discover all of them."; +SWWM_ZNVTXT5 = "And now I have to take off. Please extend greetings to aunt \cgSaya\c- for my part. Good luck, \cdDemolitionist\c-."; +// easter egg +SWWM_SAYAWASTEA1 = "Quit wasting ammo!"; +SWWM_SAYAWASTEB1 = "You're still doing it? Seriously?"; +SWWM_SAYAWASTEC1 = "OK, you're clearly just doing this for your own personal satisfaction."; +SWWM_SAYAWASTED1 = "It's almost like you're jerking it off, kinda..."; +SWWM_SAYAWASTED2 = "Uh, forget I said that."; +SWWM_SAYAWASTEE1 = "And still going... Rackin' it along."; +SWWM_SAYAWASTEF1 = "OK, I promise I'll stop messaging you about it. You do you, I guess."; diff --git a/language.def_lore b/language.def_lore index 7dbd26f19..6dc07187c 100644 --- a/language.def_lore +++ b/language.def_lore @@ -179,7 +179,7 @@ SWWM_LORETXT_ANARUKON = "Among the many members of this race inhabiting Earth, one name many would recognize would be that of \cfAshley Knox\c-, lead singer and guitarist of \cfThe Black Rat's Coven\c-. The reveal of not being actually human was received with much surprise, though it was not as spectacular as the fact that two other members of the band were literal gods.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfYeah, really cool stuff about parallel worlds and gods and warriors and shit, ain't it? Stuff like this really makes me wish I could just like... travel all over the multiverse finding neat stuff and meeting cool people, you know. Maybe one day, who knows. All the shit that those fucking UAC idiots have done honestly made me rethink ever getting into interdimensional travel. Seriously, it's like every single damn old story about \"opening a portal to hell\" was just a prediction for that. Anyway, I'm getting a bit sidetracked. So, Ashley-san is one of them, that's neat and all, at least Yu-chan gets to have her own immortal girlfriend, huh. Same for Taro nii-san, having that damn prankster gremlin Ellen-san, also one of these people, of course. When the hell is it going to be my turn? I mean, not that I mind, I'm fine with having Maidbot and Ibuki around, and... I guess you too but... *sigh*, makes me damn jealous, you know.\c-"; +"\cfYeah, really cool stuff about parallel worlds and gods and warriors and shit, ain't it? Stuff like this really makes me wish I could just like... travel all over the multiverse finding neat stuff and meeting cool people, you know. Maybe one day, who knows. All the shit that those fucking UAC idiots have done honestly made me rethink ever getting into interdimensional travel. Seriously, it's like every single damn old story about \"opening a portal to hell\" was just a prediction for that. Anyway, I'm getting a bit sidetracked. So, Ashley-san is one of them, that's neat and all, at least Yu-chan gets to have her own immortal girlfriend, huh. Same for Taro nii-san, having that damn prankster gremlin Ellen-san, also one of these people, of course. When the hell is it going to be my turn? I mean, not that I mind, I'm fine with having Meido and Ibuki around, and... I guess you too but... *sigh*, makes me damn jealous, you know.\c-"; SWWM_LORETXT_ANARUKON2 = "\cxName:\c-\n" "\cf Anarukon (\"Undying\")\c-\n" @@ -232,17 +232,19 @@ SWWM_LORETAG_ASHLEY = "Knox, Ashley"; SWWM_LORETAB_ASHLEY = "People"; SWWM_LOREREL_ASHLEY = "Yui;Saya;Sankaideriha;Gods"; SWWM_LORETXT_ASHLEY = -"\cxFull Name:\c-\n" -"\cf Ashley Knox\c-\n" -"\cf Axaleyu Yanikov (Anarukon name)\c-\n" -"\cxNationality:\c-\n" -"\cf British\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1964-10-31 (before reveal)\c-\n" -"\cf 1887-10-31 (actual)\c-\n" -"\cxTwitter:\c-\n" -"\cf @ashley_da_witch (main)\c-\n" -"\cf @stylish_witch (art)\c-\n" +" \cxFull Name:\c-\n" +" \cf Ashley Knox\c-\n" +" \cf Axaleyu Yanikov (Anarukon name)\c-\n" +" \cxNationality:\c-\n" +" \cf British\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1964-10-31 (before reveal)\c-\n" +" \cf 1887-10-31 (actual)\c-\n" +" \cxOccupation:\c-\n" +" \cf Lead Singer, Guitarist (Black Rat's Coven)\c-\n" +" \cxTwitter:\c-\n" +" \cf @ashley_da_witch (main)\c-\n" +" \cf @stylish_witch (art)\c-\n" "\n" "Born in London in 1887, to \cfYrikha Yanikov\c- and \cfMaxwell A. Knox\c-, \cfAshley\c- is the oldest of three children, the others being \cfAdrian Knox\c-, veteran of both WW1 and WW2, and \cfViola Knox\c-, a witch in training (still as of 2148). She spent most of her childhood in Cornwall, after her mother had to flee due to accusations of witchcraft (which weren't exactly false).\n" "\n" @@ -287,14 +289,17 @@ SWWM_LORETAG_BIGSHOT = "Mr. BIG SHOT"; SWWM_LORETAB_BIGSHOT = "People"; SWWM_LOREREL_BIGSHOT = "Blackmann;Saya"; SWWM_LORETXT_BIGSHOT = -"\cxFull Name:\c-\n" -"\cf John Gunns\c-\n" -"\cxAlias:\c-\n" -"\cf Mr. BIG SHOT\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2110-11-12\c-\n" +" \cxFull Name:\c-\n" +" \cf John Gunns\c-\n" +" \cxAlias:\c-\n" +" \cf Mr. BIG SHOT\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2110-11-12\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO (BIGSHOT Industries)\c-\n" +" \cf Advisor (Blackmann Arms)\c-\n" "\n" "A man shrouded in mystery, having appeared out of nowhere, announcing himself to be the son of \cfBenellus, God of Shotguns\c-. The believability of this story is quite questionable, despite the insistence of his own mother, who claims that the god descended from the heavens, and giving her one \"blessed shotgun shell\", she was ordered to plant it on the ground, as from it, a man would be born, who would become the \"mightiest wielder of the ultimate firearm\". She said that John, already fully grown, sprung up from the ground only days after the shell was planted, and immediately proceeded to \"make shotguns burst from the ground around himself\", and he used the metals from them to build the very fortress the family has in the Nevada desert.\n" "\n" @@ -303,14 +308,17 @@ SWWM_LORETXT_BIGSHOT = "\cxSaya's Notes:\c-\n" "\cfYeah, dude's crazy, but see, THAT thing... I really REALLY wanted it. I even met up with the guy to get my hands on it. That shit is like... completely fucking insane, and I bet no living human would be able to fucking use it, BUT... you definitely can. Just so you know, every time you whip out that ballbusting hunk of metal, I'll be watching, so you better give me some fine entertainment to munch popcorn to.\c-"; SWWM_LORETXT_BIGSHOT2 = -"\cxFull Name:\c-\n" -"\cf John Gunns\c-\n" -"\cxAlias:\c-\n" -"\cf Mr. BIG SHOT\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2110-11-12\c-\n" +" \cxFull Name:\c-\n" +" \cf John Gunns\c-\n" +" \cxAlias:\c-\n" +" \cf Mr. BIG SHOT\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2110-11-12\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO (BIGSHOT Industries)\c-\n" +" \cf Advisor (Blackmann Arms)\c-\n" "\n" "A man shrouded in mystery, having appeared out of nowhere, announcing himself to be the son of \cfBenellus, God of Shotguns\c-. The believability of this story is quite questionable, despite the insistence of his own mother, who claims that the god descended from the heavens, and giving her one \"blessed shotgun shell\", she was ordered to plant it on the ground, as from it, a man would be born, who would become the \"mightiest wielder of the ultimate firearm\". She said that John, already fully grown, sprung up from the ground only days after the shell was planted, and immediately proceeded to \"make shotguns burst from the ground around himself\", and he used the metals from them to build the very fortress the family has in the Nevada desert.\n" "\n" @@ -322,34 +330,6 @@ SWWM_LORETXT_BIGSHOT2 = "\cfYeah, dude's crazy, but see, THAT thing... I really REALLY wanted it. I even met up with the guy to get my hands on it. That shit is like... completely fucking insane, and I bet no living human would be able to fucking use it, BUT... you definitely can. Just so you know, every time you whip out that ballbusting hunk of metal, I'll be watching, so you better give me some fine entertainment to munch popcorn to.\c-\n" "\n" "\cfHonestly I'm not surprised the guy survived the whole thing, probably blasted a thousand demons himself with the shit he's got in there, too. Also, no fucking clue what that thing about fights and faces and shit is, must've gone even crazier with all the demon invasion stuff happening.\c-"; -SWWM_LORETAG_BLACKFIREIGNITER = "Blackfire Igniter"; -SWWM_LORETAB_BLACKFIREIGNITER = "Item"; -SWWM_LOREREL_BLACKFIREIGNITER = "Sankaideriha;Unissix;Gods;Saya"; -SWWM_LORETXT_BLACKFIREIGNITER = -"\cxDesignation:\c-\n" -"\cf Blackfire Igniter\c-\n" -"\cxManufacturer:\c-\n" -"\cf Unissix Crafts\c-\n" -"\cf Design by LS\c-\n" -"\cxClassification:\c-\n" -"\cf Flamethrower\c-\n" -"\n" -"Devised by the primordial god of magic themself, the \cfBlackfire Igniter\c- is rather surprisingly a very cold, dark weapon. Blackfire is a type of magical flame that absorbs heat and light, rather than emitting them.\n" -"\n" -"During the height of \cfUnissix Crafts\c-'s fame, the god personally approached \cfMisa Unissix\c- herself with a request for a weapon that would allow just about anyone to readily perform \cfBlackfire Manipulation Magic\c-.\n" -"\n" -"The Igniter is the perfect blend of magic and technology, weaponized. At your fingertips, you have the power to call forth freezing flames that will turn your enemies into pretty ice statues in mere seconds.\n" -"\n" -"\cfPrimary Fire:\c- Releases a continuous stream of Blackfire, with moderate range. The flames not only rapidly freeze whatever they touch, but also reduce the air temperature, leaving a lingering freeze effect.\n" -"\n" -"\cfSecondary Fire:\c- Concentrated bursts that form spears of supercooled air which can impale small targets, or tear right through them.\n" -"\n" -"\cfReloading:\c- Attach up to two canisters to replenish the weapon's internal dark mana reserves. Each canister will remain locked in until it's been emptied, otherwise residual energy could escape and bring harm to the user. If there is an empty canister attached, the reload action will detach it first. Fresh canisters can still be used even if the tank is full, and they will act as an extra \"buffer\" of mana until depleted.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfSo yeah, Misa-Misa has other toys besides that one bigass gun. Pretty cool that she gets requests and whatnot, lil' cinnamon roll's quite popular there, heheheh...\c-\n" -"\n" -"\cfI heard very little of all this Blackfire stuff from LS-sama, but it sounds like fun. Wonder if it can be used in a spellcard...\c-"; SWWM_LORETAG_BLACKMANN = "Blackmann Arms"; SWWM_LORETAB_BLACKMANN = "People"; SWWM_LOREREL_BLACKMANN = "BigShot;Saya"; @@ -510,14 +490,17 @@ SWWM_LORETAG_CYTHO = "Valathor, Cytho"; SWWM_LORETAB_CYTHO = "People"; SWWM_LOREREL_CYTHO = "Hell;Ellen;Anarukon;DemonInvasion;UAC;Saya;AkariLabs;Demolitionist"; SWWM_LORETXT_CYTHO = -"\cxFull Name:\c-\n" -"\cf Archduke Cytho of House Valathor\c-\n" -"\cxNationality:\c-\n" -"\cf Kuriste\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2008-10-09\c-\n" -"\cxTwitter:\c-\n" -"\cf @incuvalathor\c-\n" +" \cxFull Name:\c-\n" +" \cf Archduke Cytho of House Valathor\c-\n" +" \cxNationality:\c-\n" +" \cf Kuriste\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2008-10-09\c-\n" +" \cxOccupation:\c-\n" +" \cf Independent News Reporter\c-\n" +" \cf Ambassador (Kuriste Kingdom)\c-\n" +" \cxTwitter:\c-\n" +" \cf @incuvalathor\c-\n" "\n" "Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble \cfHouse Valathor\c-, \cfCytho\c- took to the family business upon reaching adulthood, quickly climbing the ranks of \cfHell\c-'s sex work industry, partly due to his innate beauty, but also the rapidly accumulating \"satisfied customers\" he would regularly service, and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele.\n" "\n" @@ -603,16 +586,18 @@ SWWM_LORETAG_DEMOLITIONIST = "Demolitionist"; SWWM_LORETAB_DEMOLITIONIST = "People"; SWWM_LOREREL_DEMOLITIONIST = "AkariLabs;Ibuki;Saya;Zanaveth2;Hell;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho"; SWWM_LORETXT_DEMOLITIONIST = -"\cxFull Name:\c-\n" -"\cf Akari Labs First Generation Autonomous Combat Unit\c-\n" -"\cf Demolitionist (codename)\c-\n" -"\cf Demo Miyamoto (first unit)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxFull Name:\c-\n" +" \cf Akari Labs First Generation Autonomous Combat Unit\c-\n" +" \cf Demolitionist (codename)\c-\n" +" \cf Demo Miyamoto (first unit)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOccupation:\c-\n" +" \cf Pro Hero\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "The \cfDemolitionist\c- is one of the crowning achievements of \cfAkari Labs\c- on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the \cfRed Oni\c- supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both \cfSaya Miyamoto\c- and \cfArchduke Cytho Valathor\c-, representative of \cfHell\c-'s civilian population.\n" "\n" @@ -633,16 +618,18 @@ SWWM_LORETXT_DEMOLITIONIST = "\n" "\cfGet back to work, you silly robutt.\c-"; SWWM_LORETXT_DEMOLITIONIST2 = -"\cxFull Name:\c-\n" -"\cf Akari Labs First Generation Autonomous Combat Unit\c-\n" -"\cf Demolitionist (codename)\c-\n" -"\cf Demo Miyamoto (first unit)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxFull Name:\c-\n" +" \cf Akari Labs First Generation Autonomous Combat Unit\c-\n" +" \cf Demolitionist (codename)\c-\n" +" \cf Demo Miyamoto (first unit)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOccupation:\c-\n" +" \cf Pro Hero\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "The \cfDemolitionist\c- is one of the crowning achievements of \cfAkari Labs\c- on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the \cfRed Oni\c- supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both \cfSaya Miyamoto\c- and \cfArchduke Cytho Valathor\c-, representative of \cfHell\c-'s civilian population.\n" "\n" @@ -654,7 +641,7 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of \cfDemo Miyamoto\c-, and being referred to by Saya as her \"child\". Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" "\n" -"Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate Maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Maidbot and Ibuki.\n" +"Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c-\n" @@ -663,16 +650,18 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "\cfAnyway, no more reading about yourself while you're working. Go away, silly.\c-"; SWWM_LORETXT_DEMOLITIONIST3 = -"\cxFull Name:\c-\n" -"\cf Akari Labs First Generation Autonomous Combat Unit\c-\n" -"\cf Demolitionist (codename)\c-\n" -"\cf Demo Miyamoto (first unit)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxFull Name:\c-\n" +" \cf Akari Labs First Generation Autonomous Combat Unit\c-\n" +" \cf Demolitionist (codename)\c-\n" +" \cf Demo Miyamoto (first unit)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOccupation:\c-\n" +" \cf Pro Hero\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "The \cfDemolitionist\c- is one of the crowning achievements of \cfAkari Labs\c- on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the \cfRed Oni\c- supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both \cfSaya Miyamoto\c- and \cfArchduke Cytho Valathor\c-, representative of \cfHell\c-'s civilian population.\n" "\n" @@ -684,7 +673,7 @@ SWWM_LORETXT_DEMOLITIONIST3 = "\n" "Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of \cfDemo Miyamoto\c-, and being referred to by Saya as her \"child\". Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" "\n" -"Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate Maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Maidbot and Ibuki. Since May of 2171, they are also additionally engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire of Akkou\c-.\n" +"Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. Since May of 2171, they are also additionally engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire of Akkou\c-.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c-\n" @@ -885,6 +874,8 @@ SWWM_LORETXT_DOOMGUY = "\cf American\c-\n" "\cxDate of Birth:\c-\n" "\cf CLASSIFIED\c-\n" +"\cxOccupation:\c-\n" +"\cf Marine (UAC)\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -907,6 +898,8 @@ SWWM_LORETXT_DOOMGUY2 = "\cf American\c-\n" "\cxDate of Birth:\c-\n" "\cf CLASSIFIED\c-\n" +"\cxOccupation:\c-\n" +"\cf N/A\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -929,6 +922,8 @@ SWWM_LORETXT_DOOMGUY3 = "\cf American\c-\n" "\cxDate of Birth:\c-\n" "\cf CLASSIFIED\c-\n" +"\cxOccupation:\c-\n" +"\cf N/A\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -961,14 +956,17 @@ SWWM_LORETAG_ELLEN = "Yanikov, Elena XXI"; SWWM_LORETAB_ELLEN = "People"; SWWM_LOREREL_ELLEN = "Ibuki;Taro;Ashley;Saya;Anarukon;WhiteScar;Hell;Yui;Cytho"; SWWM_LORETXT_ELLEN = -"\cxFull Name:\c-\n" -"\cf Elena \"Ellen\" Yanikov XXI\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2066-06-06\c-\n" -"\cxTwitter:\c-\n" -"\cf @Mischief_XXI\c-\n" +" \cxFull Name:\c-\n" +" \cf Elena \"Ellen\" Yanikov XXI\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2066-06-06\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary\c-\n" +" \cxTwitter:\c-\n" +" \cf @Mischief_XXI\c-\n" +"\n" "\n" "Born in Boston in 2066, to \cfElena Yanikov XIX\c- and \cfGottfried Steiner\c-, \cfEllen\c- is the younger of two sisters (both of them are named Elena). This oddity of all women in her family sharing the same name can be traced back to \cfElena Yanikov I\c-, born in 1703, who made this decision, out of some superstitious belief that it would \"preserve their immortality forever\". This was not far off from the truth, however, but it had nothing to do with inheritance of names. It has been verified that \cfAnarukon\c- genes are fully preserved across all female descendants, no matter how many generations, especially so for those from the Yanikov lineage.\n" "\n" @@ -986,37 +984,6 @@ SWWM_LORETXT_ELLEN = "\cfOh yeah, speaking of Ellen-san. She's a goddamn massive prankster, like, the most awfully skilled troll you could ever imagine, even. See, there was this one time... actually, I think I'll keep quiet about it, because it was embarrassing as all hell. My ass is still sore from back then. I'm NOT going to explain, fuck no. Use your imagination, Demo-chan.\c-\n" "\n" "\cfAh, also, one super good thing about having her around. She's got some interesting connections. Yeah, most people don't know, but her gramps is a demon. Like, actual demon, from Hell and all. Some real cutie too. Name's Cytho Valathor, and he says he's a \"reformed incubus\", whatever that means. Whenever I need to know anything about what's going on in the land of fire 'n brimstone, he's the guy I go to.\c-"; -SWWM_LORETAG_EMPCARBINE = "Rail Carbine"; -SWWM_LORETAB_EMPCARBINE = "Item"; -SWWM_LOREREL_EMPCARBINE = "EngineTech;DecadeMech;UAC;Saya"; -SWWM_LORETXT_EMPCARBINE = -"\cxDesignation:\c-\n" -"\cf EMP Rail Carbine\c-\n" -"\cxManufacturer:\c-\n" -"\cf Tach-Engine Technology Institute\c-\n" -"\cxClassification:\c-\n" -"\cf Directed Energy Weapon\c-\n" -"\n" -"The \cfEMP Rail Carbine\c- is \cfTach-Engine\c-'s very first attempt at combining existing human technology with the retrieved experiments from their expedition to the ruined headquarters of \cfDecade Mechanics\c-. Akin to typical particle-beam weaponry, but with a boost of thundering, highly destructive exotic matter, it has been deemed far superior even to the mighty \cfThunder Buster\c- so well-prized by UAC troops.\n" -"\n" -"Unexpectedly, the Rail Carbine is a tube fed bolt-action rifle, which employs shielded rods of pure \cfDysedum\c-. Each of these allowing the weapon to discharge guided 20kA pulses towards an ionized target, frying it in an instant, and potentially spreading its deadly effects to others nearby.\n" -"\n" -"It should be noted that this weapon is unsafe to use in water, as the discharge will spread violently throughout the entire medium.\n" -"\n" -"\cfPrimary Fire:\c- Hold to emit a faint ionizing charge towards the aimed spot. The longer this is held, the more accurate the shot will be. Release to discharge the beam. If the rod has been depleted, cycle the bolt to load a new one.\n" -"\n" -"\cfSecondary Fire:\c- Also emits an ionizing charge, but does not discharge on release. Useful if you can't guarantee your target will always be in sight, or if you want to quickly mark several targets.\n" -"\n" -"\cfZoom:\c- Adjustable sight up to 8x.\n" -"\n" -"\cfReloading:\c- More rods can be fed into the weapon as needed, up to a maximum of three.\n" -"\n" -"\cfTechniques:\c- By ionizing several targets you can guarantee that the beam will branch out into lesser arcs and strike them all, though the damage potential will be divided among them.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfYou know, anything that dabs on the UAC with its mere existence is good in my book.\c-\n" -"\n" -"\cfThis thing, though, also gets bonus points for its sheer pants-shittingly intense potential to deep fry sons of bitches. Seriously, it's like actual fucking lightning shooting out of this.\c-"; SWWM_LORETAG_ENGINETECH = "Tach-Engine"; SWWM_LORETAB_ENGINETECH = "People"; SWWM_LOREREL_ENGINETECH = "UAC;Nukuri;DecadeMech;Saya;Nekuratek;WhiteScar"; @@ -1133,30 +1100,6 @@ SWWM_LORETXT_FABRICATOR = "\cfOh, you've got to be fucking kidding me. Now nerdboy's just straight up giving us bullshit gacha nonsense, with tiers and all.\c-\n" "\n" "\cfI swear, he's doing this shit on purpose to piss me off or something.\c-"; -SWWM_LORETAG_FISTGUN = "Hand of Divine"; -SWWM_LORETAB_FISTGUN = "Item"; -SWWM_LOREREL_FISTGUN = "Unissix;Gods;Zanaveth3;Saya"; -SWWM_LORETXT_FISTGUN = -"\cxDesignation:\c-\n" -"\cf Hand of Divine\c-\n" -"\cxManufacturer:\c-\n" -"\cf Korovithuhcp (original)\c-\n" -"\cf Unissix Crafts (replica)\c-\n" -"\cxDesignation:\c-\n" -"\cf Magic Gauntlet\c-\n" -"\n" -"The \cfHand of Divine\c- was a weapon that the god \cfKorovithuhcp\c- constructed countless millenia ago, and had been passed down among many heroes of legend. Eventually it was lost, and the god had no interest in building a new one. This, obviously, did not stop \cfMisa Unissix\c- from attempting to do exactly just that. Following historical records of its use, she built her own version through a blend of arcane magic and modern technology. She gifted one to her daughter, \cfZanaveth Nekuraku III\c-, and another to the \cfDemolitionist\c-.\n" -"\n" -"\cfPrimary Fire:\c- Charges up a punch, and then releases it. The gauntlet will fling itself forward and then return to you.\n" -"\n" -"\cfSecondary Fire:\c- Charges up a wide arc slap. On release this will very loudly and violently whack all targets in front of you.\n" -"\n" -"\cfTechniques:\c- Due to its nature, the Hand of Divine is susceptible to the effects of a \cfRagekit\c-, increasing its strength and range.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfMan that sure was a special delivery from Zana-chan. And when we showed that it was good, and fun, Misa-Misa got all excited and started mass-producing them. She's just too adorable, I swear.\c-\n" -"\n" -"\cfAnyway, those fiends are gonna get knocked the fuck out with this thing. Can't wait to see it in action on real targets. Especially after... that incident with the punching bag.\c-"; SWWM_LORETAG_FORX = "Forx Aeronautics"; SWWM_LORETAB_FORX = "People"; SWWM_LOREREL_FORX = "Propulsor;Saya;UAC"; @@ -1421,39 +1364,6 @@ SWWM_LORETXT_GODS2 = "\cfYou know, some people ask me how I'm still agnostic. I doubt they really know what agnosticism even is.\c-\n" "\n" "\cfUpdate: The stuff about the admins is in another article. That really was fucking wild, I swear. There's no way in hell I'll ever forget about what happened the day after our wedding with Kirin-kun, holy fuck...\c-"; -SWWM_LORETAG_GRANDLANCE = "Grand Lance"; -SWWM_LORETAB_GRANDLANCE = "Item"; -SWWM_LOREREL_GRANDLANCE = "Kmonn;Xekke;Saya;Unissix"; -SWWM_LORETXT_GRANDLANCE = -"\cxDesignation:\c-\n" -"\cf Suvan-Kin (\"Grand Lance\")\c-\n" -"\cxManufacturer:\c-\n" -"\cf Eushura Kmonn Jr.\c-\n" -"\cxClassification:\c-\n" -"\cf Portable Rail Gun\c-\n" -"\n" -"Devised as the \"last word\" in weaponry, the \cfSuvan-Kin\c- (\"Grand Lance\" in the \cfXekkas\c- language) is the world's first truly portable rail gun, capable of launching projectiles at speeds of up to 7500km/h (or 14000km/h at full charge). The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, easy to replace when needed. The ammunition employed are high-resonant Almasteel spears, capable of piercing cleanly through anything, without even as much as a single dent.\n" -"\n" -"If the piercing potential of these spears isn't destructive enough, a miniature pure-fusion bomb embedded at the head will surely add up even more to that. In the words of the \cfXekkian\c- people: \cf\"The blinding flames of a sacrificed newborn star shall tear asunder all life, rend the soul from its body, and leave no trace whatsoever of those unfortunate to have wronged the wielder of the Grand Lance.\"\c-\n" -"\n" -"\cfPrimary Fire:\c- Single-target firing. The spear will automatically detonate on contact with anything. The area of effect is rather massive, so keep your distance. Due to the resilience of the material used, the spear will not be destroyed, and may potentially ricochet and hit something else.\n" -"\n" -"\cfSecondary Fire:\c- Multi-target firing. The spear is shot at a much higher velocity, and will penetrate multiple targets until finally stopping at something sufficiently solid.\n" -"\n" -"\cfPrimary Reload:\c- Reload the weapon.\n" -"\n" -"\cfSecondary Reload:\c- Swaps the battery. This action can only be performed once the charge is low enough, as it would be wasteful otherwise.\n" -"\n" -"\cfTechniques:\c- The longer you hold secondary fire, the stronger and faster the shot will be. At full charge it may even breach walls.\n" -"\n" -"\cfWarning:\c- Before firing, the rails must extend to their full length. If there are any obstacles in the way that can't be cleared, operation of the weapon is cancelled.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfExcuse me, WHAT THE FUCK IS THIS???\c-\n" -"\n" -"\cfIs this a motherfucking rail gun? Like, the real deal? And it's actually portable?? AND IT SHOOTS MOTHERFUCKING SPEARS WITH MOTHERFUCKING FUSION BOMBS IN THEM??? OK, forget what I said about that other bigass gun from Kmonn, THIS SHIT is actually even more fucking ridiculous, like, what in the actual name of fuck???\c-\n" -"\n" -"\cfYeah, so that's why it's placed on the same slot as the Ynykron. Think of it as a \"safer\" alternative, basically. It's not world-ending, but it's still way too fucking strong.\c-"; SWWM_LORETAG_GRAVITYSUPPRESSOR = "Gravity Suppressor"; SWWM_LORETAB_GRAVITYSUPPRESSOR = "Item"; SWWM_LOREREL_GRAVITYSUPPRESSOR = "Cyrus;Saya"; @@ -1708,16 +1618,18 @@ SWWM_LORETAG_IBUKI = "Miyamoto, Ibuki"; SWWM_LORETAB_IBUKI = "People"; SWWM_LOREREL_IBUKI = "AkariLabs;WhiteScar;Taro;Saya"; SWWM_LORETXT_IBUKI = -"\cxFull Name:\c-\n" -"\cf Ibuki Miyamoto\c-\n" -"\cf Red Oni (codename)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2074-09-09\c-\n" -"\cxTwitter\c-\n" -"\cf @lewd_ibuki (main)\c-\n" -"\cf @ibuki_tiddy (photosets)\c-\n" +" \cxFull Name:\c-\n" +" \cf Ibuki Miyamoto\c-\n" +" \cf Red Oni (codename)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2074-09-09\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary, Nude Model, Vlogger\c-\n" +" \cxTwitter\c-\n" +" \cf @lewd_ibuki (main)\c-\n" +" \cf @ibuki_tiddy (photosets)\c-\n" "\n" "\cfIbuki\c- is the result of the \cfRed Oni\c- supersoldier program, devised by \cfSaya Miyamoto\c- of \cfAkari Labs\c-. The existence of this project was kept completely secret until her public reveal in June of 2077. There was much controversy surrounding the Red Oni program, including Saya's personal involvement in it, having accepted a 40 billion USD payment in exchange for it (which was found to be related to Texas having been sold back to Mexico many weeks before). Despite her clear potential and outstanding combat abilities, she was deployed too late, as only moments later, the \cfWhite Scar\c- happened, and with it, the complete devastation of the \cfUnited States\c-.\n" "\n" @@ -1776,6 +1688,8 @@ SWWM_LORETXT_IMANAKIT = "\cf Undetermined\c-\n" "\cxDate of Birth:\c-\n" "\cf Undetermined\c-\n" +"\cxOccupation:\c-\n" +"\cf CEO (Imanaki Corp)\c-\n" "\n" "The founder and CEO of \cfImanaki Corp\c-, and also last surviving member of the Imanaki family following the \cfOnoke Mansion Murders\c- of 2003. \cfTetsuya\c- had always been a very secretive individual, so nothing is really known of his personal life or history, nor even his appearance.\n" "\n" @@ -1903,16 +1817,18 @@ SWWM_LORETAG_KIRIN = "Xanai, Kirin"; SWWM_LORETAB_KIRIN = "People"; SWWM_LOREREL_KIRIN = "Anarukon;Novoskhana;Saya;GhoulHunt"; SWWM_LORETXT_KIRIN = -"\cxFull Name:\c-\n" -"\cf Kirin Xanai\c-\n" -"\cxTitle:\c-\n" -"\cf Child Emperor of the Sykhai Empire of Akkou\c-\n" -"\cxNationality:\c-\n" -"\cf Akkouxhei\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2080-04-13\c-\n" -"\cxTwitter:\c-\n" -"\cf @kiririn_xanai\c-\n" +" \cxFull Name:\c-\n" +" \cf Kirin Xanai\c-\n" +" \cxTitle:\c-\n" +" \cf Child Emperor of the Sykhai Empire of Akkou\c-\n" +" \cxNationality:\c-\n" +" \cf Akkouxhei\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2080-04-13\c-\n" +" \cxOccupation:\c-\n" +" \cf Communal Advisor (Sykhai Empire)\c-\n" +" \cxTwitter:\c-\n" +" \cf @kiririn_xanai\c-\n" "\n" "Born in 2080 to \cfSyrakha Yanikov\c- and \cfAzya Xanai\c-, \cfKirin\c- became the emperor of \cfAkkou\c- at the young age of 12, having shown great interest in following the steps of his mother.\n" "\n" @@ -2005,12 +1921,17 @@ SWWM_LORETAG_KMONN = "Kmonn, Eushura Jr."; SWWM_LORETAB_KMONN = "People"; SWWM_LOREREL_KMONN = "XAnimen;EngineTech;Gods;Xekke"; SWWM_LORETXT_KMONN = -"\cxFull Name:\c-\n" -"\cf Eushura Kmonn Jr.\c-\n" -"\cxNationality:\c-\n" -"\cf Xekkian\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 8731 BC\c-\n" +" \cxFull Name:\c-\n" +" \cf Eushura Kmonn Jr.\c-\n" +" \cxNationality:\c-\n" +" \cf Xekkian\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 8731 BC\c-\n" +" \cxOccupation:\c-\n" +" \cf CTO (Kmonn Shuna)\c-\n" +" \cf Advisor (Tach-Engine Technology Institute)\c-\n" +"\n" +"\n" "\n" "\cfEushura Kmonn Jr.\c-, son of \cfEushura Kmonn Sr.\c-, is a skilled inventor from the \cfKingdom of Xekke\c-, in the planet of \cfIxxeney\c-. From a young age he was raised to achieve the same grand goals as his father, and it wasn't long until he managed to earn his own fame after years of working under him as an assistant. His creativity and imagination knew no bounds, and he's been credited with a grand total of 279 major achievements in the fields of both offensive and defensive military technology, which has helped strengthen the kingdom's forces, making them one of the most trusted and requested across the \cfX'Animen Coalition\c- for allied defense tasks.\n" "\n" @@ -2045,12 +1966,17 @@ SWWM_LORETAG_LOCKE = "Dr. Locke"; SWWM_LORETAB_LOCKE = "People"; SWWM_LOREREL_LOCKE = "Kereshnovka;Saya"; SWWM_LORETXT_LOCKE = -"\cxFull Name:\c-\n" -"\cf Janus Locke Hoodth\c-\n" -"\cxNationality:\c-\n" -"\cf Qurensniv\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1980-07-30\c-\n" +" \cxFull Name:\c-\n" +" \cf Janus Locke Hoodth\c-\n" +" \cxNationality:\c-\n" +" \cf Qurensniv\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1980-07-30\c-\n" +" \cxOccupation:\c-\n" +" \cf Inventor\c-\n" +"\n" +"\n" +"\n" "\n" "\cfJanus Locke\c- is the younger brother of the late \cfDr. Häzel Hoodth\c- known by many as the \cfMad Doctor of Kereshnovka\c-. After hearing the news of Häzel's death in 1987 (specifically, receiving them 10 years after the fact, while he was studying abroad), in an oil rig explosion near the town while he was performing an experiment to \"obtain the essence of immortality\", Locke changed entirely. He decided to continue his brother's work, while at the same time still maintaining his current job as a toy maker. However, the madness into which he fell would extend even to that, with the various products that would come out under his brand of \cfDr. Locke's Wonderful Toys\c- becoming increasingly dangerous, or even outright lethal.\n" "\n" @@ -2126,31 +2052,33 @@ SWWM_LORETXT_LUNA = "\cfAnyway, life was good back then, with all those Nukuri cuties hanging out with us. You could see so many of them in the street, and well, that was also when I met Zana-sama too, best goddamn Christmas gift of my life, heh. Really REALLY miss those days, you know, pretty much hanging out with her every weekend or so. Nowadays, life just plain sucks, and I can only ever get the chance to like, send and get messages super-rarely by passing them through the Lunar Embassy (when those stupid-ass rabbits actually do their jobs).\c-\n" "\n" "\cfI really wish things would go back to how they used to be. I mean, sure, since our country didn't sign the bullshit White Scar treaty we can still use their tech, but they can't come here themselves, nor are we allowed to go there either. Fuck all that shit.\c-"; -SWWM_LORETAG_MAIDBOT = "Miyamoto, Maidbot"; +SWWM_LORETAG_MAIDBOT = "Miyamoto, Meido"; SWWM_LORETAB_MAIDBOT = "People"; SWWM_LOREREL_MAIDBOT = "Saya;Ibuki;Luna;Nukuri;Zanaveth2;Nekuratek;AkariLabs;Kirin"; SWWM_LORETXT_MAIDBOT = -"\cxFull Name:\c-\n" -"\cf Maidbot \"Meido\" Miyamoto\c-\n" -"\cf Meidobot (artistic name)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2017-07-07\c-\n" -"\cxTwitter:\c-\n" -"\cf @meidobot\c-\n" +" \cxFull Name:\c-\n" +" \cf Meido Miyamoto\c-\n" +" \cf Meidobot (artistic name)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2017-07-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Idol\c-\n" +" \cxTwitter:\c-\n" +" \cf @meidobot\c-\n" "\n" -"As \cfSaya Miyamoto\c-'s very first AI project, \cfMaidbot\c- was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Maidbot gradually got to be more \"life-like\", it was never enough. In the end, she was \"still a machine\".\n" +"As \cfSaya Miyamoto\c-'s very first AI project, \cfMeido\c- was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Meido gradually got to be more \"life-like\", it was never enough. In the end, she was \"still a machine\".\n" "\n" -"Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Maidbot to perform. By 2020, Maidbot had become a full-fledged \"Artificial Idol\", famous enough to take part in the Tokyo Olympics, singing the national anthem.\n" +"Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Meido to perform. By 2020, Meido had become a full-fledged \"Artificial Idol\", famous enough to take part in the Tokyo Olympics, singing the national anthem.\n" "\n" -"Following the \cfLuna Event\c- of 2021, Saya received the visit of \cfZanaveth Nekuraku II\c-, head of AI research at \cfNekuratek\c-, the largest \cfNukuri\c- tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all \cfAkari Labs\c- had achieved, and showed special interest in Maidbot, too.\n" +"Following the \cfLuna Event\c- of 2021, Saya received the visit of \cfZanaveth Nekuraku II\c-, head of AI research at \cfNekuratek\c-, the largest \cfNukuri\c- tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all \cfAkari Labs\c- had achieved, and showed special interest in Meido, too.\n" "\n" -"Having quickly befriended Saya at this point, she offered to enhance Maidbot's AI with the more advanced technology her people had: The \cfNekuronbot AI Framework\c-. Having accepted this offer, Maidbot was \"reborn\" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion.\n" +"Having quickly befriended Saya at this point, she offered to enhance Meido's AI with the more advanced technology her people had: The \cfNekuronbot AI Framework\c-. Having accepted this offer, Meido was \"reborn\" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion.\n" "\n" -"It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Maidbot knew, and confessed that in her new form, she could \"feel something\" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend.\n" +"It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Meido knew, and confessed that in her new form, she could \"feel something\" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend.\n" "\n" -"After these events, Maidbot became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more maidbots, wishing for the whole world to be able to have a Maidbot of their own. An adoption service was set up in 2023, where maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families.\n" +"After these events, Meido became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more Maidbots, wishing for the whole world to be able to \"have a Meido of their own\". An adoption service was set up in 2023, where Maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfMeido-chan is so sweet~ And her voice is so nice~\c-\n" @@ -2161,27 +2089,29 @@ SWWM_LORETXT_MAIDBOT = "\n" "\cfHehe... I'm really quite proud of making her \"fully featured\", by the way... Best decision of my life. Let me tell you, when we do \"things\" together... it feels like heaven~\c- \cg♥\c-"; SWWM_LORETXT_MAIDBOT2 = -"\cxFull Name:\c-\n" -"\cf Maidbot \"Meido\" Miyamoto\c-\n" -"\cf Meidobot (artistic name)\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2017-07-07\c-\n" -"\cxTwitter:\c-\n" -"\cf @meidobot\c-\n" +" \cxFull Name:\c-\n" +" \cf Meido Miyamoto\c-\n" +" \cf Meidobot (artistic name)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2017-07-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Idol\c-\n" +" \cxTwitter:\c-\n" +" \cf @meidobot\c-\n" "\n" -"As \cfSaya Miyamoto\c-'s very first AI project, \cfMaidbot\c- was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Maidbot gradually got to be more \"life-like\", it was never enough. In the end, she was \"still a machine\".\n" +"As \cfSaya Miyamoto\c-'s very first AI project, \cfMeido\c- was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Meido gradually got to be more \"life-like\", it was never enough. In the end, she was \"still a machine\".\n" "\n" -"Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Maidbot to perform. By 2020, Maidbot had become a full-fledged \"Artificial Idol\", famous enough to take part in the Tokyo Olympics, singing the national anthem.\n" +"Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Meido to perform. By 2020, Meido had become a full-fledged \"Artificial Idol\", famous enough to take part in the Tokyo Olympics, singing the national anthem.\n" "\n" -"Following the \cfLuna Event\c- of 2021, Saya received the visit of \cfZanaveth Nekuraku II\c-, head of AI research at \cfNekuratek\c-, the largest \cfNukuri\c- tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all \cfAkari Labs\c- had achieved, and showed special interest in Maidbot, too.\n" +"Following the \cfLuna Event\c- of 2021, Saya received the visit of \cfZanaveth Nekuraku II\c-, head of AI research at \cfNekuratek\c-, the largest \cfNukuri\c- tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all \cfAkari Labs\c- had achieved, and showed special interest in Meido, too.\n" "\n" -"Having quickly befriended Saya at this point, she offered to enhance Maidbot's AI with the more advanced technology her people had: The \cfNekuronbot AI Framework\c-. Having accepted this offer, Maidbot was \"reborn\" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion.\n" +"Having quickly befriended Saya at this point, she offered to enhance Meido's AI with the more advanced technology her people had: The \cfNekuronbot AI Framework\c-. Having accepted this offer, Meido was \"reborn\" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion.\n" "\n" -"It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Maidbot knew, and confessed that in her new form, she could \"feel something\" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend.\n" +"It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Meido knew, and confessed that in her new form, she could \"feel something\" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend.\n" "\n" -"After these events, Maidbot became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more maidbots, wishing for the whole world to be able to have a Maidbot of their own. An adoption service was set up in 2023, where maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families.\n" +"After these events, Meido became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more Maidbots, wishing for the whole world to be able to \"have a Meido of their own\". An adoption service was set up in 2023, where Maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families.\n" "\n" "In May of 2171, together with Saya and her other partners, she married \cfEmperor Kirin Xanai\c-, of the \cfSykhai Empire\c-, and thanks to him, her passion for singing returned once again.\n" "\n" @@ -2268,7 +2198,9 @@ SWWM_LORETXT_MIXOM = "\cxSaya's Notes:\c-\n" "\cfMoney and power, absolute dominance, bullshit capitalism. Disgusting... I hope they all explode.\c-\n" "\n" -"\cfYou can't take two steps without coming across something made by them, they are FUCKING EVERYWHERE. Like, for example, all the screws in your body? Mixom branded. The liquid cooling? Also Mixom... I could keep going, but it makes me feel gross saying their name so often.\c-"; +"\cfExcept the CEO, she's the only sane person in there but they throw her under the bus whenever she tries to change things. I do commend her for the effort, but this is clearly a losing battle. She should quit already and come here.\c-\n" +"\n" +"\cfBy the way, you can't take two steps without coming across something made by them, they are FUCKING EVERYWHERE. Like, for example, all the screws in your body? Mixom branded. The liquid cooling? Also Mixom... I could keep going, but it makes me feel gross saying their name so often.\c-"; SWWM_LORETAG_MODERNSPARKSTER = "Sparkster Rifle"; SWWM_LORETAB_MODERNSPARKSTER = "Item"; SWWM_LOREREL_MODERNSPARKSTER = "EngineTech;Nekuratek;DecadeMech;Saya;WhiteScar"; @@ -2393,12 +2325,17 @@ SWWM_LORETAG_NANA = "Miyamoto, Nana"; SWWM_LORETAB_NANA = "People"; SWWM_LOREREL_NANA = "Ryuji;Saya;Gensokyo;Yui;Taro;Kirin"; SWWM_LORETXT_NANA = -"\cxFull Name:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxFull Name:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Housemaker\c-\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- is the sole daughter of \cfKaguya Houraisan\c-, the exiled \cfLunarian\c- princess who made \cfGensokyo\c- her home. Having been raised and homeschooled entirely within \cfEientei\c- she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with \cfRyuji Miyamoto\c- in the 60's. Having fled the \cfHuman Village\c-, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could \"see the world\". This would happen in 1973, with the two leaving Gensokyo to form a family of their own.\n" "\n" @@ -2409,12 +2346,17 @@ SWWM_LORETXT_NANA = "\cxSaya's Notes:\c-\n" "\cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder guys are scared of her, always in constant fear of being CBT'd at any moment.\c-"; SWWM_LORETXT_NANA2 = -"\cxFull Name:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxFull Name:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Housemaker\c-\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- is the sole daughter of \cfKaguya Houraisan\c-, the exiled \cfLunarian\c- princess who made \cfGensokyo\c- her home. Having been raised and homeschooled entirely within \cfEientei\c- she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with \cfRyuji Miyamoto\c- in the 60's. Having fled the \cfHuman Village\c-, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could \"see the world\". This would happen in 1973, with the two leaving Gensokyo to form a family of their own.\n" "\n" @@ -2427,12 +2369,17 @@ SWWM_LORETXT_NANA2 = "\n" "\cfBy the way I did notice it, you know, when she hugged you, yes. She hasn't really tried to see other guys after dad was gone... But I think that maybe... she likes you kind of in a different way, y'know...\c-"; SWWM_LORETXT_NANA3 = -"\cxFull Name:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxFull Name:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Housemaker\c-\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- is the sole daughter of \cfKaguya Houraisan\c-, the exiled \cfLunarian\c- princess who made \cfGensokyo\c- her home. Having been raised and homeschooled entirely within \cfEientei\c- she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with \cfRyuji Miyamoto\c- in the 60's. Having fled the \cfHuman Village\c-, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could \"see the world\". This would happen in 1973, with the two leaving Gensokyo to form a family of their own.\n" "\n" @@ -2836,9 +2783,9 @@ SWWM_LORETXT_PUNTZERGAMMA = "\n" "The \cfPuntzer Gamma\c- is a mostly compact bullpup submachine gun featuring a horizontal mag loading system akin to 21st century classics like the \cfBreakerTek P90\c-. The weapon is additionally capable of delivering \"Fuller Auto\" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture.\n" "\n" -"\cfPrimary Fire:\c- Shoots the weapon.\n" +"\cfPrimary Fire:\c- Full auto shooting.\n" "\n" -"\cfSecondary Fire:\c- Cycles fire modes, between single shot, 3-round burst, full auto and fuller auto.\n" +"\cfSecondary Fire:\c- \"Fuller auto\" unloading.\n" "\n" "\cfReloading:\c- Reloads, as expected. Your \cfHammerspace™ Container\c-'s autoloaders will provide you with a fresh mag every time.\n" "\n" @@ -2938,7 +2885,7 @@ SWWM_LORETXT_RAFANKOS = "\cxSaya's Notes:\c-\n" "\cf\"Ultimate Weapon\"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c-\n" "\n" -"\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other two massive fuckoff guns.\c-"; +"\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other massive fuckoff gun. You know, as a safer alternative that you're less likely to kill yourself with. Gotta admit, Misa-Misa sure loaded us up with some powerful material bringing these two along.\c-"; SWWM_LORETAG_RAGEKIT = "Ragekit"; SWWM_LORETAB_RAGEKIT = "Item"; SWWM_LOREREL_RAGEKIT = "AkariLabs;Demolitionist;Saya;DecadeMech"; @@ -3012,7 +2959,7 @@ SWWM_LORETXT_RAYKHOM = "\n" "\cfSo by Xekkian standards this is a \"light weapon\", really now??? It's a good thing that your hands can somehow adapt to the grip of this thing, because holy fucking hell...\c-\n" "\n" -"\cfThis shit is like, where do I start. It's some serious fucking ass destroyer, that's what. Out of all the stuff in your arsenal, I'd say this is the second strongest weapon we've got. Misa actually delivered it herself way back when, and then we had a talk with the old man from Tach-Engine to have it available for purchase, since he does have that deal going with Kmonn and all (I'm pretty sure what those two have is more than just a business partnership, if you know what I mean).\c-\n" +"\cfThis shit is like, where do I start. It's some serious fucking ass destroyer, that's what. Out of all the stuff in your arsenal, I'd say this is the third largest weapon we've got. Misa actually delivered it herself way back when, and then we had a talk with the old man from Tach-Engine to have it available for purchase, since he does have that deal going with Kmonn and all (I'm pretty sure what those two have is more than just a business partnership, if you know what I mean).\c-\n" "\n" "\cfWhen she came through the door lugging that thing around on her shoulders I knew it had to be ours.\c-"; SWWM_LORETAG_REFRESHER = "Refresher"; @@ -3038,14 +2985,17 @@ SWWM_LORETAG_RYUJI = "Miyamoto, Ryuji"; SWWM_LORETAB_RYUJI = "People"; SWWM_LOREREL_RYUJI = "Nana;Taro;Saya;Yui;AkariLabs;Gensokyo"; SWWM_LORETXT_RYUJI = -"\cxFull Name:\c-\n" -"\cf Ryuji Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1956-03-12\c-\n" -"\cxDate of Death:\c-\n" -"\cf 2054-06-22\c-\n" +" \cxFull Name:\c-\n" +" \cf Ryuji Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1956-03-12\c-\n" +" \cxDate of Death:\c-\n" +" \cf 2054-06-22\c-\n" +" \cxOccupation:\c-\n" +" \cf Inventor\c-\n" +"\n" "\n" "\cfRyuji\c- was born in \cfGensokyo\c- in 1956, spending most of his life within the \cfHuman Village\c-, the only one settlement within the region inhabited entirely by humans, rather than Youkai. During his early teens, he became quite rebellious, desiring to leave the village and have \"adventures\". One day, he fled, and got himself lost in the bamboo forest surrounding \cfEientei\c-. There, he came across \cfNana\c-, the daughter of \cfKaguya Houraisan\c-, and the two became friends. After guiding him back to the village, Ryuji promised her that he'd return one day, to marry her, and take her with him to see the outside world.\n" "\n" @@ -3149,14 +3099,17 @@ SWWM_LORETAG_SAYA = "Miyamoto, Saya"; SWWM_LORETAB_SAYA = "People"; SWWM_LOREREL_SAYA = "Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC"; SWWM_LORETXT_SAYA = -"\cxFull Name:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxFull Name:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOccupation:\c-\n" +" \cf CTO, Human Resources (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- was born in 1993 as the middle child of \cfNana Miyamoto\c- and \cfRyuji Miyamoto\c-, her older brother being \cfTaro Miyamoto\c-, born in 1985, and her younger sister being \cfYui Miyamoto\c-, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a \"child prodigy\". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into \cfMIT\c-, where she graduated in \cfComputer Science\c-.\n" "\n" @@ -3168,9 +3121,9 @@ SWWM_LORETXT_SAYA = "\n" "Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMaidbot Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" -"Currently, Saya has two girlfriends: Maidbot Miyamoto and \cfIbuki Miyamoto\c-. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" +"Currently, Saya has two girlfriends: Meido Miyamoto and \cfIbuki Miyamoto\c-. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" @@ -3179,14 +3132,17 @@ SWWM_LORETXT_SAYA = "\n" "\cfWell, are you satisfied, Demo-chan? Have I sated your thirst for Saya Facts™? Good, then you should go back to work.\c-"; SWWM_LORETXT_SAYA2 = -"\cxFull Name:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxFull Name:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOccupation:\c-\n" +" \cf CTO, Human Resources (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- was born in 1993 as the middle child of \cfNana Miyamoto\c- and \cfRyuji Miyamoto\c-, her older brother being \cfTaro Miyamoto\c-, born in 1985, and her younger sister being \cfYui Miyamoto\c-, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a \"child prodigy\". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into \cfMIT\c-, where she graduated in \cfComputer Science\c-.\n" "\n" @@ -3198,9 +3154,9 @@ SWWM_LORETXT_SAYA2 = "\n" "Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMaidbot Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" -"Currently, Saya has three girlfriends: Maidbot Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c-. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" +"Currently, Saya has three girlfriends: Meido Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c-. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" @@ -3211,14 +3167,17 @@ SWWM_LORETXT_SAYA2 = "\n" "\cfNow go back to work, silly robutt.\c-"; SWWM_LORETXT_SAYA3 = -"\cxFull Name:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxFull Name:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOccupation:\c-\n" +" \cf CTO, Human Resources (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- was born in 1993 as the middle child of \cfNana Miyamoto\c- and \cfRyuji Miyamoto\c-, her older brother being \cfTaro Miyamoto\c-, born in 1985, and her younger sister being \cfYui Miyamoto\c-, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a \"child prodigy\". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into \cfMIT\c-, where she graduated in \cfComputer Science\c-.\n" "\n" @@ -3230,9 +3189,9 @@ SWWM_LORETXT_SAYA3 = "\n" "Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMaidbot Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" -"Currently, Saya and her creations Maidbot Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c- are all engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire\c- of \cfAkkou\c-.\n" +"Currently, Saya and her creations Meido Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c- are all engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire\c- of \cfAkkou\c-.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" @@ -3541,14 +3500,17 @@ SWWM_LORETAG_TARO = "Miyamoto, Taro"; SWWM_LORETAB_TARO = "People"; SWWM_LOREREL_TARO = "Nana;Ryuji;Saya;Ellen;Ibuki;WhiteScar;AkariLabs"; SWWM_LORETXT_TARO = -"\cxFull Name:\c-\n" -"\cf Taro Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1985-10-06\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariTaro\c-\n" +" \cxFull Name:\c-\n" +" \cf Taro Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1985-10-06\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO, Public Relations (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariTaro\c-\n" +"\n" "\n" "Born in 1985 to \cfNana\c- and \cfRyuji Miyamoto\c-, \cfTaro\c- is the oldest of three siblings, despite what his looks might show. As a child, he was rather conflictive, but also notably studious. Having finished high school with excellent grades, he went on to study at many prestigious universities across the world, fueled by the desire to expand his knowledge, especially that of computer technology, which he was infatuated with. Alongside \cfSaya\c-, his younger sister, they founded \cfAkari Labs\c-, a company that specializes in Robotics and Artificial Intelligence, among others. There, Taro's specialties are Software Engineering and Design, and he's also in charge of managing public relations, due to Saya not being \"much of a people person\" unlike him.\n" "\n" @@ -3675,16 +3637,18 @@ SWWM_LORETAG_UNISSIX = "Unissix, Misa A."; SWWM_LORETAB_UNISSIX = "People"; SWWM_LOREREL_UNISSIX = "Devanikna;Nedoshiaan;Zanaveth2;Zanaveth3;Nukuri;Saya;Yui;Taro;Ashley;Ellen;Sankaideriha"; SWWM_LORETXT_UNISSIX = -"\cxFull Name:\c-\n" -"\cf Misa Azadeku Unissix\c-\n" -"\cxAlias:\c-\n" -"\cf Unissix Bokurou Azadeku\c-\n" -"\cxNationality:\c-\n" -"\cf Devanikan\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1992-02-29\c-\n" -"\cxTwitter:\c-\n" -"\cf @misamisa_unissix\c-\n" +" \cxFull Name:\c-\n" +" \cf Misa Azadeku Unissix\c-\n" +" \cxAlias:\c-\n" +" \cf Unissix Bokurou Azadeku\c-\n" +" \cxNationality:\c-\n" +" \cf Devanikan\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1992-02-29\c-\n" +" \cxOccupation:\c-\n" +" \cf Blacksmith (Unissix Crafts)\c-\n" +" \cxTwitter:\c-\n" +" \cf @misamisa_unissix\c-\n" "\n" "\cfMisa Azadeku Unissix\c- is the youngest member of the \cfUnissix Clan\c-, who leads the nation of \cfDevanikna\c-. She's the second child of \cfDevai Unissix\c- and \cfSerwand Nerukousei\c-, being the younger sister of \cfDeneva Unissix\c-, one of the most renowned warriors in the entire nation.\n" "\n" @@ -3757,7 +3721,23 @@ SWWM_LORETXT_VOICEBOX = "The \cfAkari Labs\c- community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHeh... Ibuki's so amused that I programmed your voicebox to sound exactly like her. I mean, it fits, a lil' bit, being her little sister in a way, but what amuses ME is that you've somehow picked up all her little mannerisms and stuff. It's like you're a smol Ibuki at times, just without the tiddy.\c-"; +"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c-"; +SWWM_LORETXT_VOICEBOX2 = +"\cxDesignation:\c-\n" +"\cf Loudboi Voicebox\c-\n" +"\cxManufacturer:\c-\n" +"\cf Akari Labs\c-\n" +"\cxClassification:\c-\n" +"\cf Voice Synthesizer\c-\n" +"\n" +"The \cfLoudboi\c- is a simple and lightweight device for AI units. Easy to install and program, perfect for those building on a budget. There are a wide variety of options for the voice type, along with multiple language support, including Japanese. Those who are rather displeased with the uncannily \"too human\" default voice synthesis also have the option of enabling a built-in \"robot voice\" filter.\n" +"\n" +"The \cfAkari Labs\c- community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c-\n" +"\n" +"\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, hehehe...\c-"; SWWM_LORETAG_WALLBUSTER = "Wallbuster"; SWWM_LORETAB_WALLBUSTER = "Item"; SWWM_LOREREL_WALLBUSTER = "Blackmann;Bigshot;Demolitionist;Saya;Taro;Belt"; @@ -3828,14 +3808,17 @@ SWWM_LORETAG_WHITELADY = "White Lady"; SWWM_LORETAB_WHITELADY = "People"; SWWM_LOREREL_WHITELADY = "MothPlushy;Chancebox;MothLamp;XAnimen;Demolitionist;Saya"; SWWM_LORETXT_WHITELADY = -"\cxFull Name:\c-\n" -"\cf Andira Kyse\c-\n" -"\cxTitle:\c-\n" -"\cf White Lady of Aldabura\c-\n" -"\cxNationality:\c-\n" -"\cf Kantharei\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2674 BC\c-\n" +" \cxFull Name:\c-\n" +" \cf Andira Kyse\c-\n" +" \cxTitle:\c-\n" +" \cf White Lady of Aldabura\c-\n" +" \cxNationality:\c-\n" +" \cf Kantharei\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2674 BC\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary\c-\n" +"\n" "\n" "The \cfWhite Lady of Aldabura\c- is one of the most skilled mercenaries known within the \cfX'Animen Coalition\c-. As one of the \cfAldabura\c-, moth-like humanoids native to the small planet of \cfKantharo\c-, she is quite sensitive to bright lights, and is often easily charmed by them. At the same time, she's quite timid and prefers to focus on her work, rather than on any social interaction.\n" "\n" @@ -4204,14 +4187,17 @@ SWWM_LORETAG_YUI = "Miyamoto, Yui"; SWWM_LORETAB_YUI = "People"; SWWM_LOREREL_YUI = "Nana;Ryuji;Taro;Saya;Ashley"; SWWM_LORETXT_YUI = -"\cxFull Name:\c-\n" -"\cf Yui Miyamoto\c-\n" -"\cxNationality:\c-\n" -"\cf Japanese\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2009-07-02\c-\n" -"\cxTwitter:\c-\n" -"\cf @yuchan09\c-\n" +" \cxFull Name:\c-\n" +" \cf Yui Miyamoto\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2009-07-02\c-\n" +" \cxOccupation:\c-\n" +" \cf Neurosurgeon (Kasukabe Central Hospital)\c-\n" +" \cxTwitter:\c-\n" +" \cf @yuchan09\c-\n" +"\n" "\n" "Born in 2009 to \cfNana\c- and \cfRyuji Miyamoto\c-, \cfYui\c- is the youngest of three siblings. She's quite an empathetic and sociable person, completely unlike her relatively gloomier, more reclusive older sister and brother \cfSaya\c- and \cfTaro\c-, having always shown a clear interest in helping other people. Since her childhood, her wish had been to become a doctor, \"to save lives\". This wish came to fruition after persevering through her studies, and many years slowly \"ascending the ranks\". As of this article's writing, Yui currently works as a neurosurgeon at \cfKasukabe Central Hospital\c-, and has received several awards for her outstanding achievements.\n" "\n" @@ -4233,14 +4219,17 @@ SWWM_LORETAG_ZANAVETH2 = "Zanaveth II"; SWWM_LORETAB_ZANAVETH2 = "People"; SWWM_LOREREL_ZANAVETH2 = "Nukuri;Devanikna;Unissix;Nekuratek;Zanaveth3;Kirin;WhiteScar;XAnimen"; SWWM_LORETXT_ZANAVETH2 = -"\cxFull Name:\c-\n" -"\cf Zanaveth Nekuraku II\c-\n" -"\cxNationality:\c-\n" -"\cf Nukuri\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1969-08-10\c-\n" -"\cxTwitter:\c-\n" -"\cf @purple_emotion\c-\n" +" \cxFull Name:\c-\n" +" \cf Zanaveth Nekuraku II\c-\n" +" \cxNationality:\c-\n" +" \cf Nukuri\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1969-08-10\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO, AI Engineer (Nekuratek)\c-\n" +" \cf Minister of Interspecies Relations (NUG)\c-\n" +" \cxTwitter:\c-\n" +" \cf @purple_emotion\c-\n" "\n" "\cfZanaveth Nekuraku II\c- was born in 1969, as the single child of \cfZanaveth Nekuraku I\c- and \cfDanakorn Kiyanou\c-. During her childhood, she showed great promise, being quite the quick learner, but rather than pressuring her to study harder, or putting her on a higher level place of study, her parents decided instead on letting her keep going at her own pace, which was something unheard of at the time.\n" "\n" @@ -4265,14 +4254,17 @@ SWWM_LORETXT_ZANAVETH2 = "\n" "\cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, fuck all that, I hope it ends someday and I can get the two in here again.\c-"; SWWM_LORETXT_ZANAVETH22 = -"\cxFull Name:\c-\n" -"\cf Zanaveth Nekuraku II\c-\n" -"\cxNationality:\c-\n" -"\cf Nukuri\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 1969-08-10\c-\n" -"\cxTwitter:\c-\n" -"\cf @purple_emotion\c-\n" +" \cxFull Name:\c-\n" +" \cf Zanaveth Nekuraku II\c-\n" +" \cxNationality:\c-\n" +" \cf Nukuri\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1969-08-10\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO, AI Engineer (Nekuratek)\c-\n" +" \cf Minister of Interspecies Relations (NUG)\c-\n" +" \cxTwitter:\c-\n" +" \cf @purple_emotion\c-\n" "\n" "\cfZanaveth Nekuraku II\c- was born in 1969, as the single child of \cfZanaveth Nekuraku I\c- and \cfDanakorn Kiyanou\c-. During her childhood, she showed great promise, being quite the quick learner, but rather than pressuring her to study harder, or putting her on a higher level place of study, her parents decided instead on letting her keep going at her own pace, which was something unheard of at the time.\n" "\n" @@ -4302,17 +4294,19 @@ SWWM_LORETAG_ZANAVETH3 = "Zanaveth III"; SWWM_LORETAB_ZANAVETH3 = "People"; SWWM_LOREREL_ZANAVETH3 = "Nukuri;Unissix;Zanaveth2;NosKora;Saya;WhiteScar"; SWWM_LORETXT_ZANAVETH3 = -"\cxFull Name:\c-\n" -"\cf Zanaveth Nekuraku III\c-\n" -"\cxAliases:\c-\n" -"\cf The Corruptor\c-\n" -"\cf Unissix Bokurou Azadeku II\c-\n" -"\cxNationality:\c-\n" -"\cf Nukuri\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2042-08-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @zanaveth\c-\n" +" \cxFull Name:\c-\n" +" \cf Zanaveth Nekuraku III\c-\n" +" \cxAliases:\c-\n" +" \cf The Corruptor\c-\n" +" \cf Unissix Bokurou Azadeku II\c-\n" +" \cxNationality:\c-\n" +" \cf Nukuri\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2042-08-20\c-\n" +" \cxOccupation:\c-\n" +" \cf AI Engineer (Nekuratek)\c-\n" +" \cxTwitter:\c-\n" +" \cf @zanaveth\c-\n" "\n" "\cfZanaveth Nekuraku III\c- is the sole daughter of \cfZanaveth Nekuraku II\c- and \cfMisa Azadeku Unissix\c-. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to \cfNahkami\c- once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues.\n" "\n" @@ -4333,17 +4327,19 @@ SWWM_LORETXT_ZANAVETH3 = "\n" "\cfWell, if she comes here to Earth I'd welcome my new chuuni overlord with open arms.\c-"; SWWM_LORETXT_ZANAVETH32 = -"\cxFull Name:\c-\n" -"\cf Zanaveth Nekuraku III\c-\n" -"\cxAliases:\c-\n" -"\cf The Corruptor\c-\n" -"\cf Unissix Bokurou Azadeku II\c-\n" -"\cxNationality:\c-\n" -"\cf Nukuri\c-\n" -"\cxDate of Birth:\c-\n" -"\cf 2042-08-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @zanaveth\c-\n" +" \cxFull Name:\c-\n" +" \cf Zanaveth Nekuraku III\c-\n" +" \cxAliases:\c-\n" +" \cf The Corruptor\c-\n" +" \cf Unissix Bokurou Azadeku II\c-\n" +" \cxNationality:\c-\n" +" \cf Nukuri\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2042-08-20\c-\n" +" \cxOccupation:\c-\n" +" \cf AI Engineer (Nekuratek)\c-\n" +" \cxTwitter:\c-\n" +" \cf @zanaveth\c-\n" "\n" "\cfZanaveth Nekuraku III\c- is the sole daughter of \cfZanaveth Nekuraku II\c- and \cfMisa Azadeku Unissix\c-. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to \cfNahkami\c- once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues.\n" "\n" diff --git a/language.def_menu b/language.def_menu index 2805964ba..47522c3f4 100644 --- a/language.def_menu +++ b/language.def_menu @@ -1,6 +1,6 @@ [default] // keybinds -SWWM_KEYS = "SWWM GZ Bindings"; +SWWM_KEYS = "DEMOLITIONIST Bindings"; SWWM_PRIMARYFIRE = "Primary Fire"; SWWM_SECONDARYFIRE = "Secondary Fire"; SWWM_RELOADFIRE = "Reload"; @@ -20,16 +20,15 @@ SWWM_KBASE = "Demolitionist Menu"; SWWM_MINIMAPIN = "Minimap Zoom In"; SWWM_MINIMAPOUT = "Minimap Zoom Out"; // skills -SWWM_SKCHILL = "\cvJust Chillin'\c-"; -SWWM_SKEASY = "\cdTaking It Easy~\c-"; -SWWM_SKNORMAL = "\cfAdequate Adventure\c-"; -SWWM_SKHARD = "\ciModerate Challenge\c-"; -SWWM_SKHARDCORE = "\cgI'm A Masochist\c-"; -SWWM_SKHARDCORECONFIRM = "\cgYou think the mod's too easy?\nPrepare yourself.\c-\n\n\cfFast monsters\n1.5x monster health & damage\n25% extra aggressiveness\nCheats are disabled\nCoop monsters will spawn\nThe store is disabled\nCan only revive once\c-\n\n(Press Y for a challenge)"; -SWWM_SKLUNATIC = "\crI WANT DIE\c-"; -SWWM_SKLUNATICCONFIRM = "\crYou will die, you will suffer.\nThat, I can guarantee.\c-\n\n\cfAll changes from Masochist\n+\n2x speedup for all enemy actions\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y to die instantly)"; +SWWM_SKEASY = "\cvJust Blasting\c-"; +SWWM_SKNORMAL = "\cdDemolition Day\c-"; +SWWM_SKHARD = "\ciMostly Harmful\c-"; +SWWM_SKHARDCORE = "\cgPain Sandwich\c-"; +SWWM_SKHARDCORECONFIRM = "\cgThis is the Nightmare equivalent.\nPrepare to get your ass kicked.\c-\n\n\cfFast monsters\n1.5x monster health & damage\n25% extra aggressiveness\nCheats are disabled\nCoop monsters will spawn\nThe store is disabled\nCan only revive once\c-\n\n(Press Y for a challenge)"; +SWWM_SKLUNATIC = "\crDemo Must Die\c-"; +SWWM_SKLUNATICCONFIRM = "\crAre you sure you want that?\nYou're gonna have a REAL bad time.\c-\n\n\cfAll changes from \cgPain Sandwich\cf\n+\n2x speedup for all enemy actions\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y to die instantly)"; // mod menu -SWWM_MTITLE = "SWWM GZ Options"; +SWWM_MTITLE = "DEMOLITIONIST Options"; SWWM_PTITLE = "Player Options"; SWWM_VOICETYPE = "Demolitionist Voice Pack"; SWWM_MUTELEVEL = "Voice Muting Level"; @@ -51,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"; @@ -68,13 +59,14 @@ 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"; SWWM_ONERETRY = "One Retry"; SWWM_NONE = "None"; SWWM_INTERART = "Intermission Art"; +SWWM_NORENDER = "Yes (Fanart Only)"; +SWWM_NOFANART = "Yes (Renders Only)"; SWWM_BALLUSE = "Lead Balls can Activate Switches"; SWWM_BOSSBAR = "Show Boss Healthbars"; SWWM_BTITLE = "Balance Options"; @@ -91,7 +83,8 @@ SWWM_NUMSCALE = "Number Scaling"; SWWM_SCRSCALE = "Score Scaling"; SWWM_POISCALE = "POI Scaling"; SWWM_DETSCALE = "Item Sense Scaling"; -SWWM_GZSCALE = "Use GZDoom Setting"; +SWWM_TFITSCALE = "Tight Fit"; +SWWM_LFITSCALE = "Loose Fit"; SWWM_BLOOD = "Enable Custom Blood"; SWWM_FUZZ = "Enable Animated Menu BG"; SWWM_BUSTERPAUSE = "Pause on Wallbuster Reload"; @@ -202,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"; @@ -210,7 +202,11 @@ SWWM_CRESET = "Reset to Defaults"; SWWM_ARESET = "Wipe Achievements"; SWWM_NOINTERTIPS = "Hide Intermission Tips"; SWWM_DEMOSLAYER = "Demoslayer Mode"; +SWWM_BEEPBOOP = "Switch Emoting"; +SWWM_VOICEAMP = "Voice Amplification"; SWWM_CLEARFX = "Clear All Effects"; +SWWM_OLDLOGO = "Old Branding"; +SWWM_NODEATHEXIT = "Disable Death Exits"; SWWM_MMTITLE = "Minimap Settings"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_ROTATE = "Rotate Minimap"; @@ -266,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."; @@ -282,25 +274,24 @@ 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 during intermissions."; +TOOLTIP_SWWM_INTERART = "If enabled, displays randomly selected fanart and official renders during intermissions. There are extra options to only show each category."; TOOLTIP_SWWM_BALLUSE = "Lead Ball projectiles can remotely activate use switches (excluding exits). Potentially OP."; TOOLTIP_SWWM_BOSSHEALTHBARS = "Show a healthbar for vanilla boss encounters at the bottom of the screen. Just like Dark Souls™!"; 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."; -TOOLTIP_SWWM_HUDSCALE = "Scaling factor of the HUD. Set to 0 to use GZDoom's own HUD scaling."; -TOOLTIP_SWWM_BARSCALE = "Scaling factor for targetter healthbars. Set to 0 to use GZDoom's own HUD scaling."; -TOOLTIP_SWWM_NUMSCALE = "Scaling factor for damage/healing numbers. Set to 0 to use GZDoom's own HUD scaling."; -TOOLTIP_SWWM_SCRSCALE = "Scaling factor for score numbers. Set to 0 to use GZDoom's own HUD scaling."; -TOOLTIP_SWWM_POISCALE = "Scaling factor for points of interest. Set to 0 to use GZDoom's own HUD scaling."; -TOOLTIP_SWWM_DETSCALE = "Scaling factor for sensed items. Set to 0 to use GZDoom's own HUD scaling."; +TOOLTIP_SWWM_HUDSCALE = "Scaling factor of the HUD. \"Tight\" scales to fit the width of the full HUD, while \"Loose\" is recommended for ultrawide to avoid overlaps."; +TOOLTIP_SWWM_BARSCALEREL = "Relative scaling factor for targetter healthbars. A factor of 0 matches the HUD scale."; +TOOLTIP_SWWM_NUMSCALEREL = "Relative scaling factor for damage/healing numbers. A factor of 0 matches the HUD scale."; +TOOLTIP_SWWM_SCRSCALEREL = "Relative scaling factor for score numbers. A factor of 0 matches the HUD scale."; +TOOLTIP_SWWM_POISCALEREL = "Relative scaling factor for points of interest. A factor of 0 matches the HUD scale."; +TOOLTIP_SWWM_DETSCALEREL = "Relative scaling factor for sensed items. A factor of 0 matches the HUD scale."; TOOLTIP_SWWM_BLOOD = "Enable custom blood and gore effects, adapted from Soundless Mound. I'd honestly recommend Nashgore instead, it's better."; TOOLTIP_SWWM_FUZZ = "Toggling this off is recommended if you're recording/streaming as this effect can harm video quality."; TOOLTIP_SWWM_CBTPAUSE = "The game will pause while the Wallbuster reload menu is open (only in singleplayer)."; @@ -363,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."; @@ -371,7 +361,11 @@ TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress."; TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them."; TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health and armor orbs."; +TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional."; +TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings."; +TOOLTIP_SWWM_OLDLOGO = "For those who miss the days of SWWM GZ, you can restore the old title screen and main menu with this."; +TOOLTIP_SWWM_NODEATHEXIT = "This option completely negates the effects of death exits, if you don't like losing all your stuff."; TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap."; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter."; @@ -408,8 +402,31 @@ TOOLTIP_SWWM_MM_THINGCOLOR_CITEM = "Color for items that count towards map tally TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color for very important items."; TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color for things that can be damaged."; TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color for projectiles."; +// main menu poses (do not localize) +SWWM_NMENUPOSE = "21"; +SWWM_MENUPOSE1 = "graphics/M_DEMOCHAN_DEEPIMPACT.png"; +SWWM_MENUPOSE2 = "graphics/M_DEMOCHAN_EXPLOGUN.png"; +SWWM_MENUPOSE3 = "graphics/M_DEMOCHAN_SPREADGUN.png"; +SWWM_MENUPOSE4 = "graphics/M_DEMOCHAN_WALLBUSTER.png"; +SWWM_MENUPOSE5 = "graphics/M_DEMOCHAN_EVISCERATOR.png"; +SWWM_MENUPOSE6 = "graphics/M_DEMOCHAN_HELLBLAZER.png"; +SWWM_MENUPOSE7 = "graphics/M_DEMOCHAN_BIOSPARK.png"; +SWWM_MENUPOSE8 = "graphics/M_DEMOCHAN_SILVERBULLET.png"; +SWWM_MENUPOSE9 = "graphics/M_DEMOCHAN_CANDYGUN.png"; +SWWM_MENUPOSE10 = "graphics/M_DEMOCHAN_YNYKRON.png"; +SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_PUSHER.png"; +SWWM_MENUPOSE12 = "graphics/M_DEMOCHAN_DAB.png"; +SWWM_MENUPOSE13 = "graphics/M_DEMOCHAN_DOUBLEV.png"; +SWWM_MENUPOSE14 = "graphics/M_DEMOCHAN_HEALTH.png"; +SWWM_MENUPOSE15 = "graphics/M_DEMOCHAN_LOVE.png"; +SWWM_MENUPOSE16 = "graphics/M_DEMOCHAN_RAGEKIT.png"; +SWWM_MENUPOSE17 = "graphics/M_DEMOCHAN_SANDWICH.png"; +SWWM_MENUPOSE18 = "graphics/M_DEMOCHAN_SHELLS.png"; +SWWM_MENUPOSE19 = "graphics/M_DEMOCHAN_SKULL.png"; +SWWM_MENUPOSE20 = "graphics/M_DEMOCHAN_THONK.png"; +SWWM_MENUPOSE21 = "graphics/M_DEMOCHAN_THUMBUP.png"; // credits -SWWM_MCREDS = "SWWM GZ Credits"; +SWWM_MCREDS = "DEMOLITIONIST Credits"; SWWM_CSTITLE = "UnSX Side Story: Demolitionist"; SWWM_CSTITLE2 = "Cute Robutt Whomst Love To Explode Demons"; SWWM_CLEAD = "Development Lead:"; @@ -420,6 +437,7 @@ SWWM_ASSOTHERS = "XDeath Sprites for Demon, Cacodemon, Revenant, Archvile"; SWWM_ASSEXTRA = "XDeath Sprites for Arachnotron, Mancubus"; SWWM_ASSKEEN = "Less Mean-Spirited Keen Replacement"; SWWM_CMUSIC = "Music Tracks Used:"; +SWWM_CVOICE = "Voices:"; SWWM_CFANART = "Intermission Fanart:"; SWWM_CPATRON = "Patreon Backers:"; SWWM_CTHANK = "Special Thanks:"; @@ -503,17 +521,8 @@ 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_CHATTAB = "Messages"; +SWWM_NOCHAT = "(message history is empty)"; SWWM_SECRETTAB = "Secret"; SWWM_TODEMO = "\cx\"Fight for justice, Demo-chan! You can do it!\"\c- \cg♥\c- Ibuki & Saya"; SWWM_CUTIECLUB = "\cx\"Never lose hope, Demo-chan! We're all with you!\"\c- \cg♥\c- Cutie Club"; @@ -543,90 +552,71 @@ SWWM_KIRINPOEM = SWWM_MAINCONTROLS = "Press F1 to see controls"; SWWM_LOREUNSEL = "(no entry chosen)"; SWWM_LORETAB0 = "Items"; -SWWM_LORETAB1 = "People"; -SWWM_LORETAB2 = "Lore"; +SWWM_LORETAB1 = "Enemies"; +SWWM_LORETAB2 = "People"; +SWWM_LORETAB3 = "Lore"; SWWM_HELPTAB = "Help"; SWWM_HELPTXT = "\cxDemolitionist Menu - Basic Controls\c-\n" -"\cx---------------------------------\c-\n" +"\cx———————————————————————————————————\c-\n" "\n" "\cf%s:\c- Open/Close Demolitionist menu\n" "\cfPageUp/PageDown:\c- Switch tabs\n" "\cfF1:\c- Open/Close help tab\n" "\n" "\cxMission Tab - Controls\c-\n" -"\cx--------------------\c-\n" +"\cx——————————————————————\c-\n" "\n" "\cfUp/Down:\c- Scroll\n" "\cfLeft/Right:\c- Switch through entries\n" "\n" "\cxStats Tab - Controls\c-\n" -"\cx------------------\c-\n" +"\cx————————————————————\c-\n" "\n" "\cfUp/Down:\c- Scroll\n" "\cfLeft/Right:\c- Switch section\n" "\n" "\cxInventory Tab - Controls\c-\n" -"\cx----------------------\c-\n" +"\cx————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" "\cfEnter/Left Click:\c- Use selected item\n" "\cfBackspace/Right Click:\c- Drop selected item\n" "\n" "\cxKeychain Tab - Controls\c-\n" -"\cx---------------------\c-\n" +"\cx———————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" "\n" "\cxLibrary Tab - Controls (Main)\c-\n" -"\cx---------------------------\c-\n" +"\cx—————————————————————————————\c-\n" "\n" "\cfUp/Down:\c- Scroll through entries\n" "\cfLeft/Right:\c- Switch category\n" "\cfEnter/Left Click:\c- Open entry\n" "\n" "\cxLibrary Tab - Controls (Entry Open)\c-\n" -"\cx---------------------------------\c-\n" +"\cx———————————————————————————————————\c-\n" "\n" "\cfUp/Down:\c- Scroll\n" "\cfBackspace:\c- Return to entry list\n" "\n" "\cxStore Tab - Controls (Buying)\c-\n" -"\cx---------------------------\c-\n" +"\cx—————————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" "\cfEnter/Left Click:\c- Buy\n" "\cfBackspace/Right Click:\c- Switch to selling\n" "\n" "\cxStore Tab - Controls (Selling)\c-\n" -"\cx----------------------------\c-\n" +"\cx——————————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" "\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" +"\cxMessages Tab - Controls\c-\n" +"\cx———————————————————————\c-\n" "\n" "\cfUp/Down:\c- Scroll"; // Wallbuster menu @@ -709,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" diff --git a/language.def_voice b/language.def_voice index 1634d37d2..287263ba6 100644 --- a/language.def_voice +++ b/language.def_voice @@ -1,256 +1,661 @@ [default] +//// DEFAULT VOICE - Vyolette // voice name -SWWM_VOICENAME_DEFAULT = "Demolitionist"; -// new weapon received +SWWM_VOICENAME_DEFAULT = "Original"; +// new weapon received (generic, unspecified weapons) SWWM_SUBS_DEFAULT_NGETWEAPON = "13"; -SWWM_SUBS_DEFAULT_GETWEAPON1 = "Not bad... Not bad at all..."; -SWWM_SUBS_DEFAULT_GETWEAPON2 = "Good find..."; -SWWM_SUBS_DEFAULT_GETWEAPON3 = "Mine now..."; -SWWM_SUBS_DEFAULT_GETWEAPON4 = "Nice..."; -SWWM_SUBS_DEFAULT_GETWEAPON5 = "Bingo..."; -SWWM_SUBS_DEFAULT_GETWEAPON6 = "Hell yeah..."; -SWWM_SUBS_DEFAULT_GETWEAPON7 = "Excellent..."; -SWWM_SUBS_DEFAULT_GETWEAPON8 = "Yes..."; -SWWM_SUBS_DEFAULT_GETWEAPON9 = "There we go..."; -SWWM_SUBS_DEFAULT_GETWEAPON10 = "Perfect..."; -SWWM_SUBS_DEFAULT_GETWEAPON11 = "I like it..."; -SWWM_SUBS_DEFAULT_GETWEAPON12 = "That looks nice..."; -SWWM_SUBS_DEFAULT_GETWEAPON13 = "It's probably worth a fortune..."; +SWWM_SUBS_DEFAULT_GETWEAPON1 = "Neat."; +SWWM_SUBS_DEFAULT_GETWEAPON2 = "Mine."; +SWWM_SUBS_DEFAULT_GETWEAPON3 = "This looks good."; +SWWM_SUBS_DEFAULT_GETWEAPON4 = "Hm, nice."; +SWWM_SUBS_DEFAULT_GETWEAPON5 = "Oh, cool!"; +SWWM_SUBS_DEFAULT_GETWEAPON6 = "Aw yeah."; +SWWM_SUBS_DEFAULT_GETWEAPON7 = "Gimme."; +SWWM_SUBS_DEFAULT_GETWEAPON8 = "Hell yeah."; +SWWM_SUBS_DEFAULT_GETWEAPON9 = "Good."; +SWWM_SUBS_DEFAULT_GETWEAPON10 = "Looking good."; +SWWM_SUBS_DEFAULT_GETWEAPON11 = "I'll be taking this."; +SWWM_SUBS_DEFAULT_GETWEAPON12 = "New gun, more fun."; +SWWM_SUBS_DEFAULT_GETWEAPON13 = "You're coming with me."; // locked door -SWWM_SUBS_DEFAULT_NLOCKED = "4"; -SWWM_SUBS_DEFAULT_LOCKED1 = "Don't have the key."; -SWWM_SUBS_DEFAULT_LOCKED2 = "Only opens with a key."; -SWWM_SUBS_DEFAULT_LOCKED3 = "Would need the key."; -SWWM_SUBS_DEFAULT_LOCKED4 = "Locked tight."; -// jammed door (strife) -SWWM_SUBS_DEFAULT_NJAMMED = "4"; -SWWM_SUBS_DEFAULT_JAMMED1 = "It's stuck."; -SWWM_SUBS_DEFAULT_JAMMED2 = "No use."; +SWWM_SUBS_DEFAULT_NLOCKED = "6"; +SWWM_SUBS_DEFAULT_LOCKED1 = "Welp, it's locked."; +SWWM_SUBS_DEFAULT_LOCKED2 = "Gonna need a key for this."; +SWWM_SUBS_DEFAULT_LOCKED3 = "Gotta find a key."; +SWWM_SUBS_DEFAULT_LOCKED4 = "Needs a key."; +SWWM_SUBS_DEFAULT_LOCKED5 = "God I hate keyhunts..."; +SWWM_SUBS_DEFAULT_LOCKED6 = "Goddamn keys..."; +// jammed door +SWWM_SUBS_DEFAULT_NJAMMED = "7"; +SWWM_SUBS_DEFAULT_JAMMED1 = "Stuck."; +SWWM_SUBS_DEFAULT_JAMMED2 = "Won't budge."; SWWM_SUBS_DEFAULT_JAMMED3 = "Jammed."; -SWWM_SUBS_DEFAULT_JAMMED4 = "Useless."; +SWWM_SUBS_DEFAULT_JAMMED4 = "Won't open."; +SWWM_SUBS_DEFAULT_JAMMED5 = "Shit's broken."; +SWWM_SUBS_DEFAULT_JAMMED6 = "Not working."; +SWWM_SUBS_DEFAULT_JAMMED7 = "The door is rusted shut."; // puzzle item failure SWWM_SUBS_DEFAULT_NPUZZFAIL = "6"; -SWWM_SUBS_DEFAULT_PUZZFAIL1 = "Damn."; -SWWM_SUBS_DEFAULT_PUZZFAIL2 = "Damn it."; -SWWM_SUBS_DEFAULT_PUZZFAIL3 = "No good."; +SWWM_SUBS_DEFAULT_PUZZFAIL1 = "Dangit."; +SWWM_SUBS_DEFAULT_PUZZFAIL2 = "Ah damn."; +SWWM_SUBS_DEFAULT_PUZZFAIL3 = "Wait that's not right."; SWWM_SUBS_DEFAULT_PUZZFAIL4 = "Nope."; -SWWM_SUBS_DEFAULT_PUZZFAIL5 = "Uh uh."; -SWWM_SUBS_DEFAULT_PUZZFAIL6 = "Hmmm."; +SWWM_SUBS_DEFAULT_PUZZFAIL5 = "Uhhhhhh..."; +SWWM_SUBS_DEFAULT_PUZZFAIL6 = "Hmmm..."; // puzzle item success -SWWM_SUBS_DEFAULT_NPUZZSUCC = "5"; +SWWM_SUBS_DEFAULT_NPUZZSUCC = "6"; SWWM_SUBS_DEFAULT_PUZZSUCC1 = "Nice."; -SWWM_SUBS_DEFAULT_PUZZSUCC2 = "That's it."; -SWWM_SUBS_DEFAULT_PUZZSUCC3 = "Got it."; -SWWM_SUBS_DEFAULT_PUZZSUCC4 = "Yes."; -SWWM_SUBS_DEFAULT_PUZZSUCC5 = "Sweet."; +SWWM_SUBS_DEFAULT_PUZZSUCC2 = "Got it."; +SWWM_SUBS_DEFAULT_PUZZSUCC3 = "There we go."; +SWWM_SUBS_DEFAULT_PUZZSUCC4 = "Good."; +SWWM_SUBS_DEFAULT_PUZZSUCC5 = "Yeah, that's it."; +SWWM_SUBS_DEFAULT_PUZZSUCC6 = "Abracadabra."; // first enemy encounter (20 seconds cooldown since all enemies dead) SWWM_SUBS_DEFAULT_NFIGHTSTART = "21"; -SWWM_SUBS_DEFAULT_FIGHTSTART1 = "Here we go again."; -SWWM_SUBS_DEFAULT_FIGHTSTART2 = "Let's get this show on the road."; -SWWM_SUBS_DEFAULT_FIGHTSTART3 = "Time to die."; -SWWM_SUBS_DEFAULT_FIGHTSTART4 = "Bring it on."; -SWWM_SUBS_DEFAULT_FIGHTSTART5 = "You are all going to die."; -SWWM_SUBS_DEFAULT_FIGHTSTART6 = "I've been spoiling for a fight."; -SWWM_SUBS_DEFAULT_FIGHTSTART7 = "Let's do this."; -SWWM_SUBS_DEFAULT_FIGHTSTART8 = "Time to get crazy! Kill 'em all!"; -SWWM_SUBS_DEFAULT_FIGHTSTART9 = "You really don't want to start a fight with me."; -SWWM_SUBS_DEFAULT_FIGHTSTART10 = "Let's get on with it."; -SWWM_SUBS_DEFAULT_FIGHTSTART11 = "Kill!"; +SWWM_SUBS_DEFAULT_FIGHTSTART1 = "Oh boy here we go."; +SWWM_SUBS_DEFAULT_FIGHTSTART2 = "Alright, let's party."; +SWWM_SUBS_DEFAULT_FIGHTSTART3 = "Oh, more baddies."; +SWWM_SUBS_DEFAULT_FIGHTSTART4 = "Bring it on!"; +SWWM_SUBS_DEFAULT_FIGHTSTART5 = "This will be good."; +SWWM_SUBS_DEFAULT_FIGHTSTART6 = "Ah, let the fun begin."; +SWWM_SUBS_DEFAULT_FIGHTSTART7 = "Let's do this!"; +SWWM_SUBS_DEFAULT_FIGHTSTART8 = "You're going down!"; +SWWM_SUBS_DEFAULT_FIGHTSTART9 = "Oh, wanna fight?"; +SWWM_SUBS_DEFAULT_FIGHTSTART10 = "Alright, let's do this."; +SWWM_SUBS_DEFAULT_FIGHTSTART11 = "You are already dead."; SWWM_SUBS_DEFAULT_FIGHTSTART12 = "This won't be hard."; -SWWM_SUBS_DEFAULT_FIGHTSTART13 = "Let's do it."; -SWWM_SUBS_DEFAULT_FIGHTSTART14 = "Let's do this."; -SWWM_SUBS_DEFAULT_FIGHTSTART15 = "Let's just get this over with."; -SWWM_SUBS_DEFAULT_FIGHTSTART16 = "Well, this will be an interesting challenge."; -SWWM_SUBS_DEFAULT_FIGHTSTART17 = "Okay. Let's get started."; -SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, this is just what I need right now..."; -SWWM_SUBS_DEFAULT_FIGHTSTART19 = "Time to put on a show."; -SWWM_SUBS_DEFAULT_FIGHTSTART20 = "I'm putting you down."; -SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Oh, good. Here I was afraid I'd have nothing to do."; +SWWM_SUBS_DEFAULT_FIGHTSTART13 = "Time to fight!"; +SWWM_SUBS_DEFAULT_FIGHTSTART14 = "Here we go again."; +SWWM_SUBS_DEFAULT_FIGHTSTART15 = "Oh you don't know who you're messing with."; +SWWM_SUBS_DEFAULT_FIGHTSTART16 = "Well, here comes the party."; +SWWM_SUBS_DEFAULT_FIGHTSTART17 = "Let's get this party started!"; +SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, finally, something to shoot."; +SWWM_SUBS_DEFAULT_FIGHTSTART19 = "It's showtime!"; +SWWM_SUBS_DEFAULT_FIGHTSTART20 = "Oh, you're dead."; +SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Good. Was wondering when you'd show up."; // played at map start SWWM_SUBS_DEFAULT_NMAPSTART = "14"; -SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh... this place smells horrible."; -SWWM_SUBS_DEFAULT_MAPSTART2 = "Okay, let's get to work."; -SWWM_SUBS_DEFAULT_MAPSTART3 = "Let's hurry this up."; -SWWM_SUBS_DEFAULT_MAPSTART4 = "This place is all kinds of strange."; -SWWM_SUBS_DEFAULT_MAPSTART5 = "I was born ready."; -SWWM_SUBS_DEFAULT_MAPSTART6 = "It's a hard world. I do what I have to."; -SWWM_SUBS_DEFAULT_MAPSTART7 = "No robot is superior to me."; -SWWM_SUBS_DEFAULT_MAPSTART8 = "I've seen better."; -SWWM_SUBS_DEFAULT_MAPSTART9 = "Okay. Let's head in."; -SWWM_SUBS_DEFAULT_MAPSTART10 = "I don't want any trouble. I'm just passing through."; -SWWM_SUBS_DEFAULT_MAPSTART11 = "Sorry to keep you waiting."; +SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh, fuck... This place reeks. I'd vomit if I could."; +SWWM_SUBS_DEFAULT_MAPSTART2 = "Alright, let's get to work."; +SWWM_SUBS_DEFAULT_MAPSTART3 = "Mission... start?"; +SWWM_SUBS_DEFAULT_MAPSTART4 = "Let's get this thing going."; +SWWM_SUBS_DEFAULT_MAPSTART5 = "Oh, I'm so ready for this."; +SWWM_SUBS_DEFAULT_MAPSTART6 = "Well, I'm not here for the sightseeing."; +SWWM_SUBS_DEFAULT_MAPSTART7 = "Let the hunt begin."; +SWWM_SUBS_DEFAULT_MAPSTART8 = "Well this looks interesting..."; +SWWM_SUBS_DEFAULT_MAPSTART9 = "Okay. Let's go."; +SWWM_SUBS_DEFAULT_MAPSTART10 = "Time to blaze on through."; +SWWM_SUBS_DEFAULT_MAPSTART11 = "Well, let's not keep everyone waiting."; SWWM_SUBS_DEFAULT_MAPSTART12 = "I'll do my best."; -SWWM_SUBS_DEFAULT_MAPSTART13 = "Just so we're clear: Anything good I find is mine."; -SWWM_SUBS_DEFAULT_MAPSTART14 = "I bet the food here is terrible."; +SWWM_SUBS_DEFAULT_MAPSTART13 = "Let me say this: Anything I find, I keep."; +SWWM_SUBS_DEFAULT_MAPSTART14 = "I'm here to chew bubblegum and kick ass... And I don't have a mouth."; // every time a secret is found SWWM_SUBS_DEFAULT_NFINDSECRET = "13"; -SWWM_SUBS_DEFAULT_FINDSECRET1 = "Yeah, yeah, I'm the best."; -SWWM_SUBS_DEFAULT_FINDSECRET2 = "It's true. I do know my shit."; -SWWM_SUBS_DEFAULT_FINDSECRET3 = "What can I say? I'm good at what I do."; -SWWM_SUBS_DEFAULT_FINDSECRET4 = "It was no big deal."; -SWWM_SUBS_DEFAULT_FINDSECRET5 = "No trouble at all."; -SWWM_SUBS_DEFAULT_FINDSECRET6 = "It was easy."; -SWWM_SUBS_DEFAULT_FINDSECRET7 = "Thanks to me, yes."; -SWWM_SUBS_DEFAULT_FINDSECRET8 = "It was a walk in the park."; -SWWM_SUBS_DEFAULT_FINDSECRET9 = "It was a piece of cake."; -SWWM_SUBS_DEFAULT_FINDSECRET10 = "I still got it."; -SWWM_SUBS_DEFAULT_FINDSECRET11 = "I did good work, didn't I?"; -SWWM_SUBS_DEFAULT_FINDSECRET12 = "Wow, that's pretty lucky!"; -SWWM_SUBS_DEFAULT_FINDSECRET13 = "Yeah, well, I am pretty awesome."; +SWWM_SUBS_DEFAULT_FINDSECRET1 = "Oh, that was a secret?"; +SWWM_SUBS_DEFAULT_FINDSECRET2 = "Yeah, I'm pretty cool."; +SWWM_SUBS_DEFAULT_FINDSECRET3 = "Hahaha... That wasn't such a big deal."; +SWWM_SUBS_DEFAULT_FINDSECRET4 = "Yeah, no trouble at all."; +SWWM_SUBS_DEFAULT_FINDSECRET5 = "Easy peasy."; +SWWM_SUBS_DEFAULT_FINDSECRET6 = "Easy as pie."; +SWWM_SUBS_DEFAULT_FINDSECRET7 = "Yup, it's all me."; +SWWM_SUBS_DEFAULT_FINDSECRET8 = "Really got that one."; +SWWM_SUBS_DEFAULT_FINDSECRET9 = "Yeah, I'm quite the fortune finder."; +SWWM_SUBS_DEFAULT_FINDSECRET10 = "Oh I got this."; +SWWM_SUBS_DEFAULT_FINDSECRET11 = "That was good, wasn't it?"; +SWWM_SUBS_DEFAULT_FINDSECRET12 = "Lucky me, huh?"; +SWWM_SUBS_DEFAULT_FINDSECRET13 = "Well, I mean, I'm pretty good at this."; // frag taunts -SWWM_SUBS_DEFAULT_NSCOREKILL = "26"; -SWWM_SUBS_DEFAULT_SCOREKILL1 = "Good riddance."; -SWWM_SUBS_DEFAULT_SCOREKILL2 = "One down."; -SWWM_SUBS_DEFAULT_SCOREKILL3 = "Goodbye."; -SWWM_SUBS_DEFAULT_SCOREKILL4 = "Heh! You can't stop me."; -SWWM_SUBS_DEFAULT_SCOREKILL5 = "What a loser."; -SWWM_SUBS_DEFAULT_SCOREKILL6 = "We're done."; -SWWM_SUBS_DEFAULT_SCOREKILL7 = "Bye."; -SWWM_SUBS_DEFAULT_SCOREKILL8 = "Dead as can be."; -SWWM_SUBS_DEFAULT_SCOREKILL9 = "Another job done."; -SWWM_SUBS_DEFAULT_SCOREKILL10 = "The pleasure was all mine."; -SWWM_SUBS_DEFAULT_SCOREKILL11 = "How about something a little more challenging next time?"; -SWWM_SUBS_DEFAULT_SCOREKILL12 = "I'm glad that's over with."; -SWWM_SUBS_DEFAULT_SCOREKILL13 = "Well, it's over. That's that."; -SWWM_SUBS_DEFAULT_SCOREKILL14 = "It's done."; -SWWM_SUBS_DEFAULT_SCOREKILL15 = "Get lost."; -SWWM_SUBS_DEFAULT_SCOREKILL16 = "Is that all?"; -SWWM_SUBS_DEFAULT_SCOREKILL17 = "Is that the best you can do?"; -SWWM_SUBS_DEFAULT_SCOREKILL18 = "You annoy me."; -SWWM_SUBS_DEFAULT_SCOREKILL19 = "Going to have to try harder than that."; -SWWM_SUBS_DEFAULT_SCOREKILL20 = "What? That it?"; -SWWM_SUBS_DEFAULT_SCOREKILL21 = "Get outta here."; -SWWM_SUBS_DEFAULT_SCOREKILL22 = "My pleasure."; +SWWM_SUBS_DEFAULT_NSCOREKILL = "25"; +SWWM_SUBS_DEFAULT_SCOREKILL1 = "Get out."; +SWWM_SUBS_DEFAULT_SCOREKILL2 = "One done."; +SWWM_SUBS_DEFAULT_SCOREKILL3 = "Bye bye."; +SWWM_SUBS_DEFAULT_SCOREKILL4 = "That's another one."; +SWWM_SUBS_DEFAULT_SCOREKILL5 = "Not even a challenge."; +SWWM_SUBS_DEFAULT_SCOREKILL6 = "Done and done."; +SWWM_SUBS_DEFAULT_SCOREKILL7 = "See ya."; +SWWM_SUBS_DEFAULT_SCOREKILL8 = "Another one dead."; +SWWM_SUBS_DEFAULT_SCOREKILL9 = "Easy job."; +SWWM_SUBS_DEFAULT_SCOREKILL10 = "The pleasure is mine."; +SWWM_SUBS_DEFAULT_SCOREKILL11 = "Try harder next time."; +SWWM_SUBS_DEFAULT_SCOREKILL12 = "Well, that's over."; +SWWM_SUBS_DEFAULT_SCOREKILL13 = "Another one bites the dust ♪"; +SWWM_SUBS_DEFAULT_SCOREKILL14 = "Done."; +SWWM_SUBS_DEFAULT_SCOREKILL15 = "Yeah, just die."; +SWWM_SUBS_DEFAULT_SCOREKILL16 = "Huh? That was it?"; +SWWM_SUBS_DEFAULT_SCOREKILL17 = "Wow, what a weakling..."; +SWWM_SUBS_DEFAULT_SCOREKILL18 = "Just get out of here, you're annoying."; +SWWM_SUBS_DEFAULT_SCOREKILL19 = "Gonna need more than that to take me down."; +SWWM_SUBS_DEFAULT_SCOREKILL20 = "Huh? Dead already?"; +SWWM_SUBS_DEFAULT_SCOREKILL21 = "Fuck off."; +SWWM_SUBS_DEFAULT_SCOREKILL22 = "You're welcome."; SWWM_SUBS_DEFAULT_SCOREKILL23 = "Out of my way."; -SWWM_SUBS_DEFAULT_SCOREKILL24 = "Get outta my way."; -SWWM_SUBS_DEFAULT_SCOREKILL25 = "Want some more?"; -SWWM_SUBS_DEFAULT_SCOREKILL26 = "Done and done."; +SWWM_SUBS_DEFAULT_SCOREKILL24 = "Here's your special serving of DIE."; +SWWM_SUBS_DEFAULT_SCOREKILL25 = "Want more?"; // oopsies SWWM_SUBS_DEFAULT_NFRIENDKILL = "4"; -SWWM_SUBS_DEFAULT_FRIENDKILL1 = "Oh my god."; -SWWM_SUBS_DEFAULT_FRIENDKILL2 = "My god. I'm so sorry."; -SWWM_SUBS_DEFAULT_FRIENDKILL3 = "Oh god..."; -SWWM_SUBS_DEFAULT_FRIENDKILL4 = "Oh my god. Are you alright?"; +SWWM_SUBS_DEFAULT_FRIENDKILL1 = "Oh no! No no no no I'm sorry oh my god!"; +SWWM_SUBS_DEFAULT_FRIENDKILL2 = "Oh my god! I'm so sorry..."; +SWWM_SUBS_DEFAULT_FRIENDKILL3 = "Oh... no..."; +SWWM_SUBS_DEFAULT_FRIENDKILL4 = "Oh my god no no no please..."; // getting hurt by monsters SWWM_SUBS_DEFAULT_NGETHIT = "19"; -SWWM_SUBS_DEFAULT_GETHIT1 = "Whatever..."; +SWWM_SUBS_DEFAULT_GETHIT1 = "Ow! Fuck you!"; SWWM_SUBS_DEFAULT_GETHIT2 = "*sigh*"; -SWWM_SUBS_DEFAULT_GETHIT3 = "Hm hmm."; -SWWM_SUBS_DEFAULT_GETHIT4 = "Bitch."; -SWWM_SUBS_DEFAULT_GETHIT5 = "Asshole..."; -SWWM_SUBS_DEFAULT_GETHIT6 = "You annoy me."; -SWWM_SUBS_DEFAULT_GETHIT7 = "Up yours."; -SWWM_SUBS_DEFAULT_GETHIT8 = "You got my attention."; -SWWM_SUBS_DEFAULT_GETHIT9 = "I'm ending this right now."; -SWWM_SUBS_DEFAULT_GETHIT10 = "You're a pain in the ass."; -SWWM_SUBS_DEFAULT_GETHIT11 = "That's bullshit."; -SWWM_SUBS_DEFAULT_GETHIT12 = "Are you serious?"; -SWWM_SUBS_DEFAULT_GETHIT13 = "Going to have to try harder than that."; -SWWM_SUBS_DEFAULT_GETHIT14 = "Get outta here."; -SWWM_SUBS_DEFAULT_GETHIT15 = "And now it's your turn."; -SWWM_SUBS_DEFAULT_GETHIT16 = "Time to shut you up for good."; -SWWM_SUBS_DEFAULT_GETHIT17 = "You're not leaving here in one piece."; -SWWM_SUBS_DEFAULT_GETHIT18 = "You're obviously upset..."; -SWWM_SUBS_DEFAULT_GETHIT19 = "Ugh. Just... go away."; +SWWM_SUBS_DEFAULT_GETHIT3 = "Yeah, lucky hit. Now die."; +SWWM_SUBS_DEFAULT_GETHIT4 = "Oh, you fucker."; +SWWM_SUBS_DEFAULT_GETHIT5 = "How dare you..."; +SWWM_SUBS_DEFAULT_GETHIT6 = "Oh, you'll regret that."; +SWWM_SUBS_DEFAULT_GETHIT7 = "Yeah? Well fuck you too."; +SWWM_SUBS_DEFAULT_GETHIT8 = "Alright, now you have my attention."; +SWWM_SUBS_DEFAULT_GETHIT9 = "This ends now."; +SWWM_SUBS_DEFAULT_GETHIT10 = "You're pissing me off."; +SWWM_SUBS_DEFAULT_GETHIT11 = "That's a load of ass (and not the good kind)."; +SWWM_SUBS_DEFAULT_GETHIT12 = "Seriously?"; +SWWM_SUBS_DEFAULT_GETHIT13 = "Just a scratch."; +SWWM_SUBS_DEFAULT_GETHIT14 = "Oh, fuck off."; +SWWM_SUBS_DEFAULT_GETHIT15 = "And now it's your turn..."; +SWWM_SUBS_DEFAULT_GETHIT16 = "You are already dead..."; +SWWM_SUBS_DEFAULT_GETHIT17 = "You're not getting out of here alive."; +SWWM_SUBS_DEFAULT_GETHIT18 = "Okay, I get it."; +SWWM_SUBS_DEFAULT_GETHIT19 = "Ugh! Just... fuck... off..."; // getting hurt by friendlies SWWM_SUBS_DEFAULT_NFRIENDHIT = "7"; -SWWM_SUBS_DEFAULT_FRIENDHIT1 = "Are you ticked off at me?"; -SWWM_SUBS_DEFAULT_FRIENDHIT2 = "Are you serious?"; -SWWM_SUBS_DEFAULT_FRIENDHIT3 = "What? Why?"; -SWWM_SUBS_DEFAULT_FRIENDHIT4 = "That's awfully rude."; -SWWM_SUBS_DEFAULT_FRIENDHIT5 = "Sorry, what?"; -SWWM_SUBS_DEFAULT_FRIENDHIT6 = "Not very friendly, are you?"; -SWWM_SUBS_DEFAULT_FRIENDHIT7 = "Whoa, whoa. Easy there."; +SWWM_SUBS_DEFAULT_FRIENDHIT1 = "Hey what was that about?"; +SWWM_SUBS_DEFAULT_FRIENDHIT2 = "What are you doing?"; +SWWM_SUBS_DEFAULT_FRIENDHIT3 = "Huh? Why?"; +SWWM_SUBS_DEFAULT_FRIENDHIT4 = "Wow, rude!"; +SWWM_SUBS_DEFAULT_FRIENDHIT5 = "Excuse me?"; +SWWM_SUBS_DEFAULT_FRIENDHIT6 = "Well that wasn't very cash money of you..."; +SWWM_SUBS_DEFAULT_FRIENDHIT7 = "Hey! What are you doing?"; // hurting a friendly SWWM_SUBS_DEFAULT_NHITFRIEND = "3"; -SWWM_SUBS_DEFAULT_HITFRIEND1 = "I... sorry."; -SWWM_SUBS_DEFAULT_HITFRIEND2 = "I'm sorry."; -SWWM_SUBS_DEFAULT_HITFRIEND3 = "Sorry."; +SWWM_SUBS_DEFAULT_HITFRIEND1 = "Ah... Sorry!"; +SWWM_SUBS_DEFAULT_HITFRIEND2 = "Sorry!"; +SWWM_SUBS_DEFAULT_HITFRIEND3 = "My bad!"; // greeting another player SWWM_SUBS_DEFAULT_NGREET = "7"; -SWWM_SUBS_DEFAULT_GREET1 = "Hi."; -SWWM_SUBS_DEFAULT_GREET2 = "Hey there."; -SWWM_SUBS_DEFAULT_GREET3 = "Hey."; +SWWM_SUBS_DEFAULT_GREET1 = "Oh, hi."; +SWWM_SUBS_DEFAULT_GREET2 = "Hello."; +SWWM_SUBS_DEFAULT_GREET3 = "Hello there."; SWWM_SUBS_DEFAULT_GREET4 = "Hey."; -SWWM_SUBS_DEFAULT_GREET5 = "Hey."; -SWWM_SUBS_DEFAULT_GREET6 = "Well hello."; +SWWM_SUBS_DEFAULT_GREET5 = "'sup."; +SWWM_SUBS_DEFAULT_GREET6 = "Hi."; SWWM_SUBS_DEFAULT_GREET7 = "Hi there."; // ragekit -SWWM_SUBS_DEFAULT_NRAGEKIT = "6"; -SWWM_SUBS_DEFAULT_RAGEKIT1 = "AAAAAAAAAAAAAAAAAAAAAA!!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT2 = "FFFFFFUUUUUUUUUUUCKKKK!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT3 = "FUCKFUCKFUCCKKKK!!"; +SWWM_SUBS_DEFAULT_NRAGEKIT = "17"; +SWWM_SUBS_DEFAULT_RAGEKIT1 = "AGH SHIT FUCK FUCK FUCK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT2 = "FUCKDAMNITFUCK!"; +SWWM_SUBS_DEFAULT_RAGEKIT3 = "NNGNGNGHHHHFUCCCCKKKKK!!!"; SWWM_SUBS_DEFAULT_RAGEKIT4 = "AAAAAAAAAARGH!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT5 = "KILLLLL!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT6 = "RAAAARGH!!! BRING IT!!!"; -// --- comebacks for korax hub lines --- +SWWM_SUBS_DEFAULT_RAGEKIT5 = "FUCKSHITDAMNFUCKFUCK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT6 = "RAAAAAGHNGGHNHHGGAAAAAGGH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT7 = "FFFFFFFUUUUUUUUUCCCCCKKK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT8 = "FUCK SHIT FUCK PISS ASS FUCK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT9 = "ASSFUCKINGFUCKPISSFUCKSHIT!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT10 = "GODFUCKDAMNSHITFUCKKKK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT11 = "DEATH!!! DESTRUCTION!!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT12 = "YOUREALLFUCKINGDEAD!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT13 = "RRRGGHHH!!! KILLLLLLLLL!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT14 = "UUUUURRRRGGGGHHH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT15 = "AAAAAAARGHGGGH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT16 = "FUCKFUCKFUCKFUCKFUUUUUCKKKK!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT17 = "FUCKYOUFUCKYOUFUCKYOUUUUUU!!!"; // "Greetings mortal, are you ready to die?" SWWM_SUBS_DEFAULT_NKORAXGREET = "13"; -SWWM_SUBS_DEFAULT_KORAXGREET1 = "Oh boy. That's it. I'm outta here"; -SWWM_SUBS_DEFAULT_KORAXGREET2 = "Great... That's just great."; -SWWM_SUBS_DEFAULT_KORAXGREET3 = "I don't want whatever you're selling."; -SWWM_SUBS_DEFAULT_KORAXGREET4 = "You're... not really my type."; -SWWM_SUBS_DEFAULT_KORAXGREET5 = "The first word that comes to my mind is 'ugly'."; -SWWM_SUBS_DEFAULT_KORAXGREET6 = "You look like something that was left in the fridge for too long."; -SWWM_SUBS_DEFAULT_KORAXGREET7 = "I can see coming here was a mistake."; -SWWM_SUBS_DEFAULT_KORAXGREET8 = "I'm not comfortable being watched so closely."; -SWWM_SUBS_DEFAULT_KORAXGREET9 = "Nice attitude..."; -SWWM_SUBS_DEFAULT_KORAXGREET10 = "I could ask you the same question."; -SWWM_SUBS_DEFAULT_KORAXGREET11 = "I was about to ask you the same thing."; -SWWM_SUBS_DEFAULT_KORAXGREET12 = "I'm just looking for the mayonnaise. Maybe you could grab it for me. Second shelf, right next to the pudding."; -SWWM_SUBS_DEFAULT_KORAXGREET13 = "I'm here to pick up an order. Two large pepperoni and a calzone. Name is 'Fuck you'."; +SWWM_SUBS_DEFAULT_KORAXGREET1 = "Uhhhh... Is that a trick question?"; +SWWM_SUBS_DEFAULT_KORAXGREET2 = "Oh, great... This is so great..."; +SWWM_SUBS_DEFAULT_KORAXGREET3 = "Well, are you?"; +SWWM_SUBS_DEFAULT_KORAXGREET4 = "Ugh... Please don't get so close."; +SWWM_SUBS_DEFAULT_KORAXGREET5 = "Wow... Real ugly bastard."; +SWWM_SUBS_DEFAULT_KORAXGREET6 = "I don't even know where to begin with how hideous you are."; +SWWM_SUBS_DEFAULT_KORAXGREET7 = "Ew, what the hell... You actually look like that?"; +SWWM_SUBS_DEFAULT_KORAXGREET8 = "Uhhhhhhhh... Excuse me?"; +SWWM_SUBS_DEFAULT_KORAXGREET9 = "Well that's not a friendly greeting."; +SWWM_SUBS_DEFAULT_KORAXGREET10 = "You know, I could ask you the same question."; +SWWM_SUBS_DEFAULT_KORAXGREET11 = "I was about to ask you that, actually."; +SWWM_SUBS_DEFAULT_KORAXGREET12 = "Well, I'm ready to kick your ass, so there's that."; +SWWM_SUBS_DEFAULT_KORAXGREET13 = "Nah, but I'm ready to dine. You know any good pizza places around here?"; // "My servants can smell your blood, human" SWWM_SUBS_DEFAULT_NKORAXBLOOD = "13"; -SWWM_SUBS_DEFAULT_KORAXBLOOD1 = "Creep."; -SWWM_SUBS_DEFAULT_KORAXBLOOD2 = "That's good to know."; -SWWM_SUBS_DEFAULT_KORAXBLOOD3 = "Whatever you say."; +SWWM_SUBS_DEFAULT_KORAXBLOOD1 = "Blood? What blood?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD2 = "Nah, you must be mistaken. My blood's currently in my other body."; +SWWM_SUBS_DEFAULT_KORAXBLOOD3 = "Yeah, yeah, whatever..."; SWWM_SUBS_DEFAULT_KORAXBLOOD4 = "I don't think so."; -SWWM_SUBS_DEFAULT_KORAXBLOOD5 = "Um... yeah... I don't think so..."; -SWWM_SUBS_DEFAULT_KORAXBLOOD6 = "If you say so."; +SWWM_SUBS_DEFAULT_KORAXBLOOD5 = "Um... You are aware I don't have any, right?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD6 = "Well, if you say so..."; SWWM_SUBS_DEFAULT_KORAXBLOOD7 = "I don't care."; -SWWM_SUBS_DEFAULT_KORAXBLOOD8 = "Whatever. Not like I care anyway."; -SWWM_SUBS_DEFAULT_KORAXBLOOD9 = "I don't really give a shit."; -SWWM_SUBS_DEFAULT_KORAXBLOOD10 = "Like I give a shit..."; -SWWM_SUBS_DEFAULT_KORAXBLOOD11 = "I think you're confusing me with someone who gives a shit."; -SWWM_SUBS_DEFAULT_KORAXBLOOD12 = "I'm not so sure about that."; -SWWM_SUBS_DEFAULT_KORAXBLOOD13 = "Just shut up."; +SWWM_SUBS_DEFAULT_KORAXBLOOD8 = "Is that supposed to be a threat? Because it's not working."; +SWWM_SUBS_DEFAULT_KORAXBLOOD9 = "Well, I can smell them pissing themselves in fear. And boy did I not want to know what that smells like."; +SWWM_SUBS_DEFAULT_KORAXBLOOD10 = "I don't give a single flying fuck, dude."; +SWWM_SUBS_DEFAULT_KORAXBLOOD11 = "I think you're confusing me with someone else."; +SWWM_SUBS_DEFAULT_KORAXBLOOD12 = "... Are you sure about that?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD13 = "Uhhhhh... What?"; // "You have played this game too long, mortal, I think I shall remove you from the board" SWWM_SUBS_DEFAULT_NKORAXGAME = "14"; -SWWM_SUBS_DEFAULT_KORAXGAME1 = "I really don't care."; -SWWM_SUBS_DEFAULT_KORAXGAME2 = "Go fuck yourself."; -SWWM_SUBS_DEFAULT_KORAXGAME3 = "Oh, go cough up a hairball."; -SWWM_SUBS_DEFAULT_KORAXGAME4 = "Not gonna happen."; -SWWM_SUBS_DEFAULT_KORAXGAME5 = "Your threats don't scare me."; -SWWM_SUBS_DEFAULT_KORAXGAME6 = "Not a chance."; -SWWM_SUBS_DEFAULT_KORAXGAME7 = "I don't take kindly to threats."; -SWWM_SUBS_DEFAULT_KORAXGAME8 = "Anything else I should know?"; -SWWM_SUBS_DEFAULT_KORAXGAME9 = "Shut up..."; -SWWM_SUBS_DEFAULT_KORAXGAME10 = "No one talks to me like that. Screw you."; -SWWM_SUBS_DEFAULT_KORAXGAME11 = "You won't talk when you're dead."; -SWWM_SUBS_DEFAULT_KORAXGAME12 = "I'd like to see you try."; -SWWM_SUBS_DEFAULT_KORAXGAME13 = "Oh, please try."; -SWWM_SUBS_DEFAULT_KORAXGAME14 = "I don't know what you're talking about, and I don't care."; +SWWM_SUBS_DEFAULT_KORAXGAME1 = "Ohhhh... Not if I remove your face first."; +SWWM_SUBS_DEFAULT_KORAXGAME2 = "Well, fuck you."; +SWWM_SUBS_DEFAULT_KORAXGAME3 = "We ain't playing chess here."; +SWWM_SUBS_DEFAULT_KORAXGAME4 = "I don't think so, ugly boy. I'll play all I want."; +SWWM_SUBS_DEFAULT_KORAXGAME5 = "You trying to scare me or something?"; +SWWM_SUBS_DEFAULT_KORAXGAME6 = "Oh I'm so going to enjoy shutting you up."; +SWWM_SUBS_DEFAULT_KORAXGAME7 = "Oh, you're so dead when I find you."; +SWWM_SUBS_DEFAULT_KORAXGAME8 = "Really? And how are you going to do that exactly?"; +SWWM_SUBS_DEFAULT_KORAXGAME9 = "Please just shut up..."; +SWWM_SUBS_DEFAULT_KORAXGAME10 = "Oh, screw you. You ain't the boss here."; +SWWM_SUBS_DEFAULT_KORAXGAME11 = "Yeah, keep speaking nonsense..."; +SWWM_SUBS_DEFAULT_KORAXGAME12 = "Oh, go and try. See what happens."; +SWWM_SUBS_DEFAULT_KORAXGAME13 = "I'd love to see you try, ugly boy."; +SWWM_SUBS_DEFAULT_KORAXGAME14 = "I have no idea what you're talking about and I don't care."; // "Worship me and I may be yet merciful, then again, maybe not" SWWM_SUBS_DEFAULT_NKORAXWORSHIP = "11"; -SWWM_SUBS_DEFAULT_KORAXWORSHIP1 = "What?"; -SWWM_SUBS_DEFAULT_KORAXWORSHIP2 = "What a scumbag..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP3 = "Pompous ass..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP4 = "Someone's a little full of himself."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP5 = "So full of yourself..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP6 = "I've heard enough of your bullshit."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP1 = "... What?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP2 = "Sorry, ugly bastards are not my type."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP3 = "Ohhhhh, you almost got me there... NOT!"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP4 = "Like I'd do that. Fuck you."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP5 = "Psch... What a monumental idiot..."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP6 = "Yeah yeah, whatever, more stupid shit..."; SWWM_SUBS_DEFAULT_KORAXWORSHIP7 = "Blah, blah, blah..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP8 = "What? I can't hear you over this ringing in my ears."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP9 = "You must think I'm an idiot."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP10 = "Do I look like an idiot?"; -SWWM_SUBS_DEFAULT_KORAXWORSHIP11 = "You have an awfully high opinion of yourself."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP8 = "Sorry, can't hear you over the sound of how much of an idiot you are."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP9 = "The hell are you smoking?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP10 = "What, you think you're some kind of god now?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP11 = "Just shut up. I don't care."; // "Are you strong enough to face your own masters?" SWWM_SUBS_DEFAULT_NKORAXMASTERS = "9"; -SWWM_SUBS_DEFAULT_KORAXMASTERS1 = "Can we move this along? I've got places to be."; -SWWM_SUBS_DEFAULT_KORAXMASTERS2 = "I don't appreciate people telling me what to do."; -SWWM_SUBS_DEFAULT_KORAXMASTERS3 = "Uh... yes, that's right."; -SWWM_SUBS_DEFAULT_KORAXMASTERS4 = "Suppose I've got nothing better to do."; -SWWM_SUBS_DEFAULT_KORAXMASTERS5 = "I'm asking myself the same thing."; -SWWM_SUBS_DEFAULT_KORAXMASTERS6 = "None of your damn business."; +SWWM_SUBS_DEFAULT_KORAXMASTERS1 = "I'm strong enough to beat your sorry ass."; +SWWM_SUBS_DEFAULT_KORAXMASTERS2 = "I don't care."; +SWWM_SUBS_DEFAULT_KORAXMASTERS3 = "Yeah, I probably can."; +SWWM_SUBS_DEFAULT_KORAXMASTERS4 = "Well, if you insist..."; +SWWM_SUBS_DEFAULT_KORAXMASTERS5 = "I seriously think you got me mistaken for someone else, dude."; +SWWM_SUBS_DEFAULT_KORAXMASTERS6 = "Yes... yes, that's right."; SWWM_SUBS_DEFAULT_KORAXMASTERS7 = "Yes, I am."; -SWWM_SUBS_DEFAULT_KORAXMASTERS8 = "That's none of your business."; -SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Just shut up already..."; +SWWM_SUBS_DEFAULT_KORAXMASTERS8 = "And why do you care?"; +SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Please just shut the fuck up."; +/// Extra lines that wouldn't be possible without original voice acting +// per-weapon lines (alternative) +SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "I'll huff and I'll puff... and I'll blow your house in."; +SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "Anyone wants their cavities removed?"; +SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, my trusty old friend."; +SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Twice the knee-exploding power."; +SWWM_SUBS_DEFAULT_GETSPREADGUN = "Look at this pocket shotty."; +SWWM_SUBS_DEFAULT_GETWALLBUSTER = "25 barrels, more than enough to bust everything."; +SWWM_SUBS_DEFAULT_GETEVISCERATOR = "Flak cannon!"; +SWWM_SUBS_DEFAULT_GETHELLBLAZER = "Time to blaze some hell... heh."; +SWWM_SUBS_DEFAULT_GETSPARKSTER = "Hello, sparky boy. Let's have some fun."; +SWWM_SUBS_DEFAULT_GETSILVERBULLET = "Now THIS is a weapon."; +SWWM_SUBS_DEFAULT_GETCANDYGUN = "Sweet... and lethal."; +SWWM_SUBS_DEFAULT_GETYNYKRON = "Time to go supernova on these suckers."; +SWWM_SUBS_DEFAULT_GETITAMEXHAMMER = "I'll hammer you all into shape."; +SWWM_SUBS_DEFAULT_GETPLASMABLAST1 = "Blastin' plasma."; +SWWM_SUBS_DEFAULT_GETPLASMABLAST2 = "Now we're talking. Double the fun."; +SWWM_SUBS_DEFAULT_GETPUNTZERBETA = "Gonna drill some sense into y'all."; // said with a cheap cowboy accent +SWWM_SUBS_DEFAULT_GETPUNTZERGAMMA = "Full auto and... fuller auto? Oh my..."; +SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "Heavy Machine Gun!"; +SWWM_SUBS_DEFAULT_GETQUADRAVOL = "For the flames of the Ardent Cross spread throughout the horde..."; +SWWM_SUBS_DEFAULT_GETNEWSPARKSTER = "I like big plasma weapons."; +SWWM_SUBS_DEFAULT_GETMORTALRIFLE = "Welcome aboard, Mister."; +SWWM_SUBS_DEFAULT_GETRAYKHOM = "The absolute GIRTH of this thing, damn..."; +SWWM_SUBS_DEFAULT_GETRAFANKOS = "Ultimate... I like the sound of that."; +// key received +SWWM_SUBS_DEFAULT_NKEYGET = "5"; +SWWM_SUBS_DEFAULT_KEYGET1 = "Got ya."; +SWWM_SUBS_DEFAULT_KEYGET2 = "Got the key."; +SWWM_SUBS_DEFAULT_KEYGET3 = "Hm, shiny."; +SWWM_SUBS_DEFAULT_KEYGET4 = "I'll be needing this one."; +SWWM_SUBS_DEFAULT_KEYGET5 = "Who's got the key? I've got the key."; +// use fail (randomly plays after humping walls too often) +SWWM_SUBS_DEFAULT_NUSEFAIL = "9"; +SWWM_SUBS_DEFAULT_USEFAIL1 = "Nope."; +SWWM_SUBS_DEFAULT_USEFAIL2 = "Nothing here."; +SWWM_SUBS_DEFAULT_USEFAIL3 = "Hmmmm..."; +SWWM_SUBS_DEFAULT_USEFAIL4 = "No worky."; +SWWM_SUBS_DEFAULT_USEFAIL5 = "Still nothing."; +SWWM_SUBS_DEFAULT_USEFAIL6 = "Where is it...?"; +SWWM_SUBS_DEFAULT_USEFAIL7 = "Open sesame?"; +SWWM_SUBS_DEFAULT_USEFAIL8 = "That won't work."; +SWWM_SUBS_DEFAULT_USEFAIL9 = "Yup, nothing."; +// collectible received +SWWM_SUBS_DEFAULT_CUBEGET = "Cube..."; +SWWM_SUBS_DEFAULT_AKARIGET = "Really ought to give this a read sometime."; +SWWM_SUBS_DEFAULT_SIGNALSGET = "Ahhh... Meido-chan's singing, so good~"; +SWWM_SUBS_DEFAULT_NUTATCOGET = "NUTATCO?"; +SWWM_SUBS_DEFAULT_FRISPYGET = "*giggle* Sayacchi's top snack."; +SWWM_SUBS_DEFAULT_SAYAGET = "Squishy bean..."; +SWWM_SUBS_DEFAULT_MOTHGET = "Ah, Sayacchi's waifu."; +SWWM_SUBS_DEFAULT_DEMOGET = "Hehehe, my own plushie."; +SWWM_SUBS_DEFAULT_PEACHGET = "Wait, this is... *snicker*"; +SWWM_SUBS_DEFAULT_BREADGET = "Soft, squishy buns..."; +SWWM_SUBS_DEFAULT_MANGAGET = "Subtle, Sayacchi. Very subtle..."; +SWWM_SUBS_DEFAULT_KIRINGET = "Kirin-kun~"; +// *ungodly screeching* +SWWM_SUBS_DEFAULT_NKORAX = "9"; +SWWM_SUBS_DEFAULT_KORAX1 = "Oh my god you're even uglier in person!"; +SWWM_SUBS_DEFAULT_KORAX2 = "Ah, the ugly bastard in the flesh."; +SWWM_SUBS_DEFAULT_KORAX3 = "The fuck is that? Did you fuse with your serpent or something?"; +SWWM_SUBS_DEFAULT_KORAX4 = "Well guess who's getting swept off the board today..."; +SWWM_SUBS_DEFAULT_KORAX5 = "Wow, that's an edgy look."; +SWWM_SUBS_DEFAULT_KORAX6 = "No offense, but you look like a shitty fantasy monster."; +SWWM_SUBS_DEFAULT_KORAX7 = "Yeah yeah, *screeeeeeee* to you too."; // use a robot-filtered version of Korax's sight sound there +SWWM_SUBS_DEFAULT_KORAX8 = "What, not much of a talker in person, are ya?"; +SWWM_SUBS_DEFAULT_KORAX9 = "Oh, so that rancid smell was you, after all."; +// "!oremoR nhoJ ,em llik tsum uoy emag eht niw oT" +SWWM_SUBS_DEFAULT_NROMERO = "8"; +SWWM_SUBS_DEFAULT_ROMERO1 = "What?"; +SWWM_SUBS_DEFAULT_ROMERO2 = "Sorry, I don't speak whatever language that is."; +SWWM_SUBS_DEFAULT_ROMERO3 = "That's a big boy alright..."; +SWWM_SUBS_DEFAULT_ROMERO4 = "Don't worry, I'll make it quick."; +SWWM_SUBS_DEFAULT_ROMERO5 = "That's a big hole you got in there, mind if I shoot into it?"; +SWWM_SUBS_DEFAULT_ROMERO6 = "Dude, are you okay? Your brains are leaking something."; +SWWM_SUBS_DEFAULT_ROMERO7 = "Final boss time, huh?"; +SWWM_SUBS_DEFAULT_ROMERO8 = ".oremoR nhoJ ,anatakiaD emag ruoy evol I"; +// "Foolish mortal, only your death is eternal!" +SWWM_SUBS_DEFAULT_NARCHANGELUS = "8"; +SWWM_SUBS_DEFAULT_ARCHANGELUS1 = "... Huh?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS2 = "Foolish is the fool who calls others foolish, fool."; +SWWM_SUBS_DEFAULT_ARCHANGELUS3 = "What's gonna be eternal will be the ass kicking I'll give you."; +SWWM_SUBS_DEFAULT_ARCHANGELUS4 = "Nice costume, did your mom make it for you?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS5 = "Aw, look at you with your fancy lil' wings and everything."; +SWWM_SUBS_DEFAULT_ARCHANGELUS6 = "Yeah yeah, it's always the same with you people."; +SWWM_SUBS_DEFAULT_ARCHANGELUS7 = "Boy, you people really go hard on the pretend-god bullshit, huh?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS8 = "I think I'm going to have to beat some sense into you."; +// "hself ruoy erutrot lliw I" (supposedly) +SWWM_SUBS_DEFAULT_NDSPARILA = "3"; +SWWM_SUBS_DEFAULT_DSPARILA1 = "Oh look at you, little red riding hood."; +SWWM_SUBS_DEFAULT_DSPARILA2 = "How about you get down from that thing and we have a talk?"; +SWWM_SUBS_DEFAULT_DSPARILA3 = "I'm gonna wipe the floor with you, nerd."; +SWWM_SUBS_DEFAULT_NDSPARILB = "3"; +SWWM_SUBS_DEFAULT_DSPARILB1 = "What's with you people and backwards speech?"; +SWWM_SUBS_DEFAULT_DSPARILB2 = "Sorry, could you repeat that?"; +SWWM_SUBS_DEFAULT_DSPARILB3 = ".oot sdrawkcab klat nac I"; // record this line normally then just reverse it, really +// (H-Doom compat) Demon girl petting +SWWM_SUBS_DEFAULT_NPETHDOOM = "9"; +SWWM_SUBS_DEFAULT_PETHDOOM1 = "That's a good girl~"; +SWWM_SUBS_DEFAULT_PETHDOOM2 = "Hey, there's no need to fight."; +SWWM_SUBS_DEFAULT_PETHDOOM3 = "I'm not going to hurt you."; +SWWM_SUBS_DEFAULT_PETHDOOM4 = "There, there..."; +SWWM_SUBS_DEFAULT_PETHDOOM5 = "It's okay, I'm your friend."; +SWWM_SUBS_DEFAULT_PETHDOOM6 = "Calm down, everything's fine."; +SWWM_SUBS_DEFAULT_PETHDOOM7 = "You're so cute~"; +SWWM_SUBS_DEFAULT_PETHDOOM8 = "Hehe... Your hair is so fluffy~"; +SWWM_SUBS_DEFAULT_PETHDOOM9 = "Good girl... Good girl..."; +// (H-Doom compat) Aroused demon girl petting +SWWM_SUBS_DEFAULT_NPETHDOOMFINISH = "9"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH1 = "You really like being pet, don't you?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH2 = "There, it's all good..."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH3 = "Getting off to my headpats, are you now?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH4 = "I can do this much, at least."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH5 = "It feels good, doesn't it?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH6 = "A gentle touch is all you need~"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH7 = "Call me later, okay?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH8 = "My, my... You're blushing so much..."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH9 = "Hehe... You're welcome, anytime."; +// White Lady petting +SWWM_SUBS_DEFAULT_NPETMASHIRO = "7"; +SWWM_SUBS_DEFAULT_PETMASHIRO1 = "Fluffy moth..."; +SWWM_SUBS_DEFAULT_PETMASHIRO2 = "You like my lamp, don't you?"; +SWWM_SUBS_DEFAULT_PETMASHIRO3 = "You're so pretty~"; +SWWM_SUBS_DEFAULT_PETMASHIRO4 = "Thanks for your help, miss."; +SWWM_SUBS_DEFAULT_PETMASHIRO5 = "There... good girl..."; +SWWM_SUBS_DEFAULT_PETMASHIRO6 = "Hehe... cute moth girl~"; +SWWM_SUBS_DEFAULT_PETMASHIRO7 = "Good friend~"; +// Button pushing +SWWM_SUBS_DEFAULT_NBUTTONPUSH = "3"; +SWWM_SUBS_DEFAULT_BUTTONPUSH1 = "Beep."; +SWWM_SUBS_DEFAULT_BUTTONPUSH2 = "Boop."; +SWWM_SUBS_DEFAULT_BUTTONPUSH3 = "Bop."; +// Fall "scream" +SWWM_SUBS_DEFAULT_FALLING = "Wheeeeeeeeeee~!"; +//// LEGACY VOICE - Fallout 4 JP Sole Survivor +SWWM_VOICENAME_LEGACY = "Classic"; +// new weapon received +SWWM_SUBS_LEGACY_NGETWEAPON = "13"; +SWWM_SUBS_LEGACY_GETWEAPON1 = "Not bad... Not bad at all..."; +SWWM_SUBS_LEGACY_GETWEAPON2 = "Good find..."; +SWWM_SUBS_LEGACY_GETWEAPON3 = "Mine now..."; +SWWM_SUBS_LEGACY_GETWEAPON4 = "Nice..."; +SWWM_SUBS_LEGACY_GETWEAPON5 = "Bingo..."; +SWWM_SUBS_LEGACY_GETWEAPON6 = "Hell yeah..."; +SWWM_SUBS_LEGACY_GETWEAPON7 = "Excellent..."; +SWWM_SUBS_LEGACY_GETWEAPON8 = "Yes..."; +SWWM_SUBS_LEGACY_GETWEAPON9 = "There we go..."; +SWWM_SUBS_LEGACY_GETWEAPON10 = "Perfect..."; +SWWM_SUBS_LEGACY_GETWEAPON11 = "I like it..."; +SWWM_SUBS_LEGACY_GETWEAPON12 = "That looks nice..."; +SWWM_SUBS_LEGACY_GETWEAPON13 = "It's probably worth a fortune..."; +// locked door +SWWM_SUBS_LEGACY_NLOCKED = "4"; +SWWM_SUBS_LEGACY_LOCKED1 = "Don't have the key."; +SWWM_SUBS_LEGACY_LOCKED2 = "Only opens with a key."; +SWWM_SUBS_LEGACY_LOCKED3 = "Would need the key."; +SWWM_SUBS_LEGACY_LOCKED4 = "Locked tight."; +// jammed door (strife) +SWWM_SUBS_LEGACY_NJAMMED = "4"; +SWWM_SUBS_LEGACY_JAMMED1 = "It's stuck."; +SWWM_SUBS_LEGACY_JAMMED2 = "No use."; +SWWM_SUBS_LEGACY_JAMMED3 = "Jammed."; +SWWM_SUBS_LEGACY_JAMMED4 = "Useless."; +// puzzle item failure +SWWM_SUBS_LEGACY_NPUZZFAIL = "6"; +SWWM_SUBS_LEGACY_PUZZFAIL1 = "Damn."; +SWWM_SUBS_LEGACY_PUZZFAIL2 = "Damn it."; +SWWM_SUBS_LEGACY_PUZZFAIL3 = "No good."; +SWWM_SUBS_LEGACY_PUZZFAIL4 = "Nope."; +SWWM_SUBS_LEGACY_PUZZFAIL5 = "Uh uh."; +SWWM_SUBS_LEGACY_PUZZFAIL6 = "Hmmm."; +// puzzle item success +SWWM_SUBS_LEGACY_NPUZZSUCC = "5"; +SWWM_SUBS_LEGACY_PUZZSUCC1 = "Nice."; +SWWM_SUBS_LEGACY_PUZZSUCC2 = "That's it."; +SWWM_SUBS_LEGACY_PUZZSUCC3 = "Got it."; +SWWM_SUBS_LEGACY_PUZZSUCC4 = "Yes."; +SWWM_SUBS_LEGACY_PUZZSUCC5 = "Sweet."; +// first enemy encounter (20 seconds cooldown since all enemies dead) +SWWM_SUBS_LEGACY_NFIGHTSTART = "21"; +SWWM_SUBS_LEGACY_FIGHTSTART1 = "Here we go again."; +SWWM_SUBS_LEGACY_FIGHTSTART2 = "Let's get this show on the road."; +SWWM_SUBS_LEGACY_FIGHTSTART3 = "Time to die."; +SWWM_SUBS_LEGACY_FIGHTSTART4 = "Bring it on."; +SWWM_SUBS_LEGACY_FIGHTSTART5 = "You are all going to die."; +SWWM_SUBS_LEGACY_FIGHTSTART6 = "I've been spoiling for a fight."; +SWWM_SUBS_LEGACY_FIGHTSTART7 = "Let's do this."; +SWWM_SUBS_LEGACY_FIGHTSTART8 = "Time to get crazy! Kill 'em all!"; +SWWM_SUBS_LEGACY_FIGHTSTART9 = "You really don't want to start a fight with me."; +SWWM_SUBS_LEGACY_FIGHTSTART10 = "Let's get on with it."; +SWWM_SUBS_LEGACY_FIGHTSTART11 = "Kill!"; +SWWM_SUBS_LEGACY_FIGHTSTART12 = "This won't be hard."; +SWWM_SUBS_LEGACY_FIGHTSTART13 = "Let's do it."; +SWWM_SUBS_LEGACY_FIGHTSTART14 = "Let's do this."; +SWWM_SUBS_LEGACY_FIGHTSTART15 = "Let's just get this over with."; +SWWM_SUBS_LEGACY_FIGHTSTART16 = "Well, this will be an interesting challenge."; +SWWM_SUBS_LEGACY_FIGHTSTART17 = "Okay. Let's get started."; +SWWM_SUBS_LEGACY_FIGHTSTART18 = "Oh, this is just what I need right now..."; +SWWM_SUBS_LEGACY_FIGHTSTART19 = "Time to put on a show."; +SWWM_SUBS_LEGACY_FIGHTSTART20 = "I'm putting you down."; +SWWM_SUBS_LEGACY_FIGHTSTART21 = "Oh, good. Here I was afraid I'd have nothing to do."; +// played at map start +SWWM_SUBS_LEGACY_NMAPSTART = "14"; +SWWM_SUBS_LEGACY_MAPSTART1 = "Ugh... this place smells horrible."; +SWWM_SUBS_LEGACY_MAPSTART2 = "Okay, let's get to work."; +SWWM_SUBS_LEGACY_MAPSTART3 = "Let's hurry this up."; +SWWM_SUBS_LEGACY_MAPSTART4 = "This place is all kinds of strange."; +SWWM_SUBS_LEGACY_MAPSTART5 = "I was born ready."; +SWWM_SUBS_LEGACY_MAPSTART6 = "It's a hard world. I do what I have to."; +SWWM_SUBS_LEGACY_MAPSTART7 = "No robot is superior to me."; +SWWM_SUBS_LEGACY_MAPSTART8 = "I've seen better."; +SWWM_SUBS_LEGACY_MAPSTART9 = "Okay. Let's head in."; +SWWM_SUBS_LEGACY_MAPSTART10 = "I don't want any trouble. I'm just passing through."; +SWWM_SUBS_LEGACY_MAPSTART11 = "Sorry to keep you waiting."; +SWWM_SUBS_LEGACY_MAPSTART12 = "I'll do my best."; +SWWM_SUBS_LEGACY_MAPSTART13 = "Just so we're clear: Anything good I find is mine."; +SWWM_SUBS_LEGACY_MAPSTART14 = "I bet the food here is terrible."; +// every time a secret is found +SWWM_SUBS_LEGACY_NFINDSECRET = "13"; +SWWM_SUBS_LEGACY_FINDSECRET1 = "Yeah, yeah, I'm the best."; +SWWM_SUBS_LEGACY_FINDSECRET2 = "It's true. I do know my shit."; +SWWM_SUBS_LEGACY_FINDSECRET3 = "What can I say? I'm good at what I do."; +SWWM_SUBS_LEGACY_FINDSECRET4 = "It was no big deal."; +SWWM_SUBS_LEGACY_FINDSECRET5 = "No trouble at all."; +SWWM_SUBS_LEGACY_FINDSECRET6 = "It was easy."; +SWWM_SUBS_LEGACY_FINDSECRET7 = "Thanks to me, yes."; +SWWM_SUBS_LEGACY_FINDSECRET8 = "It was a walk in the park."; +SWWM_SUBS_LEGACY_FINDSECRET9 = "It was a piece of cake."; +SWWM_SUBS_LEGACY_FINDSECRET10 = "I still got it."; +SWWM_SUBS_LEGACY_FINDSECRET11 = "I did good work, didn't I?"; +SWWM_SUBS_LEGACY_FINDSECRET12 = "Wow, that's pretty lucky!"; +SWWM_SUBS_LEGACY_FINDSECRET13 = "Yeah, well, I am pretty awesome."; +// frag taunts +SWWM_SUBS_LEGACY_NSCOREKILL = "26"; +SWWM_SUBS_LEGACY_SCOREKILL1 = "Good riddance."; +SWWM_SUBS_LEGACY_SCOREKILL2 = "One down."; +SWWM_SUBS_LEGACY_SCOREKILL3 = "Goodbye."; +SWWM_SUBS_LEGACY_SCOREKILL4 = "Heh! You can't stop me."; +SWWM_SUBS_LEGACY_SCOREKILL5 = "What a loser."; +SWWM_SUBS_LEGACY_SCOREKILL6 = "We're done."; +SWWM_SUBS_LEGACY_SCOREKILL7 = "Bye."; +SWWM_SUBS_LEGACY_SCOREKILL8 = "Dead as can be."; +SWWM_SUBS_LEGACY_SCOREKILL9 = "Another job done."; +SWWM_SUBS_LEGACY_SCOREKILL10 = "The pleasure was all mine."; +SWWM_SUBS_LEGACY_SCOREKILL11 = "How about something a little more challenging next time?"; +SWWM_SUBS_LEGACY_SCOREKILL12 = "I'm glad that's over with."; +SWWM_SUBS_LEGACY_SCOREKILL13 = "Well, it's over. That's that."; +SWWM_SUBS_LEGACY_SCOREKILL14 = "It's done."; +SWWM_SUBS_LEGACY_SCOREKILL15 = "Get lost."; +SWWM_SUBS_LEGACY_SCOREKILL16 = "Is that all?"; +SWWM_SUBS_LEGACY_SCOREKILL17 = "Is that the best you can do?"; +SWWM_SUBS_LEGACY_SCOREKILL18 = "You annoy me."; +SWWM_SUBS_LEGACY_SCOREKILL19 = "Going to have to try harder than that."; +SWWM_SUBS_LEGACY_SCOREKILL20 = "What? That it?"; +SWWM_SUBS_LEGACY_SCOREKILL21 = "Get outta here."; +SWWM_SUBS_LEGACY_SCOREKILL22 = "My pleasure."; +SWWM_SUBS_LEGACY_SCOREKILL23 = "Out of my way."; +SWWM_SUBS_LEGACY_SCOREKILL24 = "Get outta my way."; +SWWM_SUBS_LEGACY_SCOREKILL25 = "Want some more?"; +SWWM_SUBS_LEGACY_SCOREKILL26 = "Done and done."; +// oopsies +SWWM_SUBS_LEGACY_NFRIENDKILL = "4"; +SWWM_SUBS_LEGACY_FRIENDKILL1 = "Oh my god."; +SWWM_SUBS_LEGACY_FRIENDKILL2 = "My god. I'm so sorry."; +SWWM_SUBS_LEGACY_FRIENDKILL3 = "Oh god..."; +SWWM_SUBS_LEGACY_FRIENDKILL4 = "Oh my god. Are you alright?"; +// getting hurt by monsters +SWWM_SUBS_LEGACY_NGETHIT = "19"; +SWWM_SUBS_LEGACY_GETHIT1 = "Whatever..."; +SWWM_SUBS_LEGACY_GETHIT2 = "*sigh*"; +SWWM_SUBS_LEGACY_GETHIT3 = "Hm hmm."; +SWWM_SUBS_LEGACY_GETHIT4 = "Bitch."; +SWWM_SUBS_LEGACY_GETHIT5 = "Asshole..."; +SWWM_SUBS_LEGACY_GETHIT6 = "You annoy me."; +SWWM_SUBS_LEGACY_GETHIT7 = "Up yours."; +SWWM_SUBS_LEGACY_GETHIT8 = "You got my attention."; +SWWM_SUBS_LEGACY_GETHIT9 = "I'm ending this right now."; +SWWM_SUBS_LEGACY_GETHIT10 = "You're a pain in the ass."; +SWWM_SUBS_LEGACY_GETHIT11 = "That's bullshit."; +SWWM_SUBS_LEGACY_GETHIT12 = "Are you serious?"; +SWWM_SUBS_LEGACY_GETHIT13 = "Going to have to try harder than that."; +SWWM_SUBS_LEGACY_GETHIT14 = "Get outta here."; +SWWM_SUBS_LEGACY_GETHIT15 = "And now it's your turn."; +SWWM_SUBS_LEGACY_GETHIT16 = "Time to shut you up for good."; +SWWM_SUBS_LEGACY_GETHIT17 = "You're not leaving here in one piece."; +SWWM_SUBS_LEGACY_GETHIT18 = "You're obviously upset..."; +SWWM_SUBS_LEGACY_GETHIT19 = "Ugh. Just... go away."; +// getting hurt by friendlies +SWWM_SUBS_LEGACY_NFRIENDHIT = "7"; +SWWM_SUBS_LEGACY_FRIENDHIT1 = "Are you ticked off at me?"; +SWWM_SUBS_LEGACY_FRIENDHIT2 = "Are you serious?"; +SWWM_SUBS_LEGACY_FRIENDHIT3 = "What? Why?"; +SWWM_SUBS_LEGACY_FRIENDHIT4 = "That's awfully rude."; +SWWM_SUBS_LEGACY_FRIENDHIT5 = "Sorry, what?"; +SWWM_SUBS_LEGACY_FRIENDHIT6 = "Not very friendly, are you?"; +SWWM_SUBS_LEGACY_FRIENDHIT7 = "Whoa, whoa. Easy there."; +// hurting a friendly +SWWM_SUBS_LEGACY_NHITFRIEND = "3"; +SWWM_SUBS_LEGACY_HITFRIEND1 = "I... sorry."; +SWWM_SUBS_LEGACY_HITFRIEND2 = "I'm sorry."; +SWWM_SUBS_LEGACY_HITFRIEND3 = "Sorry."; +// greeting another player +SWWM_SUBS_LEGACY_NGREET = "7"; +SWWM_SUBS_LEGACY_GREET1 = "Hi."; +SWWM_SUBS_LEGACY_GREET2 = "Hey there."; +SWWM_SUBS_LEGACY_GREET3 = "Hey."; +SWWM_SUBS_LEGACY_GREET4 = "Hey."; +SWWM_SUBS_LEGACY_GREET5 = "Hey."; +SWWM_SUBS_LEGACY_GREET6 = "Well hello."; +SWWM_SUBS_LEGACY_GREET7 = "Hi there."; +// ragekit +SWWM_SUBS_LEGACY_NRAGEKIT = "6"; +SWWM_SUBS_LEGACY_RAGEKIT1 = "AAAAAAAAAAAAAAAAAAAAAA!!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT2 = "FFFFFFUUUUUUUUUUUCKKKK!!!"; +SWWM_SUBS_LEGACY_RAGEKIT3 = "FUCKFUCKFUCCKKKK!!"; +SWWM_SUBS_LEGACY_RAGEKIT4 = "AAAAAAAAAARGH!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT5 = "KILLLLL!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT6 = "RAAAARGH!!! BRING IT!!!"; +// --- comebacks for korax hub lines --- +// "Greetings mortal, are you ready to die?" +SWWM_SUBS_LEGACY_NKORAXGREET = "13"; +SWWM_SUBS_LEGACY_KORAXGREET1 = "Oh boy. That's it. I'm outta here"; +SWWM_SUBS_LEGACY_KORAXGREET2 = "Great... That's just great."; +SWWM_SUBS_LEGACY_KORAXGREET3 = "I don't want whatever you're selling."; +SWWM_SUBS_LEGACY_KORAXGREET4 = "You're... not really my type."; +SWWM_SUBS_LEGACY_KORAXGREET5 = "The first word that comes to my mind is 'ugly'."; +SWWM_SUBS_LEGACY_KORAXGREET6 = "You look like something that was left in the fridge for too long."; +SWWM_SUBS_LEGACY_KORAXGREET7 = "I can see coming here was a mistake."; +SWWM_SUBS_LEGACY_KORAXGREET8 = "I'm not comfortable being watched so closely."; +SWWM_SUBS_LEGACY_KORAXGREET9 = "Nice attitude..."; +SWWM_SUBS_LEGACY_KORAXGREET10 = "I could ask you the same question."; +SWWM_SUBS_LEGACY_KORAXGREET11 = "I was about to ask you the same thing."; +SWWM_SUBS_LEGACY_KORAXGREET12 = "I'm just looking for the mayonnaise. Maybe you could grab it for me. Second shelf, right next to the pudding."; +SWWM_SUBS_LEGACY_KORAXGREET13 = "I'm here to pick up an order. Two large pepperoni and a calzone. Name is 'Fuck you'."; +// "My servants can smell your blood, human" +SWWM_SUBS_LEGACY_NKORAXBLOOD = "13"; +SWWM_SUBS_LEGACY_KORAXBLOOD1 = "Creep."; +SWWM_SUBS_LEGACY_KORAXBLOOD2 = "That's good to know."; +SWWM_SUBS_LEGACY_KORAXBLOOD3 = "Whatever you say."; +SWWM_SUBS_LEGACY_KORAXBLOOD4 = "I don't think so."; +SWWM_SUBS_LEGACY_KORAXBLOOD5 = "Um... yeah... I don't think so..."; +SWWM_SUBS_LEGACY_KORAXBLOOD6 = "If you say so."; +SWWM_SUBS_LEGACY_KORAXBLOOD7 = "I don't care."; +SWWM_SUBS_LEGACY_KORAXBLOOD8 = "Whatever. Not like I care anyway."; +SWWM_SUBS_LEGACY_KORAXBLOOD9 = "I don't really give a shit."; +SWWM_SUBS_LEGACY_KORAXBLOOD10 = "Like I give a shit..."; +SWWM_SUBS_LEGACY_KORAXBLOOD11 = "I think you're confusing me with someone who gives a shit."; +SWWM_SUBS_LEGACY_KORAXBLOOD12 = "I'm not so sure about that."; +SWWM_SUBS_LEGACY_KORAXBLOOD13 = "Just shut up."; +// "You have played this game too long, mortal, I think I shall remove you from the board" +SWWM_SUBS_LEGACY_NKORAXGAME = "14"; +SWWM_SUBS_LEGACY_KORAXGAME1 = "I really don't care."; +SWWM_SUBS_LEGACY_KORAXGAME2 = "Go fuck yourself."; +SWWM_SUBS_LEGACY_KORAXGAME3 = "Oh, go cough up a hairball."; +SWWM_SUBS_LEGACY_KORAXGAME4 = "Not gonna happen."; +SWWM_SUBS_LEGACY_KORAXGAME5 = "Your threats don't scare me."; +SWWM_SUBS_LEGACY_KORAXGAME6 = "Not a chance."; +SWWM_SUBS_LEGACY_KORAXGAME7 = "I don't take kindly to threats."; +SWWM_SUBS_LEGACY_KORAXGAME8 = "Anything else I should know?"; +SWWM_SUBS_LEGACY_KORAXGAME9 = "Shut up..."; +SWWM_SUBS_LEGACY_KORAXGAME10 = "No one talks to me like that. Screw you."; +SWWM_SUBS_LEGACY_KORAXGAME11 = "You won't talk when you're dead."; +SWWM_SUBS_LEGACY_KORAXGAME12 = "I'd like to see you try."; +SWWM_SUBS_LEGACY_KORAXGAME13 = "Oh, please try."; +SWWM_SUBS_LEGACY_KORAXGAME14 = "I don't know what you're talking about, and I don't care."; +// "Worship me and I may be yet merciful, then again, maybe not" +SWWM_SUBS_LEGACY_NKORAXWORSHIP = "11"; +SWWM_SUBS_LEGACY_KORAXWORSHIP1 = "What?"; +SWWM_SUBS_LEGACY_KORAXWORSHIP2 = "What a scumbag..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP3 = "Pompous ass..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP4 = "Someone's a little full of himself."; +SWWM_SUBS_LEGACY_KORAXWORSHIP5 = "So full of yourself..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP6 = "I've heard enough of your bullshit."; +SWWM_SUBS_LEGACY_KORAXWORSHIP7 = "Blah, blah, blah..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP8 = "What? I can't hear you over this ringing in my ears."; +SWWM_SUBS_LEGACY_KORAXWORSHIP9 = "You must think I'm an idiot."; +SWWM_SUBS_LEGACY_KORAXWORSHIP10 = "Do I look like an idiot?"; +SWWM_SUBS_LEGACY_KORAXWORSHIP11 = "You have an awfully high opinion of yourself."; +// "Are you strong enough to face your own masters?" +SWWM_SUBS_LEGACY_NKORAXMASTERS = "9"; +SWWM_SUBS_LEGACY_KORAXMASTERS1 = "Can we move this along? I've got places to be."; +SWWM_SUBS_LEGACY_KORAXMASTERS2 = "I don't appreciate people telling me what to do."; +SWWM_SUBS_LEGACY_KORAXMASTERS3 = "Uh... yes, that's right."; +SWWM_SUBS_LEGACY_KORAXMASTERS4 = "Suppose I've got nothing better to do."; +SWWM_SUBS_LEGACY_KORAXMASTERS5 = "I'm asking myself the same thing."; +SWWM_SUBS_LEGACY_KORAXMASTERS6 = "None of your damn business."; +SWWM_SUBS_LEGACY_KORAXMASTERS7 = "Yes, I am."; +SWWM_SUBS_LEGACY_KORAXMASTERS8 = "That's none of your business."; +SWWM_SUBS_LEGACY_KORAXMASTERS9 = "Just shut up already..."; diff --git a/language.es_base b/language.es_base index f6e16cf6a..bedf919b0 100644 --- a/language.es_base +++ b/language.es_base @@ -25,11 +25,6 @@ I_PUNTZERGAMMA = "Carabina de Asalto Puntzer \"Gamma\""; T_SHEENHMG = "Ametralladora Sheen"; I_SHEENHMG = "Ametralladora Pesada \"Sheen\""; I_QUADRAVOL = "Lanzador de Bolas de Fuego \"Quadravol\""; -T_BLACKFIRE = "Encendedor de Fuego Negro"; -T_EMPCARBINE = "Carabina Raíl"; -I_EMPCARBINE = "Carabina Raíl EMP"; -T_GRANDLANCE = "Gran Lanza"; -T_FISTGUN = "Mano Divina"; T_NEWSPARKSTER = "Rifle Sparkster"; I_NEWSPARKSTER = "Rifle Sparkster Serie x3"; T_MORTALRIFLE = "Rifle Mortal"; @@ -88,20 +83,6 @@ T_SHEENBULLET = "Bala 14.5x114mm MT"; T_SHEENBULLETS = "Balas 14.5x114mm MT"; T_QUADAMMO = "Célula de Quadravol"; T_QUADAMMOS = "Células de Quadravol"; -T_DARKAMMO = "Frasco de Fuego Negro"; -T_DARKAMMOS = "Frascos de Fuego Negro"; -T_EMPCORE = "Barra de Dysedum"; -T_EMPCORES = "Barras de Dysedum"; -T_RAYBOLT = "Proyectil de Ray-Khom"; -T_RAYBOLTS = "Proyectiles de Ray-Khom"; -T_RAYAMMO = "Cargador de Ray-Khom"; -T_RAYAMMOS = "Cargadores de Ray-Khom"; -T_RAYBATTERY = "Batería de Ray-Khom"; -T_RAYBATTERYS = "Baterías de Ray-Khom"; -T_GRANDSPEAR = "Arpón de Gran Lanza"; -T_GRANDSPEARS = "Arpones de Gran Lanza"; -T_GRANDAMMO = "Cargador de Gran Lanza"; -T_GRANDAMMOS = "Cargadores de Gran Lanza"; T_SPARKBAMMO = "Célula de Kinylum"; T_SPARKBAMMOS = "Células de Kinylum"; T_SPARKRAMMO = "Célula de Nokron"; @@ -112,6 +93,12 @@ T_MRAMMO = "Cargador Mortal"; T_MRAMMOS = "Cargadores Mortales"; T_MRGRENADE = "Granada Mortal"; T_MRGRENADES = "Granadas Mortales"; +T_RAYBOLT = "Proyectil de Ray-Khom"; +T_RAYBOLTS = "Proyectiles de Ray-Khom"; +T_RAYAMMO = "Cargador de Ray-Khom"; +T_RAYAMMOS = "Cargadores de Ray-Khom"; +T_RAYBATTERY = "Batería de Ray-Khom"; +T_RAYBATTERYS = "Baterías de Ray-Khom"; T_ULTIMATEPOD = "Cápsula de Rafan-Kos"; T_ULTIMATEPODS = "Cápsulas de Rafan-Kos"; T_ULTIMATEAMMO = "Cargador de Rafan-Kos"; @@ -158,12 +145,7 @@ T_MILKBREAD = "Pan de Leche Akkouxhei"; T_KIRINMANGA = "Saya Miyamoto - Me Casé Con Un Emperador Virgen Pero Resulta Que Es Monísimo Con Lencería?!"; T_KIRINPLUSH = "Peluche de Emperador Kirin"; T_MOTHPLUSH = "Peluche de Mashiro"; -T_AA12 = "Réplica de Auto Assault-12"; -T_HEGE = "Cactus Hege"; -T_HOAGIE = "Emparedado"; -T_IBUKIMILK = "Leche 100% Natural de Oni Rojo de Akari Labs"; -T_MANAROKOU = "Manaroca"; -T_LITHIUM = "Lithium - Volumen Uno"; +T_SAYASMUG = "Taza de Café de Saya"; // colored tags for keys T_REDCARD = "\cgTarjeta Llave Roja\c-"; T_BLUECARD = "\chTarjeta Llave Azul\c-"; @@ -203,7 +185,7 @@ TXT_DEFAULTPICKUPMSG = "Ítem No Identificado"; QUITMSG = "¿En serio quieres irte?\nPues que pena..."; QUITMSG1 = "Wow, pero no te vayas aun,\n¡quedan muchas cosas que hacer!"; QUITMSG2 = "¿Oh, te marchas ya? Pues nada,\nnos vemos luego, supongo."; -QUITMSG3 = "Gracias por jugar a \cySWWM GZ\c-.\nEspero volverte a ver pronto."; +QUITMSG3 = "Gracias por jugar.\nEspero volverte a ver pronto."; QUITMSG5 = "Ah, se acabó la fiesta, supongo..."; QUITMSG6 = "Mi amor por ti es como un camión.\n\cg!!BERSERKER!!\c-"; QUITMSG7 = "No te vayas ahora, o \cfSaya\c- hablará\nmal de ti en Twitter punto com."; @@ -283,6 +265,7 @@ FN_ARCH_FUN2 = "Marsianito"; FN_ARCH_FUN3 = "No gracias"; FN_ARCH_FUN4 = "Te jodes"; FN_ARCH_FUN5 = "Tu día ha sido arruinado"; +FN_ARCH_FUN6 = "Nalgas Ardientes"; FN_SPIDER_FUN1 = "Mami araña"; FN_SPIDER_FUN2 = "Tu puta madre"; FN_SPIDER_FUN3 = "Krang en grande"; @@ -367,6 +350,7 @@ FN_HERESIARCH_FUN = "Hostia Puta"; FN_BOSSBRAIN_FUN = "¡ESPERABAS A JOHN ROMERO PERO ERA YO, MARISA!"; FN_KEEN_FUN = "Arruinado por Bethesda"; FN_VOODOO = "Muñeco Vudú de %s"; +FN_VOODOO_NP = "Muñeco Vudú"; FN_PIG = "Cerdo"; FN_PIG_FUN = "Cochinillo"; FN_WOLFGUARD_FUN1 = "Nazi de Bajo Presupuesto"; @@ -428,18 +412,11 @@ O_PUNTZERGAMMA = "%k taladró varios agujeros a través de %o."; O_SHEENHMG = "%k ahogó a %o en balas."; O_QUADRAVOL = "%k hizo deliciosa barbacoa de %o."; O_QUADRAVOL2 = "%o fue ensartad@[ao_esp] por %k."; -O_BLACKFIRE = "%k convirtió a %o en un helado."; -O_BLACKFIRE2 = "%o fue empalado muy fríamente por %k."; -O_EMPCARBINE = "%o quedó en shock tras presenciar los poderes de rayo de %k."; -O_RAYKHOM = "%o recibió un envío exprés de plasma mortal de parte de %k."; -O_RAYKHOM2 = "%o presenció el PODER ILIMITADO de %k."; -O_GRANDLANCE = "%o fue despedazad@[ao_esp] por la Gran Lanza de %k."; -O_GRANDLANCE2 = "%k mostró a %o lo eficiente que es la fusión nuclear."; -O_FISTGUN = "%o se tragó el sándwich de puño divino de %k."; -O_FISTGUN2 = "%k le mandó un guantazo divino a %o."; O_NEWSPARKSTER = "%o fue testigo del poder de la artillería de plasma de %k."; O_MORTALRIFLE = "%k mató a %o bien muert@[ao_esp]."; O_MORTALRIFLEALT = "%o atrapó una granada muy mortal de %k."; +O_RAYKHOM = "%o recibió un envío exprés de plasma mortal de parte de %k."; +O_RAYKHOM2 = "%o presenció el PODER ILIMITADO de %k."; O_RAFANKOS = "%o no pudo hacer nada contra el arma definitiva de %k."; O_POUND = "%o se llevó una gran impresión del aterrizaje de %k."; O_DASH = "%o fue descuajeringad@[ao_esp] a todo gas por %k."; @@ -471,7 +448,7 @@ OB_SPLASH = "%o casi que se puso demasiado cerca de eso."; OB_R_SPLASH = "%o hizo un Icarus."; OB_ROCKET = "%o se comió un cohete."; OB_KILLEDSELF = "%o se autodestruyó."; -OB_VOODOO = "%o violó las leyes de la causalidad."; +OB_VOODOO = "%o no debería haber tocado ese muñeco."; OB_MPTELEFRAG = "%k sobrescribió a %o."; OB_MONTELEFRAG = "%o fue sobrescrit@[ao_esp]."; OB_DEFAULT = "%o hizo plaf."; @@ -580,29 +557,43 @@ D_TETHERFAIL = "El vínculo del Enlace de Seguridad fue obstruído."; D_MASHIRO = "\cjSabe donde estás...\c-"; SWWM_YNYKRONREADY = "Artefacto Ynykron listo para disparar."; SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar \cf%s\cj por \cf%s\cj.\c-"; +SWWM_TITLEPRESENTSB = "presenta"; SWWM_TITLEPRESENTS = "presenta"; +SWWM_TITLEMODBYA = "un mod de"; SWWM_TITLEMODBY = "un mod de \cxMarisa Kirisame"; -SWWM_TITLESCROLL = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons\n" -"Un maravilleante mod de gameplay para GZDoom por Marisa Kirisame de UnSX Team\n" -"Modelos 3D diseñados con cariño con texturas pintadas a mano de 256 colores con dithering\n" -"Casi 60 mil líneas de ZScript, y aun contando (dios me ayude)\n" -"El lore más profundo a este lado del Modiverso de Doom\n" -"¡Y mucho mucho más!\nSaludos a Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney y por último pero no menos importante mi querido dragón mascota\n" -"He intentado estrujar todos los nombres que he podido ahí, que haya podido recordar, por lo menos, así que si no estás ahí y quieres entrar, solo pídelo\n" -"Ya no queda nada más que ver aquí, el scroll ahora hará bucle, see you again, have a nice day"; +SWWM_TITLEINTROA = "Ese día, la humanidad se vió en peligro, enfrentándose a su propia perdición."; +SWWM_TITLEINTROB = "Pero una máquina se alzó, decidida a luchar, y poner fin a toda esta invasión."; +SWWM_TITLEINTROC = "Los demonios aprenderían a temer la máquina, la cual conocen por un solo nombre..."; +SWWM_TITLESCROLL2 = "Un maravilleante mod de gameplay para GZDoom por Marisa Kirisame de UnSX Team"; +SWWM_TITLESCROLL3 = "Modelos 3D diseñados con cariño con texturas pintadas a mano de 256 colores con dithering"; +SWWM_TITLESCROLL4 = "Más de 60 mil líneas de ZScript, y aun contando (dios me ayude)"; +SWWM_TITLESCROLL5 = "El lore más profundo a este lado del Modiverso de Doom"; +SWWM_TITLESCROLL6 = "¡Y mucho mucho más!"; +SWWM_TITLESCROLL7 = "Saludos a Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney y por último pero no menos importante mi querido dragón mascota"; +SWWM_TITLESCROLL8 = "He intentado estrujar todos los nombres que he podido ahí, que haya podido recordar, por lo menos, así que si no estás ahí y quieres entrar, solo pídelo"; +SWWM_TITLESCROLL9 = "Ya no queda nada más que ver aquí, el scroll ahora hará bucle, see you again, have a nice day"; +SWWM_TITLESUB1 = "El Mundo Está En Peligro Y Acabamos De Mandar\nEste Robot Culogordo Guasón Para Salvarlo!?"; +SWWM_TITLESUB3 = "El mod anteriormente conocido como SWWM GZ"; +SWWM_TITLESUB4 = "Lo siento mucho, Icarus, pero ya\nno puedes llamarlo Swim Jizz"; +SWWM_TITLESUB5 = "¿Te gustan las armas? ¡Tenemos armas!\n¡Armas grandes! ¡Armas pequeñas! ¡Todas las armas!"; +SWWM_TITLESUB6 = "¡Con tecnología revolucionaria de Brillantes Nalgas Metálicas!"; +SWWM_TITLESUB7 = "Este no es el típico mod de gameplay, no señor"; +SWWM_TITLESUB8 = "Las desaventuras de un robot graciosillo\ny todos sus juguetes explosivos"; +SWWM_TITLESUB9 = "Presentando a Dante de la serie Devil May Cry\n(bueno no, es broma)"; +SWWM_TITLESUB10 = ""; +SWWM_TITLESUB11 = "¿Slaughterwads demasiado difíciles? ¡No hay problema!\n¡Solo tienes que jugarlos con este mod!"; +SWWM_TITLESUB12 = " ¿Sabías que este subtítulo está desencuadrado?"; +SWWM_TITLESUB13 = "Me gustan las grandes explosiones y no puedo mentir"; +SWWM_TITLESUB14 = "Si las gafas son buenas para la vista,\n¿por que no llevan lentes?"; SWWM_YOURSELF = "Tú"; SWWM_DOKIDOKI = "El Poder del Amor™"; SWWM_GRAVKILL = "Gravedad"; SWWM_PARRYKILL = "Proyectiles Devueltos"; -SWWM_SETSLOTSTRICT = "\cg!!!ADVERTENCIA!!!\c-\n\cj\"setslotstrict\" está activado. Esto causará que las armas de SWWM GZ no tengan ranuras asignadas. Por favor, ve a Opciones Misceláneas y cambia la opción de \"KEYCONF de Armas/Jugadores estricto\".\c-"; +SWWM_SETSLOTSTRICT = "\cg!!!ADVERTENCIA!!!\c-\n\cj\"setslotstrict\" está activado. Esto causará que las armas del mod no tengan ranuras asignadas. Por favor, ve a Opciones Misceláneas y cambia la opción de \"KEYCONF de Armas/Jugadores estricto\".\c-"; SWWM_WIDESPREAD = "Modo Amplio"; SWWM_TIGHTSPREAD = "Modo Concentrado"; SWWM_YNYKRONFORWARD = "Modo de Rayo"; // desya / forward SWWM_YNYKRONBACKWARD = "Modo de Vórtice"; // busa / backward -SWWM_GAMMAMODE1 = "Semiautomático"; -SWWM_GAMMAMODE2 = "Triple Ráfaga"; -SWWM_GAMMAMODE3 = "Automático"; -SWWM_GAMMAMODE4 = "SUPERAUTOMÁTICO"; SWWM_MRMODE1 = "Disparo de Precisión"; SWWM_MRMODE2 = "Disparo en Clúster"; SWWM_MRMODE3 = "Disparo en Chorro"; @@ -615,8 +606,9 @@ SWWM_PLACE3 = "3º"; SWWM_PLACE1_GENDER1 = "1ª"; SWWM_PLACE2_GENDER1 = "2ª"; SWWM_PLACE3_GENDER1 = "3ª"; +SWWM_PAUSE = "PAUSA"; // weapon tooltips -SWWM_TTNOTE = "Nota: La ayuda de armas se puede desactivar en Opciones de SWWM GZ."; +SWWM_TTNOTE = "Nota: La ayuda de armas se puede desactivar en Opciones de DEMOLITIONIST."; TT_PUSHER = "\cfPrimario:\c- Taladrar.\n" "\cfSecundario:\c- Ataque cargado."; @@ -647,8 +639,8 @@ TT_EVISCERATOR = "\cfSecundario:\c- Disparo de granada.\n" "\cfZoom:\c- Alternar dispersión."; TT_HELLBLAZER = -"\cfPrimario:\c- Cargar cohetes, soltar para disparar.\n" -"\cfSecundario:\c- Cargar granadas, soltar para disparar.\n" +"\cfPrimario:\c- Cargar / disparar cohetes.\n" +"\cfSecundario:\c- Cargar / disparar granadas.\n" "\cfZoom:\c- Seleccionar munición.\n" "\cfRecarga:\c- Recargar / cambiar munición.\n" "\cx(Más controles en la biblioteca)\c-"; @@ -689,8 +681,8 @@ TT_PUNTZERBETA = "\cfSecundario:\c- Modo de disparo rápido.\n" "\cfRecarga:\c- Recargar arma."; TT_PUNTZERGAMMA = -"\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Cambiar modo de disparo.\n" +"\cfPrimario:\c- Fuego automático.\n" +"\cfSecundario:\c- Fuego super-automático.\n" "\cfRecarga:\c- Recargar arma."; TT_SHEENHMG = "\cfPrimario:\c- Fuego lento.\n" @@ -702,28 +694,6 @@ TT_QUADRAVOL = "\cfRecarga:\c- Cargar células.\n" "\cfZoom+Primario:\c- Alternar modo disperso.\n" "\cfZoom+Secundario:\c- Cambiar postura de arma."; -TT_BLACKFIRE = -"\cfPrimario:\c- Lanzafrío.\n" -"\cfSecundario:\c- Disparo de carámbano.\n" -"\cfRecarga:\c- Recargar frasco(s)."; -TT_EMPCARBINE = -"\cfPrimario:\c- Mantener para ionizar, soltar para disparar.\n" -"\cfSecundario:\c- Ionización multi-objetivo.\n" -"\cfZoom:\c- Usar mira.\n" -"\cfRecarga:\c- Cargar barras."; -TT_RAYKHOM = -"\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Ataque de rayo.\n" -"\cfRecarga:\c- Recargar arma.\n" -"\cfZoom:\c- Recargar batería."; -TT_GRANDLANCE = -"\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Disparo cargado.\n" -"\cfRecarga:\c- Recargar arma.\n" -"\cfZoom:\c- Recargar batería."; -TT_FISTGUN = -"\cfPrimario:\c- Lanzar puño.\n" -"\cfSecundario:\c- Bofetada en arco."; TT_NEWSPARKSTER = "\cfPrimario:\c- Disparo de Kinylum.\n" "\cfSecundario:\c- Disparo de Nokron.\n" @@ -735,244 +705,15 @@ TT_MORTALRIFLE = "\cfSecundario:\c- Disparar granada.\n" "\cfZoom:\c- Cambiar modo de disparo.\n" "\cfRecarga:\c- Recargar arma."; +TT_RAYKHOM = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Ataque de rayo.\n" +"\cfRecarga:\c- Recargar arma.\n" +"\cfZoom:\c- Recargar batería."; TT_RAFANKOS = "\cfPrimario:\c- Haz singular.\n" "\cfSecundario:\c- Haz múltiple.\n" "\cfRecarga:\c- Recargar arma."; -// "Direct messages" -SWWM_INCOMINGMSG = "Mensaje directo entrante de %s..."; -SWWM_CYTHONAME = "\cvArchiduque Cytho Valathor\c-"; -// E1M8 -SWWM_SAYAPHOBOS1 = "Creo que olvidé decirlo en la misión pero... Hay un problemilla, \cdDemo-chan\c-."; -SWWM_SAYAPHOBOS2 = "El portal a Deimos está guardado por dos malos malosos, y vas a tener que cargártelos."; -SWWM_SAYAPHOBOS3 = "Son supuestamente el \"reemplazo\" de lo que sea que matara el otro tío para pasar por el mismo sitio."; -SWWM_SAYAPHOBOS4 = "Bueno, conociéndote, estoy segura de que no será un problema. En fin, eso es todo de momento. Buena suerte."; -// E2M8 -SWWM_SAYADEIMOS1 = "Cuidado, \cdDemo\c-, esto me da mala espina."; -SWWM_SAYADEIMOS2 = "Me sale aquí una enorme marca de energía de ahí afuera, y digo ENORME."; -SWWM_SAYADEIMOS3 = "Y encima no puedo contactar con \cvCytho-sama\c- para que nos informe de donde ir."; -SWWM_SAYADEIMOS4 = "Bueno, vas por tu cuenta, supongo. Si no consigues encontrar una salida, estaré esperando para reclamarte."; -// E3M8 -SWWM_SAYADIS1 = "Y aquí estamos... En el mismísimo centro de todo."; -SWWM_SAYADIS2 = "Aquí es donde se abrió el primer portal a la Tierra, y vas a usarlo para volver."; -SWWM_SAYADIS3 = "Y por supuesto, todo bien guardado, como no. Tienes que matar cosas, como siempre."; -SWWM_SAYADIS4 = "Esperemos al menos que te eche en el sitio justo. Tu sigue, \cdDemo-chan\c-, que ya falta poco."; -// E4M8 -SWWM_SAYATHY1 = "Vale, buenas noticias, al menos. Hay un portal cerca, y estoy segura de que te llevará al sitio correcto."; -SWWM_SAYATHY2 = "Pero, por supuesto, tienes que patear más traseros para llegar. A ver, nada en la vida es fácil, ¿no?"; -SWWM_SAYATHY3 = "Estaré lista para informarte luego de tu misión DE VERDAD."; -SWWM_SAYATHY4 = "Ya, aun no tengo ni idea de como salió el lío este. Pero ya llegaré al fondo de todo esto, ya verás."; -// E5M8 -SWWM_CYTHOSIGIL1 = "\cdDemo\c-, soy \cvCytho\c-. Tengo un mensaje importante de parte de la familia real."; -SWWM_CYTHOSIGIL2 = "El príncipe Baphomet está satisfecho con tus esfuerzos, y ha abierto un portal para que regreses a la Tierra."; -SWWM_CYTHOSIGIL3 = "Desafortunadamente, dicho portal está guardado por demonios militares de alto rango, dos, de hecho."; -SWWM_CYTHOSIGIL4 = "... Aunque, conociéndote, estoy seguro de que no será un problema, ¿cierto?"; -// MAP07 -SWWM_SAYADIMPLE1 = "Alto ahí, \cdDemo-chan\c-. Estás a punto de meterte en terreno peligroso."; -SWWM_SAYADIMPLE2 = "Esta es la primera línea de defensa que se ha montado alrededor del puerto interior, y es una jodienda."; -SWWM_SAYADIMPLE3 = "Con suerte, tienes bastante equipamiento para arrasarlo todo... Lo tienes, ¿verdad?"; -SWWM_SAYADIMPLE4 = "Bueno, ya hemos visto lo que puedes hacer, así que estoy segura de que irá todo bien."; -SWWM_SAYADIMPLE5 = "¡Buena suerte!"; -// MAP11 -SWWM_SAYACIRCLE1 = "Ya casi estás, \cdDemo\c-. El interruptor principal de la barrera demoníaca está cerca."; -SWWM_SAYACIRCLE2 = "Que esté todo intacto significa que ya le llevas ventaja al tío ese, lo cual es bueno."; -SWWM_SAYACIRCLE3 = "Las fuerzas especiales esperan para evacuar a todos en cuanto le des al trasto y despejes la zona."; -SWWM_SAYACIRCLE4 = "Con eso, el último bastión de la población local se marchará, dejando solo demonios detrás."; -SWWM_SAYACIRCLE5 = "Eso nos dará tiempo para pensar en el siguiente paso, supongo."; -// MAP20 -SWWM_SAYAGOTCHA1 = "Este es el sitio, sí. Gran fortaleza rodeada de un lago de sangre tóxica. Muy demoníaco."; -SWWM_SAYAGOTCHA2 = "Los tipejos estos tienen el sitio bien guardado, así que vas a encontrar mucha resistencia."; -SWWM_SAYAGOTCHA3 = "Tu revéntalo, mata a todos, y ya llegarás pronto al final."; -SWWM_SAYAGOTCHA4 = "En cuanto llegues al portal, le daré un toque a \cvCytho-sama\c- para que nos diga como cerrarlo."; -SWWM_SAYAGOTCHA5 = "Eso es todo, supongo. Buena suerte, mi \cdDemolicionista\c-."; -// MAP20 special (Ultimate Doom 2) -SWWM_SAYAGOTCHAEND1 = "Espera, ¿Que coño es esto? ¿La lectura cuenta dos portales?"; -SWWM_SAYAGOTCHAEND2 = "No, no, eso no puede estar bien..."; -SWWM_SAYAGOTCHAEND3 = "Uh, vale, \cfDemo-chan\c-, mira a ver como puedes cerrarlos, ¿vale?"; -SWWM_SAYAGOTCHAEND4 = "Mientras, voy a llamar a \cvCytho-sama\c-. Algo me da mala espina de esto..."; -SWWM_SAYAGOTCHAEND5 = "Solo... Intenta no meterte en problemas mientras estoy fuera."; -// MAP30 -SWWM_SAYAIOS1 = "\cdDemo-chan\c-... Ya está, vas a enfrentarte al Comandante Psíquico, el líder del ejército Infernal."; -SWWM_SAYAIOS2 = "No sé si... ... B-bueno, no debería preocuparme llegado este punto."; -SWWM_SAYAIOS3 = "Puedes hacerlo, puedes poner fin a todo esto. Eres... Mi... N-nuestro héroe."; -SWWM_SAYAIOS4 = "Oh dios no puedo hacer esto, tengo el pulso a tope..."; -SWWM_SAYAIOS5 = "... \cdD-Demo-chan\c-... Por favor salva el mundo y... Por favor vuelve a casa."; -// MAP30 with Rampancy -SWWM_SAYARAMPANCY1 = "\cdDemo-chan\c-, esa cosa te toma el pelo, confía en mí. Vi los fallos de login."; -SWWM_SAYARAMPANCY2 = "Estoy segura de que sacará alguna mierda de cliché para \"atraerte a su bando\" o mierdas."; -SWWM_SAYARAMPANCY3 = "Menudo chiste. Sea lo que sea que te diga, no lo escuches. Es todo mentiras y mierdas."; -SWWM_SAYARAMPANCY4 = "Ahora, ve y patea traseros de robot, mi valiente \cdDemolicionista\c-. Todos contamos contigo aquí."; -// LEVEL08 -SWWM_CYTHONERVE1 = "No he podido contactar con \cgSaya\c-, asumo entonces que está durmiendo, ya que es bastante tarde en Japón."; -SWWM_CYTHONERVE2 = "Muchos otros grupos ya han sido suprimidos a escala mundial, sus fuerzas rápidamente declinan."; -SWWM_CYTHONERVE3 = "Tú, sin embargo, te enfrentas a un teniente cibernético conocido como el \"Último Tirano\". Esto será difícil."; -SWWM_CYTHONERVE4 = "Sin embargo... Eres la heroica \cdDemolicionista\c-, y les darás una lección a estas viles bestias."; -SWWM_CYTHONERVE5 = "Extingue las llamas de corrupción demoníaca que mancillan esta tierra. Los Kuriste creemos en ti."; -// Eviternity MAP30 -SWWM_SAYAEVIA1 = "Pst... Mira este sitio. Este tío no podía ser más pretencioso ni aunque lo intentara."; -SWWM_SAYAEVIA2 = "Da igual lo \"angelical\" que parezca, es solo un tío con armadura bonita, le puedes patear el culo."; -SWWM_SAYAEVIA3 = "Todo este sitio, es que... Joder, espero que hayas sacado muchas fotos de alta resolución como te pedí."; -SWWM_SAYAEVIA4 = "Voy a por unas palomitas. Esto va a ser desde luego una batalla épica, jijijijiji..."; -SWWM_SAYAEVIB1 = "¿Que? Pero menuda mierda salida de videojuego. ¿¿¿Me estás contando que el tío tiene DOS BARRAS DE VIDA???"; -SWWM_SAYAEVIB2 = "¡Una mierda, una puta mierda así de grande! ¡Esto es una putísima mierda! ¡Cárgatelo, \cdDemo-chan\c-!"; -// Heretic E1M8 -SWWM_SAYAMAW1 = "Y aquí estamos, en las \"Fauces del Infierno\"."; -SWWM_SAYAMAW2 = "Según los Sidhe esto contiene el portal que conecta con el mundo de los demonios."; -SWWM_SAYAMAW3 = "Creo que va a ser interesante visitar el equivalente al infierno de otro universo, vaya que sí."; -SWWM_SAYAMAW4 = "... Y por supuesto, va a ser mucho más interesante reventarlo todo también, ¿verdad?"; -SWWM_SAYAMAW5 = "Solo... Ten cuidado con lo que sea que guarde el sitio este."; -// Heretic E2M8 -SWWM_SAYAMASTERS1 = "Vale, a ver... Estamos a un paso más de la guarida del jinete de serpiente ese. Pero hay un problema."; -SWWM_SAYAMASTERS2 = "Específicamente, varios problemas. Problemas grandes, tochos, y todo musculosos."; -SWWM_SAYAMASTERS3 = "Es que estamos hablando de MINOTAUROS ENORMES con MAZOS ENORMES."; -SWWM_SAYAMASTERS4 = "No se tú, pero yo ya estoy escuchando el tema de los Hombres del Pilar en mi cabeza."; -SWWM_SAYAMASTERS5 = "A por ellos, \cdDemo Demostar\c-... ... ... Vale puede que ese haya sido un chiste muy malo, olvídalo."; -// Heretic E3M8 -SWWM_SAYADSPARIL1 = "Ya está, \cdDemo-chan\c-. Vas a enfrentarte al brujo capullo ese."; -SWWM_SAYADSPARIL2 = "Vas a salvar otro mundo, y todo en tiempo récord. ¡Estás en racha!"; -SWWM_SAYADSPARIL3 = "... Oh, y recuerda, te espera una sorpresa en casa. Oh, es que te va a encantar."; -SWWM_SAYADSPARIL4 = "Splgslshglgh"; -SWWM_SAYADSPARIL5 = "Oh mierda ¿eso lo pillo el reconocimiento de voz? Ups..."; -// Heretic E4M8 -SWWM_SAYAHEADS1 = "Vamos, es que se me acaba la paciencia con todo. Espero que esto de verdad te traiga de vuelta a casa."; -SWWM_SAYAHEADS2 = "Y si no, bueno, más tiempo para refinar este \"regalo\" que te voy a dar."; -SWWM_SAYAHEADS3 = "Gracias a esto, he conseguido mejorar su potencia aun más. Nos divertiremos a tope."; -SWWM_SAYAHEADS4 = "En serio no puedo esperar a que lo pruebes, y estoy segura de que te mueres de ganas de saber que es..."; -SWWM_SAYAHEADS5 = "Eliminad aquestos enemigos y venid por vuestra recompensa, oh \cdDemolicionista\c-."; -SWWM_SAYAHEADS6 = "... Puto en serio acabo de decir eso..."; -// Heretic E5M8 -SWWM_SAYABULLS1 = "Y es que sigue, su puta madre..."; -SWWM_SAYABULLS2 = "Es que te están mandando por mundos al azar. Mira, ya me estoy cabreando basto."; -SWWM_SAYABULLS3 = "Estoy tan cabreada que, si el próximo portal no te manda inmediatamente de vuelta a Parthoris, es que..."; -SWWM_SAYABULLS4 = "Eso..."; -SWWM_SAYABULLS5 = "NECESITO que vuelvas a casa, \cdDemo-chan\c-. Te necesito desesperadamente para probar esto."; -// Seven Portals -SWWM_SAYAGREETA1 = "Ahí lo tienes, \cdDemo-chan\c-. Ese es tu objetivo, ese bicho grande y feo apestoso. Ese es Korax."; -SWWM_SAYAGREETA2 = "... Por cierto, te has fijado en como huele? Atufa, ¿a que sí?"; -SWWM_SAYAGREETA3 = "Dios, imagina el olor en persona... Solo de pensarlo se me revuelve el estómago."; -SWWM_SAYAGREETB1 = "Cobarde... Burlándose desde la distancia..."; // Kirin reply -SWWM_SAYAGREETC1 = "Sí, cobarde y asqueroso, los típicos signos de un bastardo feo."; -SWWM_SAYAGREETD1 = "¿Bastardo... Feo?"; // Kirin reply -SWWM_SAYAGREETE1 = "Es mejor no explicártelo, \cxKirin-kun\c-. Sentirías una decepción muy grande por toda la raza humana.."; -SWWM_SAYAGREETF1 = "Eso ciertamente no es tranquilizador de oír..."; // Kirin reply -// Shadow Wood -SWWM_SAYABLOODA1 = "No se como el tío este puede oler nada aparte de ese tufo de pedo de perro viejo que suelta."; -SWWM_SAYABLOODA2 = "Es que en serio, la puta virgen..."; -SWWM_SAYABLOODB1 = "El bastardo feo ese necesita un baño."; // Ibuki reply -SWWM_SAYABLOODC1 = "¿Bastardo feo? ¿Que es esto ahora, un doujin cutre?"; -SWWM_SAYABLOODD1 = "Ja, muy buena, \cgSayacchi\c-."; // Ibuki reply -// Hypostyle -SWWM_SAYAHYPO1 = "Y ya está, después de tantas vueltas. Lo que haya aquí, habrá que matarlo para pillar el siguiente portal."; -SWWM_SAYAHYPO2 = "En serio espero que no sea un puto dragón. Sería el boss más cutre y genérico posible."; -SWWM_SAYAHYPO3 = "Uh... Lo he gafado, ¿no? Seguro que sí. Ya, apuesto a que es un puto dragón."; -SWWM_SAYAHYPO4 = "Apuesto que el TÍO ESE va a salir de su tumba y puto venderme su maldito juego por milésima vez."; -// Heresiarch's Seminary -SWWM_KIRINWORSHIPA1 = "Patética criatura repugnante...\n¿Quien pensaría jamas en adorar a una vil bestia como tú?"; -SWWM_KIRINWORSHIPB1 = "Pues yo lo que adoro es esa jugosa polla que tienes, \cxKirin-kun\c-~"; // Saya reply -SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; -SWWM_KIRINWORSHIPD1 = "¡Guh! \cx¡Kiriiiiin\c-! ¡Me acabas de echar cola todo por encima! ¡Joder es que escupes tan fuerte como te corres!"; // Saya reply -SWWM_KIRINWORSHIPD2 = "O-oh... Espera, esta cosa sigue encendida. Mierda... \cdDemo-chan\c- acaba de leer todo eso."; -// Castle of Grief -SWWM_SAYAGAMEA1 = "Guau, mira al puto maestro del ajedrez este... ¡Que te jodan!"; -SWWM_SAYAGAMEA2 = "Este tío es un puto idiota y me sigue cabreando más. Que ganas tengo de verte partirle el maldito culo..."; -SWWM_SAYAGAMEB1 = "Friki del ajedrez..."; // Ibuki -SWWM_SAYAGAMEC1 = "Apuesto a que estaba en el club de ajedrez."; -// Necropolis -SWWM_SAYAMASTERSA1 = "Maestros, maestros... ¿De quien? ¿Despertad mis maestros? Bueno, es igual, me da lo mismo lo que diga."; -SWWM_SAYAMASTERSA2 = "Es que que ganas tengo de que te lo cargues..."; -SWWM_SAYAMASTERSB1 = "¿Eres lo suficientemente fuerte para enfrentarte al hecho de que HUELES?"; // Ibuki reply -SWWM_SAYAMASTERSC1 = "Me duché esta mañana, \crIbuki\c-."; -SWWM_SAYAMASTERSD1 = "Me refiero al señorito apestoso de ahí. Tú hueles bien."; // Ibuki reply -SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitivamente posee un aroma agradable."; // Kirin reply -SWWM_SAYAMASTERSF1 = "Jujujuju... Gracias."; -// Zedek -SWWM_SAYAFIGHTER1 = "Y aquí es donde está Zedek, el luchadorcillo. Tal vez crea que es fuerte, pero aun no te ha conocido."; -SWWM_SAYAFIGHTER2 = "Oh, y tú fíjate por si hay trampas. Seguro que las hay traicioneras por aquí."; -// Traductus -SWWM_SAYACLERICA1 = "Si hay algo que he aprendido de los videojuegos es que los clérigos son la peor escoria."; -SWWM_SAYACLERICA2 = "Eso es todo lo que tengo que decir."; -SWWM_SAYACLERICB1 = "Nunca he encontrado ni un solo clérigo que no haya intentado asesinarme."; // Kirin reply -SWWM_SAYACLERICC1 = "Oh cierto, la gente del Imperio Sacrosanto, ¿verdad? Me olvidé por completo de esos."; -SWWM_SAYACLERICC2 = "Los clérigos son una puta mierda..."; -// Menelkir -SWWM_SAYAMAGE1 = "La guarida de Menelkir, eh... ...\nOh dios, no se lo digas a \cxKirin-kun\c-, aquí hay puzzles."; -SWWM_SAYAMAGE2 = "Sí, es que está ya más que cansado de todo este tema. Y aparentemente ahora los tenemos de coincidir dibujos."; -SWWM_SAYAMAGE3 = "Bueno, al menos estos son puzzles de verdad, y no lo que coño sea que fuera todo aquello."; -SWWM_SAYAMAGE4 = "Aun que sean... Ya sabes... De los que son todo cutres y chupadísimos."; -// Dark Crucible -SWWM_SAYAKORAXA1 = "Aquí estamos, \cdDemo\c-. El gran bastardo feo apestoso ese espera."; -SWWM_SAYAKORAXB1 = "Al fin, el reinado maligno del vil conspirador encontrará su fin."; // Kirin reply -SWWM_SAYAKORAXC1 = "Hora de que se dé un puto baño. Después de que le descoloques las rodillas, por supuesto."; // Ibuki reply -SWWM_SAYAKORAXD1 = "Aunque \cvMeido\c- no lo esté viendo, te puedo decir que los cuatro te estamos dando ánimos."; -SWWM_SAYAKORAXE1 = "Sigue luchando, \cdDemo-chan\c-. Puedes hacerlo, creemos en ti."; // Kirin reply -// Blight -SWWM_SAYABLIGHTA1 = "Oye, \cdDemo-chan\c-, ¿recuerdas los puzzles?"; -SWWM_SAYABLIGHTB1 = "Nnnnngh..."; // Kirin reply -SWWM_SAYABLIGHTC1 = "Creo que \cxKirin\c- acaba de oírme. Bueno... Ya sabes que hacer."; -SWWM_SAYABLIGHTC2 = "Puedo sentir que esto va a ser todo un paripé, así que estate preparada para todo."; -// Constable's Gate -SWWM_SAYACONSTABLEA1 = "Castillos y más mierdas... Y sigue. Ya lo dije en la misión, pero... Ya sabes..."; -SWWM_SAYACONSTABLEA2 = "Sigue reventando cosas, porfa. \cvMeido-chan\c- nos hizo aperitivos, así que al menos tenemos eso."; -SWWM_SAYACONSTABLEB1 = "En serio que es tan atenta, esa chica..."; // Ibuki reply -SWWM_SAYACONSTABLEC1 = "Aunque puedas oír como cuchichea maldiciones por todo lo que está pasando ahí."; -SWWM_SAYACONSTABLED1 = "Ya, esa sí que es nuestra \cvMeido\c-."; // Ibuki reply -// Nave -SWWM_SAYANAVEA1 = "Ojalá pudiera tomar prestado el poder anti-realidad de los \ctMishe\c- para destruir este mundo entero."; -SWWM_SAYANAVEA2 = "En serio estoy cabreada, todos lo estamos. Joder, hasta \cxKirin\c- está furioso, y ya no podemos calmarlo."; -SWWM_SAYANAVEB1 = "Es algo así como adorable y preocupante a la vez."; // Ibuki reply -SWWM_SAYANAVEC1 = "¡NNNNNNNNGGGGGHHHHHHHH!"; // Kirin reply -SWWM_SAYANAVED1 = "\cxKirin-kun\c-, te vas a asfixiar si sigues gritando así contra la almohada."; -SWWM_SAYANAVEE1 = "A lo mejor es lo que quiere, \cgSaya\c-. Busca la dulce libertad de la muerte para encontrar la paz interior."; // Ibuki -SWWM_SAYANAVEF1 = "Si no fuera inmortal eso sería la cosa más jodidamente horrible que podrías decir, \crIbuki\c-."; -// Dark Citadel -SWWM_SAYADEATHKINGS1 = "Estoy tan cabreada que pegaría un puñetazo a través de la realidad para mandar a la mierda a los reyes estos."; -// Kirin's Thrilling Commentary on Puzzles™ -// first puzzle switch on Seven Portals -SWWM_KIRINPUZZLEA1 = "Un peculiar mecanismo... Supuestamente cita ser parte de algo mayor, haciéndose llamar \"puzzle\"."; -SWWM_KIRINPUZZLEA2 = "\cgSayacchi\c- mencionó que los encontrarías. Es algo ciertamente intrigante..."; -// second puzzle switch on Seven Portals -SWWM_KIRINPUZZLEB1 = "Otro más... Interesante..."; -// third puzzle switch on Seven Portals -SWWM_KIRINPUZZLEC1 = "Me falta ver que exactamente hace de esto un \"puzzle\". No es mas que una búsqueda de interruptores."; -SWWM_KIRINPUZZLEC2 = "Difícilmente un desafío para el intelecto de uno, ¿no crees, \cdDemo-chan\c-?"; -// first puzzle switch on Shadow Wood -SWWM_KIRINPUZZLED1 = "Parece ser que estos \"interruptores de puzzle\" simplemente siguen apareciendo a tu paso."; -SWWM_KIRINPUZZLED2 = "Tengo la certeza de que ambos estamos cansados de verlos."; -// fourth puzzle switch on Shadow Wood -SWWM_KIRINPUZZLEE1 = "Estos supuestos \"puzzles\"... Son un insulto a nuestra inteligencia."; -SWWM_KIRINPUZZLEE2 = "... Espero no estar enviando demasiados mensajes."; -// first puzzle switch on Heresiarch's Seminary -SWWM_KIRINPUZZLEF1 = "¿Cuando acabará? ¿¿¿Cuantas más fracciones de \"puzzles\" debemos resolver???"; -SWWM_KIRINPUZZLEF2 = "¿Es así como ese sayzha axhkhashaar se atreve a mofarse de nosotros? ¿Con estos tediosos juegos?"; -SWWM_KIRINPUZZLEF3 = "Son... Nnngh... ¡Kheza sakharei!"; -SWWM_KIRINPUZZLEG1 = "\cxKirin-kun\c-, creo que te estás dejando afectar demasiado por esto."; // Saya reply -SWWM_KIRINPUZZLEH1 = "Sí... Yo... Voy a tumbarme un rato, p-perdón..."; -SWWM_KIRINPUZZLEI1 = "... Pobre. Aunque estoy de acuerdo con él... Esta mierda es que te pone de los nervios, ¿a que sí?"; // Saya reply -SWWM_KIRINPUZZLEI2 = "Bueno... Me voy a darle mimos a \cxKirin-kun\c-. No te preocupes, se pondrá mejor. Está en buenas manos."; -// first puzzle switch on Blight -SWWM_KIRINPUZZLEJ1 = "No podemos huír, ¿no? Estos \"puzzles\" todavía nos persiguen incluso ahora..."; -SWWM_KIRINPUZZLEJ2 = "Este maldito lugar... Plagado por estos viles mecanismos... Juro que jamás daré un paso en él."; -// last puzzle switch on Blight -SWWM_KIRINPUZZLEK1 = "Por favor... Haz que pare..."; -SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, oye... No pasa nada. Toma... Bebe, te ayudará a relajarte.\c-"; // Ibuki reply -SWWM_KIRINPUZZLEM1 = "Glu... Glu... Glu..."; -SWWM_KIRINPUZZLEN1 = "Bueno, pero míralo... Ahí bebiéndolo todo como un campeón."; // Saya reply -SWWM_KIRINPUZZLEO1 = "Ya sabes como va el tema... En cuanto encuentran una teta de la que mamar, ya se acabaron todos sus problemas..."; // Ibuki reply -SWWM_KIRINPUZZLEP1 = "Sabes que \cdDemo-chan\c- puede leer lo que decimos, ¿verdad?"; // Saya reply -SWWM_KIRINPUZZLEQ1 = "Oh, estoy segura de que le encantaría tomar su turno una vez se acabe la misión, ¿hm?"; // Ibuki reply -// first puzzle switch on Constable's Gate -SWWM_KIRINPUZZLER1 = "Más vale que este sea el último de estos \"puzzles\" que vayamos a encontrar..."; -SWWM_KIRINPUZZLER2 = "Urp..."; -SWWM_KIRINPUZZLER3 = "Mis disculpas."; -SWWM_KIRINPUZZLES1 = "Estaba buena la leche, ¿a que sí?"; // Saya reply -SWWM_KIRINPUZZLET1 = "Ciertamente... Doy gracias por la bendición de \crIbuki\c-."; -SWWM_KIRINPUZZLEU1 = "Hacer que pueda lactar a voluntad es una bendición, vaya que sí. Seguro que \cdDemo\c- está también de acuerdo."; // Saya reply -// super secret cheats -SWWM_ZNVTXT1 = "\cdDemolicionista\c-, soy yo, \chZanaveth El Corruptor\c-. He testificado del acto que has actuado, sí."; -SWWM_ZNVTXT2 = "Son \cf%d\c- años... y las mágicas palabras veo en nuevo. Muy impresionada, múchamente impresionada."; -SWWM_ZNVTXT3 = "Así, puedes hacer la cosa... Como los \ctMishe\c- enseñaron también a mí. Una sorpresa no esperada, sí."; -SWWM_ZNVTXT4 = "Hay tantas muchas palabras poderosas a usar, \cdDemolicionista\c-. Sigue siguiendo para descubrirlas todas."; -SWWM_ZNVTXT5 = "Y ahora debo dar marcha. A favor extender saludos a tía \cgSaya\c- por parte mía. Buena suerte, \cdDemolicionista\c-."; // boss tags BT_BRUISERS = "Hermanos de Guerra"; BT_CYBIE = "Tirano de Babel"; @@ -1066,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."; @@ -1114,11 +855,11 @@ SWWM_INTERTIP60 = "A pesar de su aparentemente penoso tamaño, el Blaster de Pla SWWM_INTERTIP61 = "Las armas Puntzer pueden penetrar fácilmente objetos sólidos e incluso paredes de poco grosor. Ningún enemigo estará seguro detrás de su cobertura."; SWWM_INTERTIP62 = "\"La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que desate a Leviatán en mis bragas, y puedes citarme en eso.\" — Saya Miyamoto"; SWWM_INTERTIP63 = "Pulsando disparo inmediatamente después de golpear algo con las bayonetas del Quadravol resultará en una explosión aumentada a bocajarro que mandará a lo que sea que esté al otro lado volando."; -SWWM_INTERTIP64 = "El Encendedor de Fuego Negro deja un rastro prolongado de frío mucho después de que sus llamas se hayan apagado, causando mucho más daño."; -SWWM_INTERTIP65 = "El Encendedor de Fuego Negro puede producir bloques de hielo que flotan sobre líquidos, convirtiéndose en plataformas temporales. Ten en cuenta que esto obviamente no funcionará en lava."; -SWWM_INTERTIP66 = "Puedes marcar múltiples objetivos con el ionizador de la Carabina de Raíl y luego alcanzarlos a todos en una sola descarga. Pero debes hacerlo rápido, ya que la carga se disipa con el tiempo."; +SWWM_INTERTIP64 = "Mantener los gatillos del Rifle Sparkster pulsados incrementará gradualmente la potencia de disparo al soltarlos. Afortunadamente, no existe la posibilidad de que el arma explote si los mantienes demasiado tiempo, solo un arma mal diseñada por humanos podría ser tan disfuncional."; +SWWM_INTERTIP65 = "El Rifle Sparkster puede disparar ambos tipos de munición simultáneamente, mezclando todo en un mortífero proyectil combinado."; +SWWM_INTERTIP66 = "El Rifle Mortal (\"Míster\" para los amigos) fue ideado como un posible rifle de batalla \"estándar\" para la Coalición X'Animen que \"incluso los Xekkian considerarían poderoso\". Parece que en ese aspecto ha sido un éxito, considerando lo verdaderamente mortal que es, aunque no tiene mucha adopción... Por ahora."; SWWM_INTERTIP67 = "Siendo principalmente una pistola de bobina, la Ray-Khom es casi completamente silenciosa y perfecta para matar sigilosamente. Ten en cuenta sin embargo que el impacto del proyectil en sí será muy ruidoso."; -SWWM_INTERTIP68 = "La Gran Lanza es una alternativa más segura al Artefacto Ynykron si no quieres matarte a ti o a tus amigos accidentalmente."; +SWWM_INTERTIP68 = "La Rafan-Kos es ciertamente un Arma Definitiva, como su nombre implica."; SWWM_INTERTIP70 = "¿Sabíais que incluso con cinturones de seguridad la gente muere todo el tiempo en accidentes de coche? Pensé que era interesante."; SWWM_INTERTIP71 = "\"En internet nadie puede escucharte ser sutil.\" — Linus Torvalds"; SWWM_INTERTIP72 = "Hay aproximadamente 9.3 mil millones de demonios criados solo para la guerra en el Infierno. Eso es ochocientas setenta y seis mil veces el conteo de monstruos de nuts.wad, y eso es terrible."; @@ -1130,7 +871,7 @@ SWWM_INTERTIP78 = "Xenia > Tux\n\nDevolvednos a la chica zorro molona de Linux. SWWM_INTERTIP79 = "Abofetear fachas es perfectamente razonable."; SWWM_INTERTIP81 = "La edad solo afecta a la apariencia, y no tiene relación a la habilidad. El género no tiene relación a la habilidad. Todo el mundo tiene imperfecciones, los prejuicios traen consigo malcontentos, conviertete en un espíritu oscuro.\nHora de cangrejo."; SWWM_INTERTIP82 = "\"SI EL ZOO ME PROHIBE LA ENTRADA POR GRITAR A LOS ANIMALES PLANTARÉ CARA A DIOS Y CAMINARÉ DE ESPALDAS AL INFIERNO\" — dril"; -SWWM_INTERTIP83 = "SWWM GZ es realmente Un Extraño Mod de Armas (Some Weird Weapons Mod) para GZDoom."; +SWWM_INTERTIP83 = "Este es realmente un extraño mod de armas para GZDoom."; SWWM_INTERTIP84 = "\"En su inmensidad, el universo no es más que un mero grano de arena cuando se compara a los límites ilimitados de nuestra imaginación.\" — Zanaveth Nekuraku III"; SWWM_INTERTIP85 = "Puedes alternar el arte de intermisión con Zoom, y estos consejos con Recarga. Mantener Fuego Secundario ocultará la interfaz para que puedas ver el arte al completo."; SWWM_INTERTIP86 = "Mezcla ajo molido, pimienta blanca y albahaca con tu salsa de tomate, va ideal con pasta, puedes darme las gracias luego."; @@ -1163,7 +904,7 @@ SWWM_INTERTIP112 = "No hay autobuses en Gensokyo."; SWWM_INTERTIP113 = "Las bebidas carbonatadas se toman mejor con una pajita, para evitar dañar tus dientes."; SWWM_INTERTIP114 = "Un derribo no letal es el derribo más silencioso."; SWWM_INTERTIP115 = "Había un consejo aquí, pero se ha ido ahora."; -SWWM_INTERTIP116 = "Más de dos mil millones de dispositivos ejecutan Java. Eso es dos mil millones de más."; +SWWM_INTERTIP116 = "Más de trece mil millones de dispositivos ejecutan Java. Ya es demasiado tarde, estamos todos condenados."; SWWM_INTERTIP117 = "La comida sabe mejor cuando te la preparas tú."; SWWM_INTERTIP118 = "Este mesaje de consejo tiene una errata."; SWWM_INTERTIP119 = "Si los enemigos se entrometen mientras estás admirando la brillante llave nueva que acabas de encontrar, puedes darles un puñetazo con tu mano libre."; @@ -1181,12 +922,12 @@ SWWM_INTERTIP130 = "El potenciado de velocidad del Ragekit puede hacerte rebotar SWWM_INTERTIP131 = "En Heretic y Hexen, un ítem conocido como el Enlace de Seguridad puede aparecer. Si por cualquier razón te has atascado en algún tipo de trampa de la que no parece que haya salida, este será tu as en la manga."; SWWM_INTERTIP132 = "La Marca de Devastación es bastante inestable, pero provee de un mayor potenciado de daño que el Ragekit, para TODO el daño que puedas causar, incluso a ti. Sí, un juguetito bastante peligroso, desde luego."; SWWM_INTERTIP133 = "El Sprite Divino puede potenciar tu salud hasta niveles absurdos, pero sus efectos se desvanecen rápidamente después de un rato. Es el ítem de salud más potente que tienes al alcance, pero ten en cuenta que debe ser activado manualmente. A diferencia de muchos otros, no te va a salvar el trasero por su cuenta."; -SWWM_INTERTIP134 = "La Mano Divina es otra arma que se puede beneficiar de los efectos del Ragekit, convirtiendo lo que ya es un puñetazo letal en algo realmente divino."; -SWWM_INTERTIP135 = "Mantener los gatillos del Rifle Sparkster pulsados incrementará gradualmente la potencia de disparo al soltarlos. Afortunadamente, no existe la posibilidad de que el arma explote si los mantienes demasiado tiempo, solo un arma mal diseñada por humanos podría ser tan disfuncional."; -SWWM_INTERTIP136 = "El Rifle Sparkster puede disparar ambos tipos de munición simultáneamente, mezclando todo en un mortífero proyectil combinado."; -SWWM_INTERTIP137 = "El Rifle Mortal (\"Míster\" para los amigos) fue ideado como un posible rifle de batalla \"estándar\" para la Coalición X'Animen que \"incluso los Xekkian considerarían poderoso\". Parece que en ese aspecto ha sido un éxito, considerando lo verdaderamente mortal que es, aunque no tiene mucha adopción... Por ahora."; -SWWM_INTERTIP138 = "La Rafan-Kos es ciertamente un Arma Definitiva, como su nombre implica."; -SWWM_INTERTIP139 = "Se dice que la Mano Divina trae consigo solo una minúscula fracción del poder de su creador original. El tipo debe de pegar unas hostias de aúpa, entonces."; +SWWM_INTERTIP134 = "La Demolicionista no está sola en su misión. Se sabe que hay muchos más héroes luchando ahí afuera también."; +SWWM_INTERTIP135 = "A Demo-chan le gusta un cierto robot de videojuego que también mata demonios con estilo."; +SWWM_INTERTIP136 = "Generalmente, tus enemigos son lo suficientemente estúpidos como para plantarse delante de tu línea de fuego. Si fueran más listos, no intentarían enfrentarse a ti."; +SWWM_INTERTIP137 = "Los potenciadores existen para ser usados, no tengas miedo de \"malgastarlos\". Si la situación lo llama, dale caña. Ya encontrarás más luego."; +SWWM_INTERTIP138 = "Los demonios evitaron invadir Australia por alguna razón. Tal vez el clima de ahí es peor que en el Infierno."; +SWWM_INTERTIP139 = "Si parece que el juego te está dando demasiadas cosas, puedes ganarte un dinero extra vendiendo lo que no necesites."; SWWM_INTERTIP140 = "El chasis de la Demolicionista tiene un ligero aroma a lima."; SWWM_INTERTIP141 = "\"En el futuro, todo es Cromado.\"\n\nNunca una frase de una serie de dibujos pudo ser más acertada tras el inevitable auge de la supremacía web-app."; SWWM_INTERTIP142 = "Este mod está en desarrollo constante. Recuerda reportar cualquier bug que encuentres."; @@ -1239,8 +980,6 @@ SWWM_ACHIEVEMENT_BUTTS_TAG = "Esos Glúteos Firmes"; SWWM_ACHIEVEMENT_BUTTS_TXT = "Mata %d enemigos embistiendo marcha atrás"; SWWM_ACHIEVEMENT_CANDY_TAG = "Oh un Caramelo"; SWWM_ACHIEVEMENT_CANDY_TXT = "Recoge %d pepitas"; -SWWM_ACHIEVEMENT_CHEAT_TAG = "Astucia Mishe"; -SWWM_ACHIEVEMENT_CHEAT_TXT = "Consigue meter un código de trampa"; SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Mierdas de Recadero"; SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Termina un mapa sin obtener ninguna llave"; SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK"; @@ -1263,14 +1002,10 @@ SWWM_ACHIEVEMENT_DIVINE_TAG = "Deleite Divino"; SWWM_ACHIEVEMENT_DIVINE_TXT = "Usa %d Sprites Divinos"; SWWM_ACHIEVEMENT_DOODLE_TAG = "Maestro del Grafiti"; SWWM_ACHIEVEMENT_DOODLE_TAG = "Garabatea mostachos en %d caras de demonio"; -SWWM_ACHIEVEMENT_DOSH_TAG = "Capitalismo Desenfrenado"; -SWWM_ACHIEVEMENT_DOSH_TXT = "Acumula ¥1.000.000.000 entre todas tus partidas"; SWWM_ACHIEVEMENT_EVERYTHING_TAG = "La Demolicionista"; SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Desbloquea todos los logros"; SWWM_ACHIEVEMENT_EZKILL_TAG = "El Orgullo de Misa"; SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %d enemigos con un solo disparo de Artefacto Ynykron (excluyendo modo secundario)"; -SWWM_ACHIEVEMENT_FISTO_TAG = "Rompejetas Excepcional"; -SWWM_ACHIEVEMENT_FISTO_TXT = "Mata %d enemigos con la Mano Divina"; 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 = "¿Te Gusta Caco?"; @@ -1300,7 +1035,6 @@ SWWM_ACHIEVEMENT_HND_TAG = "Mediodía"; SWWM_ACHIEVEMENT_HND_TXT = "Realiza %d disparos mortales en una única recarga de Puntzer Beta"; SWWM_ACHIEVEMENT_HURRY_TAG = "Con Prisas"; SWWM_ACHIEVEMENT_HURRY_TXT = "Termina un mapa con 0 muertes, ítems y secretos"; -SWWM_ACHIEVEMENT_ICE_TXT = "Empala %d enemigos con el disparo secundario del Encendedor de Fuego Negro"; SWWM_ACHIEVEMENT_JUMP_TAG = "Verticalidad"; SWWM_ACHIEVEMENT_JUMP_TXT = "Salta paredes %d veces"; SWWM_ACHIEVEMENT_KANCHO_TAG = "Kancho Extremo"; @@ -1317,6 +1051,8 @@ SWWM_ACHIEVEMENT_LOVE_TAG = "Amor Letal"; SWWM_ACHIEVEMENT_LOVE_TXT = "Mata %d enemigos con un beso lanzado (sin contar insta-kills)"; SWWM_ACHIEVEMENT_MASHIRO_TAG = "Capas de Blanco"; SWWM_ACHIEVEMENT_MASHIRO_TXT = "Invoca a la Dama Blanca"; +SWWM_ACHIEVEMENT_MATRYOSHKA_TAG = "Astucia Mishe"; +SWWM_ACHIEVEMENT_MATRYOSHKA_TXT = "Una Caja Afortunada dentro de una Caja Afortunada dentro de una Caja Afortunada dentro de una Caja Afortunada dentro de..."; SWWM_ACHIEVEMENT_MBF_TAG = "Puedes Acariciar el Perro"; SWWM_ACHIEVEMENT_MBF_TXT = "Acaricia un perro"; SWWM_ACHIEVEMENT_MEGA_TAG = "Masacre Masiva"; @@ -1338,8 +1074,6 @@ SWWM_ACHIEVEMENT_PAR_TAG = "Rápido"; SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %d mapas"; SWWM_ACHIEVEMENT_PEACE_TAG = "Pacifista"; SWWM_ACHIEVEMENT_PEACE_TXT = "Termina un mapa sin causar daño"; -SWWM_ACHIEVEMENT_PENE_TAG = "Penetrador"; -SWWM_ACHIEVEMENT_PENE_TXT = "Atraviesa %d enemigos en fila con un solo secundario de la Gran Lanza"; SWWM_ACHIEVEMENT_PLASMA_TAG = "Echando Plasmas"; SWWM_ACHIEVEMENT_PLASMA_TXT = "Mata un enemigo a 100%% de salud con un disparo cargado del Blaster de Plasma %d veces"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito"; diff --git a/language.es_dlg b/language.es_dlg new file mode 100644 index 000000000..4559c3ed1 --- /dev/null +++ b/language.es_dlg @@ -0,0 +1,243 @@ +[es] +// "Direct messages" +SWWM_INCOMINGMSG = "Mensaje directo entrante de %s..."; +SWWM_CYTHONAME = "\cvArchiduque Cytho Valathor\c-"; +// E1M8 +SWWM_SAYAPHOBOS1 = "Creo que olvidé decirlo en la misión pero... Hay un problemilla, \cdDemo-chan\c-."; +SWWM_SAYAPHOBOS2 = "El portal a Deimos está guardado por dos malos malosos, y vas a tener que cargártelos."; +SWWM_SAYAPHOBOS3 = "Son supuestamente el \"reemplazo\" de lo que sea que matara el otro tío para pasar por el mismo sitio."; +SWWM_SAYAPHOBOS4 = "Bueno, conociéndote, estoy segura de que no será un problema. En fin, eso es todo de momento. Buena suerte."; +// E2M8 +SWWM_SAYADEIMOS1 = "Cuidado, \cdDemo\c-, esto me da mala espina."; +SWWM_SAYADEIMOS2 = "Me sale aquí una enorme marca de energía de ahí afuera, y digo ENORME."; +SWWM_SAYADEIMOS3 = "Y encima no puedo contactar con \cvCytho-sama\c- para que nos informe de donde ir."; +SWWM_SAYADEIMOS4 = "Bueno, vas por tu cuenta, supongo. Si no encuentras una salida, estaré esperando para reclamarte."; +// E3M8 +SWWM_SAYADIS1 = "Y aquí estamos... En el mismísimo centro de todo."; +SWWM_SAYADIS2 = "Aquí es donde se abrió el primer portal a la Tierra, y vas a usarlo para volver."; +SWWM_SAYADIS3 = "Y por supuesto, todo bien guardado, como no. Tienes que matar cosas, como siempre."; +SWWM_SAYADIS4 = "Esperemos al menos que te eche en el sitio justo. Tu sigue, \cdDemo-chan\c-, que ya falta poco."; +// E4M8 +SWWM_SAYATHY1 = "Vale, buenas noticias, al menos. Hay un portal cerca, y estoy segura de que te llevará al sitio correcto."; +SWWM_SAYATHY2 = "Pero, por supuesto, tienes que patear más traseros para llegar. A ver, nada en la vida es fácil, ¿no?"; +SWWM_SAYATHY3 = "Estaré lista para informarte luego de tu misión DE VERDAD."; +SWWM_SAYATHY4 = "Ya, aun no tengo ni idea de como salió el lío este. Pero ya llegaré al fondo de todo esto, ya verás."; +// E5M8 +SWWM_CYTHOSIGIL1 = "\cdDemo\c-, soy \cvCytho\c-. Tengo un mensaje importante de parte de la familia real."; +SWWM_CYTHOSIGIL2 = "El príncipe Baphomet está satisfecho con tus esfuerzos, y ha abierto un portal para regresar a la Tierra."; +SWWM_CYTHOSIGIL3 = "Desafortunadamente, dicho portal está guardado por demonios militares de alto rango, dos, de hecho."; +SWWM_CYTHOSIGIL4 = "... Aunque, conociéndote, estoy seguro de que no será un problema, ¿cierto?"; +// MAP07 +SWWM_SAYADIMPLE1 = "Alto ahí, \cdDemo-chan\c-. Estás a punto de meterte en terreno peligroso."; +SWWM_SAYADIMPLE2 = "Esta es la primera línea de defensa que se ha montado alrededor del puerto interior, y es una jodienda."; +SWWM_SAYADIMPLE3 = "Con suerte, tienes bastante equipamiento para arrasarlo todo... Lo tienes, ¿verdad?"; +SWWM_SAYADIMPLE4 = "Bueno, ya hemos visto lo que puedes hacer, así que estoy segura de que irá todo bien."; +SWWM_SAYADIMPLE5 = "¡Buena suerte!"; +// MAP11 +SWWM_SAYACIRCLE1 = "Ya casi estás, \cdDemo\c-. El interruptor principal de la barrera demoníaca está cerca."; +SWWM_SAYACIRCLE2 = "Que esté todo intacto significa que ya le llevas ventaja al tío ese, lo cual es bueno."; +SWWM_SAYACIRCLE3 = "Las fuerzas especiales esperan para evacuar a todos en cuanto le des al trasto y despejes la zona."; +SWWM_SAYACIRCLE4 = "Con eso, el último bastión de la población local se marchará, dejando solo demonios detrás."; +SWWM_SAYACIRCLE5 = "Eso nos dará tiempo para pensar en el siguiente paso, supongo."; +// MAP20 +SWWM_SAYAGOTCHA1 = "Este es el sitio, sí. Gran fortaleza rodeada de un lago de sangre tóxica. Muy demoníaco."; +SWWM_SAYAGOTCHA2 = "Los tipejos estos tienen el sitio bien guardado, así que vas a encontrar mucha resistencia."; +SWWM_SAYAGOTCHA3 = "Tu revéntalo, mata a todos, y ya llegarás pronto al final."; +SWWM_SAYAGOTCHA4 = "En cuanto llegues al portal, le daré un toque a \cvCytho-sama\c- para que nos diga como cerrarlo."; +SWWM_SAYAGOTCHA5 = "Eso es todo, supongo. Buena suerte, mi \cdDemolicionista\c-."; +// MAP20 special (Ultimate Doom 2) +SWWM_SAYAGOTCHAEND1 = "Espera, ¿Que coño es esto? ¿La lectura cuenta dos portales?"; +SWWM_SAYAGOTCHAEND2 = "No, no, eso no puede estar bien..."; +SWWM_SAYAGOTCHAEND3 = "Uh, vale, \cfDemo-chan\c-, mira a ver como puedes cerrarlos, ¿vale?"; +SWWM_SAYAGOTCHAEND4 = "Mientras, voy a llamar a \cvCytho-sama\c-. Algo me da mala espina de esto..."; +SWWM_SAYAGOTCHAEND5 = "Solo... Intenta no meterte en problemas mientras estoy fuera."; +// MAP30 +SWWM_SAYAIOS1 = "\cdDemo-chan\c-... Ya está, vas a enfrentarte al Comandante Psíquico, el líder del ejército Infernal."; +SWWM_SAYAIOS2 = "No sé si... ... B-bueno, no debería preocuparme llegado este punto."; +SWWM_SAYAIOS3 = "Puedes hacerlo, puedes poner fin a todo esto. Eres... Mi... N-nuestro héroe."; +SWWM_SAYAIOS4 = "Oh dios no puedo hacer esto, tengo el pulso a tope..."; +SWWM_SAYAIOS5 = "... \cdD-Demo-chan\c-... Por favor salva el mundo y... Por favor vuelve a casa."; +// MAP30 with Rampancy +SWWM_SAYARAMPANCY1 = "\cdDemo-chan\c-, esa cosa te toma el pelo, confía en mí. Vi los fallos de login."; +SWWM_SAYARAMPANCY2 = "Estoy segura de que sacará alguna mierda de cliché para \"atraerte a su bando\" o mierdas."; +SWWM_SAYARAMPANCY3 = "Menudo chiste. Sea lo que sea que te diga, no lo escuches. Es todo mentiras y mierdas."; +SWWM_SAYARAMPANCY4 = "Ahora, ve y patea traseros de robot, mi valiente \cdDemolicionista\c-. Todos contamos contigo aquí."; +// LEVEL08 +SWWM_CYTHONERVE1 = "No he podido contactar con \cgSaya\c-, supongo que está durmiendo, ya que es de noche en Japón."; +SWWM_CYTHONERVE2 = "Muchos otros grupos ya han sido suprimidos a escala mundial, sus fuerzas rápidamente declinan."; +SWWM_CYTHONERVE3 = "Tú, sin embargo, te enfrentas a un teniente cibernético conocido como el \"Último Tirano\". Será difícil."; +SWWM_CYTHONERVE4 = "Sin embargo... Eres la heroica \cdDemolicionista\c-, y les darás una lección a estas viles bestias."; +SWWM_CYTHONERVE5 = "Extingue las llamas de corrupción demoníaca que mancillan esta tierra. Los Kuriste creemos en ti."; +// Eviternity MAP30 +SWWM_SAYAEVIA1 = "Pst... Mira este sitio. Este tío no podía ser más pretencioso ni aunque lo intentara."; +SWWM_SAYAEVIA2 = "Da igual lo \"angelical\" que parezca, es solo un tío con armadura bonita, le puedes patear el culo."; +SWWM_SAYAEVIA3 = "Todo este sitio, es que... Joder, espero que hayas sacado muchas fotos de alta resolución como te pedí."; +SWWM_SAYAEVIA4 = "Voy a por unas palomitas. Esto va a ser desde luego una batalla épica, jijijijiji..."; +SWWM_SAYAEVIB1 = "¿Que? Pero menuda mierda salida de videojuego. ¿¿¿Me estás contando que el tío tiene DOS BARRAS DE VIDA???"; +SWWM_SAYAEVIB2 = "¡Una mierda, una puta mierda así de grande! ¡Esto es una putísima mierda! ¡Cárgatelo, \cdDemo-chan\c-!"; +// Heretic E1M8 +SWWM_SAYAMAW1 = "Y aquí estamos, en las \"Fauces del Infierno\"."; +SWWM_SAYAMAW2 = "Según los Sidhe esto contiene el portal que conecta con el mundo de los demonios."; +SWWM_SAYAMAW3 = "Creo que va a ser interesante visitar el equivalente al infierno de otro universo, vaya que sí."; +SWWM_SAYAMAW4 = "... Y por supuesto, va a ser mucho más interesante reventarlo todo también, ¿verdad?"; +SWWM_SAYAMAW5 = "Solo... Ten cuidado con lo que sea que guarde el sitio este."; +// Heretic E2M8 +SWWM_SAYAMASTERS1 = "Vale, a ver... Estamos a un paso más de la guarida del jinete de serpiente ese. Pero hay un problema."; +SWWM_SAYAMASTERS2 = "Específicamente, varios problemas. Problemas grandes, tochos, y todo musculosos."; +SWWM_SAYAMASTERS3 = "Es que estamos hablando de MINOTAUROS ENORMES con MAZOS ENORMES."; +SWWM_SAYAMASTERS4 = "No se tú, pero yo ya estoy escuchando el tema de los Hombres del Pilar en mi cabeza."; +SWWM_SAYAMASTERS5 = "A por ellos, \cdDemo Demostar\c-... ... ... Vale puede que ese haya sido un chiste muy malo, olvídalo."; +// Heretic E3M8 +SWWM_SAYADSPARIL1 = "Ya está, \cdDemo-chan\c-. Vas a enfrentarte al brujo capullo ese."; +SWWM_SAYADSPARIL2 = "Vas a salvar otro mundo, y todo en tiempo récord. ¡Estás en racha!"; +SWWM_SAYADSPARIL3 = "... Oh, y recuerda, te espera una sorpresa en casa. Oh, es que te va a encantar."; +SWWM_SAYADSPARIL4 = "Splgslshglgh"; +SWWM_SAYADSPARIL5 = "Oh mierda ¿eso lo pillo el reconocimiento de voz? Ups..."; +// Heretic E4M8 +SWWM_SAYAHEADS1 = "Es que se me acaba la paciencia con todo. Espero que esto de verdad te traiga de vuelta a casa."; +SWWM_SAYAHEADS2 = "Y si no, bueno, más tiempo para refinar este \"regalo\" que te voy a dar."; +SWWM_SAYAHEADS3 = "Gracias a esto, he conseguido mejorar su potencia aun más. Nos divertiremos a tope."; +SWWM_SAYAHEADS4 = "En serio no puedo esperar a que lo pruebes, y estoy segura de que te mueres de ganas de saber que es..."; +SWWM_SAYAHEADS5 = "Eliminad aquestos enemigos y venid por vuestra recompensa, oh \cdDemolicionista\c-."; +SWWM_SAYAHEADS6 = "... Puto en serio acabo de decir eso..."; +// Heretic E5M8 +SWWM_SAYABULLS1 = "Y es que sigue, su puta madre..."; +SWWM_SAYABULLS2 = "Es que te están mandando por mundos al azar. Mira, ya me estoy cabreando basto."; +SWWM_SAYABULLS3 = "Estoy tan cabreada que, si el próximo portal no te trae de vuelta a Parthoris, es que..."; +SWWM_SAYABULLS4 = "Eso..."; +SWWM_SAYABULLS5 = "NECESITO que vuelvas a casa, \cdDemo-chan\c-. Te necesito desesperadamente para probar esto."; +// Seven Portals +SWWM_SAYAGREETA1 = "Ahí lo tienes, \cdDemo-chan\c-. Ese es tu objetivo, ese bicho grande y feo apestoso. Ese es Korax."; +SWWM_SAYAGREETA2 = "... Por cierto, te has fijado en como huele? Atufa, ¿a que sí?"; +SWWM_SAYAGREETA3 = "Dios, imagina el olor en persona... Solo de pensarlo se me revuelve el estómago."; +SWWM_SAYAGREETB1 = "Cobarde... Burlándose desde la distancia..."; // Kirin reply +SWWM_SAYAGREETC1 = "Sí, cobarde y asqueroso, los típicos signos de un bastardo feo."; +SWWM_SAYAGREETD1 = "¿Bastardo... Feo?"; // Kirin reply +SWWM_SAYAGREETE1 = "Es mejor no explicártelo, \cxKirin-kun\c-. Sentirías una decepción muy grande por toda la raza humana.."; +SWWM_SAYAGREETF1 = "Eso ciertamente no es tranquilizador de oír..."; // Kirin reply +// Shadow Wood +SWWM_SAYABLOODA1 = "No se como el tío este puede oler nada aparte de ese tufo de pedo de perro viejo que suelta."; +SWWM_SAYABLOODA2 = "Es que en serio, la puta virgen..."; +SWWM_SAYABLOODB1 = "El bastardo feo ese necesita un baño."; // Ibuki reply +SWWM_SAYABLOODC1 = "¿Bastardo feo? ¿Que es esto ahora, un doujin cutre?"; +SWWM_SAYABLOODD1 = "Ja, muy buena, \cgSayacchi\c-."; // Ibuki reply +// Hypostyle +SWWM_SAYAHYPO1 = "Y ya, después de tantas vueltas. Lo que haya aquí, habrá que matarlo para pillar el siguiente portal."; +SWWM_SAYAHYPO2 = "En serio espero que no sea un puto dragón. Sería el boss más cutre y genérico posible."; +SWWM_SAYAHYPO3 = "Uh... Lo he gafado, ¿no? Seguro que sí. Ya, apuesto a que es un puto dragón."; +SWWM_SAYAHYPO4 = "Apuesto que el TÍO ESE va a salir de su tumba y puto venderme su maldito juego por milésima vez."; +// Heresiarch's Seminary +SWWM_KIRINWORSHIPA1 = "Patética criatura repugnante...\n¿Quien pensaría jamas en adorar a una vil bestia como tú?"; +SWWM_KIRINWORSHIPB1 = "Pues yo lo que adoro es esa jugosa polla que tienes, \cxKirin-kun\c-~"; // Saya reply +SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; +SWWM_KIRINWORSHIPD1 = "¡Guh! \cx¡Kiriiiiin\c-! ¡Me acabas de echar cola todo por encima! ¡Joder escupes tan fuerte como te corres!"; // Saya reply +SWWM_KIRINWORSHIPD2 = "O-oh... Espera, esta cosa sigue encendida. Mierda... \cdDemo-chan\c- acaba de leer todo eso."; +// Castle of Grief +SWWM_SAYAGAMEA1 = "Guau, mira al puto maestro del ajedrez este... ¡Que te jodan!"; +SWWM_SAYAGAMEA2 = "Este tío es un puto idiota y me sigue cabreando más. Que ganas tengo de verte partirle el maldito culo..."; +SWWM_SAYAGAMEB1 = "Friki del ajedrez..."; // Ibuki +SWWM_SAYAGAMEC1 = "Apuesto a que estaba en el club de ajedrez."; +// Necropolis +SWWM_SAYAMASTERSA1 = "Maestros, maestros... ¿De quien? ¿Despertad mis maestros? Bueno, es igual, me da lo mismo lo que diga."; +SWWM_SAYAMASTERSA2 = "Es que que ganas tengo de que te lo cargues..."; +SWWM_SAYAMASTERSB1 = "¿Eres lo suficientemente fuerte para enfrentarte al hecho de que HUELES?"; // Ibuki reply +SWWM_SAYAMASTERSC1 = "Me duché esta mañana, \crIbuki\c-."; +SWWM_SAYAMASTERSD1 = "Me refiero al señorito apestoso de ahí. Tú hueles bien."; // Ibuki reply +SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitivamente posee un aroma agradable."; // Kirin reply +SWWM_SAYAMASTERSF1 = "Jujujuju... Gracias."; +// Zedek +SWWM_SAYAFIGHTER1 = "Y aquí es donde está Zedek, el luchadorcillo. Tal vez crea que es fuerte, pero aun no te ha conocido."; +SWWM_SAYAFIGHTER2 = "Oh, y tú fíjate por si hay trampas. Seguro que las hay traicioneras por aquí."; +// Traductus +SWWM_SAYACLERICA1 = "Si hay algo que he aprendido de los videojuegos es que los clérigos son la peor escoria."; +SWWM_SAYACLERICA2 = "Eso es todo lo que tengo que decir."; +SWWM_SAYACLERICB1 = "Nunca he encontrado ni un solo clérigo que no haya intentado asesinarme."; // Kirin reply +SWWM_SAYACLERICC1 = "Oh cierto, la gente del Imperio Sacrosanto, ¿verdad? Me olvidé por completo de esos."; +SWWM_SAYACLERICC2 = "Los clérigos son una puta mierda..."; +// Menelkir +SWWM_SAYAMAGE1 = "La guarida de Menelkir, eh... ...\nOh dios, no se lo digas a \cxKirin-kun\c-, aquí hay puzzles."; +SWWM_SAYAMAGE2 = "Sí, está ya más que cansado de todo este tema. Y aparentemente ahora los tenemos de coincidir dibujos."; +SWWM_SAYAMAGE3 = "Bueno, al menos estos son puzzles de verdad, y no lo que coño sea que fuera todo aquello."; +SWWM_SAYAMAGE4 = "Aun que sean... Ya sabes... De los que son todo cutres y chupadísimos."; +// Dark Crucible +SWWM_SAYAKORAXA1 = "Aquí estamos, \cdDemo\c-. El gran bastardo feo apestoso ese espera."; +SWWM_SAYAKORAXB1 = "Al fin, el reinado maligno del vil conspirador encontrará su fin."; // Kirin reply +SWWM_SAYAKORAXC1 = "Hora de que se dé un puto baño. Después de que le descoloques las rodillas, por supuesto."; // Ibuki reply +SWWM_SAYAKORAXD1 = "Aunque \cvMeido\c- no lo esté viendo, te puedo decir que los cuatro te estamos dando ánimos."; +SWWM_SAYAKORAXE1 = "Sigue luchando, \cdDemo-chan\c-. Puedes hacerlo, creemos en ti."; // Kirin reply +// Blight +SWWM_SAYABLIGHTA1 = "Oye, \cdDemo-chan\c-, ¿recuerdas los puzzles?"; +SWWM_SAYABLIGHTB1 = "Nnnnngh..."; // Kirin reply +SWWM_SAYABLIGHTC1 = "Creo que \cxKirin\c- acaba de oírme. Bueno... Ya sabes que hacer."; +SWWM_SAYABLIGHTC2 = "Puedo sentir que esto va a ser todo un paripé, así que estate preparada para todo."; +// Constable's Gate +SWWM_SAYACONSTABLEA1 = "Castillos y más mierdas... Y sigue. Ya lo dije en la misión, pero... Ya sabes..."; +SWWM_SAYACONSTABLEA2 = "Sigue reventando cosas, porfa. \cvMeido-chan\c- nos hizo aperitivos, así que al menos tenemos eso."; +SWWM_SAYACONSTABLEB1 = "En serio que es tan atenta, esa chica..."; // Ibuki reply +SWWM_SAYACONSTABLEC1 = "Aunque puedas oír como cuchichea maldiciones por todo lo que está pasando ahí."; +SWWM_SAYACONSTABLED1 = "Ya, esa sí que es nuestra \cvMeido\c-."; // Ibuki reply +// Nave +SWWM_SAYANAVEA1 = "Ojalá pudiera tomar prestado el poder anti-realidad de los \ctMishe\c- para destruir este mundo entero."; +SWWM_SAYANAVEA2 = "En serio estoy cabreada, todos lo estamos. Joder, hasta \cxKirin\c- está furioso, y ya no podemos calmarlo."; +SWWM_SAYANAVEB1 = "Es algo así como adorable y preocupante a la vez."; // Ibuki reply +SWWM_SAYANAVEC1 = "¡NNNNNNNNGGGGGHHHHHHHH!"; // Kirin reply +SWWM_SAYANAVED1 = "\cxKirin-kun\c-, te vas a asfixiar si sigues gritando así contra la almohada."; +SWWM_SAYANAVEE1 = "A lo mejor es lo que quiere, \cgSaya\c-. Busca la dulce libertad de la muerte para encontrar la paz interior."; // Ibuki +SWWM_SAYANAVEF1 = "Si no fuera inmortal eso sería la cosa más jodidamente horrible que podrías decir, \crIbuki\c-."; +// Dark Citadel +SWWM_SAYADEATHKINGS1 = "Estoy tan cabreada que pegaría una hostia a través de la realidad para mandar a fregar a los reyes esos."; +// Kirin's Thrilling Commentary on Puzzles™ +// first puzzle switch on Seven Portals +SWWM_KIRINPUZZLEA1 = "Un peculiar mecanismo... Supuestamente cita ser parte de algo mayor, haciéndose llamar \"puzzle\"."; +SWWM_KIRINPUZZLEA2 = "\cgSayacchi\c- mencionó que los encontrarías. Es algo ciertamente intrigante..."; +// second puzzle switch on Seven Portals +SWWM_KIRINPUZZLEB1 = "Otro más... Interesante..."; +// third puzzle switch on Seven Portals +SWWM_KIRINPUZZLEC1 = "Me falta ver que exactamente hace de esto un \"puzzle\". No es mas que una búsqueda de interruptores."; +SWWM_KIRINPUZZLEC2 = "Difícilmente un desafío para el intelecto de uno, ¿no crees, \cdDemo-chan\c-?"; +// first puzzle switch on Shadow Wood +SWWM_KIRINPUZZLED1 = "Parece ser que estos \"interruptores de puzzle\" simplemente siguen apareciendo a tu paso."; +SWWM_KIRINPUZZLED2 = "Tengo la certeza de que ambos estamos cansados de verlos."; +// fourth puzzle switch on Shadow Wood +SWWM_KIRINPUZZLEE1 = "Estos supuestos \"puzzles\"... Son un insulto a nuestra inteligencia."; +SWWM_KIRINPUZZLEE2 = "... Espero no estar enviando demasiados mensajes."; +// first puzzle switch on Heresiarch's Seminary +SWWM_KIRINPUZZLEF1 = "¿Cuando acabará? ¿¿¿Cuantas más fracciones de \"puzzles\" debemos resolver???"; +SWWM_KIRINPUZZLEF2 = "¿Es así como ese sayzha axhkhashaar se atreve a mofarse de nosotros? ¿Con estos tediosos juegos?"; +SWWM_KIRINPUZZLEF3 = "Son... Nnngh... ¡Kheza sakharei!"; +SWWM_KIRINPUZZLEG1 = "\cxKirin-kun\c-, creo que te estás dejando afectar demasiado por esto."; // Saya reply +SWWM_KIRINPUZZLEH1 = "Sí... Yo... Voy a tumbarme un rato, p-perdón..."; +SWWM_KIRINPUZZLEI1 = "... Pobre. Aunque estoy de acuerdo con él... Esta mierda es que te pone de los nervios, ¿a que sí?"; // Saya reply +SWWM_KIRINPUZZLEI2 = "Bueno... Me voy a darle mimos a \cxKirin-kun\c-. No te preocupes, se pondrá mejor. Está en buenas manos."; +// first puzzle switch on Blight +SWWM_KIRINPUZZLEJ1 = "No podemos huír, ¿no? Estos \"puzzles\" todavía nos persiguen incluso ahora..."; +SWWM_KIRINPUZZLEJ2 = "Este maldito lugar... Plagado por estos viles mecanismos... Juro que jamás daré un paso en él."; +// last puzzle switch on Blight +SWWM_KIRINPUZZLEK1 = "Por favor... Haz que pare..."; +SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, oye... No pasa nada. Toma... Bebe, te ayudará a relajarte.\c-"; // Ibuki reply +SWWM_KIRINPUZZLEM1 = "Glu... Glu... Glu..."; +SWWM_KIRINPUZZLEN1 = "Bueno, pero míralo... Ahí bebiéndolo todo como un campeón."; // Saya reply +SWWM_KIRINPUZZLEO1 = "Ya sabes como va... En cuanto encuentran una teta que mamar, se acabaron todos sus problemas..."; // Ibuki reply +SWWM_KIRINPUZZLEP1 = "Sabes que \cdDemo-chan\c- puede leer lo que decimos, ¿verdad?"; // Saya reply +SWWM_KIRINPUZZLEQ1 = "Oh, estoy segura de que le encantaría tomar su turno una vez se acabe la misión, ¿hm?"; // Ibuki reply +// first puzzle switch on Constable's Gate +SWWM_KIRINPUZZLER1 = "Más vale que este sea el último de estos \"puzzles\" que vayamos a encontrar..."; +SWWM_KIRINPUZZLER2 = "Urp..."; +SWWM_KIRINPUZZLER3 = "Mis disculpas."; +SWWM_KIRINPUZZLES1 = "Estaba buena la leche, ¿a que sí?"; // Saya reply +SWWM_KIRINPUZZLET1 = "Ciertamente... Doy gracias por la bendición de \crIbuki\c-."; +SWWM_KIRINPUZZLEU1 = "Hacer que pueda lactar a voluntad es una bendición, vaya que sí. Seguro que \cdDemo\c- está también de acuerdo."; // Saya reply +// super secret cheats +SWWM_ZNVTXT1 = "\cdDemolicionista\c-, soy yo, \chZanaveth El Corruptor\c-. He testificado del acto que has actuado, sí."; +SWWM_ZNVTXT2 = "Son \cf%d\c- años... y las mágicas palabras veo en nuevo. Muy impresionada, mucho impresionada."; +SWWM_ZNVTXT3 = "Así, puedes hacer la cosa... Como los \ctMishe\c- enseñaron también a mí. Una sorpresa no esperada, sí."; +SWWM_ZNVTXT4 = "Hay tantas muchas palabras poderosas a usar, \cdDemolicionista\c-. Sigue siguiendo para descubrirlas todas."; +SWWM_ZNVTXT5 = "Debo dar marcha. A favor extender saludos a tía \cgSaya\c- en parte mía. Buena suerte, \cdDemolicionista\c-."; +// easter egg +SWWM_SAYAWASTEA1 = "¡Deja de malgastar balas!"; +SWWM_SAYAWASTEB1 = "¿Aun sigues? ¿En serio?"; +SWWM_SAYAWASTEC1 = "Vale, se nota que lo estás haciendo por tu propia satisfacción personal."; +SWWM_SAYAWASTED1 = "Es casi como si le estuvieras haciendo una paja, o algo..."; +SWWM_SAYAWASTED2 = "Ehm, olvida lo que he dicho."; +SWWM_SAYAWASTEE1 = "Y sigue... Dándole a la manivela."; +SWWM_SAYAWASTEF1 = "Vale, te prometo que voy a dejar de mensajearte ya con todo esto. Tú a lo tuyo, supongo."; diff --git a/language.es_lore b/language.es_lore index 34e3cf66b..f3f62a168 100644 --- a/language.es_lore +++ b/language.es_lore @@ -170,7 +170,7 @@ SWWM_LORETXT_ANARUKON = "Entre los varios miembros de esta especie en la Tierra, un nombre que muchos reconocerán es el de \cfAshley Knox\c-, cantante y guitarrista de \cfThe Black Rat's Coven\c-. La revelación de no ser humana fue recibida con mucha sorpresa, aunque no fue tan espectacular como el hecho de que otros dos miembros de la banda eran literalmente dioses.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSí, cosa tope molona de mundos paralelos y dioses y guerreros y esas mierdas, ¿verdad? Con cosas así me dan ganas de poder... ya sabes, viajar por todo el multiverso encontrando chismes guays así y conocer gente y tal. A lo mejor un día, quien sabe. Todas las mierdas de los capullos esos de la UAC en serio me hacen reconsiderarlo un poco, lo de los viajes interdimensionales. En serio, es que es como si todas esas típicas viejas historias de \"abrir un portal al infierno\" fueran predicciones de eso. Bueno, me estoy saliendo un poco del tema. Así que, Ashley-san es una de ellos, mola y tal, al menos Yu-chan tiene su novia inmortal. Lo mismo con Taro nii-san, con la monstruito bromista de Ellen-san, también de esa gente, por supuesto. ¿Cuando coño me va a tocar a mí? A ver, tampoco es que me importe mucho, me alegro de tener a Maidbot y a Ibuki y tal, y... supongo que también a ti pero... *suspiro*, estoy celosísima, sabes.\c-"; +"\cfSí, cosa tope molona de mundos paralelos y dioses y guerreros y esas mierdas, ¿verdad? Con cosas así me dan ganas de poder... ya sabes, viajar por todo el multiverso encontrando chismes guays así y conocer gente y tal. A lo mejor un día, quien sabe. Todas las mierdas de los capullos esos de la UAC en serio me hacen reconsiderarlo un poco, lo de los viajes interdimensionales. En serio, es que es como si todas esas típicas viejas historias de \"abrir un portal al infierno\" fueran predicciones de eso. Bueno, me estoy saliendo un poco del tema. Así que, Ashley-san es una de ellos, mola y tal, al menos Yu-chan tiene su novia inmortal. Lo mismo con Taro nii-san, con la monstruito bromista de Ellen-san, también de esa gente, por supuesto. ¿Cuando coño me va a tocar a mí? A ver, tampoco es que me importe mucho, me alegro de tener a Meido y a Ibuki y tal, y... supongo que también a ti pero... *suspiro*, estoy celosísima, sabes.\c-"; SWWM_LORETXT_ANARUKON2 = "\cxNombre:\c-\n" "\cf Anarukon (\"Imperecedero\")\c-\n" @@ -197,7 +197,7 @@ SWWM_LORETXT_ANARUKON2 = "\n" "\cg♥\c- \ca¡TE AMO KIRIN-KUN!\c- \cg♥\c-\n" "\n" -"\cfJejeje... en serio. Aun no me puedo creer que todo eso haya pasado. Esperé y esperé a poder tener mi propia monada Anarukon, como Taro nii-san tuvo a Ellen y Yu-chan a Ashley, y ¡bam! Ahí estaba. Y por supuesto tengo que dar gracias a Ashley-san por la mayor puta bendición, sí. Es que, nada más comentarle lo del Proyecto Akari me salta con lo de \"Sé un lugar que puedes visitar\", y eso... así es como conocí a mi amorcito. Ya te lo he contado todo, pero coño, es que tengo que escribirlo aquí también, como recordatorio. ¿No es monísimo? Recuerdo como de supertímidas estabais tú y Maidbot cuando lo conocisteis. Fue tan adorable, la cosa mas dulce, más incluso que los \"panes de leche\" esos que tenían en el banquete de nuestra boda (cosa fina por cierto). Y ahora, las cuatro estamos casadas con él, y a vivir la buena vida.\c-\n" +"\cfJejeje... en serio. Aun no me puedo creer que todo eso haya pasado. Esperé y esperé a poder tener mi propia monada Anarukon, como Taro nii-san tuvo a Ellen y Yu-chan a Ashley, y ¡bam! Ahí estaba. Y por supuesto tengo que dar gracias a Ashley-san por la mayor puta bendición, sí. Es que, nada más comentarle lo del Proyecto Akari me salta con lo de \"Sé un lugar que puedes visitar\", y eso... así es como conocí a mi amorcito. Ya te lo he contado todo, pero coño, es que tengo que escribirlo aquí también, como recordatorio. ¿No es monísimo? Recuerdo como de supertímidas estabais tú y Meido cuando lo conocisteis. Fue tan adorable, la cosa mas dulce, más incluso que los \"panes de leche\" esos que tenían en el banquete de nuestra boda (cosa fina por cierto). Y ahora, las cuatro estamos casadas con él, y a vivir la buena vida.\c-\n" "\n" "\cfOh ya, y conocer a la tía esa, Andreki, joder la vergüenza que pasé, la mayor de toda mi puta vida, puto en serio. Es que, imagina, me dicen que espere por ahí a alguien que quiere tener una charla conmigo en privado, y... este... puto retaco engreído se me acerca, una niña enana, con aires de superimportancia y tal, soltándome cosas tipo \"soy alguien muy importante\" y \"deberías saber quien soy, Lady Saya\" y voy yo con \"lo siento, niña, estoy esperando por alguien, no puedo jugar contigo\", y ahí va y EXPLOTA de repente, soltándome que si \"COMO TE ATREVES\" y \"SOY MUCHO MAYOR QUE TÚ\" y mierdas, y ya... me pongo en modo \"mil perdones\" total, tirándome en el suelo y todo. Kirin tuvo que venir corriendo a dar explicaciones e intentar calmarla porque es que... no podía hacer nada. Joder, es que... Al menos luego pudimos ser amigas, pero... justo en ese momento es que ya veía como me había convertido en el enemigo mortal de todo un puto reino.\c-"; SWWM_LORETAG_ANGERYSIGIL = "Marca Devastación"; @@ -218,17 +218,19 @@ SWWM_LORETXT_ANGERYSIGIL = "\n" "\cfCreo que podría ganarte en una pelea si usara esto. A ver, tampoco es que quiera hacerte daño pero... Solo lo digo hipotéticamente, ya sabes.\c-"; SWWM_LORETXT_ASHLEY = -"\cxNombre Completo:\c-\n" -"\cf Ashley Knox\c-\n" -"\cf Axaleyu Yanikov (nombre Anarukon)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Británica\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1964-10-31 (antes de revelación)\c-\n" -"\cf 1887-10-31 (real)\c-\n" -"\cxTwitter:\c-\n" -"\cf @ashley_da_witch (principal)\c-\n" -"\cf @stylish_witch (arte)\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Ashley Knox\c-\n" +" \cf Axaleyu Yanikov (nombre Anarukon)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Británica\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1964-10-31 (antes de revelación)\c-\n" +" \cf 1887-10-31 (real)\c-\n" +" \cxOcupación:\c-\n" +" \cf Vocalista Principal, Guitarrista (Black Rat's Coven)\c-\n" +" \cxTwitter:\c-\n" +" \cf @ashley_da_witch (principal)\c-\n" +" \cf @stylish_witch (arte)\c-\n" "\n" "Nacida en Londres en 1887, hija de \cfYrikha Yanikov\c- y \cfMaxwell A. Knox\c-, \cfAshley\c- es la mayor de tres hijos, los otros siendo \cfAdrian Knox\c-, veterano de la Primera y Segunda Guerras Mundiales, y \cfViola Knox\c-, una bruja en prácticas (todavía hasta la fecha actual de 2148). Pasó la mayor parte de su infancia en Cornualles, después de que su madre tuviera que darse a la fuga por acusaciones de brujería (las cuales no eran exactamente falsas).\n" "\n" @@ -269,14 +271,17 @@ SWWM_LORETXT_BELT = "\cfNUNCA te pilles los dedos con esto, duele un huevo.\c-"; SWWM_LORETAG_BIGSHOT = "Don BIG SHOT"; SWWM_LORETXT_BIGSHOT = -"\cxNombre Completo:\c-\n" -"\cf John Gunns\c-\n" -"\cxAlias:\c-\n" -"\cf Don BIG SHOT\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americano\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2110-11-12\c-\n" +" \cxNombre Completo:\c-\n" +" \cf John Gunns\c-\n" +" \cxAlias:\c-\n" +" \cf Don BIG SHOT\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americano\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2110-11-12\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO (Industrias BIGSHOT)\c-\n" +" \cf Consejero (Blackmann Arms)\c-\n" "\n" "Un hombre rodeado de misterios, habiendo aparecido de la nada, anunciando ser el hijo de \cfBenellus, Dios de las Escopetas\c-. La credibilidad de esta historia es bastante cuestionable, a pesar de la insistencia de su propia madre, quien cuenta que el dios descendió del cielo, y dándole un \"cartucho bendecido\", la ordenó plantarlo en la tierra, ya que de él, un hombre nacería, quien se convertiría en \"el más poderoso portador del arma definitiva\". Cuenta que John, ya completamente adulto, salió del suelo pocos días después de haber plantado el cartucho, e inmediatamente empezó a \"hacer salir escopetas de la tierra a su alrededor\", y usó los metales de éstas para construir la fortaleza que la familia tiene en el desierto de Nevada.\n" "\n" @@ -285,14 +290,17 @@ SWWM_LORETXT_BIGSHOT = "\cxNotas de Saya:\c-\n" "\cfSí, el tío está loco perdido, pero mira, ESA cosa... muy MUY en serio que la quería. Hasta me reuní con el tío para poder tocarla con mis propias manos. Esa cosa es... jodidamente bestial, y seguro que no hay persona viviente que pueda usarla, PERO... tú seguro que puedes. Te digo una cosa, cada vez que te saques ese monumental pedazo de metal rompecojones, estaré mirando, así que más te vale ofrecerme un buen espectáculo con el que comer palomitas.\c-"; SWWM_LORETXT_BIGSHOT2 = -"\cxNombre Completo:\c-\n" -"\cf John Gunns\c-\n" -"\cxAlias:\c-\n" -"\cf Don BIG SHOT\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americano\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2110-11-12\c-\n" +" \cxNombre Completo:\c-\n" +" \cf John Gunns\c-\n" +" \cxAlias:\c-\n" +" \cf Don BIG SHOT\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americano\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2110-11-12\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO (Industrias BIGSHOT)\c-\n" +" \cf Consejero (Blackmann Arms)\c-\n" "\n" "Un hombre rodeado de misterios, habiendo aparecido de la nada, anunciando ser el hijo de \cfBenellus, Dios de las Escopetas\c-. La credibilidad de esta historia es bastante cuestionable, a pesar de la insistencia de su propia madre, quien cuenta que el dios descendió del cielo, y dándole un \"cartucho bendecido\", la ordenó plantarlo en la tierra, ya que de él, un hombre nacería, quien se convertiría en \"el más poderoso portador del arma definitiva\". Cuenta que John, ya completamente adulto, salió del suelo pocos días después de haber plantado el cartucho, e inmediatamente empezó a \"hacer salir escopetas de la tierra a su alrededor\", y usó los metales de éstas para construir la fortaleza que la familia tiene en el desierto de Nevada.\n" "\n" @@ -304,32 +312,6 @@ SWWM_LORETXT_BIGSHOT2 = "\cfSí, el tío está loco perdido, pero mira, ESA cosa... muy MUY en serio que la quería. Hasta me reuní con el tío para poder tocarla con mis propias manos. Esa cosa es... jodidamente bestial, y seguro que no hay persona viviente que pueda usarla, PERO... tú seguro que puedes. Te digo una cosa, cada vez que te saques ese monumental pedazo de metal rompecojones, estaré mirando, así que más te vale ofrecerme un buen espectáculo con el que comer palomitas.\c-\n" "\n" "\cfSinceramente no me sorprende que el tío sobreviviera toda la mierda, probablemente se cargó mil demonios él mismo con todas las mierdas que tiene por ahí, seguro. Y, ni puta idea lo que sea que signifique todo eso de batallas y caras y tal, se habrá vuelto tolai perdido con la invasión y tal.\c-"; -SWWM_LORETAG_BLACKFIREIGNITER = "Encendedor F.N."; -SWWM_LORETXT_BLACKFIREIGNITER = -"\cxDesignación:\c-\n" -"\cf Encendedor de Fuego Negro\c-\n" -"\cxFabricante:\c-\n" -"\cf Artesanía Unissix\c-\n" -"\cf Diseño de LS\c-\n" -"\cxClasificación:\c-\n" -"\cf Lanzallamas\c-\n" -"\n" -"Ideado por el propio dios primordial de la magia, el \cfEncendedor de Fuego negro\c- es sorprendentemente un arma muy fría y oscura. El fuego negro es un tipo de llama mágica que absorbe el calor y la luz, en lugar de emitirlos.\n" -"\n" -"Durante la cumbre de fama de \cfArtesanía Unissix\c-, el dios se presentó personalmente ante \cfMisa Unissix\c- con una petición de un arma que permitiría a prácticamente cualquiera realizar fácilmente \cfMagia de Manipulación de Fuego Negro\c-.\n" -"\n" -"El Encendedor es la mezcla perfecta de magia y tecnología, hecha arma. Tienes a tu alcance el poder de invocar llamas congelantes que transformarán a tus enemigos en estatuas de hielo en pocos segundos.\n" -"\n" -"\cfFuego Primario:\c- Libera un chorro continuo de Fuego Negro, con rango moderado. Las llamas no solo congelarán rápidamente lo que toquen, también reducirán la temperatura del aire, dejando un rastro de frío persistente.\n" -"\n" -"\cfFuego Secundario:\c- Estallidos concentrados que forman lanzas de aire supercongelado las cuales empalarán objetivos pequeños, o simplemente los atravesarán.\n" -"\n" -"\cfRecarga:\c- Acopla hasta dos frascos para rellenar la reserva interna de maná oscuro del arma. Cada frasco permanecerá enganchado hasta que se haya vaciado, ya que de otro modo podría escapar energía residual y causar daño al usuario. Si hay un frasco vacío acoplado, la acción de recarga lo desacoplará primero. Los frascos pueden ser usados aun si el depósito está lleno, y actuarán como un \"búfer\" extra de maná hasta vaciarse.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfO sea, que Misa-Misa tiene otros juguetes aparte del trasto enorme ese. Mola que le hagan encargos y tal, el rollito de canela es muy popular por ahí, jejeje...\c-\n" -"\n" -"\cfNo he oído mucho sobre todo el tema del Fuego Negro de LS-sama, pero tiene pinta de ser divertido. Me pregunto si se puede usar en una carta mágica...\c-"; SWWM_LORETXT_BLACKMANN = "\cxNombre:\c-\n" "\cf Blackmann Arms S.L.\c-\n" @@ -470,14 +452,17 @@ SWWM_LORETXT_CYRUS = "\n" "\cfA ver, puede que me ponga de los nervios a veces, pero el tío fue mi primer socio ahí en plan negocios serios, y joder, tampoco es tan malo aparte de todo el frikismo que suelta... Y bueno, siendo sincera, yo también soy toda una friki repelente, y puedes citarme en eso.\c-"; SWWM_LORETXT_CYTHO = -"\cxNombre Completo:\c-\n" -"\cf Archiduque Cytho de la Casa Valathor\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Kuriste\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2008-10-09\c-\n" -"\cxTwitter:\c-\n" -"\cf @incuvalathor\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Archiduque Cytho de la Casa Valathor\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Kuriste\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2008-10-09\c-\n" +" \cxOcupación:\c-\n" +" \cf Reportero de Noticias Independiente\c-\n" +" \cf Embajador (Reino Kuriste)\c-\n" +" \cxTwitter:\c-\n" +" \cf @incuvalathor\c-\n" "\n" "Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde \cfCasa Valathor\c-, \cfCytho\c- entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango en la industria del trabajo sexual del \cfInfierno\c-, en parte dada su belleza innata, pero también por la rápida acumulación de \"clientes satisfechos\" a los que daría servicio regularmente, y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela.\n" "\n" @@ -555,16 +540,18 @@ SWWM_LORETXT_DEEPIMPACT = "\cfSé que eres tope de fuerte, así que más te vale no darle mucho a la manivela. Espera, eso no suena muy bien... mierda. Olvida lo que acabo de decir. Olvida que lo has leído, también.\c-"; SWWM_LORETAG_DEMOLITIONIST = "Demolicionista"; SWWM_LORETXT_DEMOLITIONIST = -"\cxNombre Completo:\c-\n" -"\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" -"\cf Demolicionista (nombre en clave)\c-\n" -"\cf Demo Miyamoto (primera unidad)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" +" \cf Demolicionista (nombre en clave)\c-\n" +" \cf Demo Miyamoto (primera unidad)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOcupación:\c-\n" +" \cf Héroe Profesional\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "El \cfDemolicionista\c- es uno de los mayores logros de \cfAkari Labs\c- en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado \cfOni Rojo\c-, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre \cfSaya Miyamoto\c- y el \cfArchiduque Cytho Valathor\c-, representante de la población civil del \cfInfierno\c-.\n" "\n" @@ -606,7 +593,7 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de \cfDemo Miyamoto\c-, y Saya se refiere a ella como su \"hija\". Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" "\n" -"Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Maidbot e Ibuki.\n" +"Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c-\n" @@ -615,16 +602,18 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "\cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c-"; SWWM_LORETXT_DEMOLITIONIST3 = -"\cxNombre Completo:\c-\n" -"\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" -"\cf Demolicionista (nombre en clave)\c-\n" -"\cf Demo Miyamoto (primera unidad)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" +" \cf Demolicionista (nombre en clave)\c-\n" +" \cf Demo Miyamoto (primera unidad)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOcupación:\c-\n" +" \cf Héroe Profesional\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "El \cfDemolicionista\c- es uno de los mayores logros de \cfAkari Labs\c- en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado \cfOni Rojo\c-, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre \cfSaya Miyamoto\c- y el \cfArchiduque Cytho Valathor\c-, representante de la población civil del \cfInfierno\c-.\n" "\n" @@ -636,7 +625,7 @@ SWWM_LORETXT_DEMOLITIONIST3 = "\n" "De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de \cfDemo Miyamoto\c-, y Saya se refiere a ella como su \"hija\". Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" "\n" -"Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Maidbot e Ibuki. Desde Mayo de 2171, está adicionalmente casada con \cfKirin Xanai\c-, líder del \cfImperio Sykhai de Akkou\c-.\n" +"Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. Desde Mayo de 2171, está adicionalmente casada con \cfKirin Xanai\c-, líder del \cfImperio Sykhai de Akkou\c-.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c-\n" @@ -823,6 +812,8 @@ SWWM_LORETXT_DOOMGUY = "\cf Americano\c-\n" "\cxFecha de Nacimiento:\c-\n" "\cf CLASIFICADO\c-\n" +"\cxOcupación:\c-\n" +"\cf Marine (UAC)\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -845,6 +836,8 @@ SWWM_LORETXT_DOOMGUY2 = "\cf Americano\c-\n" "\cxFecha de Nacimiento:\c-\n" "\cf CLASIFICADO\c-\n" +"\cxOcupación:\c-\n" +"\cf N/A\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -867,6 +860,8 @@ SWWM_LORETXT_DOOMGUY3 = "\cf Americano\c-\n" "\cxFecha de Nacimiento:\c-\n" "\cf CLASIFICADO\c-\n" +"\cxOcupación:\c-\n" +"\cf N/A\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -895,14 +890,17 @@ SWWM_LORETXT_EBARRIER = "\cfUna pequeña recomendación de Misa. Si funciona tan bien como dice, no tendrás mucho problema con todo el lodo asqueroso ese que los cazurros de la UAC van soltando por ahí (pues vaya si no les importa una mierda el medio ambiente). O... bueno, supongo que las llamas del Infierno tampoco te van a tostar los circuitos.\c-\n" ""; SWWM_LORETXT_ELLEN = -"\cxNombre Completo:\c-\n" -"\cf Elena \"Ellen\" Yanikov XXI\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americana\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2066-06-06\c-\n" -"\cxTwitter:\c-\n" -"\cf @Mischief_XXI\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Elena \"Ellen\" Yanikov XXI\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2066-06-06\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria\c-\n" +" \cxTwitter:\c-\n" +" \cf @Mischief_XXI\c-\n" +"\n" "\n" "Nacida en Boston en 2066, hija de \cfElena Yanikov XIX\c- y \cfGottfried Steiner\c-, \cfEllen\c- es la menor de dos hermanas (ambas con el nombre de Elena). Esta curiosidad de que todas las mujeres en su familia compartan el mismo nombre se puede trazar de vuelta hasta \cfElena Yanikov I\c-, nacida en 1703, quien tomó esta decisión, en base a una creencia supersticiosa de que esto \"preservará su inmortalidad para siempre\". Esto no se alejaba mucho de la verdad, en cierto modo, pero no tenía nada que ver con la herencia de nombres. Se ha verificado que los genes \cfAnarukon\c- son preservados en su totalidad por todas las descendientes mujer, no importa cuantas generaciones, muy especialmente entre aquellas del linaje Yanikov.\n" "\n" @@ -920,35 +918,6 @@ SWWM_LORETXT_ELLEN = "\cfOh ya, hablando de Ellen-san. Es una puta bromista de cuidado, es que vamos, una súper troll de la vida. Mira, una vez... bueno, mejor creo que me lo voy a callar, porque es que me da muchísima vergüenza. Aún me duele el culo desde entonces. Que va, NO pienso explicarlo, coño si no. Usa tu imaginación, Demo-chan.\c-\n" "\n" "\cfAh, y también, cosa tope de buena de tenerla por aquí. Tiene unos contactos muy interesantes. Sí, la mayoría de la gente no lo sabe, pero su abuelo es un demonio. Sí, uno de verdad, del Infierno y todo. Y es una monada, también. Se llama Cytho Valathor, y dice que es un \"íncubo reformado\", lo que sea que signifique eso. Siempre que necesite saber algo sobre lo que pasa en la tierra de fuego eterno, es el tío al que acudo.\c-"; -SWWM_LORETAG_EMPCARBINE = "Carabina Raíl"; -SWWM_LORETXT_EMPCARBINE = -"\cxDesignación:\c-\n" -"\cf Carabina de Raíl de Impulsos Electromagnéticos\c-\n" -"\cxFabricante:\c-\n" -"\cf Instituto Tecnológico Tach-Engine\c-\n" -"\cxClasificación:\c-\n" -"\cf Arma de Energía Dirigida\c-\n" -"\n" -"La \cfCarabina de Raíl de Impulsos Electromagnéticos\c- es el primerísimo intento de \cfTach-Engine\c- de combinar la tecnología humana actual con la de los experimentos recuperados de su expedición a las oficinas arruinadas de \cfDecade Mechanics\c-. Muy similar a otras armas típicas de rayos de partículas, pero con el impulso atronador de materia exótica altamente destructiva, ha sido considerada muy superior incluso a la potente \cfThunder Buster\c- tan preciada por las tropas de la UAC.\n" -"\n" -"Inesperadamente, la Carabina de Raíl es un fusil de cerrojo con depósito tubular, el cual emplea barras de puro \cfDysedum\c-. Cada una de estas permitiendo al arma descargar pulsos dirigidos de 20kA hacia un objetivo ionizado, friéndolo al instante, y potencialmente esparciendo sus efectos mortíferos a otros cercanos.\n" -"\n" -"Se ha de tener en cuenta que el uso de este arma en el agua es inseguro, ya que la descarga se dispersará violentamente a través de todo el medio.\n" -"\n" -"\cfFuego Primario:\c- Mantén para emitir una leve carga ionizante a la zona apuntada. Cuanto más se mantenga, más preciso será el disparo. Suelta para liberar el rayo. Si la barra está gastada, acciona el perno para cargar una nueva.\n" -"\n" -"\cfFuego Secundario:\c- También emite una carga ionizante, pero no libera al soltar. Útil si no puedes garantizar que tu objetivo esté siempre visible, o si quieres marcar rápidamente varios objetivos.\n" -"\n" -"\cfRecarga:\c- Se pueden depositar más barras en el arma a necesidad, hasta un máximo de tres.\n" -"\n" -"\cfZoom:\c- Mira ajustable de hasta 8 aumentos.\n" -"\n" -"\cfTécnicas:\c- Al ionizar varios objetivos puedes garantizar que el rayo se bifurque en arcos menores y los alcance a todos, aunque el potencial de daño será dividido entre ellos.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfSabes, cualquier cosa que se cague en la UAC solo con existir me parece buena.\c-\n" -"\n" -"\cfPero esta cosa, además, también se lleva puntos extra por su descojonante potencial para freír hijos de puta. En serio, es que es como un puto relámpago saliendo de esto.\c-"; SWWM_LORETXT_ENGINETECH = "\cxNombre:\c-\n" "\cf Instituto Tecnológico Tach-Engine\c-\n" @@ -1053,28 +1022,6 @@ SWWM_LORETXT_FABRICATOR = "\cfOh, tienes que estar de puta broma. Ahora el friki este va y nos mete mierda de gacha, con tiers y todo.\c-\n" "\n" "\cfEn serio, juro que el tío hace esto a propósito para joderme o algo.\c-"; -SWWM_LORETAG_FISTGUN = "Mano Divina"; -SWWM_LORETXT_FISTGUN = -"\cxDesignación:\c-\n" -"\cf Mano Divina\c-\n" -"\cxFabricante:\c-\n" -"\cf Korovithuhcp (original)\c-\n" -"\cf Artesanía Unissix (réplica)\c-\n" -"\cxDesignación:\c-\n" -"\cf Guantelete Mágico\c-\n" -"\n" -"La \cfMano Divina\c- fue un arma que el dios \cfKorovithuhcp\c- construyó incontables milenios atrás, y fue pasando entre muchos héroes de leyenda. Finalmente se perdió, y el dios no mostró interés en crear una nueva. Esto, obviamente, no detuvo a \cfMisa Unissix\c- en el intento de hacer exactamente eso. Siguiendo documentos históricos de su uso, construyó su propia versión en base a una mezcla de magia arcana y tecnología moderna. Regaló una a su hija, \cfZanaveth Nekuraku III\c-, y otra a la \cfDemolicionista\c-.\n" -"\n" -"\cfFuego Primario:\c- Carga un puñetazo, y luego lo suelta. El guantelete se lanzará de frente y luego volverá a ti.\n" -"\n" -"\cfFuego Secundario:\c- Carga una bofetada de ancho rango. Al soltarlo abofeteará de forma muy ruidosa y violenta todos los objetivos que tengas delante.\n" -"\n" -"\cfTécnicas:\c- Dada su naturaleza, la Mano Divina es susceptible a los efectos de un \cfRagekit\c-, incrementando su fuerza y rango.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfMenudo envío especial que nos mandó Zana-chan. Y cuando enseñamos que iba bien, y molaba, Misa-Misa se puso a tope y empezó a fabricarlas en masa. Si es que es juro que es demasiado adorable.\c-\n" -"\n" -"\cfEn fin, esos bichos van a recibir una buena somanta con esta cosa. Que ganas tengo de verla en acción con objetivos de verdad. Especialmente después de... Aquel incidente con el saco de boxeo.\c-"; SWWM_LORETAG_FORX = "Aeronáutica Forx"; SWWM_LORETXT_FORX = "\cxNombre:\c-\n" @@ -1319,37 +1266,6 @@ SWWM_LORETXT_GODS2 = "\cfSabes, hay gente que me pregunta como es que aun soy agnóstica. Dudo que sepan realmente lo que es el agnosticismo.\c-\n" "\n" "\cfActualización: El tema ese de los admins está en otro artículo. En serio, fue una puta locura todo eso. Ni de puta coña me voy a olvidar de todo lo que pasó el día después de nuestra boda con Kirin-kun, madre de dios...\c-"; -SWWM_LORETAG_GRANDLANCE = "Gran Lanza"; -SWWM_LORETXT_GRANDLANCE = -"\cxDesignación:\c-\n" -"\cf Suvan-Kin (\"Gran Lanza\")\c-\n" -"\cxFabricante:\c-\n" -"\cf Eushura Kmonn Jr.\c-\n" -"\cxClasificación:\c-\n" -"\cf Cañón de Riel Portátil\c-\n" -"\n" -"Ideado como la \"última palabra\" en armamento, la \cfSuvan-Kin\c- (\"Gran Lanza\" en el idioma \cfXekkas\c-) es el primer cañón de riel realmente portátil del mundo, capaz de lanzar proyectiles a velocidades de hasta 7500km/h (o 14000km/h a carga máxima). El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, fácil de reemplazar cuando se necesite. La munición empleada son arpones de Almacero de alta resonancia, capaces de atravesar limpiamente todo, sin llevar ni un solo rasguño.\n" -"\n" -"Si el potencial penetrante de estos arpones no es lo suficientemente destructivo, una bomba de fusión pura en miniatura incrustada a la cabeza ciertamente añadirá aun más a eso. En palabras de la gente \cfXekkian\c-: \cf\"Las llamas cegadoras de un sol sacrificado a su nacer desgarrarán toda vida, arrancarán el alma de su cuerpo, y no dejarán rastro alguno de aquellos desafortunados que hayan agraviado al portador de la Gran Lanza.\"\c-\n" -"\n" -"\cfFuego Primario:\c- Disparo de único objetivo. El arpón detonará automáticamente en contacto con cualquier cosa. El área de efecto es bastante enorme, así que mantén la distancia.\n" -"\n" -"\cfFuego Secundario:\c- Disparo de múltiple objetivo. El arpón es disparado a mayor velocidad, y penetrará varios objetivos hasta detenerse finalmente contra algo suficientemente sólido.\n" -"\n" -"\cfRecarga Primaria:\c- Recarga el arma.\n" -"\n" -"\cfRecarga Secundaria:\c- Cambia la batería. Esta acción solo puede hacerse en cuanto la carga sea lo suficientemente baja, ya que sería un derroche de otro modo.\n" -"\n" -"\cfTécnicas:\c- Cuanto más mantengas el fuego secundario, con más fuerza y velocidad se disparará. A carga máxima podrá incluso derribar paredes.\n" -"\n" -"\cfAdvertencia:\c- Antes de disparar, los rieles deben extenderse hasta su longitud completa. Si hay algún obstáculo en medio que no pueda ser apartado, la operación del arma será cancelada.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfPerdón pero, ¿¿¿QUE COÑO ES ESTO???\c-\n" -"\n" -"\cf¿Es esto un puto cañón de riel? Vamos, ¿uno de verdad? ¿¿Y resulta que es portátil?? ¿¿¿Y DISPARA PUTOS ARPONES CON PUTAS BOMBAS DE FUSIÓN EN ELLOS??? Vale, olvida lo que dije sobre la otra arma enorme de Kmonn, ESTA MIERDA es incluso aun más puto ridícula, es que, ¿¿¿que puto cojones es todo esto???\c-\n" -"\n" -"\cfPues eso, por eso está colocada en el mismo puesto que el Ynykron. Piensa en ella como una alternativa \"más segura\", básicamente. No es apocalíptica, pero sigue siendo jodidamente fuerte.\c-"; SWWM_LORETAG_GRAVITYSUPPRESSOR = "Supr. de Gravedad"; SWWM_LORETXT_GRAVITYSUPPRESSOR = "\cxDesignación:\c-\n" @@ -1585,16 +1501,18 @@ SWWM_LORETXT_HELLBLAZER = "\n" "\cfAhora que lo miro, lo de que las réplicas usen Nokron fue una buena idea. No sabía yo que esa cosa explotara. Realmente da que pensar sobre todos esos mecanismos de seguridad que tienen los motores de Microfusión, definitivamente justificados si ESO puede pasar.\c-"; SWWM_LORETXT_IBUKI = -"\cxNombre Completo:\c-\n" -"\cf Ibuki Miyamoto\c-\n" -"\cf Oni Rojo (nombre en clave)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2074-09-09\c-\n" -"\cxTwitter\c-\n" -"\cf @lewd_ibuki (principal)\c-\n" -"\cf @ibuki_tiddy (fotos)\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Ibuki Miyamoto\c-\n" +" \cf Oni Rojo (nombre en clave)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2074-09-09\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria, Modelo de Desnudos, Vlogger\c-\n" +" \cxTwitter\c-\n" +" \cf @lewd_ibuki (principal)\c-\n" +" \cf @ibuki_tiddy (fotos)\c-\n" "\n" "\cfIbuki\c- es el resultado del programa de supersoldado \cfOni Rojo\c-, ideado por \cfSaya Miyamoto\c- de \cfAkari Labs\c-. La existencia de este proyecto se mantuvo en secreto hasta su revelación pública en Junio de 2077. Hubo considerable controversia alrededor del programa Oni Rojo, incluyendo la implicación personal de Saya en él, habiendo aceptado un pago de 40 mil millones de dólares a cambio (lo cual se descubrió tener relación con la anterior venta del estado de Texas a México semanas antes). A pesar de su claro potencial y extraordinarias habilidades de combate, fue enviada demasiado tarde, ya que solo momentos después, la \cfCicatriz Blanca\c- ocurrió, y con ella, la devastación total de los \cfEstados Unidos\c-.\n" "\n" @@ -1647,6 +1565,8 @@ SWWM_LORETXT_IMANAKIT = "\cf Indeterminado\c-\n" "\cxFecha de Nacimiento:\c-\n" "\cf Indeterminado\c-\n" +"\cxOcupación:\c-\n" +"\cf CEO (Imanaki Corp)\c-\n" "\n" "El fundador y CEO de \cfImanaki Corp\c-, y también el único miembro restante de la familia Imanaki tras los \cfAsesinatos de la Mansión Onoke\c- de 2003. \cfTetsuya\c- siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal o historia, ni su apariencia física.\n" "\n" @@ -1762,16 +1682,18 @@ SWWM_LORETXT_KEYCHAIN = "\n" "\cfTRANS RIGHTS! FUCK YEAH!\c-"; SWWM_LORETXT_KIRIN = -"\cxNombre Completo:\c-\n" -"\cf Kirin Xanai\c-\n" -"\cxTítulo:\c-\n" -"\cf Emperador Infantil del Imperio Sykhai de Akkou\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Akkouxhei\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2080-04-13\c-\n" -"\cxTwitter:\c-\n" -"\cf @kiririn_xanai\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Kirin Xanai\c-\n" +" \cxTítulo:\c-\n" +" \cf Emperador Infantil del Imperio Sykhai de Akkou\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Akkouxhei\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2080-04-13\c-\n" +" \cxOcupación:\c-\n" +" \cf Consejero Comunal (Imperio Sykhai)\c-\n" +" \cxTwitter:\c-\n" +" \cf @kiririn_xanai\c-\n" "\n" "Nacido en 2080, hijo de \cfSyrakha Yanikov\c- y \cfAzya Xanai\c-, \cfKirin\c- se convirtió en emperador de \cfAkkou\c- a la temprana edad de 12 años, habiendo demostrado un gran interés en seguir los pasos de su madre.\n" "\n" @@ -1855,12 +1777,17 @@ SWWM_LORETXT_KIRINPLUSH = "\n" "\cfAhhhh... Es tan mono, y puedes oírlo reír cuando lo aprietas, oh dios es tan... ¡absolutamente adorable! Seguro que vas a estar ya lista para darle todos los achuchones en cuanto lo tengas, también. Joder... Kirin-kun... necesito el de verdad ahora mismo, ¡voy a darle un ABRAZO ENORME!\c-"; SWWM_LORETXT_KMONN = -"\cxNombre Completo:\c-\n" -"\cf Eushura Kmonn Jr.\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Xekkian\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 8731 BC\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Eushura Kmonn Jr.\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Xekkian\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 8731 BC\c-\n" +" \cxOcupación:\c-\n" +" \cf CTO (Kmonn Shuna)\c-\n" +" \cf Consejero (Instituto Tecnológico Tach-Engine)\c-\n" +"\n" +"\n" "\n" "\cfEushura Kmonn Jr.\c-, hijo de \cfEushura Kmonn Sr.\c-, es un gran inventor del \cfReino de Xekke\c-, en el planeta de \cfIxxeney\c-. Desde una edad temprana fue preparado para igualar la grandeza de su padre, y no tardó mucho en conseguir realizar su propia fama tras años de trabajo como su ayudante. Su creatividad e imaginación no tenían límites, y hay a su nombre un gran total de 279 logros notables en los campos tanto de la ofensa como defensa militar, lo cual ha ayudado a potenciar las fuerzas del reino, haciendo de ellos uno de los más fiables y reclamados por toda la \cfCoalición X'Animen\c- para tareas de defensa aliada.\n" "\n" @@ -1890,12 +1817,18 @@ SWWM_LORETXT_KNOWLEDGEBASE = "\n" "\cfAh, y de paso, gracias muchas a Ana-san por la traducción al Castellano. No pude resistirme, es que estaba tan ilusionada por hacerlo y es tan mona... Me ha dicho que le hace mucha gracia como suenan todos mis desvaríos en su idioma, juju.\c-"; SWWM_LORETXT_LOCKE = -"\cxNombre Completo:\c-\n" -"\cf Janus Locke Hoodth\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Qurensniv\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1980-07-30\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Janus Locke Hoodth\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Qurensniv\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1980-07-30\c-\n" +" \cxOcupación:\c-\n" +" \cf Inventor\c-\n" +"\n" +"\n" +"\n" +"\n" "\n" "\cfJanus Locke\c- es el hermano menor del difunto \cfDr. Häzel Hoodth\c- conocido por muchos como el \cfDoctor Chiflado de Kereshnovka\c-. Tras oír noticias de la muerte de Häzel en 1987 (especificamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para \"obtener la esencia de la inmortalidad\", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de \cfJuguetes Maravillosos del Dr. Locke\c- volviéndose cada vez más peligrosos, o incluso letales.\n" "\n" @@ -1967,27 +1900,29 @@ SWWM_LORETXT_LUNA = "\n" "\cfOjalá todo volviese a como era antes. A ver, ya, como nuestro país no firmó la mierda esa del tratado de la Cicatriz Blanca podemos seguir usando sus cosas, pero no pueden venir ellos aquí, ni se nos permite ir allá tampoco. Puta mierda todo.\c-"; SWWM_LORETXT_MAIDBOT = -"\cxNombre Completo:\c-\n" -"\cf Maidbot \"Meido\" Miyamoto\c-\n" -"\cf Meidobot (nombre artístico)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2017-07-07\c-\n" -"\cxTwitter:\c-\n" -"\cf @meidobot\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Meido Miyamoto\c-\n" +" \cf Meidobot (nombre artístico)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2017-07-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Idol\c-\n" +" \cxTwitter:\c-\n" +" \cf @meidobot\c-\n" "\n" -"Siendo el primer proyecto de IA de \cfSaya Miyamoto\c-, \cfMaidbot\c- inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Maidbot gradualmente parecía más \"real\", nunca era suficiente. Al final, era \"śolo una máquina\".\n" +"Siendo el primer proyecto de IA de \cfSaya Miyamoto\c-, \cfMeido\c- inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más \"real\", nunca era suficiente. Al final, era \"śolo una máquina\".\n" "\n" -"Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Maidbot las interpretara. En 2020, Maidbot se había convertido en una completa \"Idol Artificial\", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional.\n" +"Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Meido las interpretara. En 2020, Meido se había convertido en una completa \"Idol Artificial\", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional.\n" "\n" -"Tras el \cfEvento Luna\c- de 2021, Saya recibió la visita de \cfZanaveth Nekuraku II\c-, jefa de investigación de IA en \cfNekuratek\c-, el mayor gigante tecnológico \cfNukuri\c-. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que \cfAkari Labs\c- había logrado, y mostró un interés especial por Maidbot, también.\n" +"Tras el \cfEvento Luna\c- de 2021, Saya recibió la visita de \cfZanaveth Nekuraku II\c-, jefa de investigación de IA en \cfNekuratek\c-, el mayor gigante tecnológico \cfNukuri\c-. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que \cfAkari Labs\c- había logrado, y mostró un interés especial por Meido, también.\n" "\n" -"Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Maidbot con la tecnología más avanzada que tenían: El \cfFramework de IA Nekuronbot\c-. Habiendo aceptado esta oferta, Maidbot \"renació\" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones.\n" +"Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Meido con la tecnología más avanzada que tenían: El \cfFramework de IA Nekuronbot\c-. Habiendo aceptado esta oferta, Meido \"renació\" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones.\n" "\n" -"No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Maidbot lo sabía, y confesó que en su nueva forma, ella podía \"sentir algo\" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya.\n" +"No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Meido lo sabía, y confesó que en su nueva forma, ella podía \"sentir algo\" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya.\n" "\n" -"Tras estos eventos, Maidbot pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera tener a su propia Maidbot. Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir.\n" +"Tras estos eventos, Meido pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera \"tener a su propia Meido\". Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfMeido-chan es tan dulce~ Y su voz es tan bonita~\c-\n" @@ -1999,7 +1934,7 @@ SWWM_LORETXT_MAIDBOT = "\cfJeje... Desde luego me alegro mucho de hacerla \"completa\", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos \"cositas\" las dos... es como estar en el cielo~\c- \cg♥\c-"; SWWM_LORETXT_MAIDBOT2 = "\cxNombre Completo:\c-\n" -"\cf Maidbot \"Meido\" Miyamoto\c-\n" +"\cf Meido Miyamoto\c-\n" "\cf Meidobot (nombre artístico)\c-\n" "\cxNacionalidad:\c-\n" "\cf Japonesa\c-\n" @@ -2008,17 +1943,17 @@ SWWM_LORETXT_MAIDBOT2 = "\cxTwitter:\c-\n" "\cf @meidobot\c-\n" "\n" -"Siendo el primer proyecto de IA de \cfSaya Miyamoto\c-, \cfMaidbot\c- inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Maidbot gradualmente parecía más \"real\", nunca era suficiente. Al final, era \"śolo una máquina\".\n" +"Siendo el primer proyecto de IA de \cfSaya Miyamoto\c-, \cfMeido\c- inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más \"real\", nunca era suficiente. Al final, era \"śolo una máquina\".\n" "\n" -"Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Maidbot las interpretara. En 2020, Maidbot se había convertido en una completa \"Idol Artificial\", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional.\n" +"Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Meido las interpretara. En 2020, Meido se había convertido en una completa \"Idol Artificial\", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional.\n" "\n" -"Tras el \cfEvento Luna\c- de 2021, Saya recibió la visita de \cfZanaveth Nekuraku II\c-, jefa de investigación de IA en \cfNekuratek\c-, el mayor gigante tecnológico \cfNukuri\c-. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que \cfAkari Labs\c- había logrado, y mostró un interés especial por Maidbot, también.\n" +"Tras el \cfEvento Luna\c- de 2021, Saya recibió la visita de \cfZanaveth Nekuraku II\c-, jefa de investigación de IA en \cfNekuratek\c-, el mayor gigante tecnológico \cfNukuri\c-. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que \cfAkari Labs\c- había logrado, y mostró un interés especial por Meido, también.\n" "\n" -"Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Maidbot con la tecnología más avanzada que tenían: El \cfFramework de IA Nekuronbot\c-. Habiendo aceptado esta oferta, Maidbot \"renació\" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones.\n" +"Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Meido con la tecnología más avanzada que tenían: El \cfFramework de IA Nekuronbot\c-. Habiendo aceptado esta oferta, Meido \"renació\" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones.\n" "\n" -"No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Maidbot lo sabía, y confesó que en su nueva forma, ella podía \"sentir algo\" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya.\n" +"No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Meido lo sabía, y confesó que en su nueva forma, ella podía \"sentir algo\" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya.\n" "\n" -"Tras estos eventos, Maidbot pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera tener a su propia Maidbot. Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir.\n" +"Tras estos eventos, Meido pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera \"tener a su propia Meido\". Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir.\n" "\n" "En Mayo de 2171, junto con Saya y sus otras parejas, se casó con el \cfEmperador Kirin Xanai\c-, del \cfImperio Sykhai\c-, y gracias a él, su pasión por el canto ha vuelto una vez más.\n" "\n" @@ -2098,7 +2033,9 @@ SWWM_LORETXT_MIXOM = "\cxNotas de Saya:\c-\n" "\cfDinero y poder, dominio absoluto, mierda de capitalismo. Asco grande... Ojalá exploten todos.\c-\n" "\n" -"\cfNo puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c-"; +"\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es comendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c-\n" +"\n" +"\cfPor cierto, no puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c-"; SWWM_LORETAG_MODERNSPARKSTER = "Rifle Sparkster"; SWWM_LORETXT_MODERNSPARKSTER = "\cxDesignación:\c-\n" @@ -2210,12 +2147,18 @@ SWWM_LORETXT_MYKRADVO = "\n" "\cfRecuerdo una vez que lo apreté sin querer y no hizo nada. Supongo que es lo bastante listo como para no reventar si no hay nadie por ahí que te quiera matar. Muy útil.\c-"; SWWM_LORETXT_NANA = -"\cxNombre Completo:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Ama de Casa\c-\n" +"\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" @@ -2226,12 +2169,18 @@ SWWM_LORETXT_NANA = "\cxNotas de Saya:\c-\n" "\cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que los tíos le tengan miedo, siempre con un miedo constante a que les haga CBT en cualquier momento.\c-"; SWWM_LORETXT_NANA2 = -"\cxNombre Completo:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Ama de Casa\c-\n" +"\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" @@ -2244,12 +2193,18 @@ SWWM_LORETXT_NANA2 = "\n" "\cfPor cierto, me di cuenta, sabes, cuando te dio ese abrazo, sí. No ha intentado ver a otros tíos desde que perdimos a papá... Pero creo que a lo mejor... puede que le gustes de una forma algo diferente, ya sabes...\c-"; SWWM_LORETXT_NANA3 = -"\cxNombre Completo:\c-\n" -"\cf Nana Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1907-07-07\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Nana Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1907-07-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Ama de Casa\c-\n" +"\n" +"\n" +"\n" +"\n" "\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" @@ -2614,9 +2569,9 @@ SWWM_LORETXT_PUNTZERGAMMA = "\n" "El \cfPuntzer Gamma\c- es un subfusil bullpup mayormente compacto con un sistema de cargador horizontal similar a clásicos del siglo 21 como el \cfBreakerTek P90\c-. El arma es adicionalmente capaz de ejecutar un modo \"Súper-Automático\" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms.\n" "\n" -"\cfFuego Primario:\c- Dispara el arma.\n" +"\cfFuego Primario:\c- Disparo en modo automático.\n" "\n" -"\cfFuego Secundario:\c- Alterna modos de disparo, entre simple, ráfaga de tres, automático y súper-automático.\n" +"\cfFuego Secundario:\c- Ráfaga en modo \"super-automático\".\n" "\n" "\cfRecarga:\c- Recarga, obviamente. Los autocargadores de tu \cfContenedor de Hammerspace™\c- te proveerán de un cargador nuevo en cada momento.\n" "\n" @@ -2707,7 +2662,7 @@ SWWM_LORETXT_RAFANKOS = "\cxNotas de Saya:\c-\n" "\cf¿\"Arma Definitiva\"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c-\n" "\n" -"\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que las otras dos armas súper descoyuntantes.\c-"; +"\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que el otro armatoste súper descoyuntante. Ya sabes, como una alternativa más segura con la que tendrás menos posibilidades de matarte. He de admitir que Misa-Misa nos ha cargado con un material potente al traernos estas dos.\c-"; SWWM_LORETXT_RAGEKIT = "\cxDesignación:\c-\n" "\cf Ragekit\c-\n" @@ -2775,7 +2730,7 @@ SWWM_LORETXT_RAYKHOM = "\n" "\cfAsí que según los Xekkian esto es un \"arma ligera\", ¿¿¿en serio??? Menos mal que tus manos se pueden adaptar no se como a la empuñadura de la cosa esta, porque hostia putísima...\c-\n" "\n" -"\cfEsta mierda es como, no se por donde empezar. Es en serio un puto revientaculos, eso es lo que es. De todo lo que hay en tu arsenal, yo diría que esta es la segunda arma más fuerte que tenemos. Misa aparte la trajo ella misma entonces, y luego hablamos con el viejales de Tach-Engine para poder meterla en la tienda, ya que tiene el trato ese con Kmonn y tal (Estoy segura de que esos dos son algo mas que compañeros de negocios, si sabes a lo que me refiero).\c-\n" +"\cfEsta mierda es como, no se por donde empezar. Es en serio un puto revientaculos, eso es lo que es. De todo lo que hay en tu arsenal, yo diría que esta es la tercera arma más tocha que tenemos. Misa aparte la trajo ella misma entonces, y luego hablamos con el viejales de Tach-Engine para poder meterla en la tienda, ya que tiene el trato ese con Kmonn y tal (Estoy segura de que esos dos son algo mas que compañeros de negocios, si sabes a lo que me refiero).\c-\n" "\n" "\cfCuando entró por la puerta cargando a hombros con esa cosa supe entonces que tenía que ser nuestra.\c-"; SWWM_LORETAG_REFRESHER = "Refrescador"; @@ -2796,14 +2751,17 @@ SWWM_LORETXT_REFRESHER = "\cxNotas de Saya:\c-\n" "\cfAlienígenas Egipcios Antiguos™. Bien, mola, pues sí, cosa buena. Pero los chismes estos mira que son útiles, son casi como... ah, joder, voy a sonar como el friki ese pero sí, son como... vidas extra, ¿más o menos?\c-"; SWWM_LORETXT_RYUJI = -"\cxNombre Completo:\c-\n" -"\cf Ryuji Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonés\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1956-03-12\c-\n" -"\cxFecha de Defunción:\c-\n" -"\cf 2054-06-22\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Ryuji Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonés\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1956-03-12\c-\n" +" \cxFecha de Defunción:\c-\n" +" \cf 2054-06-22\c-\n" +" \cxOcupación:\c-\n" +" \cf Inventor\c-\n" +"\n" "\n" "\cfRyuji\c- nació en \cfGensokyo\c- en 1956, pasando la mayor parte de su vida en la \cfAldea Humana\c-, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener \"aventuras\". Un día, escapó, y se perdió en el bosque de bambú rodeando \cfEientei\c-. Ahí, se cruzó con \cfNana\c-, la hija de \cfKaguya Houraisan\c-, y los dos se hicieron amigos. Después de ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior.\n" "\n" @@ -2899,14 +2857,17 @@ SWWM_LORETXT_SANKAIDERIHA2 = "\n" "\cfOh sí, la primera vez que fue conocí al gran dios. Es uhhhhh... interesante, por decirlo así. No le importó hablar con una doña nadie aleatoria como yo con magia súper-mediocre, estuvo bien. Un día de estos, cuando Kirin se jubile, nos vamos a mudar ahí y estudiar un montón de magia juntos. Tengo unas ganas enormes...\c-"; SWWM_LORETXT_SAYA = -"\cxNombre Completo:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOcupación:\c-\n" +" \cf CTO, Recursos Humanos (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- nació en 1993, siendo la hija mediana de \cfNana Miyamoto\c- y \cfRyuji Miyamoto\c-, su hermano mayor es \cfTaro Miyamoto\c-, nacido en 1985, y su hermana menor es \cfYui Miyamoto\c-, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como \"niña prodigio\". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el \cfMIT\c-, donde se graduó en \cfCiencias de Computación\c-.\n" "\n" @@ -2918,9 +2879,9 @@ SWWM_LORETXT_SAYA = "\n" "Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMaidbot Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" -"Actualmente, Saya tiene dos novias: Maidbot Miyamoto e \cfIbuki Miyamoto\c-. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" +"Actualmente, Saya tiene dos novias: Meido Miyamoto e \cfIbuki Miyamoto\c-. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" @@ -2929,14 +2890,17 @@ SWWM_LORETXT_SAYA = "\n" "\cfBueno, ¿satisfecha, Demo-chan? ¿He saciado tu sed de Saya Facts™? Bien, entonces deberías volver al trabajo.\c-"; SWWM_LORETXT_SAYA2 = -"\cxNombre Completo:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOcupación:\c-\n" +" \cf CTO, Recursos Humanos (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- nació en 1993, siendo la hija mediana de \cfNana Miyamoto\c- y \cfRyuji Miyamoto\c-, su hermano mayor es \cfTaro Miyamoto\c-, nacido en 1985, y su hermana menor es \cfYui Miyamoto\c-, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como \"niña prodigio\". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el \cfMIT\c-, donde se graduó en \cfCiencias de Computación\c-.\n" "\n" @@ -2948,9 +2912,9 @@ SWWM_LORETXT_SAYA2 = "\n" "Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMaidbot Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" -"Actualmente, Saya tiene tres novias: Maidbot Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c-. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" +"Actualmente, Saya tiene tres novias: Meido Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c-. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" @@ -2961,14 +2925,17 @@ SWWM_LORETXT_SAYA2 = "\n" "\cfAnda, vuelve al trabajo, robotita tontita.\c-"; SWWM_LORETXT_SAYA3 = -"\cxNombre Completo:\c-\n" -"\cf Saya Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1993-03-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariSaya\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Saya Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1993-03-20\c-\n" +" \cxOcupación:\c-\n" +" \cf CTO, Recursos Humanos (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariSaya\c-\n" +"\n" "\n" "\cfSaya Miyamoto\c- nació en 1993, siendo la hija mediana de \cfNana Miyamoto\c- y \cfRyuji Miyamoto\c-, su hermano mayor es \cfTaro Miyamoto\c-, nacido en 1985, y su hermana menor es \cfYui Miyamoto\c-, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como \"niña prodigio\". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el \cfMIT\c-, donde se graduó en \cfCiencias de Computación\c-.\n" "\n" @@ -2980,9 +2947,9 @@ SWWM_LORETXT_SAYA3 = "\n" "Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMaidbot Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" -"Actualmente, Saya y sus creaciones Maidbot Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c- están todas casadas con \cfKirin Xanai\c-, líder del \cfImperio Sykhai\c- de \cfAkkou\c-.\n" +"Actualmente, Saya y sus creaciones Meido Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c- están todas casadas con \cfKirin Xanai\c-, líder del \cfImperio Sykhai\c- de \cfAkkou\c-.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" @@ -3267,14 +3234,17 @@ SWWM_LORETXT_SYMNATEK = "\n" "\cfOh apuesto a que estarás pensando: \"Pero Saya, ¿como puedes decir eso, cuando hiciste a Ibuki para el ejército de los EEUU?\", y a eso contestaré: \"¿Quien ha dicho que la hice para ellos?\"\c-"; SWWM_LORETXT_TARO = -"\cxNombre Completo:\c-\n" -"\cf Taro Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonés\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1985-10-06\c-\n" -"\cxTwitter:\c-\n" -"\cf @AkariTaro\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Taro Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonés\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1985-10-06\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO, Relaciones Públicas (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @AkariTaro\c-\n" +"\n" "\n" "Nacido en 1985, hijo de \cfNana\c- y \cfRyuji Miyamoto\c-, \cfTaro\c- es el mayor de tres hermanos, a pesar de lo que muestre su apariencia. De niño, fue algo conflictivo, pero notablemente estudioso también. Habiendo terminado el instituto con notas excelentes, estudió en muchas universidades prestigiosas de todo el mundo, impulsado por el deseo de expandir sus conocimientos, especialmente aquellos de la tecnología informática, con la cual estaba obsesionado. Junto con \cfSaya\c-, su hermana menor, fundaron \cfAkari Labs\c-, una compañía que se especializa en Robótica e Inteligencia Artificial, entre otros. Ahí, las especialidades de Taro son la Ingeniería y el Diseño de Software, y también está a cargo de las relaciones públicas, ya que Saya no \"tiene mucho don de gentes\" a diferencia de él.\n" "\n" @@ -3395,16 +3365,18 @@ SWWM_LORETXT_UAC3 = "\n" "\cfY aquí acaba la historia de la Epístolas de Dumbo estas o lo que sea, uno de los mayores ejemplos de las consecuencias del capitalismo desenfrenado™.\c-"; SWWM_LORETXT_UNISSIX = -"\cxNombre Completo:\c-\n" -"\cf Misa Azadeku Unissix\c-\n" -"\cxAlias:\c-\n" -"\cf Unissix Bokurou Azadeku\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Devanikan\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1992-02-29\c-\n" -"\cxTwitter:\c-\n" -"\cf @misamisa_unissix\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Misa Azadeku Unissix\c-\n" +" \cxAlias:\c-\n" +" \cf Unissix Bokurou Azadeku\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Devanikan\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1992-02-29\c-\n" +" \cxOcupación:\c-\n" +" \cf Herrera (Artesanía Unissix)\c-\n" +" \cxTwitter:\c-\n" +" \cf @misamisa_unissix\c-\n" "\n" "\cfMisa Azadeku Unissix\c- es el miembro más joven del \cfClan Unissix\c-, quien lidera la nación de \cfDevanikna\c-. Es la segunda hija de \cfDevai Unissix\c- y \cfSerwand Nerukousei\c-, siendo hermana menor de \cfDeneva Unissix\c-, una de las guerreras de mayor renombre de toda la nación.\n" "\n" @@ -3473,7 +3445,23 @@ SWWM_LORETXT_VOICEBOX = "La comunidad de \cfAkari Labs\c- también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJe... A Ibuki le encanta lo de que programara tu caja de voz para sonar igualita que ella. A ver, es que cuadra un poco, siendo algo como su hermana pequeña, pero lo que me mola a MÍ es que de algún modo le has pillado todas sus chorradillas y tal. Es como si fueses una mini Ibuki a veces, solo que sin pechotes.\c-"; +"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c-"; +SWWM_LORETXT_VOICEBOX2 = +"\cxDesignación\c-\n" +"\cf Caja de Voz Loudboi\c-\n" +"\cxFabricante:\c-\n" +"\cf Akari Labs\c-\n" +"\cxClasificación:\c-\n" +"\cf Sintetizador de Voz\c-\n" +"\n" +"El \cfLoudboi\c- es un dispositivo simple y ligero para unidades de IA. Fácil de instalar y programar, perfecto para aquellos que construyen con un presupuesto ajustado. Hay una gran variedad de opciones para el tipo de voz, junto con el soporte de múltiples idiomas, incluyendo el Japonés. Para aquellos que se sientan incómodos con el desconcertante \"realismo\" de la síntesis de voz por defecto también existe la opción de activar un filtro integrado de \"voz robótica\".\n" +"\n" +"La comunidad de \cfAkari Labs\c- también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c-\n" +"\n" +"\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Se me derrite el corazón solo con oírla, jejeje...\c-"; SWWM_LORETXT_WALLBUSTER = "\cxDesignación:\c-\n" "\cf Escopeta de Brecha de Armaduras Pesadas \"Wallbuster\"\c-\n" @@ -3537,14 +3525,17 @@ SWWM_LORETXT_WARARMOR = "\cfEeeeeen fin, Misa hace cosas tope de guays. Aunque me parece un poco redundante lo de que lleves armadura hecha de lo mismo que tu chasis. A ver, es que un robot llevando armadura.. ya, ¿por que no? Siempre es importante usar protección, juju...\c-"; SWWM_LORETAG_WHITELADY = "Dama Blanca"; SWWM_LORETXT_WHITELADY = -"\cxNombre Completo:\c-\n" -"\cf Andira Kyse\c-\n" -"\cxTítulo:\c-\n" -"\cf Dama Blanca de los Aldabura\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Kantharei\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2674 AC\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Andira Kyse\c-\n" +" \cxTítulo:\c-\n" +" \cf Dama Blanca de los Aldabura\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Kantharei\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2674 AC\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria\c-\n" +"\n" "\n" "La \cfDama Blanca de los Aldabura\c- es uno de los mejores mercenarios conocidos en la \cfCoalición X'Animen\c-. Como una de los \cfAldabura\c-, polillas humanoides nativas del pequeño planeta \cfKantharo\c-, es muy sensible a las luces potentes, y es fácilmente encantada por ellas. Al mismo tiempo, es bastante tímida y prefiere centrarse en su trabajo, más que en cualquier interacción social.\n" "\n" @@ -3900,14 +3891,17 @@ SWWM_LORETXT_YNYKRON2 = "\n" "\cfAh... y creo que esta va a ser la última vez que podamos usar la nuestra en una misión. Misa ya no quiere tener nada que ver con todo esto. En cuanto termine todo tenemos que llevársela para se destruida. Una pena, pero a ver, lo entiendo perfectamente, esta clase de arma no debería existir.\c-"; SWWM_LORETXT_YUI = -"\cxNombre Completo:\c-\n" -"\cf Yui Miyamoto\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2009-07-02\c-\n" -"\cxTwitter:\c-\n" -"\cf @yuchan09\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Yui Miyamoto\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2009-07-02\c-\n" +" \cxOcupación:\c-\n" +" \cf Neurocirujana (Hospital Central de Kasukabe)\c-\n" +" \cxTwitter:\c-\n" +" \cf @yuchan09\c-\n" +"\n" "\n" "Nacida en 2009, hija de \cfNana\c- y \cfRyuji Miyamoto\c-, \cfYui\c- es la más joven de tres hermanos. Es una persona muy sociable y empática, totalmente diferente a sus más solitarios y antisociales hermanos \cfSaya\c- y \cfTaro\c-, habiendo mostrado siempre un claro interés por ayudar a la gente. Desde pequeña, su deseo era el de ser doctora, \"para salvar vidas\". Este deseo llegó a cumplirse tras perseverar en sus estudios y pasar varios años \"ascendiendo en rango\". A fecha de escribirse este artículo, Yui trabaja actualmente como neurocirujana en el \cfHospital Central de Kasukabe\c-, y ha recibido varios premios por sus logros excepcionales.\n" "\n" @@ -3926,14 +3920,17 @@ SWWM_LORETXT_YUI = "\n" "\cfJoder la envidia que tenía... con su novia gótica tetuda todo mazizorra... Bueno, la tenía, hasta que llegó Ibuki, jejejeje...\c-"; SWWM_LORETXT_ZANAVETH2 = -"\cxNombre Completo:\c-\n" -"\cf Zanaveth Nekuraku II\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Nukuri\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1969-08-10\c-\n" -"\cxTwitter:\c-\n" -"\cf @purple_emotion\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Zanaveth Nekuraku II\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Nukuri\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1969-08-10\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO, Ingeneriera de IA (Nekuratek)\c-\n" +" \cf Ministra de Relaciones Interespecie (GUN)\c-\n" +" \cxTwitter:\c-\n" +" \cf @purple_emotion\c-\n" "\n" "\cfZanaveth Nekuraku II\c- nació en 1969, siendo la hija única de \cfZanaveth Nekuraku I\c- y \cfDanakorn Kiyanou\c-. Durante su infancia, demostró un gran potencial, con una gran rapidez para el aprendizaje, pero en vez de forzarla a estudiar más, o trasladarla a un lugar de estudio de mayor nivel, sus padres decidieron dejar que hiciera las cosas a su ritmo, algo poco visto en aquellos tiempos.\n" "\n" @@ -3958,14 +3955,17 @@ SWWM_LORETXT_ZANAVETH2 = "\n" "\cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, puta mierda, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c-"; SWWM_LORETXT_ZANAVETH22 = -"\cxNombre Completo:\c-\n" -"\cf Zanaveth Nekuraku II\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Nukuri\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 1969-08-10\c-\n" -"\cxTwitter:\c-\n" -"\cf @purple_emotion\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Zanaveth Nekuraku II\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Nukuri\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1969-08-10\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO, Ingeneriera de IA (Nekuratek)\c-\n" +" \cf Ministra de Relaciones Interespecie (GUN)\c-\n" +" \cxTwitter:\c-\n" +" \cf @purple_emotion\c-\n" "\n" "\cfZanaveth Nekuraku II\c- nació en 1969, siendo la hija única de \cfZanaveth Nekuraku I\c- y \cfDanakorn Kiyanou\c-. Durante su infancia, demostró un gran potencial, con una gran rapidez para el aprendizaje, pero en vez de forzarla a estudiar más, o trasladarla a un lugar de estudio de mayor nivel, sus padres decidieron dejar que hiciera las cosas a su ritmo, algo poco visto en aquellos tiempos.\n" "\n" @@ -3992,17 +3992,19 @@ SWWM_LORETXT_ZANAVETH22 = "\n" "\cfAhora que la puta basura esa de la Cicatriz Blanca se irá a tomar por culo, tengo unas ganas tremendas de poderla ver de nuevo por aquí. Dios, cuando apareció después de la boda con Kirin-kun casi me puse a llorar. La echaba jodidamente tanto de menos, es que... en serio.\c-"; SWWM_LORETXT_ZANAVETH3 = -"\cxNombre Completo:\c-\n" -"\cf Zanaveth Nekuraku III\c-\n" -"\cxApodos:\c-\n" -"\cf El Corruptor\c-\n" -"\cf Unissix Bokurou Azadeku II\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Nukuri\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2042-08-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @zanaveth\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Zanaveth Nekuraku III\c-\n" +" \cxApodos:\c-\n" +" \cf El Corruptor\c-\n" +" \cf Unissix Bokurou Azadeku II\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Nukuri\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2042-08-20\c-\n" +" \cxOcupación:\c-\n" +" \cf Ingeniera de IA (Nekuratek)\c-\n" +" \cxTwitter:\c-\n" +" \cf @zanaveth\c-\n" "\n" "\cfZanaveth Nekuraku III\c- es la hija única de \cfZanaveth Nekuraku II\c- y \cfMisa Azadeku Unissix\c-. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a \cfNahkami\c- una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables.\n" "\n" @@ -4023,17 +4025,19 @@ SWWM_LORETXT_ZANAVETH3 = "\n" "\cfBueno, si vuelve a la Tierra, yo por mí aceptaría con los brazos abiertos a mi nueva gran señora chuuni.\c-"; SWWM_LORETXT_ZANAVETH32 = -"\cxNombre Completo:\c-\n" -"\cf Zanaveth Nekuraku III\c-\n" -"\cxApodos:\c-\n" -"\cf El Corruptor\c-\n" -"\cf Unissix Bokurou Azadeku II\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Nukuri\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2042-08-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @zanaveth\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Zanaveth Nekuraku III\c-\n" +" \cxApodos:\c-\n" +" \cf El Corruptor\c-\n" +" \cf Unissix Bokurou Azadeku II\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Nukuri\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2042-08-20\c-\n" +" \cxOcupación:\c-\n" +" \cf Ingeniera de IA (Nekuratek)\c-\n" +" \cxTwitter:\c-\n" +" \cf @zanaveth\c-\n" "\n" "\cfZanaveth Nekuraku III\c- es la hija única de \cfZanaveth Nekuraku II\c- y \cfMisa Azadeku Unissix\c-. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a \cfNahkami\c- una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables.\n" "\n" diff --git a/language.es_menu b/language.es_menu index be8deaa38..3ba59dd1f 100644 --- a/language.es_menu +++ b/language.es_menu @@ -1,6 +1,6 @@ [es] // keybinds -SWWM_KEYS = "Controles de SWWM GZ"; +SWWM_KEYS = "Controles de DEMOLITIONIST"; SWWM_PRIMARYFIRE = "Fuego Primario"; SWWM_SECONDARYFIRE = "Fuego Secundario"; SWWM_RELOADFIRE = "Recargar"; @@ -20,16 +20,15 @@ SWWM_KBASE = "Menú de Demolicionista"; SWWM_MINIMAPIN = "Acercar Zoom de Minimapa"; SWWM_MINIMAPOUT = "Alejar Zoom de Minimapa"; // skills -SWWM_SKCHILL = "\cvDe Relax\c-"; -SWWM_SKEASY = "\cdCon Calmita~\c-"; -SWWM_SKNORMAL = "\cfAventura Adecuada\c-"; -SWWM_SKHARD = "\ciDesafío Moderado\c-"; -SWWM_SKHARDCORE = "\cgSoy Masoca\c-"; -SWWM_SKHARDCORECONFIRM = "\cg¿Crees que el mod es muy fácil?\nPues prepárate.\c-\n\n\cfMonstruos rápidos\n1.5x salud y daño de monstruos\n25% de agresividad extra\nTrucos deshabilitados\nMonstruos de cooperativo\nLa tienda está desactivada\nSolo se puede revivir una vez\c-\n\n(Pulsa Y para un desafío)"; -SWWM_SKLUNATIC = "\crINTENTA MUERTE\c-"; -SWWM_SKLUNATICCONFIRM = "\crVas a morir, vas a sufrir.\nEso te lo puedo garantizar.\c-\n\n\cfTodos los cambios de Masoca\n+\nDoble velocidad de enemigos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para morir al instante)"; +SWWM_SKEASY = "\cvSimple Reventamiento\c-"; +SWWM_SKNORMAL = "\cdDía De Demolición\c-"; +SWWM_SKHARD = "\ciMayormente Dañino\c-"; +SWWM_SKHARDCORE = "\cgBocata De Dolor\c-"; +SWWM_SKHARDCORECONFIRM = "\cgEsta dificultad equivale a Pesadilla.\nPrepárate para una patada en el culo.\c-\n\n\cfMonstruos rápidos\n1.5x salud y daño de monstruos\n25% de agresividad extra\nTrucos deshabilitados\nMonstruos de cooperativo\nLa tienda está desactivada\nSolo se puede revivir una vez\c-\n\n(Pulsa Y para un desafío)"; +SWWM_SKLUNATIC = "\crDemo Debe Morir\c-"; +SWWM_SKLUNATICCONFIRM = "\cr¿Seguro que quieres eso?\nLo vas a pasar MUY mal.\c-\n\n\cfTodos los cambios de \cgBocata De Dolor\cf\n+\nDoble velocidad de enemigos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para morir al instante)"; // mod menu -SWWM_MTITLE = "Opciones de SWWM GZ"; +SWWM_MTITLE = "Opciones de DEMOLITIONIST"; SWWM_PTITLE = "Opciones de Jugador"; SWWM_VOICETYPE = "Pack de Voz de Demolicionista"; SWWM_MUTELEVEL = "Nivel de Muteo de Voz"; @@ -51,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"; @@ -68,13 +59,14 @@ 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"; SWWM_ONERETRY = "Un Reintento"; SWWM_NONE = "Ninguno"; SWWM_INTERART = "Arte de Intermisión"; +SWWM_NORENDER = "Sí (Sólo Fanart)"; +SWWM_NOFANART = "Sí (Sólo Renders)"; SWWM_BALLUSE = "Las Bolas de Plomo Activan Botones"; SWWM_BOSSBAR = "Mostrar Barras de Salud de Bosses"; SWWM_BTITLE = "Opciones de Balance"; @@ -91,7 +83,8 @@ SWWM_NUMSCALE = "Escala de Números"; SWWM_SCRSCALE = "Escala de Puntuaciones"; SWWM_POISCALE = "Escala de Puntos de Interés"; SWWM_DETSCALE = "Escala de Sensor de Ítems"; -SWWM_GZSCALE = "Usar Opción de GZDoom"; +SWWM_TFITSCALE = "Escalado Ajustado"; +SWWM_LFITSCALE = "Escalado Holgado"; SWWM_BLOOD = "Habilitar Sangre Personalizada"; SWWM_FUZZ = "Habilitar Fondo Animado de Menú"; SWWM_BUSTERPAUSE = "Pausar en Recarga de Wallbuster"; @@ -201,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"; @@ -209,7 +201,11 @@ SWWM_CRESET = "Restaurar Predeterminado"; SWWM_ARESET = "Borrar Logros"; SWWM_NOINTERTIPS = "Ocultar Consejos de Intermisión"; SWWM_DEMOSLAYER = "Modo Demoslayer"; +SWWM_BEEPBOOP = "Ruiditos de Activación"; +SWWM_VOICEAMP = "Amplificación de Voz"; SWWM_CLEARFX = "Limpiar todos los Efectos"; +SWWM_OLDLOGO = "Marca Antigua"; +SWWM_NODEATHEXIT = "Desactivar Salidas de Muerte"; SWWM_MMTITLE = "Opciones de Minimapa"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_ROTATE = "Rotar Minimapa"; @@ -281,25 +277,24 @@ 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 aleatorio durante intermisiones."; +TOOLTIP_SWWM_INTERART = "Si está activado, muestra fanart y renders oficiales aleatorios durante intermisiones. Hay opciones extra para mostrar sólo una categoría."; TOOLTIP_SWWM_BALLUSE = "Los proyectiles de Bola de Plomo pueden activar botones utilizables remotamente (excluyendo salidas). Potencialmente roto."; TOOLTIP_SWWM_BOSSHEALTHBARS = "Muestra una barra de vida para bosses vanilla en la parte inferior de la pantalla. ¡Es justo como Dark Souls™!"; 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."; -TOOLTIP_SWWM_HUDSCALE = "Factor de escalado del HUD. Pon a 0 para usar el escalado de HUD de GZDoom."; -TOOLTIP_SWWM_BARSCALE = "Factor de escalado para las barras de salud. Pon a 0 para usar el escalado de HUD de GZDoom."; -TOOLTIP_SWWM_NUMSCALE = "Factor de escalado para los números de daño/salud. Pon a 0 para usar el escalado de HUD de GZDoom."; -TOOLTIP_SWWM_SCRSCALE = "Factor de escalado para los números de puntuación. Pon a 0 para usar el escalado de HUD de GZDoom."; -TOOLTIP_SWWM_POISCALE = "Factor de escalado para los puntos de interés. Pon a 0 para usar el escalado de HUD de GZDoom."; -TOOLTIP_SWWM_DETSCALE = "Factor de escalado para los ítems detectados. Pon a 0 para usar el escalado de HUD de GZDoom."; +TOOLTIP_SWWM_HUDSCALE = "Factor de escalado del HUD. El escalado \"Ajustado\" intenta que quepa todo el HUD en el ancho de la pantalla, mientras que el \"Holgado\" está recomendado para pantallas ultrawide."; +TOOLTIP_SWWM_BARSCALEREL = "Factor de escalado relativo para las barras de salud. Un factor de 0 es igual al escalado del HUD."; +TOOLTIP_SWWM_NUMSCALEREL = "Factor de escalado relativo para los números de daño/salud. Un factor de 0 es igual al escalado del HUD."; +TOOLTIP_SWWM_SCRSCALEREL = "Factor de escalado relativo para los números de puntuación. Un factor de 0 es igual al escalado del HUD."; +TOOLTIP_SWWM_POISCALEREL = "Factor de escalado relativo para los puntos de interés. Un factor de 0 es igual al escalado del HUD."; +TOOLTIP_SWWM_DETSCALEREL = "Factor de escalado relativo para los ítems detectados. Un factor de 0 es igual al escalado del HUD."; TOOLTIP_SWWM_BLOOD = "Activa efectos de sangre y vísceras personalizados, adaptados de Soundless Mound. Sinceramente, recomendaría usar Nashgore, es mejor."; TOOLTIP_SWWM_FUZZ = "Desactivar esto es recomendado si estás grabando o haciendo streaming, ya que este effecto puede dañar la calidad del vídeo."; TOOLTIP_SWWM_CBTPAUSE = "El juego será pausado mientras el menú de recarga de Wallbuster está abierto (sólo en modo de un jugador)."; @@ -370,7 +365,11 @@ TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros."; TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos."; TOOLTIP_SWWM_DEMOSLAYER = "Los enemigos que mates soltarán orbes de salud y armadura."; +TOOLTIP_SWWM_BEEPBOOP = "La Demolicionista hará ruiditos adorables cuando pulse cualquier línea utilizable. Esto puede que resulte cansino, así que es opcional."; +TOOLTIP_SWWM_VOICEAMP = "A su volumen normal, las voces de la Demolicionista pueden ser ahogadas por el audio del juego. Con esto se le dá un nivel de amplificación extra para que sean más estridentes que otros sonidos."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos."; +TOOLTIP_SWWM_OLDLOGO = "Para quienes echan de menos los viejos tiempos de SWWM GZ, podeis restaurar la antigua pantalla de inicio y menú principal con esto."; +TOOLTIP_SWWM_NODEATHEXIT = "Esta opción invalida completamente los efectos de las salidas de muerte, si no te gusta perder todas tus cosas."; TOOLTIP_SWWMMINIMAPMENU = "Configura el minimapa."; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación."; @@ -408,7 +407,7 @@ TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color para ítems muy importantes."; TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color para cosas que pueden ser dañadas."; TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color para proyectiles."; // credits -SWWM_MCREDS = "Créditos de SWWM GZ"; +SWWM_MCREDS = "Créditos de DEMOLITIONIST"; SWWM_CLEAD = "Desarrollo Principal:"; SWWM_CDEV2 = "Autoproclamada Maga de ZScript"; SWWM_CASSETS = "Assets Adicionales:"; @@ -417,6 +416,7 @@ SWWM_ASSOTHERS = "Sprites de XDeath para Demonio, Cacodemonio, Renacido, Archvil SWWM_ASSEXTRA = "Sprites de XDeath para Aracnotrón, Mancubus"; SWWM_ASSKEEN = "Reemplazo Menos Vil de Keen"; SWWM_CMUSIC = "Música Usada:"; +SWWM_CVOICE = "Voces:"; SWWM_CFANART = "Fanart de Intermisión:"; SWWM_CPATRON = "Mecenas de Patreon:"; SWWM_CTHANK = "Agradecimientos Especiales:"; @@ -500,17 +500,8 @@ 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_CHATTAB = "Mensajes"; +SWWM_NOCHAT = "(historial de mensajes vacío)"; SWWM_SECRETTAB = "Secreto"; SWWM_TODEMO = "\cx\"¡Lucha por la justicia, Demo-chan! ¡Tú puedes!\"\c- \cg♥\c- Ibuki y Saya"; SWWM_CUTIECLUB = "\cx\"¡Jamás pierdas la esperanza, Demo-chan! ¡Estamos todas contigo!\"\c- \cg♥\c- Club Cuqui"; @@ -540,90 +531,71 @@ SWWM_KIRINPOEM = SWWM_MAINCONTROLS = "Pulsa F1 para ver controles"; SWWM_LOREUNSEL = "(ninguna entrada elegida)"; SWWM_LORETAB0 = "Ítems"; -SWWM_LORETAB1 = "Gente"; -SWWM_LORETAB2 = "Lore"; +SWWM_LORETAB1 = "Enemigos"; +SWWM_LORETAB2 = "Gente"; +SWWM_LORETAB3 = "Lore"; SWWM_HELPTAB = "Ayuda"; SWWM_HELPTXT = "\cxMenú de Demolicionista - Controles Básicos\c-\n" -"\cx----------------------------------------\c-\n" +"\cx——————————————————————————————————————————\c-\n" "\n" "\cf%s:\c- Abrir/Cerrar menú de Demolicionista\n" "\cfRePág/AvPág:\c- Cambiar pestaña\n" "\cfF1:\c- Abrir/Cerrar pestaña de ayuda\n" "\n" "\cxPestaña de Misión - Controles\c-\n" -"\cx---------------------------\c-\n" +"\cx—————————————————————————————\c-\n" "\n" "\cfArriba/Abajo:\c- Scroll\n" "\cfIzquierda/Derecha:\c- Cambiar entre entradas\n" "\n" "\cxPestaña de Estadísticas - Controles\c-\n" -"\cx---------------------------------\c-\n" +"\cx———————————————————————————————————\c-\n" "\n" "\cfArriba/Abajo:\c- Scroll\n" "\cfIzquierda/Derecha:\c- Cambiar sección\n" "\n" "\cxPestaña de Inventario - Controles\c-\n" -"\cx-------------------------------\c-\n" +"\cx—————————————————————————————————\c-\n" "\n" "\cfFlechas:\c- Navegar\n" "\cfEnter/Click Izdo.:\c- Usar ítem seleccionado\n" "\cfRetroceso/Click Dcho.:\c- Descartar ítem seleccionado\n" "\n" "\cxPestaña de Llavero - Controles\c-\n" -"\cx----------------------------\c-\n" +"\cx——————————————————————————————\c-\n" "\n" "\cfFlechas:\c- Navegar\n" "\n" "\cxPestaña de Biblioteca - Controles (Principal)\c-\n" -"\cx-------------------------------------------\c-\n" +"\cx—————————————————————————————————————————————\c-\n" "\n" "\cfArriba/Abajo:\c- Scroll por entradas\n" "\cfIzquierda/Derecha:\c- Cambiar categoría\n" "\cfEnter/Click Izdo.:\c- Abrir entrada\n" "\n" "\cxPestaña de Biblioteca - Controles (Entrada Abierta)\c-\n" -"\cx-------------------------------------------------\c-\n" +"\cx———————————————————————————————————————————————————\c-\n" "\n" "\cfArriba/Abajo:\c- Scroll\n" "\cfRetroceso:\c- Volver a lista de entradas\n" "\n" "\cxPestaña de Tienda - Controles (Compra)\c-\n" -"\cx------------------------------------\c-\n" +"\cx——————————————————————————————————————\c-\n" "\n" "\cfFlechas:\c- Navegar\n" "\cfEnter/Click Izdo.:\c- Comprar\n" "\cfRetroceso/Click Dcho.:\c- Cambiar a venta\n" "\n" "\cxPestaña de Tienda - Controles (Venta)\c-\n" -"\cx-----------------------------------\c-\n" +"\cx—————————————————————————————————————\c-\n" "\n" "\cfFlechas:\c- Navegar\n" "\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" +"\cxPestaña de Mensajes - Controles\c-\n" +"\cx———————————————————————————————\c-\n" "\n" "\cfArriba/Abajo:\c- Scroll"; // Wallbuster menu @@ -706,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" diff --git a/language.es_voice b/language.es_voice index e2a75105d..e6e8b708e 100644 --- a/language.es_voice +++ b/language.es_voice @@ -1,233 +1,597 @@ [es] -// voice name -SWWM_VOICENAME_DEFAULT = "Demolicionista"; -// new weapon received -SWWM_SUBS_DEFAULT_GETWEAPON1 = "No está mal... No está mal para nada..."; -SWWM_SUBS_DEFAULT_GETWEAPON2 = "Buena pesca..."; -SWWM_SUBS_DEFAULT_GETWEAPON3 = "Ahora es mío..."; -SWWM_SUBS_DEFAULT_GETWEAPON4 = "Bien..."; -SWWM_SUBS_DEFAULT_GETWEAPON5 = "Bingo..."; -SWWM_SUBS_DEFAULT_GETWEAPON6 = "Toma ya..."; -SWWM_SUBS_DEFAULT_GETWEAPON7 = "Excelente..."; -SWWM_SUBS_DEFAULT_GETWEAPON8 = "Sí..."; -SWWM_SUBS_DEFAULT_GETWEAPON9 = "Eso es..."; -SWWM_SUBS_DEFAULT_GETWEAPON10 = "Perfecto..."; -SWWM_SUBS_DEFAULT_GETWEAPON11 = "Me gusta..."; -SWWM_SUBS_DEFAULT_GETWEAPON12 = "Tiene buena pinta..."; -SWWM_SUBS_DEFAULT_GETWEAPON13 = "Probablemente cueste una fortuna..."; +//// DEFAULT VOICE - Vyolette +// new weapon received (generic, unspecified weapons) +SWWM_SUBS_DEFAULT_GETWEAPON1 = "Bueno."; +SWWM_SUBS_DEFAULT_GETWEAPON2 = "Mío."; +SWWM_SUBS_DEFAULT_GETWEAPON3 = "Esto tiene buena pinta."; +SWWM_SUBS_DEFAULT_GETWEAPON4 = "Hm, bueno."; +SWWM_SUBS_DEFAULT_GETWEAPON5 = "Oh, ¡mola!"; +SWWM_SUBS_DEFAULT_GETWEAPON6 = "Oh sí."; +SWWM_SUBS_DEFAULT_GETWEAPON7 = "Dame."; +SWWM_SUBS_DEFAULT_GETWEAPON8 = "Toma ya."; +SWWM_SUBS_DEFAULT_GETWEAPON9 = "Bien."; +SWWM_SUBS_DEFAULT_GETWEAPON10 = "Buena pinta."; +SWWM_SUBS_DEFAULT_GETWEAPON11 = "Me lo llevo."; +SWWM_SUBS_DEFAULT_GETWEAPON12 = "Arma nueva, más diversión."; +SWWM_SUBS_DEFAULT_GETWEAPON13 = "Te vienes conmigo."; // locked door -SWWM_SUBS_DEFAULT_LOCKED1 = "No tengo la llave."; -SWWM_SUBS_DEFAULT_LOCKED2 = "Solo abre con una llave."; -SWWM_SUBS_DEFAULT_LOCKED3 = "Necesitaría la llave."; -SWWM_SUBS_DEFAULT_LOCKED4 = "Cerrado a cal y canto."; -// jammed door (strife) -SWWM_SUBS_DEFAULT_JAMMED1 = "Está atrancada."; -SWWM_SUBS_DEFAULT_JAMMED2 = "Nada."; -SWWM_SUBS_DEFAULT_JAMMED3 = "Atrancada."; -SWWM_SUBS_DEFAULT_JAMMED4 = "Es inútil."; +SWWM_SUBS_DEFAULT_LOCKED1 = "Bueno, está cerrado."; +SWWM_SUBS_DEFAULT_LOCKED2 = "Voy a necesitar una llave para esto."; +SWWM_SUBS_DEFAULT_LOCKED3 = "Tengo que encontrar la llave."; +SWWM_SUBS_DEFAULT_LOCKED4 = "Necesita una llave."; +SWWM_SUBS_DEFAULT_LOCKED5 = "Dios odio buscar llaves..."; +SWWM_SUBS_DEFAULT_LOCKED6 = "Malditas llaves..."; +// jammed door +SWWM_SUBS_DEFAULT_JAMMED1 = "Atascado."; +SWWM_SUBS_DEFAULT_JAMMED2 = "No se mueve."; +SWWM_SUBS_DEFAULT_JAMMED3 = "Atrancado."; +SWWM_SUBS_DEFAULT_JAMMED4 = "No se abre."; +SWWM_SUBS_DEFAULT_JAMMED5 = "Esta mierda está rota."; +SWWM_SUBS_DEFAULT_JAMMED6 = "No funciona."; +SWWM_SUBS_DEFAULT_JAMMED7 = "La puerta está oxidada."; // puzzle item failure -SWWM_SUBS_DEFAULT_PUZZFAIL1 = "Maldición."; -SWWM_SUBS_DEFAULT_PUZZFAIL2 = "Maldita sea."; -SWWM_SUBS_DEFAULT_PUZZFAIL3 = "No bueno."; +SWWM_SUBS_DEFAULT_PUZZFAIL1 = "Dita sea."; +SWWM_SUBS_DEFAULT_PUZZFAIL2 = "Ah leñe."; +SWWM_SUBS_DEFAULT_PUZZFAIL3 = "Espera eso no vale."; SWWM_SUBS_DEFAULT_PUZZFAIL4 = "Pues no."; // puzzle item success -SWWM_SUBS_DEFAULT_PUZZSUCC1 = "Bien."; -SWWM_SUBS_DEFAULT_PUZZSUCC2 = "Eso es."; -SWWM_SUBS_DEFAULT_PUZZSUCC3 = "Lo tengo."; -SWWM_SUBS_DEFAULT_PUZZSUCC4 = "Sí."; -SWWM_SUBS_DEFAULT_PUZZSUCC5 = "Mola."; +SWWM_SUBS_DEFAULT_PUZZSUCC1 = "Buena."; +SWWM_SUBS_DEFAULT_PUZZSUCC2 = "Lo tengo."; +SWWM_SUBS_DEFAULT_PUZZSUCC3 = "Vamos allá."; +SWWM_SUBS_DEFAULT_PUZZSUCC4 = "Bien."; +SWWM_SUBS_DEFAULT_PUZZSUCC5 = "Sí, eso es."; // first enemy encounter (20 seconds cooldown since all enemies dead) -SWWM_SUBS_DEFAULT_FIGHTSTART1 = "Ya estamos otra vez."; -SWWM_SUBS_DEFAULT_FIGHTSTART2 = "Que empiece el espectáculo."; -SWWM_SUBS_DEFAULT_FIGHTSTART3 = "Hora de morir."; -SWWM_SUBS_DEFAULT_FIGHTSTART4 = "Ven a por mí."; -SWWM_SUBS_DEFAULT_FIGHTSTART5 = "Vais a morir todos."; -SWWM_SUBS_DEFAULT_FIGHTSTART6 = "Ya tenía ganas de pelea."; -SWWM_SUBS_DEFAULT_FIGHTSTART7 = "Vamos con esto."; -SWWM_SUBS_DEFAULT_FIGHTSTART8 = "¡Hora de liarla! ¡A matarlos a todos!"; -SWWM_SUBS_DEFAULT_FIGHTSTART9 = "En serio que no querrías empezar una pelea conmigo."; -SWWM_SUBS_DEFAULT_FIGHTSTART10 = "Vamos al asunto."; -SWWM_SUBS_DEFAULT_FIGHTSTART11 = "¡Matar!"; +SWWM_SUBS_DEFAULT_FIGHTSTART1 = "Bueno ya empezamos."; +SWWM_SUBS_DEFAULT_FIGHTSTART2 = "Venga, fiesta."; +SWWM_SUBS_DEFAULT_FIGHTSTART3 = "Oh, más malos."; +SWWM_SUBS_DEFAULT_FIGHTSTART4 = "¡Vamos allá!"; +SWWM_SUBS_DEFAULT_FIGHTSTART5 = "Esta va a ser buena."; +SWWM_SUBS_DEFAULT_FIGHTSTART6 = "Ah, que empieze la diversión."; +SWWM_SUBS_DEFAULT_FIGHTSTART7 = "¡Hagamos esto!"; +SWWM_SUBS_DEFAULT_FIGHTSTART8 = "¡Vas a caer!"; +SWWM_SUBS_DEFAULT_FIGHTSTART9 = "Oh, ¿quieres pelea?"; +SWWM_SUBS_DEFAULT_FIGHTSTART10 = "Muy bien, hagamos esto."; +SWWM_SUBS_DEFAULT_FIGHTSTART11 = "Ya estás muerto."; SWWM_SUBS_DEFAULT_FIGHTSTART12 = "Esto no será difícil."; -SWWM_SUBS_DEFAULT_FIGHTSTART13 = "Vamos allá."; -SWWM_SUBS_DEFAULT_FIGHTSTART14 = "Hagamos esto."; -SWWM_SUBS_DEFAULT_FIGHTSTART15 = "Acabemos con esto."; -SWWM_SUBS_DEFAULT_FIGHTSTART16 = "Bueno, esto será un desafío interesante."; -SWWM_SUBS_DEFAULT_FIGHTSTART17 = "OK. Empecemos con esto."; -SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, esto es justo lo que necesitaba ahora..."; -SWWM_SUBS_DEFAULT_FIGHTSTART19 = "Hora de montar un espectáculo."; -SWWM_SUBS_DEFAULT_FIGHTSTART20 = "Te voy a eliminar."; -SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Oh, bien. Y yo que me temía no tener nada que hacer.."; +SWWM_SUBS_DEFAULT_FIGHTSTART13 = "¡Hora de luchar!"; +SWWM_SUBS_DEFAULT_FIGHTSTART14 = "Ya estamos otra vez."; +SWWM_SUBS_DEFAULT_FIGHTSTART15 = "Oh no sabes con quien te estás metiendo."; +SWWM_SUBS_DEFAULT_FIGHTSTART16 = "Bueno, aquí viene la fiesta."; +SWWM_SUBS_DEFAULT_FIGHTSTART17 = "¡Que empiece la fiesta!"; +SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, por fin, algo que disparar."; +SWWM_SUBS_DEFAULT_FIGHTSTART19 = "¡Empieza el show!"; +SWWM_SUBS_DEFAULT_FIGHTSTART20 = "Oh, estás muerto."; +SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Bien. Ya me preguntaba cuando ibas a aparecer."; // played at map start -SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh... este sitio apesta."; -SWWM_SUBS_DEFAULT_MAPSTART2 = "OK, manos a la obra."; -SWWM_SUBS_DEFAULT_MAPSTART3 = "Arreando que es gerundio."; -SWWM_SUBS_DEFAULT_MAPSTART4 = "Este sitio tiene muy mala pinta."; -SWWM_SUBS_DEFAULT_MAPSTART5 = "Nací preparada."; -SWWM_SUBS_DEFAULT_MAPSTART6 = "La vida es dura, hago lo que tengo que hacer."; -SWWM_SUBS_DEFAULT_MAPSTART7 = "Ningún robot es mejor que yo."; -SWWM_SUBS_DEFAULT_MAPSTART8 = "Los he visto mejores."; -SWWM_SUBS_DEFAULT_MAPSTART9 = "OK. Vamos para allá."; -SWWM_SUBS_DEFAULT_MAPSTART10 = "No quiero problemas. Solo estoy de camino."; -SWWM_SUBS_DEFAULT_MAPSTART11 = "Siento haceros esperar."; -SWWM_SUBS_DEFAULT_MAPSTART12 = "Haré lo mejor que pueda."; -SWWM_SUBS_DEFAULT_MAPSTART13 = "Que quede claro: Todo lo bueno que encuentre es mío."; -SWWM_SUBS_DEFAULT_MAPSTART14 = "Seguro que la comida aquí es terrible."; +SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh, joder... Este sitio apesta. Vomitaría si pudiera."; +SWWM_SUBS_DEFAULT_MAPSTART2 = "Muy bien, manos a la obra."; +SWWM_SUBS_DEFAULT_MAPSTART3 = "¿Misión... empieza?"; +SWWM_SUBS_DEFAULT_MAPSTART4 = "Vamos al tajo."; +SWWM_SUBS_DEFAULT_MAPSTART5 = "Oh, estoy bien preparada para esto."; +SWWM_SUBS_DEFAULT_MAPSTART6 = "Bueno, no estoy aquí por el paisaje."; +SWWM_SUBS_DEFAULT_MAPSTART7 = "Que empiece la caza."; +SWWM_SUBS_DEFAULT_MAPSTART8 = "Bueno esto pinta interesante..."; +SWWM_SUBS_DEFAULT_MAPSTART9 = "Vale. Vamos allá."; +SWWM_SUBS_DEFAULT_MAPSTART10 = "Hora de pisar a fondo."; +SWWM_SUBS_DEFAULT_MAPSTART11 = "Bueno, mas vale no dejar a todos esperando."; +SWWM_SUBS_DEFAULT_MAPSTART12 = "Me esforzaré al máximo."; +SWWM_SUBS_DEFAULT_MAPSTART13 = "Deja que diga una cosa: Todo lo que encuentre, me lo quedo."; +SWWM_SUBS_DEFAULT_MAPSTART14 = "Vengo a mascar chicle y patear traseros... Y no tengo boca."; // every time a secret is found -SWWM_SUBS_DEFAULT_FINDSECRET1 = "Sí, sí, soy la mejor."; -SWWM_SUBS_DEFAULT_FINDSECRET2 = "Es verdad. Molo bastante."; -SWWM_SUBS_DEFAULT_FINDSECRET3 = "¿Que puedo decir? Se me da bien lo que hago."; -SWWM_SUBS_DEFAULT_FINDSECRET4 = "No ha sido para tanto."; -SWWM_SUBS_DEFAULT_FINDSECRET5 = "Ningún problema en absoluto."; -SWWM_SUBS_DEFAULT_FINDSECRET6 = "Fue fácil."; -SWWM_SUBS_DEFAULT_FINDSECRET7 = "Gracias a mí, sí."; -SWWM_SUBS_DEFAULT_FINDSECRET8 = "Fue visto y no visto."; -SWWM_SUBS_DEFAULT_FINDSECRET9 = "Fue pan comido."; -SWWM_SUBS_DEFAULT_FINDSECRET10 = "Todavía tengo mi don."; -SWWM_SUBS_DEFAULT_FINDSECRET11 = "He hecho un buen trabajo, ¿verdad?"; -SWWM_SUBS_DEFAULT_FINDSECRET12 = "Wow, ¡mira que suerte!"; -SWWM_SUBS_DEFAULT_FINDSECRET13 = "Sí, bueno, soy bastante guay."; +SWWM_SUBS_DEFAULT_FINDSECRET1 = "Oh, ¿eso era un secreto?"; +SWWM_SUBS_DEFAULT_FINDSECRET2 = "Sí, molo bastante."; +SWWM_SUBS_DEFAULT_FINDSECRET3 = "Jajaja... Eso no ha sido para tanto."; +SWWM_SUBS_DEFAULT_FINDSECRET4 = "Sí, ningún problema en absoluto."; +SWWM_SUBS_DEFAULT_FINDSECRET5 = "Facilísimo."; +SWWM_SUBS_DEFAULT_FINDSECRET6 = "Está chupado."; +SWWM_SUBS_DEFAULT_FINDSECRET7 = "Sí, todo cosa mía."; +SWWM_SUBS_DEFAULT_FINDSECRET8 = "Vaya si pillé ese."; +SWWM_SUBS_DEFAULT_FINDSECRET9 = "Sí, se me da bien encontrar tesoros."; +SWWM_SUBS_DEFAULT_FINDSECRET10 = "Oh lo tengo pillado."; +SWWM_SUBS_DEFAULT_FINDSECRET11 = "Eso estuvo bien, ¿a que sí?"; +SWWM_SUBS_DEFAULT_FINDSECRET12 = "Que suerte tengo, ¿eh?"; +SWWM_SUBS_DEFAULT_FINDSECRET13 = "Bueno, a ver, se me da muy bien esto."; // frag taunts -SWWM_SUBS_DEFAULT_SCOREKILL1 = "A tomar viento."; -SWWM_SUBS_DEFAULT_SCOREKILL2 = "Uno menos."; -SWWM_SUBS_DEFAULT_SCOREKILL3 = "Adiós."; -SWWM_SUBS_DEFAULT_SCOREKILL4 = "¡Heh! No puedes pararme."; -SWWM_SUBS_DEFAULT_SCOREKILL5 = "Perdedor."; -SWWM_SUBS_DEFAULT_SCOREKILL6 = "Se acabó lo nuestro."; -SWWM_SUBS_DEFAULT_SCOREKILL7 = "Chao."; -SWWM_SUBS_DEFAULT_SCOREKILL8 = "Bien muerto."; -SWWM_SUBS_DEFAULT_SCOREKILL9 = "Otro trabajo hecho."; -SWWM_SUBS_DEFAULT_SCOREKILL10 = "El placer ha sido mío."; -SWWM_SUBS_DEFAULT_SCOREKILL11 = "¿Que tal algo más desafiante la próxima vez?"; -SWWM_SUBS_DEFAULT_SCOREKILL12 = "Me alegro de que se haya terminado."; -SWWM_SUBS_DEFAULT_SCOREKILL13 = "Bueno, se acabó. Ya está."; -SWWM_SUBS_DEFAULT_SCOREKILL14 = "Hecho."; -SWWM_SUBS_DEFAULT_SCOREKILL15 = "Piérdete."; -SWWM_SUBS_DEFAULT_SCOREKILL16 = "¿Eso es todo?"; -SWWM_SUBS_DEFAULT_SCOREKILL17 = "¿Eso es lo mejor que puedes hacer?"; -SWWM_SUBS_DEFAULT_SCOREKILL18 = "Molestas."; -SWWM_SUBS_DEFAULT_SCOREKILL19 = "Vas a tener que esforzarte más."; -SWWM_SUBS_DEFAULT_SCOREKILL20 = "¿Que? ¿Ya está?"; -SWWM_SUBS_DEFAULT_SCOREKILL21 = "Fuera de aquí."; +SWWM_SUBS_DEFAULT_SCOREKILL1 = "Pírate."; +SWWM_SUBS_DEFAULT_SCOREKILL2 = "Uno más."; +SWWM_SUBS_DEFAULT_SCOREKILL3 = "Chao."; +SWWM_SUBS_DEFAULT_SCOREKILL4 = "Y otro más."; +SWWM_SUBS_DEFAULT_SCOREKILL5 = "Ni siquiera fue difícil."; +SWWM_SUBS_DEFAULT_SCOREKILL6 = "Hecho y hecho."; +SWWM_SUBS_DEFAULT_SCOREKILL7 = "Hasta luego."; +SWWM_SUBS_DEFAULT_SCOREKILL8 = "Otro más muerto."; +SWWM_SUBS_DEFAULT_SCOREKILL9 = "Así de fácil."; +SWWM_SUBS_DEFAULT_SCOREKILL10 = "El placer es mio."; +SWWM_SUBS_DEFAULT_SCOREKILL11 = "Intenta esforzarte más la próxima vez."; +SWWM_SUBS_DEFAULT_SCOREKILL12 = "Bueno, se acabó."; +SWWM_SUBS_DEFAULT_SCOREKILL14 = "Ya está."; +SWWM_SUBS_DEFAULT_SCOREKILL15 = "Eso, muérete."; +SWWM_SUBS_DEFAULT_SCOREKILL16 = "¿Que? ¿Eso era todo?"; +SWWM_SUBS_DEFAULT_SCOREKILL17 = "Guau, mira si era débil..."; +SWWM_SUBS_DEFAULT_SCOREKILL18 = "Date el piro ya, que molestas."; +SWWM_SUBS_DEFAULT_SCOREKILL19 = "Vas a necesitar más que eso para derrotarme."; +SWWM_SUBS_DEFAULT_SCOREKILL20 = "¿Que? ¿Muerto ya?"; +SWWM_SUBS_DEFAULT_SCOREKILL21 = "Jódete."; SWWM_SUBS_DEFAULT_SCOREKILL22 = "Un placer."; SWWM_SUBS_DEFAULT_SCOREKILL23 = "Fuera de mi camino."; -SWWM_SUBS_DEFAULT_SCOREKILL24 = "Quita de en medio."; +SWWM_SUBS_DEFAULT_SCOREKILL24 = "Aquí tienes tu ración especial de MUERE."; SWWM_SUBS_DEFAULT_SCOREKILL25 = "¿Quieres más?"; -SWWM_SUBS_DEFAULT_SCOREKILL26 = "Hecho y hecho."; // oopsies -SWWM_SUBS_DEFAULT_FRIENDKILL1 = "Oh dios mío."; -SWWM_SUBS_DEFAULT_FRIENDKILL2 = "Dios mío. Lo siento mucho."; -SWWM_SUBS_DEFAULT_FRIENDKILL3 = "Oh dios..."; -SWWM_SUBS_DEFAULT_FRIENDKILL4 = "Oh dios mío. ¿Estás bien?"; +SWWM_SUBS_DEFAULT_FRIENDKILL1 = "¡Oh no! ¡No no no no lo siento oh dios mío!"; +SWWM_SUBS_DEFAULT_FRIENDKILL2 = "¡Oh dios mío! Lo siento mucho..."; +SWWM_SUBS_DEFAULT_FRIENDKILL4 = "Oh dios mío no no no por favor..."; // getting hurt by monsters -SWWM_SUBS_DEFAULT_GETHIT1 = "Pues vale..."; +SWWM_SUBS_DEFAULT_GETHIT1 = "¡Au! ¡Que te jodan!"; SWWM_SUBS_DEFAULT_GETHIT2 = "*suspiro*"; -SWWM_SUBS_DEFAULT_GETHIT4 = "Perra."; -SWWM_SUBS_DEFAULT_GETHIT5 = "Capullo..."; -SWWM_SUBS_DEFAULT_GETHIT6 = "Molestas."; -SWWM_SUBS_DEFAULT_GETHIT7 = "Que te den."; -SWWM_SUBS_DEFAULT_GETHIT8 = "Tienes toda mi atención."; -SWWM_SUBS_DEFAULT_GETHIT9 = "Voy a acabar con esto ahora mismo."; -SWWM_SUBS_DEFAULT_GETHIT10 = "Mira que eres cansino."; -SWWM_SUBS_DEFAULT_GETHIT11 = "Eso no ha valido."; +SWWM_SUBS_DEFAULT_GETHIT3 = "Sí, buen disparo. Ahora muere."; +SWWM_SUBS_DEFAULT_GETHIT4 = "Oh, serás capullo."; +SWWM_SUBS_DEFAULT_GETHIT5 = "Cómo te atreves..."; +SWWM_SUBS_DEFAULT_GETHIT6 = "Oh, vas a lamentar eso."; +SWWM_SUBS_DEFAULT_GETHIT7 = "¿Sí? ¡Pues que te jodan a ti también."; +SWWM_SUBS_DEFAULT_GETHIT8 = "Vale, ya me has llamado la atención."; +SWWM_SUBS_DEFAULT_GETHIT9 = "Esto acaba ahora."; +SWWM_SUBS_DEFAULT_GETHIT10 = "Me estás cabreando."; +SWWM_SUBS_DEFAULT_GETHIT11 = "Y una polla como la manga de un abrigo (lo cual no estaría mal)."; SWWM_SUBS_DEFAULT_GETHIT12 = "¿En serio?"; -SWWM_SUBS_DEFAULT_GETHIT13 = "Vas a tener que esforzarte más."; -SWWM_SUBS_DEFAULT_GETHIT14 = "Fuera de aquí."; -SWWM_SUBS_DEFAULT_GETHIT15 = "Y ahora es tu turno."; -SWWM_SUBS_DEFAULT_GETHIT16 = "Hora de hacerte callar de una vez por todas."; -SWWM_SUBS_DEFAULT_GETHIT17 = "No vas a salir de aquí de una pieza."; -SWWM_SUBS_DEFAULT_GETHIT18 = "Parece que estás enfadado..."; -SWWM_SUBS_DEFAULT_GETHIT19 = "Ugh. Déjame en paz."; +SWWM_SUBS_DEFAULT_GETHIT13 = "Es solo un rasguño."; +SWWM_SUBS_DEFAULT_GETHIT14 = "Oh, jódete."; +SWWM_SUBS_DEFAULT_GETHIT15 = "Y ahora es tu turno..."; +SWWM_SUBS_DEFAULT_GETHIT16 = "Ya estás muerto..."; +SWWM_SUBS_DEFAULT_GETHIT17 = "No vas a salir de aquí con vida."; +SWWM_SUBS_DEFAULT_GETHIT18 = "Vale, ya lo pillo."; +SWWM_SUBS_DEFAULT_GETHIT19 = "¡Ugh! Puto... déjame... joder..."; // getting hurt by friendlies -SWWM_SUBS_DEFAULT_FRIENDHIT1 = "¿Te has enfadado conmigo?"; -SWWM_SUBS_DEFAULT_FRIENDHIT2 = "¿En serio?"; -SWWM_SUBS_DEFAULT_FRIENDHIT3 = "¿Que? ¿Por que?"; -SWWM_SUBS_DEFAULT_FRIENDHIT4 = "Eso no ha sido muy educado."; -SWWM_SUBS_DEFAULT_FRIENDHIT5 = "Perdona, ¿que?"; -SWWM_SUBS_DEFAULT_FRIENDHIT6 = "No eres muy amigable, ¿verdad?"; -SWWM_SUBS_DEFAULT_FRIENDHIT7 = "Eh, eh. Tranquilidad."; +SWWM_SUBS_DEFAULT_FRIENDHIT1 = "¿Eh a que ha venido eso?"; +SWWM_SUBS_DEFAULT_FRIENDHIT2 = "¿Que estas haciendo?"; +SWWM_SUBS_DEFAULT_FRIENDHIT3 = "¿Eh? ¿Por que?"; +SWWM_SUBS_DEFAULT_FRIENDHIT4 = "¡Guau, que grosero!"; +SWWM_SUBS_DEFAULT_FRIENDHIT5 = "¿Perdona?"; +SWWM_SUBS_DEFAULT_FRIENDHIT6 = "Eso no ha estado muy bien de tu parte..."; +SWWM_SUBS_DEFAULT_FRIENDHIT7 = "¡Eh! ¿Que haces?"; // hurting a friendly -SWWM_SUBS_DEFAULT_HITFRIEND1 = "Lo... siento."; -SWWM_SUBS_DEFAULT_HITFRIEND2 = "Lo siento."; -SWWM_SUBS_DEFAULT_HITFRIEND3 = "Perdón."; +SWWM_SUBS_DEFAULT_HITFRIEND1 = "Ah... ¡Lo siento!"; +SWWM_SUBS_DEFAULT_HITFRIEND2 = "¡Lo siento!"; +SWWM_SUBS_DEFAULT_HITFRIEND3 = "¡Culpa mía!"; // greeting another player -SWWM_SUBS_DEFAULT_GREET1 = "Hola."; -SWWM_SUBS_DEFAULT_GREET2 = "Hola que tal."; -SWWM_SUBS_DEFAULT_GREET3 = "Ey."; -SWWM_SUBS_DEFAULT_GREET4 = "Ey."; -SWWM_SUBS_DEFAULT_GREET5 = "Ey."; -SWWM_SUBS_DEFAULT_GREET6 = "Ey hola."; +SWWM_SUBS_DEFAULT_GREET1 = "Oh, hola."; +SWWM_SUBS_DEFAULT_GREET2 = "Hola."; +SWWM_SUBS_DEFAULT_GREET3 = "Hola que tal."; +SWWM_SUBS_DEFAULT_GREET5 = "Que tal."; +SWWM_SUBS_DEFAULT_GREET6 = "Hola."; SWWM_SUBS_DEFAULT_GREET7 = "Buenas."; // ragekit -SWWM_SUBS_DEFAULT_RAGEKIT1 = "¡¡¡¡¡AAAAAAAAAAAAAAAAAAAAAA!!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT2 = "¡¡¡JODEEEEEEEEERRRRRRRRRRR!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT3 = "¡¡JODERJODERJODERR!!"; +SWWM_SUBS_DEFAULT_RAGEKIT1 = "¡¡¡AGH MIERDA JODER JODER JODER!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT2 = "¡JODERJODERJODER!"; +SWWM_SUBS_DEFAULT_RAGEKIT3 = "¡¡¡NNGNGNGHHHHJODERRRRRRR!!!"; SWWM_SUBS_DEFAULT_RAGEKIT4 = "¡¡¡¡AAAAAAAAAARGH!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT5 = "¡¡¡¡MATARRRRRRR!!!!"; -SWWM_SUBS_DEFAULT_RAGEKIT6 = "¡¡¡RAAAARGH!!! ¡¡¡VENGAAAA!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT5 = "¡¡¡JODERMIEDAJODERJODERJODER!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT6 = "¡¡¡RAAAAAGHNGGHNHHGGAAAAAGGH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT7 = "¡¡¡JODEEEEEEEERRRRRRRR!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT8 = "¡¡¡JODER MIERDA JODER PIS CULO JODER!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT9 = "¡¡¡PORCULOJODERPISJODERMIERDA!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT10 = "¡¡¡PUTAVIRGENJODERMECAGOENTODOJODERRRR!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT11 = "¡¡¡MUERTE!!! ¡¡¡¡DESTRUCCIÓN!!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT12 = "¡¡¡VAISAMORIRTODOS!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT13 = "¡¡¡RRRGGHHH!!! ¡¡¡MATARRRRRRRRR!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT14 = "¡¡¡UUUUURRRRGGGGHHH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT15 = "¡¡¡AAAAAAARGHGGGH!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT16 = "¡¡¡JODERJODERJODERJODERJODEEEEEEERRRRR!!!"; +SWWM_SUBS_DEFAULT_RAGEKIT17 = "¡¡¡JÓDETEJÓDETEJÓDETEEEEEEE!!!"; +// "Greetings mortal, are you ready to die?" +SWWM_SUBS_DEFAULT_KORAXGREET1 = "Ehhhh... ¿Es una pregunta con trampa?"; +SWWM_SUBS_DEFAULT_KORAXGREET2 = "Oh, bien... Me encanta todo esto..."; +SWWM_SUBS_DEFAULT_KORAXGREET3 = "Bueno, ¿y tú?"; +SWWM_SUBS_DEFAULT_KORAXGREET4 = "Ugh... Por favor no te acerques tanto."; +SWWM_SUBS_DEFAULT_KORAXGREET5 = "Guau... Un bastardo feo de verdad."; +SWWM_SUBS_DEFAULT_KORAXGREET6 = "No sé ni por donde empezar con lo horrendo que eres."; +SWWM_SUBS_DEFAULT_KORAXGREET7 = "Puaj, que demonios... ¿En serio tienes esa pinta?"; +SWWM_SUBS_DEFAULT_KORAXGREET8 = "Ehhhhhhhh... ¿Perdona?"; +SWWM_SUBS_DEFAULT_KORAXGREET9 = "Bueno eso no es un saludo amigable."; +SWWM_SUBS_DEFAULT_KORAXGREET10 = "Sabes, te podría hacer la misma pregunta."; +SWWM_SUBS_DEFAULT_KORAXGREET11 = "Pues te iba a preguntar lo mismo."; +SWWM_SUBS_DEFAULT_KORAXGREET12 = "Bueno, estoy lista para patearte el trasero, ya que estamos."; +SWWM_SUBS_DEFAULT_KORAXGREET13 = "No, pero estoy lista para cenar. ¿Sabes si hay alguna buena pizzería por aquí?"; +// "My servants can smell your blood, human" +SWWM_SUBS_DEFAULT_KORAXBLOOD1 = "¿Sangre? ¿Que sangre?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD2 = "No, debes de estar equivocado. Mi sangre está en mi otro cuerpo."; +SWWM_SUBS_DEFAULT_KORAXBLOOD3 = "Sí, sí, lo que tu digas..."; +SWWM_SUBS_DEFAULT_KORAXBLOOD4 = "Pues creo que no."; +SWWM_SUBS_DEFAULT_KORAXBLOOD5 = "Ehm... Sabes que yo no tengo de eso, ¿verdad?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD6 = "Bueno, si tu lo dices..."; +SWWM_SUBS_DEFAULT_KORAXBLOOD7 = "Me da igual."; +SWWM_SUBS_DEFAULT_KORAXBLOOD8 = "¿Se supone que eso es una amenaza? Porque no está funcionando."; +SWWM_SUBS_DEFAULT_KORAXBLOOD9 = "Bueno, pues yo huelo como se mean encima de miedo. Y madre mía no quería saber como huele eso."; +SWWM_SUBS_DEFAULT_KORAXBLOOD10 = "Me importa un cagao, tío."; +SWWM_SUBS_DEFAULT_KORAXBLOOD11 = "Creo que me estás confundiendo con otra persona."; +SWWM_SUBS_DEFAULT_KORAXBLOOD12 = "... ¿Estás seguro de eso?"; +SWWM_SUBS_DEFAULT_KORAXBLOOD13 = "Ehhhhh... ¿Que?"; +// "You have played this game too long, mortal, I think I shall remove you from the board" +SWWM_SUBS_DEFAULT_KORAXGAME1 = "Ohhhh... No si te retiro yo a ti ese careto tuyo."; +SWWM_SUBS_DEFAULT_KORAXGAME2 = "Bueno, pues que te jodan."; +SWWM_SUBS_DEFAULT_KORAXGAME3 = "No estamos jugando al ajedrez."; +SWWM_SUBS_DEFAULT_KORAXGAME4 = "No lo creo, cara anchoa. Jugaré todo el tiempo que quiera."; +SWWM_SUBS_DEFAULT_KORAXGAME5 = "¿Estás intentando asustarme o algo?"; +SWWM_SUBS_DEFAULT_KORAXGAME6 = "Oh es que me va a encantar hacerte callar."; +SWWM_SUBS_DEFAULT_KORAXGAME7 = "Oh, estás muerto en cuanto te encuentre."; +SWWM_SUBS_DEFAULT_KORAXGAME8 = "¿De verdad? ¿Y como vas a hacer eso exactamente?"; +SWWM_SUBS_DEFAULT_KORAXGAME9 = "Por favor cállate ya..."; +SWWM_SUBS_DEFAULT_KORAXGAME10 = "Oh, que te follen. No eres quien manda aquí."; +SWWM_SUBS_DEFAULT_KORAXGAME11 = "Sí, tú sigue diciendo chorradas..."; +SWWM_SUBS_DEFAULT_KORAXGAME12 = "Oh, tú inténtalo. Ya verás lo que pasa."; +SWWM_SUBS_DEFAULT_KORAXGAME13 = "Me encantaría verte intentarlo, cara anchoa."; +SWWM_SUBS_DEFAULT_KORAXGAME14 = "No se de qué hablas y no me importa."; +// "Worship me and I may be yet merciful, then again, maybe not" +SWWM_SUBS_DEFAULT_KORAXWORSHIP1 = "... ¿Que?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP2 = "Lo siento, los bastardos feos no son mi tipo."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP3 = "Ohhhhh, casi me pillas... ¡PUES NO!"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP4 = "Como si fuera a hacer eso. Que te jodan."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP5 = "Psch... Menudo capullo monumental..."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP6 = "Sí sí, lo que sea, más mierdas..."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP7 = "Bla, bla, bla..."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP8 = "Lo siento, no te oigo con el sonido de lo idiota que eres."; +SWWM_SUBS_DEFAULT_KORAXWORSHIP9 = "¿Que coño te estás fumando?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP10 = "¿Que, crees que eres un dios ahora?"; +SWWM_SUBS_DEFAULT_KORAXWORSHIP11 = "Cállate ya. Me da igual."; +// "Are you strong enough to face your own masters?" +SWWM_SUBS_DEFAULT_KORAXMASTERS1 = "Soy lo bastante fuerte como para partirte el puto culo."; +SWWM_SUBS_DEFAULT_KORAXMASTERS2 = "Me da igual."; +SWWM_SUBS_DEFAULT_KORAXMASTERS3 = "Sí, puede que sí."; +SWWM_SUBS_DEFAULT_KORAXMASTERS4 = "Bueno, si insistes..."; +SWWM_SUBS_DEFAULT_KORAXMASTERS5 = "En serio que me estás confundiendo con otra persona, tío."; +SWWM_SUBS_DEFAULT_KORAXMASTERS6 = "Sí... sí, así es."; +SWWM_SUBS_DEFAULT_KORAXMASTERS7 = "Sí, lo soy."; +SWWM_SUBS_DEFAULT_KORAXMASTERS8 = "¿Y a ti que te importa?"; +SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Por favor cállate la puta boca ya."; +/// Extra lines that wouldn't be possible without original voice acting +// per-weapon lines (alternative) +SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "Soplaré y soplaré... y vuestra casa derribaré."; +SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "¿Alguien quiere que le quite las caries?"; +SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, mi fiel amigo."; +SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Doble poder revienta-rodillas."; +SWWM_SUBS_DEFAULT_GETSPREADGUN = "Mira que escopetita."; +SWWM_SUBS_DEFAULT_GETWALLBUSTER = "25 cañones, más que suficiente para reventar todo."; +SWWM_SUBS_DEFAULT_GETEVISCERATOR = "¡Cañón antiaéreo!"; +SWWM_SUBS_DEFAULT_GETHELLBLAZER = "Hora de que arda el infierno... je."; +SWWM_SUBS_DEFAULT_GETSPARKSTER = "Hola, chispín. Vamos a divertirnos."; +SWWM_SUBS_DEFAULT_GETSILVERBULLET = "Ahora ESTO si que es un arma."; +SWWM_SUBS_DEFAULT_GETCANDYGUN = "Dulce... y letal."; +SWWM_SUBS_DEFAULT_GETYNYKRON = "Hora de soltarle una supernova a estos capullos."; +SWWM_SUBS_DEFAULT_GETITAMEXHAMMER = "Os voy a martillear bien."; +SWWM_SUBS_DEFAULT_GETPLASMABLAST1 = "Soltando plasma."; +SWWM_SUBS_DEFAULT_GETPLASMABLAST2 = "Ahora sí. El doble de diversión."; +SWWM_SUBS_DEFAULT_GETPUNTZERBETA = "Os voy a taladrar bien taladrados."; // said with a cheap cowboy accent +SWWM_SUBS_DEFAULT_GETPUNTZERGAMMA = "¿Automático y... superautomático? Vaya vaya..."; +SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "¡Metralleta Pesada!"; +SWWM_SUBS_DEFAULT_GETQUADRAVOL = "Así las llamas de la Cruz Ardiente se propagaron a través de la horda..."; +SWWM_SUBS_DEFAULT_GETNEWSPARKSTER = "Me gustan las armas de plasma grandes."; +SWWM_SUBS_DEFAULT_GETMORTALRIFLE = "Bienvenido a bordo, Míster."; +SWWM_SUBS_DEFAULT_GETRAYKHOM = "Pero mira que TOCHO es esto, joder..."; +SWWM_SUBS_DEFAULT_GETRAFANKOS = "Definitiva... Me gusta como suena eso."; +// key received +SWWM_SUBS_DEFAULT_KEYGET1 = "Te tengo."; +SWWM_SUBS_DEFAULT_KEYGET2 = "Tengo la llave."; +SWWM_SUBS_DEFAULT_KEYGET3 = "Hm, brilla."; +SWWM_SUBS_DEFAULT_KEYGET4 = "Esto me va a hacer falta."; +SWWM_SUBS_DEFAULT_KEYGET5 = "¿Quien tiene la llave? Yo tengo la llave."; +// use fail (randomly plays after humping walls too often) +SWWM_SUBS_DEFAULT_USEFAIL1 = "Pues no."; +SWWM_SUBS_DEFAULT_USEFAIL2 = "Aquí no hay nada."; +SWWM_SUBS_DEFAULT_USEFAIL4 = "No furrula."; +SWWM_SUBS_DEFAULT_USEFAIL5 = "Todavía nada."; +SWWM_SUBS_DEFAULT_USEFAIL6 = "¿Donde está...?"; +SWWM_SUBS_DEFAULT_USEFAIL7 = "¿Ábrete sésamo?"; +SWWM_SUBS_DEFAULT_USEFAIL8 = "Eso no va a funcionar."; +SWWM_SUBS_DEFAULT_USEFAIL9 = "Pues sí, nada."; +// collectible received +SWWM_SUBS_DEFAULT_CUBEGET = "Cubo..."; +SWWM_SUBS_DEFAULT_AKARIGET = "Realmente tengo que leer esto cuando pueda."; +SWWM_SUBS_DEFAULT_SIGNALSGET = "Ahhh... Las canciones de Meido-chan, son tan buenas~"; +SWWM_SUBS_DEFAULT_NUTATCOGET = "¿NUTATCO?"; +SWWM_SUBS_DEFAULT_FRISPYGET = "*risita* El aperitivo favorito de Sayacchi."; +SWWM_SUBS_DEFAULT_SAYAGET = "Peluchito suave..."; +SWWM_SUBS_DEFAULT_MOTHGET = "Ah, la waifu de Sayacchi."; +SWWM_SUBS_DEFAULT_DEMOGET = "Jejeje, mi propio peluche."; +SWWM_SUBS_DEFAULT_PEACHGET = "Espera, esto es... *risita*"; +SWWM_SUBS_DEFAULT_BREADGET = "Suaves bollitos jugosos..."; +SWWM_SUBS_DEFAULT_MANGAGET = "Sutil, Sayacchi. Muy sutil..."; +// *ungodly screeching* +SWWM_SUBS_DEFAULT_KORAX1 = "¡Oh dios mío eres aun más feo en persona!"; +SWWM_SUBS_DEFAULT_KORAX2 = "Ah, el bastardo feo en persona."; +SWWM_SUBS_DEFAULT_KORAX3 = "¿Que coño es eso? ¿Te has fusionado con tu serpiente o algo?"; +SWWM_SUBS_DEFAULT_KORAX4 = "Bueno adivina quien se va a retirar del tablero hoy..."; +SWWM_SUBS_DEFAULT_KORAX5 = "Guau, menuda pinta."; +SWWM_SUBS_DEFAULT_KORAX6 = "No es por ofender, pero pareces un monstruo de fantasía cutre."; +SWWM_SUBS_DEFAULT_KORAX7 = "Ya ya, *griiiiiiii* a ti también."; // use a robot-filtered version of Korax's sight sound there +SWWM_SUBS_DEFAULT_KORAX8 = "Qué, no eres tan hablador en persona, ¿eh?"; +SWWM_SUBS_DEFAULT_KORAX9 = "Oh, así que ese olor a rancio eras tú al final."; +// "!oremoR nhoJ ,em llik tsum uoy emag eht niw oT" +SWWM_SUBS_DEFAULT_ROMERO1 = "¿Que?"; +SWWM_SUBS_DEFAULT_ROMERO2 = "Lo siento, no hablo el idioma que sea ese."; +SWWM_SUBS_DEFAULT_ROMERO3 = "Vaya si es grandote..."; +SWWM_SUBS_DEFAULT_ROMERO4 = "No te preocupes, acabaré rápido."; +SWWM_SUBS_DEFAULT_ROMERO5 = "Tienes un agujero muy grande ahí, ¿te importa que dispare dentro?"; +SWWM_SUBS_DEFAULT_ROMERO6 = "Tío, ¿estás bien? Tu cerebro está chorreando algo."; +SWWM_SUBS_DEFAULT_ROMERO7 = "Hora del jefe final, ¿eh?"; +SWWM_SUBS_DEFAULT_ROMERO8 = ".oremoR nhoJ ,anatakiaD ed ogeuj ut atnacne eM"; +// "Foolish mortal, only your death is eternal!" +SWWM_SUBS_DEFAULT_ARCHANGELUS1 = "... ¿Que?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS2 = "Necio es el necio que llama a otros necios, necio."; +SWWM_SUBS_DEFAULT_ARCHANGELUS3 = "Lo que va a ser eterna es la patada en el culo que te voy a dar."; +SWWM_SUBS_DEFAULT_ARCHANGELUS4 = "Bonito disfraz, ¿te lo hizo tu mamá?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS5 = "Oh, pero mírate con tus bonitas alitas y todo."; +SWWM_SUBS_DEFAULT_ARCHANGELUS6 = "Ya ya, siempre es lo mismo con gente como tú."; +SWWM_SUBS_DEFAULT_ARCHANGELUS7 = "Bueno, pero vosotros vais a tope con la mierda de pretender ser dioses, ¿no?"; +SWWM_SUBS_DEFAULT_ARCHANGELUS8 = "Me parece que voy a tener que hacerte entenderlo a ostias."; +// "hself ruoy erutrot lliw I" (supposedly) +SWWM_SUBS_DEFAULT_DSPARILA1 = "Oh pero mírate, si es caperucita roja."; +SWWM_SUBS_DEFAULT_DSPARILA2 = "¿Por que no te bajas de esa cosa y hablamos?"; +SWWM_SUBS_DEFAULT_DSPARILA3 = "Voy a fregar el suelo contigo, friki."; +SWWM_SUBS_DEFAULT_DSPARILB1 = "¿Pero que os pasa a todos con lo de hablar al revés?"; +SWWM_SUBS_DEFAULT_DSPARILB2 = "Lo siento, ¿podrías repetir eso?"; +SWWM_SUBS_DEFAULT_DSPARILB3 = "séver la ralbah odeup néibmat oY."; // record this line normally then just reverse it, really +// (H-Doom compat) Demon girl petting +SWWM_SUBS_DEFAULT_PETHDOOM1 = "Buena chica~"; +SWWM_SUBS_DEFAULT_PETHDOOM2 = "Eh, no tienes por qué pelear."; +SWWM_SUBS_DEFAULT_PETHDOOM3 = "No te voy a hacer daño."; +SWWM_SUBS_DEFAULT_PETHDOOM4 = "Ya está, ya pasó..."; +SWWM_SUBS_DEFAULT_PETHDOOM5 = "No pasa nada, seamos amigas."; +SWWM_SUBS_DEFAULT_PETHDOOM6 = "Tranquila, todo está bien."; +SWWM_SUBS_DEFAULT_PETHDOOM7 = "Que mona eres~"; +SWWM_SUBS_DEFAULT_PETHDOOM8 = "Jeje... Tienes un pelo tan suave~"; +SWWM_SUBS_DEFAULT_PETHDOOM9 = "Buena chica... Buena chica..."; +// (H-Doom compat) Aroused demon girl petting +SWWM_SUBS_DEFAULT_PETHDOOMFINISH1 = "Te gusta que te acaricien, ¿no?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH2 = "Ya está, todo va bien..."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH3 = "Te ponen mis caricias, ¿a que sí?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH4 = "Puedo hacer esto, por lo menos."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH5 = "Sienta bien, ¿verdad?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH6 = "Un tacto cariñoso es todo lo que necesitas~"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH7 = "Llámame luego, ¿vale?"; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH8 = "Vaya, vaya... Estás tan sonrojada..."; +SWWM_SUBS_DEFAULT_PETHDOOMFINISH9 = "Jeje... De nada."; +// White Lady petting +SWWM_SUBS_DEFAULT_PETMASHIRO1 = "Polilla suave..."; +SWWM_SUBS_DEFAULT_PETMASHIRO2 = "Te gusta mi lámpara, ¿verdad?"; +SWWM_SUBS_DEFAULT_PETMASHIRO3 = "Eres tan guapa~"; +SWWM_SUBS_DEFAULT_PETMASHIRO4 = "Gracias por tu ayuda, señorita."; +SWWM_SUBS_DEFAULT_PETMASHIRO5 = "Ya está... buena chica..."; +SWWM_SUBS_DEFAULT_PETMASHIRO6 = "Jeje... bonita chica polilla~"; +SWWM_SUBS_DEFAULT_PETMASHIRO7 = "Buena amiga~"; +// Button pushing +SWWM_SUBS_DEFAULT_BUTTONPUSH1 = "Bip."; +SWWM_SUBS_DEFAULT_BUTTONPUSH2 = "Bup."; +// Fall "scream" +SWWM_SUBS_DEFAULT_FALLING = "¡Wiiiiiiiiiiii~!"; +//// LEGACY VOICE - Fallout 4 JP Sole Survivor +// voice name +SWWM_VOICENAME_DEFAULT = "Clásico"; +// new weapon received +SWWM_SUBS_LEGACY_GETWEAPON1 = "No está mal... No está mal para nada..."; +SWWM_SUBS_LEGACY_GETWEAPON2 = "Buena pesca..."; +SWWM_SUBS_LEGACY_GETWEAPON3 = "Ahora es mío..."; +SWWM_SUBS_LEGACY_GETWEAPON4 = "Bien..."; +SWWM_SUBS_LEGACY_GETWEAPON5 = "Bingo..."; +SWWM_SUBS_LEGACY_GETWEAPON6 = "Toma ya..."; +SWWM_SUBS_LEGACY_GETWEAPON7 = "Excelente..."; +SWWM_SUBS_LEGACY_GETWEAPON8 = "Sí..."; +SWWM_SUBS_LEGACY_GETWEAPON9 = "Eso es..."; +SWWM_SUBS_LEGACY_GETWEAPON10 = "Perfecto..."; +SWWM_SUBS_LEGACY_GETWEAPON11 = "Me gusta..."; +SWWM_SUBS_LEGACY_GETWEAPON12 = "Tiene buena pinta..."; +SWWM_SUBS_LEGACY_GETWEAPON13 = "Probablemente cueste una fortuna..."; +// locked door +SWWM_SUBS_LEGACY_LOCKED1 = "No tengo la llave."; +SWWM_SUBS_LEGACY_LOCKED2 = "Solo abre con una llave."; +SWWM_SUBS_LEGACY_LOCKED3 = "Necesitaría la llave."; +SWWM_SUBS_LEGACY_LOCKED4 = "Cerrado a cal y canto."; +// jammed door (strife) +SWWM_SUBS_LEGACY_JAMMED1 = "Está atrancada."; +SWWM_SUBS_LEGACY_JAMMED2 = "Nada."; +SWWM_SUBS_LEGACY_JAMMED3 = "Atrancada."; +SWWM_SUBS_LEGACY_JAMMED4 = "Es inútil."; +// puzzle item failure +SWWM_SUBS_LEGACY_PUZZFAIL1 = "Maldición."; +SWWM_SUBS_LEGACY_PUZZFAIL2 = "Maldita sea."; +SWWM_SUBS_LEGACY_PUZZFAIL3 = "No bueno."; +SWWM_SUBS_LEGACY_PUZZFAIL4 = "Pues no."; +// puzzle item success +SWWM_SUBS_LEGACY_PUZZSUCC1 = "Bien."; +SWWM_SUBS_LEGACY_PUZZSUCC2 = "Eso es."; +SWWM_SUBS_LEGACY_PUZZSUCC3 = "Lo tengo."; +SWWM_SUBS_LEGACY_PUZZSUCC4 = "Sí."; +SWWM_SUBS_LEGACY_PUZZSUCC5 = "Mola."; +// first enemy encounter (20 seconds cooldown since all enemies dead) +SWWM_SUBS_LEGACY_FIGHTSTART1 = "Ya estamos otra vez."; +SWWM_SUBS_LEGACY_FIGHTSTART2 = "Que empiece el espectáculo."; +SWWM_SUBS_LEGACY_FIGHTSTART3 = "Hora de morir."; +SWWM_SUBS_LEGACY_FIGHTSTART4 = "Ven a por mí."; +SWWM_SUBS_LEGACY_FIGHTSTART5 = "Vais a morir todos."; +SWWM_SUBS_LEGACY_FIGHTSTART6 = "Ya tenía ganas de pelea."; +SWWM_SUBS_LEGACY_FIGHTSTART7 = "Vamos con esto."; +SWWM_SUBS_LEGACY_FIGHTSTART8 = "¡Hora de liarla! ¡A matarlos a todos!"; +SWWM_SUBS_LEGACY_FIGHTSTART9 = "En serio que no querrías empezar una pelea conmigo."; +SWWM_SUBS_LEGACY_FIGHTSTART10 = "Vamos al asunto."; +SWWM_SUBS_LEGACY_FIGHTSTART11 = "¡Matar!"; +SWWM_SUBS_LEGACY_FIGHTSTART12 = "Esto no será difícil."; +SWWM_SUBS_LEGACY_FIGHTSTART13 = "Vamos allá."; +SWWM_SUBS_LEGACY_FIGHTSTART14 = "Hagamos esto."; +SWWM_SUBS_LEGACY_FIGHTSTART15 = "Acabemos con esto."; +SWWM_SUBS_LEGACY_FIGHTSTART16 = "Bueno, esto será un desafío interesante."; +SWWM_SUBS_LEGACY_FIGHTSTART17 = "OK. Empecemos con esto."; +SWWM_SUBS_LEGACY_FIGHTSTART18 = "Oh, esto es justo lo que necesitaba ahora..."; +SWWM_SUBS_LEGACY_FIGHTSTART19 = "Hora de montar un espectáculo."; +SWWM_SUBS_LEGACY_FIGHTSTART20 = "Te voy a eliminar."; +SWWM_SUBS_LEGACY_FIGHTSTART21 = "Oh, bien. Y yo que me temía no tener nada que hacer.."; +// played at map start +SWWM_SUBS_LEGACY_MAPSTART1 = "Ugh... este sitio apesta."; +SWWM_SUBS_LEGACY_MAPSTART2 = "OK, manos a la obra."; +SWWM_SUBS_LEGACY_MAPSTART3 = "Arreando que es gerundio."; +SWWM_SUBS_LEGACY_MAPSTART4 = "Este sitio tiene muy mala pinta."; +SWWM_SUBS_LEGACY_MAPSTART5 = "Nací preparada."; +SWWM_SUBS_LEGACY_MAPSTART6 = "La vida es dura, hago lo que tengo que hacer."; +SWWM_SUBS_LEGACY_MAPSTART7 = "Ningún robot es mejor que yo."; +SWWM_SUBS_LEGACY_MAPSTART8 = "Los he visto mejores."; +SWWM_SUBS_LEGACY_MAPSTART9 = "OK. Vamos para allá."; +SWWM_SUBS_LEGACY_MAPSTART10 = "No quiero problemas. Solo estoy de camino."; +SWWM_SUBS_LEGACY_MAPSTART11 = "Siento haceros esperar."; +SWWM_SUBS_LEGACY_MAPSTART12 = "Haré lo mejor que pueda."; +SWWM_SUBS_LEGACY_MAPSTART13 = "Que quede claro: Todo lo bueno que encuentre es mío."; +SWWM_SUBS_LEGACY_MAPSTART14 = "Seguro que la comida aquí es terrible."; +// every time a secret is found +SWWM_SUBS_LEGACY_FINDSECRET1 = "Sí, sí, soy la mejor."; +SWWM_SUBS_LEGACY_FINDSECRET2 = "Es verdad. Molo bastante."; +SWWM_SUBS_LEGACY_FINDSECRET3 = "¿Que puedo decir? Se me da bien lo que hago."; +SWWM_SUBS_LEGACY_FINDSECRET4 = "No ha sido para tanto."; +SWWM_SUBS_LEGACY_FINDSECRET5 = "Ningún problema en absoluto."; +SWWM_SUBS_LEGACY_FINDSECRET6 = "Fue fácil."; +SWWM_SUBS_LEGACY_FINDSECRET7 = "Gracias a mí, sí."; +SWWM_SUBS_LEGACY_FINDSECRET8 = "Fue visto y no visto."; +SWWM_SUBS_LEGACY_FINDSECRET9 = "Fue pan comido."; +SWWM_SUBS_LEGACY_FINDSECRET10 = "Todavía tengo mi don."; +SWWM_SUBS_LEGACY_FINDSECRET11 = "He hecho un buen trabajo, ¿verdad?"; +SWWM_SUBS_LEGACY_FINDSECRET12 = "Wow, ¡mira que suerte!"; +SWWM_SUBS_LEGACY_FINDSECRET13 = "Sí, bueno, soy bastante guay."; +// frag taunts +SWWM_SUBS_LEGACY_SCOREKILL1 = "A tomar viento."; +SWWM_SUBS_LEGACY_SCOREKILL2 = "Uno menos."; +SWWM_SUBS_LEGACY_SCOREKILL3 = "Adiós."; +SWWM_SUBS_LEGACY_SCOREKILL4 = "¡Heh! No puedes pararme."; +SWWM_SUBS_LEGACY_SCOREKILL5 = "Perdedor."; +SWWM_SUBS_LEGACY_SCOREKILL6 = "Se acabó lo nuestro."; +SWWM_SUBS_LEGACY_SCOREKILL7 = "Chao."; +SWWM_SUBS_LEGACY_SCOREKILL8 = "Bien muerto."; +SWWM_SUBS_LEGACY_SCOREKILL9 = "Otro trabajo hecho."; +SWWM_SUBS_LEGACY_SCOREKILL10 = "El placer ha sido mío."; +SWWM_SUBS_LEGACY_SCOREKILL11 = "¿Que tal algo más desafiante la próxima vez?"; +SWWM_SUBS_LEGACY_SCOREKILL12 = "Me alegro de que se haya terminado."; +SWWM_SUBS_LEGACY_SCOREKILL13 = "Bueno, se acabó. Ya está."; +SWWM_SUBS_LEGACY_SCOREKILL14 = "Hecho."; +SWWM_SUBS_LEGACY_SCOREKILL15 = "Piérdete."; +SWWM_SUBS_LEGACY_SCOREKILL16 = "¿Eso es todo?"; +SWWM_SUBS_LEGACY_SCOREKILL17 = "¿Eso es lo mejor que puedes hacer?"; +SWWM_SUBS_LEGACY_SCOREKILL18 = "Molestas."; +SWWM_SUBS_LEGACY_SCOREKILL19 = "Vas a tener que esforzarte más."; +SWWM_SUBS_LEGACY_SCOREKILL20 = "¿Que? ¿Ya está?"; +SWWM_SUBS_LEGACY_SCOREKILL21 = "Fuera de aquí."; +SWWM_SUBS_LEGACY_SCOREKILL22 = "Un placer."; +SWWM_SUBS_LEGACY_SCOREKILL23 = "Fuera de mi camino."; +SWWM_SUBS_LEGACY_SCOREKILL24 = "Quita de en medio."; +SWWM_SUBS_LEGACY_SCOREKILL25 = "¿Quieres más?"; +SWWM_SUBS_LEGACY_SCOREKILL26 = "Hecho y hecho."; +// oopsies +SWWM_SUBS_LEGACY_FRIENDKILL1 = "Oh dios mío."; +SWWM_SUBS_LEGACY_FRIENDKILL2 = "Dios mío. Lo siento mucho."; +SWWM_SUBS_LEGACY_FRIENDKILL3 = "Oh dios..."; +SWWM_SUBS_LEGACY_FRIENDKILL4 = "Oh dios mío. ¿Estás bien?"; +// getting hurt by monsters +SWWM_SUBS_LEGACY_GETHIT1 = "Pues vale..."; +SWWM_SUBS_LEGACY_GETHIT2 = "*suspiro*"; +SWWM_SUBS_LEGACY_GETHIT4 = "Perra."; +SWWM_SUBS_LEGACY_GETHIT5 = "Capullo..."; +SWWM_SUBS_LEGACY_GETHIT6 = "Molestas."; +SWWM_SUBS_LEGACY_GETHIT7 = "Que te den."; +SWWM_SUBS_LEGACY_GETHIT8 = "Tienes toda mi atención."; +SWWM_SUBS_LEGACY_GETHIT9 = "Voy a acabar con esto ahora mismo."; +SWWM_SUBS_LEGACY_GETHIT10 = "Mira que eres cansino."; +SWWM_SUBS_LEGACY_GETHIT11 = "Eso no ha valido."; +SWWM_SUBS_LEGACY_GETHIT12 = "¿En serio?"; +SWWM_SUBS_LEGACY_GETHIT13 = "Vas a tener que esforzarte más."; +SWWM_SUBS_LEGACY_GETHIT14 = "Fuera de aquí."; +SWWM_SUBS_LEGACY_GETHIT15 = "Y ahora es tu turno."; +SWWM_SUBS_LEGACY_GETHIT16 = "Hora de hacerte callar de una vez por todas."; +SWWM_SUBS_LEGACY_GETHIT17 = "No vas a salir de aquí de una pieza."; +SWWM_SUBS_LEGACY_GETHIT18 = "Parece que estás enfadado..."; +SWWM_SUBS_LEGACY_GETHIT19 = "Ugh. Déjame en paz."; +// getting hurt by friendlies +SWWM_SUBS_LEGACY_FRIENDHIT1 = "¿Te has enfadado conmigo?"; +SWWM_SUBS_LEGACY_FRIENDHIT2 = "¿En serio?"; +SWWM_SUBS_LEGACY_FRIENDHIT3 = "¿Que? ¿Por que?"; +SWWM_SUBS_LEGACY_FRIENDHIT4 = "Eso no ha sido muy educado."; +SWWM_SUBS_LEGACY_FRIENDHIT5 = "Perdona, ¿que?"; +SWWM_SUBS_LEGACY_FRIENDHIT6 = "No eres muy amigable, ¿verdad?"; +SWWM_SUBS_LEGACY_FRIENDHIT7 = "Eh, eh. Tranquilidad."; +// hurting a friendly +SWWM_SUBS_LEGACY_HITFRIEND1 = "Lo... siento."; +SWWM_SUBS_LEGACY_HITFRIEND2 = "Lo siento."; +SWWM_SUBS_LEGACY_HITFRIEND3 = "Perdón."; +// greeting another player +SWWM_SUBS_LEGACY_GREET1 = "Hola."; +SWWM_SUBS_LEGACY_GREET2 = "Hola que tal."; +SWWM_SUBS_LEGACY_GREET3 = "Ey."; +SWWM_SUBS_LEGACY_GREET4 = "Ey."; +SWWM_SUBS_LEGACY_GREET5 = "Ey."; +SWWM_SUBS_LEGACY_GREET6 = "Ey hola."; +SWWM_SUBS_LEGACY_GREET7 = "Buenas."; +// ragekit +SWWM_SUBS_LEGACY_RAGEKIT1 = "¡¡¡¡¡AAAAAAAAAAAAAAAAAAAAAA!!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT2 = "¡¡¡JODEEEEEEEEERRRRRRRRRRR!!!"; +SWWM_SUBS_LEGACY_RAGEKIT3 = "¡¡JODERJODERJODERR!!"; +SWWM_SUBS_LEGACY_RAGEKIT4 = "¡¡¡¡AAAAAAAAAARGH!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT5 = "¡¡¡¡MATARRRRRRR!!!!"; +SWWM_SUBS_LEGACY_RAGEKIT6 = "¡¡¡RAAAARGH!!! ¡¡¡VENGAAAA!!!"; // --- comebacks for korax hub lines --- // "Greetings mortal, are you ready to die?" -SWWM_SUBS_DEFAULT_KORAXGREET1 = "Oh vaya. Ya está. Yo me largo."; -SWWM_SUBS_DEFAULT_KORAXGREET2 = "Bien... todo muy bien."; -SWWM_SUBS_DEFAULT_KORAXGREET3 = "No quiero lo que sea que me estés vendiendo."; -SWWM_SUBS_DEFAULT_KORAXGREET4 = "La verdad... no eres mi tipo."; -SWWM_SUBS_DEFAULT_KORAXGREET5 = "La primera palabra que tengo en mente es 'feo'."; -SWWM_SUBS_DEFAULT_KORAXGREET6 = "Pareces como algo que quedó en la nevera demasiado tiempo."; -SWWM_SUBS_DEFAULT_KORAXGREET7 = "Veo que venir aquí fue un error."; -SWWM_SUBS_DEFAULT_KORAXGREET8 = "Me incomoda que me miren tan de cerca."; -SWWM_SUBS_DEFAULT_KORAXGREET9 = "Buena actitud..."; -SWWM_SUBS_DEFAULT_KORAXGREET10 = "Te podría preguntar lo mismo."; -SWWM_SUBS_DEFAULT_KORAXGREET11 = "Te iba a preguntar lo mismo."; -SWWM_SUBS_DEFAULT_KORAXGREET12 = "Solo busco la mayonesa. A lo mejor me la puedes dar. Segundo estante, justo al lado del flan."; -SWWM_SUBS_DEFAULT_KORAXGREET13 = "Vengo a recoger un pedido. Dos de peperoni grandes y un calzone. A nombre de 'Jódete'."; +SWWM_SUBS_LEGACY_KORAXGREET1 = "Oh vaya. Ya está. Yo me largo."; +SWWM_SUBS_LEGACY_KORAXGREET2 = "Bien... todo muy bien."; +SWWM_SUBS_LEGACY_KORAXGREET3 = "No quiero lo que sea que me estés vendiendo."; +SWWM_SUBS_LEGACY_KORAXGREET4 = "La verdad... no eres mi tipo."; +SWWM_SUBS_LEGACY_KORAXGREET5 = "La primera palabra que tengo en mente es 'feo'."; +SWWM_SUBS_LEGACY_KORAXGREET6 = "Pareces como algo que quedó en la nevera demasiado tiempo."; +SWWM_SUBS_LEGACY_KORAXGREET7 = "Veo que venir aquí fue un error."; +SWWM_SUBS_LEGACY_KORAXGREET8 = "Me incomoda que me miren tan de cerca."; +SWWM_SUBS_LEGACY_KORAXGREET9 = "Buena actitud..."; +SWWM_SUBS_LEGACY_KORAXGREET10 = "Te podría preguntar lo mismo."; +SWWM_SUBS_LEGACY_KORAXGREET11 = "Te iba a preguntar lo mismo."; +SWWM_SUBS_LEGACY_KORAXGREET12 = "Solo busco la mayonesa. A lo mejor me la puedes dar. Segundo estante, justo al lado del flan."; +SWWM_SUBS_LEGACY_KORAXGREET13 = "Vengo a recoger un pedido. Dos de peperoni grandes y un calzone. A nombre de 'Jódete'."; // "My servants can smell your blood, human" -SWWM_SUBS_DEFAULT_KORAXBLOOD1 = "Pervertido."; -SWWM_SUBS_DEFAULT_KORAXBLOOD2 = "Interesante saberlo."; -SWWM_SUBS_DEFAULT_KORAXBLOOD3 = "Lo que tú digas."; -SWWM_SUBS_DEFAULT_KORAXBLOOD4 = "Pues no creo yo."; -SWWM_SUBS_DEFAULT_KORAXBLOOD5 = "Um... sí... no lo creo..."; -SWWM_SUBS_DEFAULT_KORAXBLOOD6 = "Si tú lo dices."; -SWWM_SUBS_DEFAULT_KORAXBLOOD7 = "Me da igual."; -SWWM_SUBS_DEFAULT_KORAXBLOOD8 = "Lo que sea. Tampoco es que me importe."; -SWWM_SUBS_DEFAULT_KORAXBLOOD9 = "Me importa un cagao."; -SWWM_SUBS_DEFAULT_KORAXBLOOD10 = "Como si me importara una mierda..."; -SWWM_SUBS_DEFAULT_KORAXBLOOD11 = "Creo que me confundes con alguien a quien le importara una mierda."; -SWWM_SUBS_DEFAULT_KORAXBLOOD12 = "No estoy tan segura de eso."; -SWWM_SUBS_DEFAULT_KORAXBLOOD13 = "Cállate ya."; +SWWM_SUBS_LEGACY_KORAXBLOOD1 = "Pervertido."; +SWWM_SUBS_LEGACY_KORAXBLOOD2 = "Interesante saberlo."; +SWWM_SUBS_LEGACY_KORAXBLOOD3 = "Lo que tú digas."; +SWWM_SUBS_LEGACY_KORAXBLOOD4 = "Pues no creo yo."; +SWWM_SUBS_LEGACY_KORAXBLOOD5 = "Um... sí... no lo creo..."; +SWWM_SUBS_LEGACY_KORAXBLOOD6 = "Si tú lo dices."; +SWWM_SUBS_LEGACY_KORAXBLOOD7 = "Me da igual."; +SWWM_SUBS_LEGACY_KORAXBLOOD8 = "Lo que sea. Tampoco es que me importe."; +SWWM_SUBS_LEGACY_KORAXBLOOD9 = "Me importa un cagao."; +SWWM_SUBS_LEGACY_KORAXBLOOD10 = "Como si me importara una mierda..."; +SWWM_SUBS_LEGACY_KORAXBLOOD11 = "Creo que me confundes con alguien a quien le importara una mierda."; +SWWM_SUBS_LEGACY_KORAXBLOOD12 = "No estoy tan segura de eso."; +SWWM_SUBS_LEGACY_KORAXBLOOD13 = "Cállate ya."; // "You have played this game too long, mortal, I think I shall remove you from the board" -SWWM_SUBS_DEFAULT_KORAXGAME1 = "Me da lo mismo."; -SWWM_SUBS_DEFAULT_KORAXGAME2 = "Vete a tomar por culo."; -SWWM_SUBS_DEFAULT_KORAXGAME3 = "Oh, vete a tomar por saco."; -SWWM_SUBS_DEFAULT_KORAXGAME4 = "No va a pasar."; -SWWM_SUBS_DEFAULT_KORAXGAME5 = "Tus amenazas no me asustan."; -SWWM_SUBS_DEFAULT_KORAXGAME6 = "Y una porra."; -SWWM_SUBS_DEFAULT_KORAXGAME7 = "No me gusta que me amenacen."; -SWWM_SUBS_DEFAULT_KORAXGAME8 = "¿Algo más que tenga que saber?"; -SWWM_SUBS_DEFAULT_KORAXGAME9 = "Cállate..."; -SWWM_SUBS_DEFAULT_KORAXGAME10 = "Nadie me habla así. Que te zurzan."; -SWWM_SUBS_DEFAULT_KORAXGAME11 = "No hablarás cuando estés muerto."; -SWWM_SUBS_DEFAULT_KORAXGAME12 = "Me gustaría verte intentarlo."; -SWWM_SUBS_DEFAULT_KORAXGAME13 = "Oh, inténtalo."; -SWWM_SUBS_DEFAULT_KORAXGAME14 = "No sé de que me hablas, y no me importa."; +SWWM_SUBS_LEGACY_KORAXGAME1 = "Me da lo mismo."; +SWWM_SUBS_LEGACY_KORAXGAME2 = "Vete a tomar por culo."; +SWWM_SUBS_LEGACY_KORAXGAME3 = "Oh, vete a tomar por saco."; +SWWM_SUBS_LEGACY_KORAXGAME4 = "No va a pasar."; +SWWM_SUBS_LEGACY_KORAXGAME5 = "Tus amenazas no me asustan."; +SWWM_SUBS_LEGACY_KORAXGAME6 = "Y una porra."; +SWWM_SUBS_LEGACY_KORAXGAME7 = "No me gusta que me amenacen."; +SWWM_SUBS_LEGACY_KORAXGAME8 = "¿Algo más que tenga que saber?"; +SWWM_SUBS_LEGACY_KORAXGAME9 = "Cállate..."; +SWWM_SUBS_LEGACY_KORAXGAME10 = "Nadie me habla así. Que te zurzan."; +SWWM_SUBS_LEGACY_KORAXGAME11 = "No hablarás cuando estés muerto."; +SWWM_SUBS_LEGACY_KORAXGAME12 = "Me gustaría verte intentarlo."; +SWWM_SUBS_LEGACY_KORAXGAME13 = "Oh, inténtalo."; +SWWM_SUBS_LEGACY_KORAXGAME14 = "No sé de que me hablas, y no me importa."; // "Worship me and I may be yet merciful, then again, maybe not" -SWWM_SUBS_DEFAULT_KORAXWORSHIP1 = "¿Que?"; -SWWM_SUBS_DEFAULT_KORAXWORSHIP2 = "Menudo idiota..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP3 = "Capullo presumido..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP4 = "Parece que a alguien se le ha inflado el ego."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP5 = "Tan ensimismado..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP6 = "Ya he oído bastantes chorradas tuyas."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP7 = "Bla, bla, bla..."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP8 = "¿Que? No te oigo con este zumbido en mis oidos."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP9 = "Debes de pensar que soy idiota."; -SWWM_SUBS_DEFAULT_KORAXWORSHIP10 = "¿Te parezco idiota?"; -SWWM_SUBS_DEFAULT_KORAXWORSHIP11 = "Tienes una opinión bastante elevada de ti mismo."; +SWWM_SUBS_LEGACY_KORAXWORSHIP1 = "¿Que?"; +SWWM_SUBS_LEGACY_KORAXWORSHIP2 = "Menudo idiota..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP3 = "Capullo presumido..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP4 = "Parece que a alguien se le ha inflado el ego."; +SWWM_SUBS_LEGACY_KORAXWORSHIP5 = "Tan ensimismado..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP6 = "Ya he oído bastantes chorradas tuyas."; +SWWM_SUBS_LEGACY_KORAXWORSHIP7 = "Bla, bla, bla..."; +SWWM_SUBS_LEGACY_KORAXWORSHIP8 = "¿Que? No te oigo con este zumbido en mis oidos."; +SWWM_SUBS_LEGACY_KORAXWORSHIP9 = "Debes de pensar que soy idiota."; +SWWM_SUBS_LEGACY_KORAXWORSHIP10 = "¿Te parezco idiota?"; +SWWM_SUBS_LEGACY_KORAXWORSHIP11 = "Tienes una opinión bastante elevada de ti mismo."; // "Are you strong enough to face your own masters?" -SWWM_SUBS_DEFAULT_KORAXMASTERS1 = "¿Podemos ir aligerando? Tengo sitios a los que ir."; -SWWM_SUBS_DEFAULT_KORAXMASTERS2 = "No me gusta que la gente me diga lo que tengo que hacer."; -SWWM_SUBS_DEFAULT_KORAXMASTERS3 = "Uh... sí, eso es."; -SWWM_SUBS_DEFAULT_KORAXMASTERS4 = "Supongo que no tengo nada mejor que hacer."; -SWWM_SUBS_DEFAULT_KORAXMASTERS5 = "Me estoy preguntando lo mismo."; -SWWM_SUBS_DEFAULT_KORAXMASTERS6 = "No es asunto tuyo."; -SWWM_SUBS_DEFAULT_KORAXMASTERS7 = "Sí, lo soy."; -SWWM_SUBS_DEFAULT_KORAXMASTERS8 = "Eso no es asunto tuyo."; -SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Por favor cállate ya..."; +SWWM_SUBS_LEGACY_KORAXMASTERS1 = "¿Podemos ir aligerando? Tengo sitios a los que ir."; +SWWM_SUBS_LEGACY_KORAXMASTERS2 = "No me gusta que la gente me diga lo que tengo que hacer."; +SWWM_SUBS_LEGACY_KORAXMASTERS3 = "Uh... sí, eso es."; +SWWM_SUBS_LEGACY_KORAXMASTERS4 = "Supongo que no tengo nada mejor que hacer."; +SWWM_SUBS_LEGACY_KORAXMASTERS5 = "Me estoy preguntando lo mismo."; +SWWM_SUBS_LEGACY_KORAXMASTERS6 = "No es asunto tuyo."; +SWWM_SUBS_LEGACY_KORAXMASTERS7 = "Sí, lo soy."; +SWWM_SUBS_LEGACY_KORAXMASTERS8 = "Eso no es asunto tuyo."; +SWWM_SUBS_LEGACY_KORAXMASTERS9 = "Por favor cállate ya..."; diff --git a/language.version b/language.version index cb8c4547c..16823fa6e 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.1.46 \cu(Mon 14 Feb 01:27:36 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.1.46 \cu(2022-02-14 01:27:36)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.1.46 \cu(Sat 26 Mar 21:11:03 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.1.46 \cu(2022-03-26 21:11:03)\c-"; diff --git a/lore/default/anarukon.txt b/lore/default/anarukon.txt index 803614a57..f4a0d11f7 100644 --- a/lore/default/anarukon.txt +++ b/lore/default/anarukon.txt @@ -26,7 +26,7 @@ Many people of this race can be found on Earth, a fact that was mostly kept well Among the many members of this race inhabiting Earth, one name many would recognize would be that of **Ashley Knox**, lead singer and guitarist of **The Black Rat's Coven**. The reveal of not being actually human was received with much surprise, though it was not as spectacular as the fact that two other members of the band were literal gods. \cxSaya's Notes:\c- -\cfYeah, really cool stuff about parallel worlds and gods and warriors and shit, ain't it? Stuff like this really makes me wish I could just like... travel all over the multiverse finding neat stuff and meeting cool people, you know. Maybe one day, who knows. All the shit that those fucking UAC idiots have done honestly made me rethink ever getting into interdimensional travel. Seriously, it's like every single damn old story about "opening a portal to hell" was just a prediction for that. Anyway, I'm getting a bit sidetracked. So, Ashley-san is one of them, that's neat and all, at least Yu-chan gets to have her own immortal girlfriend, huh. Same for Taro nii-san, having that damn prankster gremlin Ellen-san, also one of these people, of course. When the hell is it going to be my turn? I mean, not that I mind, I'm fine with having Maidbot and Ibuki around, and... I guess you too but... *sigh*, makes me damn jealous, you know.\c- +\cfYeah, really cool stuff about parallel worlds and gods and warriors and shit, ain't it? Stuff like this really makes me wish I could just like... travel all over the multiverse finding neat stuff and meeting cool people, you know. Maybe one day, who knows. All the shit that those fucking UAC idiots have done honestly made me rethink ever getting into interdimensional travel. Seriously, it's like every single damn old story about "opening a portal to hell" was just a prediction for that. Anyway, I'm getting a bit sidetracked. So, Ashley-san is one of them, that's neat and all, at least Yu-chan gets to have her own immortal girlfriend, huh. Same for Taro nii-san, having that damn prankster gremlin Ellen-san, also one of these people, of course. When the hell is it going to be my turn? I mean, not that I mind, I'm fine with having Meido and Ibuki around, and... I guess you too but... *sigh*, makes me damn jealous, you know.\c- TXT \cxName:\c- \cf Anarukon ("Undying")\c- diff --git a/lore/default/ashley.txt b/lore/default/ashley.txt index a4acf6d10..d86b6062c 100644 --- a/lore/default/ashley.txt +++ b/lore/default/ashley.txt @@ -5,17 +5,19 @@ People REL Yui;Saya;Sankaideriha;Gods TXT -\cxFull Name:\c- -\cf Ashley Knox\c- -\cf Axaleyu Yanikov (Anarukon name)\c- -\cxNationality:\c- -\cf British\c- -\cxDate of Birth:\c- -\cf 1964-10-31 (before reveal)\c- -\cf 1887-10-31 (actual)\c- -\cxTwitter:\c- -\cf @ashley_da_witch (main)\c- -\cf @stylish_witch (art)\c- + \cxFull Name:\c- + \cf Ashley Knox\c- + \cf Axaleyu Yanikov (Anarukon name)\c- + \cxNationality:\c- + \cf British\c- + \cxDate of Birth:\c- + \cf 1964-10-31 (before reveal)\c- + \cf 1887-10-31 (actual)\c- + \cxOccupation:\c- + \cf Lead Singer, Guitarist (Black Rat's Coven)\c- + \cxTwitter:\c- + \cf @ashley_da_witch (main)\c- + \cf @stylish_witch (art)\c- Born in London in 1887, to **Yrikha Yanikov** and **Maxwell A. Knox**, **Ashley** is the oldest of three children, the others being **Adrian Knox**, veteran of both WW1 and WW2, and **Viola Knox**, a witch in training (still as of 2148). She spent most of her childhood in Cornwall, after her mother had to flee due to accusations of witchcraft (which weren't exactly false). diff --git a/lore/default/bigshot.txt b/lore/default/bigshot.txt index 972c6d2a4..726f10989 100644 --- a/lore/default/bigshot.txt +++ b/lore/default/bigshot.txt @@ -5,14 +5,17 @@ People REL Blackmann;Saya TXT -\cxFull Name:\c- -\cf John Gunns\c- -\cxAlias:\c- -\cf Mr. BIG SHOT\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf 2110-11-12\c- + \cxFull Name:\c- + \cf John Gunns\c- + \cxAlias:\c- + \cf Mr. BIG SHOT\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf 2110-11-12\c- + \cxOccupation:\c- + \cf CEO (BIGSHOT Industries)\c- + \cf Advisor (Blackmann Arms)\c- A man shrouded in mystery, having appeared out of nowhere, announcing himself to be the son of **Benellus, God of Shotguns**. The believability of this story is quite questionable, despite the insistence of his own mother, who claims that the god descended from the heavens, and giving her one "blessed shotgun shell", she was ordered to plant it on the ground, as from it, a man would be born, who would become the "mightiest wielder of the ultimate firearm". She said that John, already fully grown, sprung up from the ground only days after the shell was planted, and immediately proceeded to "make shotguns burst from the ground around himself", and he used the metals from them to build the very fortress the family has in the Nevada desert. @@ -21,14 +24,17 @@ Despite all this odd storytelling, the man himself does appear to hold quite a l \cxSaya's Notes:\c- \cfYeah, dude's crazy, but see, THAT thing... I really REALLY wanted it. I even met up with the guy to get my hands on it. That shit is like... completely fucking insane, and I bet no living human would be able to fucking use it, BUT... you definitely can. Just so you know, every time you whip out that ballbusting hunk of metal, I'll be watching, so you better give me some fine entertainment to munch popcorn to.\c- TXT -\cxFull Name:\c- -\cf John Gunns\c- -\cxAlias:\c- -\cf Mr. BIG SHOT\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf 2110-11-12\c- + \cxFull Name:\c- + \cf John Gunns\c- + \cxAlias:\c- + \cf Mr. BIG SHOT\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf 2110-11-12\c- + \cxOccupation:\c- + \cf CEO (BIGSHOT Industries)\c- + \cf Advisor (Blackmann Arms)\c- A man shrouded in mystery, having appeared out of nowhere, announcing himself to be the son of **Benellus, God of Shotguns**. The believability of this story is quite questionable, despite the insistence of his own mother, who claims that the god descended from the heavens, and giving her one "blessed shotgun shell", she was ordered to plant it on the ground, as from it, a man would be born, who would become the "mightiest wielder of the ultimate firearm". She said that John, already fully grown, sprung up from the ground only days after the shell was planted, and immediately proceeded to "make shotguns burst from the ground around himself", and he used the metals from them to build the very fortress the family has in the Nevada desert. diff --git a/lore/default/blackfireigniter.txt b/lore/default/blackfireigniter.txt deleted file mode 100644 index 060bf482f..000000000 --- a/lore/default/blackfireigniter.txt +++ /dev/null @@ -1,31 +0,0 @@ -TAG -Blackfire Igniter -TAB -Item -REL -Sankaideriha;Unissix;Gods;Saya -TXT -\cxDesignation:\c- -\cf Blackfire Igniter\c- -\cxManufacturer:\c- -\cf Unissix Crafts\c- -\cf Design by LS\c- -\cxClassification:\c- -\cf Flamethrower\c- - -Devised by the primordial god of magic themself, the **Blackfire Igniter** is rather surprisingly a very cold, dark weapon. Blackfire is a type of magical flame that absorbs heat and light, rather than emitting them. - -During the height of **Unissix Crafts**'s fame, the god personally approached **Misa Unissix** herself with a request for a weapon that would allow just about anyone to readily perform **Blackfire Manipulation Magic**. - -The Igniter is the perfect blend of magic and technology, weaponized. At your fingertips, you have the power to call forth freezing flames that will turn your enemies into pretty ice statues in mere seconds. - -\cfPrimary Fire:\c- Releases a continuous stream of Blackfire, with moderate range. The flames not only rapidly freeze whatever they touch, but also reduce the air temperature, leaving a lingering freeze effect. - -\cfSecondary Fire:\c- Concentrated bursts that form spears of supercooled air which can impale small targets, or tear right through them. - -\cfReloading:\c- Attach up to two canisters to replenish the weapon's internal dark mana reserves. Each canister will remain locked in until it's been emptied, otherwise residual energy could escape and bring harm to the user. If there is an empty canister attached, the reload action will detach it first. Fresh canisters can still be used even if the tank is full, and they will act as an extra "buffer" of mana until depleted. - -\cxSaya's Notes:\c- -\cfSo yeah, Misa-Misa has other toys besides that one bigass gun. Pretty cool that she gets requests and whatnot, lil' cinnamon roll's quite popular there, heheheh...\c- - -\cfI heard very little of all this Blackfire stuff from LS-sama, but it sounds like fun. Wonder if it can be used in a spellcard...\c- diff --git a/lore/default/cytho.txt b/lore/default/cytho.txt index a40e5a40a..f91472ea7 100644 --- a/lore/default/cytho.txt +++ b/lore/default/cytho.txt @@ -5,14 +5,17 @@ People REL Hell;Ellen;Anarukon;DemonInvasion;UAC;Saya;AkariLabs;Demolitionist TXT -\cxFull Name:\c- -\cf Archduke Cytho of House Valathor\c- -\cxNationality:\c- -\cf Kuriste\c- -\cxDate of Birth:\c- -\cf 2008-10-09\c- -\cxTwitter:\c- -\cf @incuvalathor\c- + \cxFull Name:\c- + \cf Archduke Cytho of House Valathor\c- + \cxNationality:\c- + \cf Kuriste\c- + \cxDate of Birth:\c- + \cf 2008-10-09\c- + \cxOccupation:\c- + \cf Independent News Reporter\c- + \cf Ambassador (Kuriste Kingdom)\c- + \cxTwitter:\c- + \cf @incuvalathor\c- Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble **House Valathor**, **Cytho** took to the family business upon reaching adulthood, quickly climbing the ranks of **Hell**'s sex work industry, partly due to his innate beauty, but also the rapidly accumulating "satisfied customers" he would regularly service, and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele. diff --git a/lore/default/demolitionist.txt b/lore/default/demolitionist.txt index a23a628b9..3ec2d0a2c 100644 --- a/lore/default/demolitionist.txt +++ b/lore/default/demolitionist.txt @@ -5,16 +5,18 @@ People REL AkariLabs;Ibuki;Saya;Zanaveth2;Hell;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho TXT -\cxFull Name:\c- -\cf Akari Labs First Generation Autonomous Combat Unit\c- -\cf Demolitionist (codename)\c- -\cf Demo Miyamoto (first unit)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxFull Name:\c- + \cf Akari Labs First Generation Autonomous Combat Unit\c- + \cf Demolitionist (codename)\c- + \cf Demo Miyamoto (first unit)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2148-01-20\c- + \cxOccupation:\c- + \cf Pro Hero\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- The **Demolitionist** is one of the crowning achievements of **Akari Labs** on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the **Red Oni** supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both **Saya Miyamoto** and **Archduke Cytho Valathor**, representative of **Hell**'s civilian population. @@ -35,16 +37,18 @@ Of this previously mentioned first unit, there are many details known thanks to \cfGet back to work, you silly robutt.\c- TXT -\cxFull Name:\c- -\cf Akari Labs First Generation Autonomous Combat Unit\c- -\cf Demolitionist (codename)\c- -\cf Demo Miyamoto (first unit)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxFull Name:\c- + \cf Akari Labs First Generation Autonomous Combat Unit\c- + \cf Demolitionist (codename)\c- + \cf Demo Miyamoto (first unit)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2148-01-20\c- + \cxOccupation:\c- + \cf Pro Hero\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- The **Demolitionist** is one of the crowning achievements of **Akari Labs** on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the **Red Oni** supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both **Saya Miyamoto** and **Archduke Cytho Valathor**, representative of **Hell**'s civilian population. @@ -56,7 +60,7 @@ The first unit, affectionately known as **Demo-chan** by Saya, was deployed in J Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of **Demo Miyamoto**, and being referred to by Saya as her "child". Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. -Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate Maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Maidbot and Ibuki. +Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. \cxSaya's Notes:\c- \cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c- @@ -65,16 +69,18 @@ Following their success in fighting off Hell's armies, Saya realized that no oth \cfAnyway, no more reading about yourself while you're working. Go away, silly.\c- TXT -\cxFull Name:\c- -\cf Akari Labs First Generation Autonomous Combat Unit\c- -\cf Demolitionist (codename)\c- -\cf Demo Miyamoto (first unit)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxFull Name:\c- + \cf Akari Labs First Generation Autonomous Combat Unit\c- + \cf Demolitionist (codename)\c- + \cf Demo Miyamoto (first unit)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2148-01-20\c- + \cxOccupation:\c- + \cf Pro Hero\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- The **Demolitionist** is one of the crowning achievements of **Akari Labs** on the field of robotics. An AI-driven combat unit capable of efficiently utilizing any weaponry at its disposition, highly resilient to damage and capable of operating in any environment, including the void of space. It can be seen as the spiritual successor of the **Red Oni** supersoldier program, in a way, as it also serves the same purpose of defending Earth from an overwhelming invading force. The project has been funded and sponsored by many partners of Akari Labs, and is the brainchild of both **Saya Miyamoto** and **Archduke Cytho Valathor**, representative of **Hell**'s civilian population. @@ -86,7 +92,7 @@ The first unit, affectionately known as **Demo-chan** by Saya, was deployed in J Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of **Demo Miyamoto**, and being referred to by Saya as her "child". Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. -Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate Maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Maidbot and Ibuki. Since May of 2171, they are also additionally engaged to **Kirin Xanai**, leader of the **Sykhai Empire of Akkou**. +Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. Since May of 2171, they are also additionally engaged to **Kirin Xanai**, leader of the **Sykhai Empire of Akkou**. \cxSaya's Notes:\c- \cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c- diff --git a/lore/default/doomguy.txt b/lore/default/doomguy.txt index 281da3d7f..9d4203866 100644 --- a/lore/default/doomguy.txt +++ b/lore/default/doomguy.txt @@ -15,6 +15,8 @@ TXT \cf American\c- \cxDate of Birth:\c- \cf CLASSIFIED\c- +\cxOccupation:\c- +\cf Marine (UAC)\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". @@ -37,6 +39,8 @@ TXT \cf American\c- \cxDate of Birth:\c- \cf CLASSIFIED\c- +\cxOccupation:\c- +\cf N/A\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". @@ -59,6 +63,8 @@ TXT \cf American\c- \cxDate of Birth:\c- \cf CLASSIFIED\c- +\cxOccupation:\c- +\cf N/A\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". diff --git a/lore/default/ellen.txt b/lore/default/ellen.txt index 24b8b8067..438bab41a 100644 --- a/lore/default/ellen.txt +++ b/lore/default/ellen.txt @@ -5,14 +5,17 @@ People REL Ibuki;Taro;Ashley;Saya;Anarukon;WhiteScar;Hell;Yui;Cytho TXT -\cxFull Name:\c- -\cf Elena "Ellen" Yanikov XXI\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf 2066-06-06\c- -\cxTwitter:\c- -\cf @Mischief_XXI\c- + \cxFull Name:\c- + \cf Elena "Ellen" Yanikov XXI\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf 2066-06-06\c- + \cxOccupation:\c- + \cf Mercenary\c- + \cxTwitter:\c- + \cf @Mischief_XXI\c- + Born in Boston in 2066, to **Elena Yanikov XIX** and **Gottfried Steiner**, **Ellen** is the younger of two sisters (both of them are named Elena). This oddity of all women in her family sharing the same name can be traced back to **Elena Yanikov I**, born in 1703, who made this decision, out of some superstitious belief that it would "preserve their immortality forever". This was not far off from the truth, however, but it had nothing to do with inheritance of names. It has been verified that **Anarukon** genes are fully preserved across all female descendants, no matter how many generations, especially so for those from the Yanikov lineage. diff --git a/lore/default/empcarbine.txt b/lore/default/empcarbine.txt deleted file mode 100644 index 94ce03ad3..000000000 --- a/lore/default/empcarbine.txt +++ /dev/null @@ -1,34 +0,0 @@ -TAG -Rail Carbine -TAB -Item -REL -EngineTech;DecadeMech;UAC;Saya -TXT -\cxDesignation:\c- -\cf EMP Rail Carbine\c- -\cxManufacturer:\c- -\cf Tach-Engine Technology Institute\c- -\cxClassification:\c- -\cf Directed Energy Weapon\c- - -The **EMP Rail Carbine** is **Tach-Engine**'s very first attempt at combining existing human technology with the retrieved experiments from their expedition to the ruined headquarters of **Decade Mechanics**. Akin to typical particle-beam weaponry, but with a boost of thundering, highly destructive exotic matter, it has been deemed far superior even to the mighty **Thunder Buster** so well-prized by UAC troops. - -Unexpectedly, the Rail Carbine is a tube fed bolt-action rifle, which employs shielded rods of pure **Dysedum**. Each of these allowing the weapon to discharge guided 20kA pulses towards an ionized target, frying it in an instant, and potentially spreading its deadly effects to others nearby. - -It should be noted that this weapon is unsafe to use in water, as the discharge will spread violently throughout the entire medium. - -\cfPrimary Fire:\c- Hold to emit a faint ionizing charge towards the aimed spot. The longer this is held, the more accurate the shot will be. Release to discharge the beam. If the rod has been depleted, cycle the bolt to load a new one. - -\cfSecondary Fire:\c- Also emits an ionizing charge, but does not discharge on release. Useful if you can't guarantee your target will always be in sight, or if you want to quickly mark several targets. - -\cfZoom:\c- Adjustable sight up to 8x. - -\cfReloading:\c- More rods can be fed into the weapon as needed, up to a maximum of three. - -\cfTechniques:\c- By ionizing several targets you can guarantee that the beam will branch out into lesser arcs and strike them all, though the damage potential will be divided among them. - -\cxSaya's Notes:\c- -\cfYou know, anything that dabs on the UAC with its mere existence is good in my book.\c- - -\cfThis thing, though, also gets bonus points for its sheer pants-shittingly intense potential to deep fry sons of bitches. Seriously, it's like actual fucking lightning shooting out of this.\c- diff --git a/lore/default/fistgun.txt b/lore/default/fistgun.txt deleted file mode 100644 index 7ef5e5be8..000000000 --- a/lore/default/fistgun.txt +++ /dev/null @@ -1,27 +0,0 @@ -TAG -Hand of Divine -TAB -Item -REL -Unissix;Gods;Zanaveth3;Saya -TXT -\cxDesignation:\c- -\cf Hand of Divine\c- -\cxManufacturer:\c- -\cf Korovithuhcp (original)\c- -\cf Unissix Crafts (replica)\c- -\cxDesignation:\c- -\cf Magic Gauntlet\c- - -The **Hand of Divine** was a weapon that the god **Korovithuhcp** constructed countless millenia ago, and had been passed down among many heroes of legend. Eventually it was lost, and the god had no interest in building a new one. This, obviously, did not stop **Misa Unissix** from attempting to do exactly just that. Following historical records of its use, she built her own version through a blend of arcane magic and modern technology. She gifted one to her daughter, **Zanaveth Nekuraku III**, and another to the **Demolitionist**. - -\cfPrimary Fire:\c- Charges up a punch, and then releases it. The gauntlet will fling itself forward and then return to you. - -\cfSecondary Fire:\c- Charges up a wide arc slap. On release this will very loudly and violently whack all targets in front of you. - -\cfTechniques:\c- Due to its nature, the Hand of Divine is susceptible to the effects of a **Ragekit**, increasing its strength and range. - -\cxSaya's Notes:\c- -\cfMan that sure was a special delivery from Zana-chan. And when we showed that it was good, and fun, Misa-Misa got all excited and started mass-producing them. She's just too adorable, I swear.\c- - -\cfAnyway, those fiends are gonna get knocked the fuck out with this thing. Can't wait to see it in action on real targets. Especially after... that incident with the punching bag.\c- diff --git a/lore/default/grandlance.txt b/lore/default/grandlance.txt deleted file mode 100644 index e440eb6eb..000000000 --- a/lore/default/grandlance.txt +++ /dev/null @@ -1,36 +0,0 @@ -TAG -Grand Lance -TAB -Item -REL -Kmonn;Xekke;Saya;Unissix -TXT -\cxDesignation:\c- -\cf Suvan-Kin ("Grand Lance")\c- -\cxManufacturer:\c- -\cf Eushura Kmonn Jr.\c- -\cxClassification:\c- -\cf Portable Rail Gun\c- - -Devised as the "last word" in weaponry, the **Suvan-Kin** ("Grand Lance" in the **Xekkas** language) is the world's first truly portable rail gun, capable of launching projectiles at speeds of up to 7500km/h (or 14000km/h at full charge). The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, easy to replace when needed. The ammunition employed are high-resonant Almasteel spears, capable of piercing cleanly through anything, without even as much as a single dent. - -If the piercing potential of these spears isn't destructive enough, a miniature pure-fusion bomb embedded at the head will surely add up even more to that. In the words of the **Xekkian** people: **"The blinding flames of a sacrificed newborn star shall tear asunder all life, rend the soul from its body, and leave no trace whatsoever of those unfortunate to have wronged the wielder of the Grand Lance."** - -\cfPrimary Fire:\c- Single-target firing. The spear will automatically detonate on contact with anything. The area of effect is rather massive, so keep your distance. Due to the resilience of the material used, the spear will not be destroyed, and may potentially ricochet and hit something else. - -\cfSecondary Fire:\c- Multi-target firing. The spear is shot at a much higher velocity, and will penetrate multiple targets until finally stopping at something sufficiently solid. - -\cfPrimary Reload:\c- Reload the weapon. - -\cfSecondary Reload:\c- Swaps the battery. This action can only be performed once the charge is low enough, as it would be wasteful otherwise. - -\cfTechniques:\c- The longer you hold secondary fire, the stronger and faster the shot will be. At full charge it may even breach walls. - -\cfWarning:\c- Before firing, the rails must extend to their full length. If there are any obstacles in the way that can't be cleared, operation of the weapon is cancelled. - -\cxSaya's Notes:\c- -\cfExcuse me, WHAT THE FUCK IS THIS???\c- - -\cfIs this a motherfucking rail gun? Like, the real deal? And it's actually portable?? AND IT SHOOTS MOTHERFUCKING SPEARS WITH MOTHERFUCKING FUSION BOMBS IN THEM??? OK, forget what I said about that other bigass gun from Kmonn, THIS SHIT is actually even more fucking ridiculous, like, what in the actual name of fuck???\c- - -\cfYeah, so that's why it's placed on the same slot as the Ynykron. Think of it as a "safer" alternative, basically. It's not world-ending, but it's still way too fucking strong.\c- diff --git a/lore/default/ibuki.txt b/lore/default/ibuki.txt index ea529c183..993048604 100644 --- a/lore/default/ibuki.txt +++ b/lore/default/ibuki.txt @@ -5,16 +5,18 @@ People REL AkariLabs;WhiteScar;Taro;Saya TXT -\cxFull Name:\c- -\cf Ibuki Miyamoto\c- -\cf Red Oni (codename)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2074-09-09\c- -\cxTwitter\c- -\cf @lewd_ibuki (main)\c- -\cf @ibuki_tiddy (photosets)\c- + \cxFull Name:\c- + \cf Ibuki Miyamoto\c- + \cf Red Oni (codename)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2074-09-09\c- + \cxOccupation:\c- + \cf Mercenary, Nude Model, Vlogger\c- + \cxTwitter\c- + \cf @lewd_ibuki (main)\c- + \cf @ibuki_tiddy (photosets)\c- **Ibuki** is the result of the **Red Oni** supersoldier program, devised by **Saya Miyamoto** of **Akari Labs**. The existence of this project was kept completely secret until her public reveal in June of 2077. There was much controversy surrounding the Red Oni program, including Saya's personal involvement in it, having accepted a 40 billion USD payment in exchange for it (which was found to be related to Texas having been sold back to Mexico many weeks before). Despite her clear potential and outstanding combat abilities, she was deployed too late, as only moments later, the **White Scar** happened, and with it, the complete devastation of the **United States**. diff --git a/lore/default/imanakit.txt b/lore/default/imanakit.txt index d70393fcf..0988e9f88 100644 --- a/lore/default/imanakit.txt +++ b/lore/default/imanakit.txt @@ -11,6 +11,8 @@ TXT \cf Undetermined\c- \cxDate of Birth:\c- \cf Undetermined\c- +\cxOccupation:\c- +\cf CEO (Imanaki Corp)\c- The founder and CEO of **Imanaki Corp**, and also last surviving member of the Imanaki family following the **Onoke Mansion Murders** of 2003. **Tetsuya** had always been a very secretive individual, so nothing is really known of his personal life or history, nor even his appearance. diff --git a/lore/default/kirin.txt b/lore/default/kirin.txt index daa958243..2e43086ad 100644 --- a/lore/default/kirin.txt +++ b/lore/default/kirin.txt @@ -5,16 +5,18 @@ People REL Anarukon;Novoskhana;Saya;GhoulHunt TXT -\cxFull Name:\c- -\cf Kirin Xanai\c- -\cxTitle:\c- -\cf Child Emperor of the Sykhai Empire of Akkou\c- -\cxNationality:\c- -\cf Akkouxhei\c- -\cxDate of Birth:\c- -\cf 2080-04-13\c- -\cxTwitter:\c- -\cf @kiririn_xanai\c- + \cxFull Name:\c- + \cf Kirin Xanai\c- + \cxTitle:\c- + \cf Child Emperor of the Sykhai Empire of Akkou\c- + \cxNationality:\c- + \cf Akkouxhei\c- + \cxDate of Birth:\c- + \cf 2080-04-13\c- + \cxOccupation:\c- + \cf Communal Advisor (Sykhai Empire)\c- + \cxTwitter:\c- + \cf @kiririn_xanai\c- Born in 2080 to **Syrakha Yanikov** and **Azya Xanai**, **Kirin** became the emperor of **Akkou** at the young age of 12, having shown great interest in following the steps of his mother. diff --git a/lore/default/kmonn.txt b/lore/default/kmonn.txt index 7cd9bd338..db7e188d3 100644 --- a/lore/default/kmonn.txt +++ b/lore/default/kmonn.txt @@ -5,12 +5,17 @@ People REL XAnimen;EngineTech;Gods;Xekke TXT -\cxFull Name:\c- -\cf Eushura Kmonn Jr.\c- -\cxNationality:\c- -\cf Xekkian\c- -\cxDate of Birth:\c- -\cf 8731 BC\c- + \cxFull Name:\c- + \cf Eushura Kmonn Jr.\c- + \cxNationality:\c- + \cf Xekkian\c- + \cxDate of Birth:\c- + \cf 8731 BC\c- + \cxOccupation:\c- + \cf CTO (Kmonn Shuna)\c- + \cf Advisor (Tach-Engine Technology Institute)\c- + + **Eushura Kmonn Jr.**, son of **Eushura Kmonn Sr.**, is a skilled inventor from the **Kingdom of Xekke**, in the planet of **Ixxeney**. From a young age he was raised to achieve the same grand goals as his father, and it wasn't long until he managed to earn his own fame after years of working under him as an assistant. His creativity and imagination knew no bounds, and he's been credited with a grand total of 279 major achievements in the fields of both offensive and defensive military technology, which has helped strengthen the kingdom's forces, making them one of the most trusted and requested across the **X'Animen Coalition** for allied defense tasks. diff --git a/lore/default/locke.txt b/lore/default/locke.txt index 47b025c3b..e641a630c 100644 --- a/lore/default/locke.txt +++ b/lore/default/locke.txt @@ -5,12 +5,17 @@ People REL Kereshnovka;Saya TXT -\cxFull Name:\c- -\cf Janus Locke Hoodth\c- -\cxNationality:\c- -\cf Qurensniv\c- -\cxDate of Birth:\c- -\cf 1980-07-30\c- + \cxFull Name:\c- + \cf Janus Locke Hoodth\c- + \cxNationality:\c- + \cf Qurensniv\c- + \cxDate of Birth:\c- + \cf 1980-07-30\c- + \cxOccupation:\c- + \cf Inventor\c- + + + **Janus Locke** is the younger brother of the late **Dr. Häzel Hoodth** known by many as the **Mad Doctor of Kereshnovka**. After hearing the news of Häzel's death in 1987 (specifically, receiving them 10 years after the fact, while he was studying abroad), in an oil rig explosion near the town while he was performing an experiment to "obtain the essence of immortality", Locke changed entirely. He decided to continue his brother's work, while at the same time still maintaining his current job as a toy maker. However, the madness into which he fell would extend even to that, with the various products that would come out under his brand of **Dr. Locke's Wonderful Toys** becoming increasingly dangerous, or even outright lethal. diff --git a/lore/default/maidbot.txt b/lore/default/maidbot.txt index acb03da1c..0fb6a5b10 100644 --- a/lore/default/maidbot.txt +++ b/lore/default/maidbot.txt @@ -1,31 +1,33 @@ TAG -Miyamoto, Maidbot +Miyamoto, Meido TAB People REL Saya;Ibuki;Luna;Nukuri;Zanaveth2;Nekuratek;AkariLabs;Kirin TXT -\cxFull Name:\c- -\cf Maidbot "Meido" Miyamoto\c- -\cf Meidobot (artistic name)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2017-07-07\c- -\cxTwitter:\c- -\cf @meidobot\c- + \cxFull Name:\c- + \cf Meido Miyamoto\c- + \cf Meidobot (artistic name)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2017-07-07\c- + \cxOccupation:\c- + \cf Idol\c- + \cxTwitter:\c- + \cf @meidobot\c- -As **Saya Miyamoto**'s very first AI project, **Maidbot** was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Maidbot gradually got to be more "life-like", it was never enough. In the end, she was "still a machine". +As **Saya Miyamoto**'s very first AI project, **Meido** was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Meido gradually got to be more "life-like", it was never enough. In the end, she was "still a machine". -Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Maidbot to perform. By 2020, Maidbot had become a full-fledged "Artificial Idol", famous enough to take part in the Tokyo Olympics, singing the national anthem. +Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Meido to perform. By 2020, Meido had become a full-fledged "Artificial Idol", famous enough to take part in the Tokyo Olympics, singing the national anthem. -Following the **Luna Event** of 2021, Saya received the visit of **Zanaveth Nekuraku II**, head of AI research at **Nekuratek**, the largest **Nukuri** tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all **Akari Labs** had achieved, and showed special interest in Maidbot, too. +Following the **Luna Event** of 2021, Saya received the visit of **Zanaveth Nekuraku II**, head of AI research at **Nekuratek**, the largest **Nukuri** tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all **Akari Labs** had achieved, and showed special interest in Meido, too. -Having quickly befriended Saya at this point, she offered to enhance Maidbot's AI with the more advanced technology her people had: The **Nekuronbot AI Framework**. Having accepted this offer, Maidbot was "reborn" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion. +Having quickly befriended Saya at this point, she offered to enhance Meido's AI with the more advanced technology her people had: The **Nekuronbot AI Framework**. Having accepted this offer, Meido was "reborn" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion. -It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Maidbot knew, and confessed that in her new form, she could "feel something" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend. +It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Meido knew, and confessed that in her new form, she could "feel something" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend. -After these events, Maidbot became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more maidbots, wishing for the whole world to be able to have a Maidbot of their own. An adoption service was set up in 2023, where maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families. +After these events, Meido became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more Maidbots, wishing for the whole world to be able to "have a Meido of their own". An adoption service was set up in 2023, where Maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families. \cxSaya's Notes:\c- \cfMeido-chan is so sweet~ And her voice is so nice~\c- @@ -36,27 +38,29 @@ After these events, Maidbot became a full member of the family, adopting the Miy \cfHehe... I'm really quite proud of making her "fully featured", by the way... Best decision of my life. Let me tell you, when we do "things" together... it feels like heaven~\c- \cg♥\c- TXT -\cxFull Name:\c- -\cf Maidbot "Meido" Miyamoto\c- -\cf Meidobot (artistic name)\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2017-07-07\c- -\cxTwitter:\c- -\cf @meidobot\c- + \cxFull Name:\c- + \cf Meido Miyamoto\c- + \cf Meidobot (artistic name)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2017-07-07\c- + \cxOccupation:\c- + \cf Idol\c- + \cxTwitter:\c- + \cf @meidobot\c- -As **Saya Miyamoto**'s very first AI project, **Maidbot** was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Maidbot gradually got to be more "life-like", it was never enough. In the end, she was "still a machine". +As **Saya Miyamoto**'s very first AI project, **Meido** was initially rather rough around the edges, mainly serving as a cleaner robot with rather limited intelligence, mostly capable of taking simple orders. Over time, Saya would expand on her abilities, allowing for more complex interactivity, but still too limited. Saya had always felt that despite all her efforts, despite how close Meido gradually got to be more "life-like", it was never enough. In the end, she was "still a machine". -Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Maidbot to perform. By 2020, Maidbot had become a full-fledged "Artificial Idol", famous enough to take part in the Tokyo Olympics, singing the national anthem. +Of note was Saya's attempt to get her into singing, something which was an unexpected success, actually. After her initial debut, more and more artists would compose songs for Meido to perform. By 2020, Meido had become a full-fledged "Artificial Idol", famous enough to take part in the Tokyo Olympics, singing the national anthem. -Following the **Luna Event** of 2021, Saya received the visit of **Zanaveth Nekuraku II**, head of AI research at **Nekuratek**, the largest **Nukuri** tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all **Akari Labs** had achieved, and showed special interest in Maidbot, too. +Following the **Luna Event** of 2021, Saya received the visit of **Zanaveth Nekuraku II**, head of AI research at **Nekuratek**, the largest **Nukuri** tech conglomerate. Curious about human culture, she decided to meet her, as they had quite similar interests. Zanaveth was quite impressed by all **Akari Labs** had achieved, and showed special interest in Meido, too. -Having quickly befriended Saya at this point, she offered to enhance Maidbot's AI with the more advanced technology her people had: The **Nekuronbot AI Framework**. Having accepted this offer, Maidbot was "reborn" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion. +Having quickly befriended Saya at this point, she offered to enhance Meido's AI with the more advanced technology her people had: The **Nekuronbot AI Framework**. Having accepted this offer, Meido was "reborn" from her previous, limited form. She was now fully capable of individual thought, free will, and most importantly, emotion. -It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Maidbot knew, and confessed that in her new form, she could "feel something" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend. +It was not surprising that Saya had always felt something towards her, while still being fully aware of the impossibility of her being able to love her back, but now, everything had changed. Meido knew, and confessed that in her new form, she could "feel something" too. Over time, she came to better understand these feelings, and would become Saya's first girlfriend. -After these events, Maidbot became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more maidbots, wishing for the whole world to be able to have a Maidbot of their own. An adoption service was set up in 2023, where maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families. +After these events, Meido became a full member of the family, adopting the Miyamoto name. Much later, and with Zanaveth's assistance, Saya would begin the creation of more Maidbots, wishing for the whole world to be able to "have a Meido of their own". An adoption service was set up in 2023, where Maidbots, who'd be raised and prepared at Akari Labs, would hold interviews with potential adopters, allowing them to have the final choice on who to live with. This service was entirely free, as the company already had more than enough funds coming from their other services, which increased their popularity even more. Everyone wished to have their own Maidbot, and the Maidbots themselves were more than happy to live with their new families. In May of 2171, together with Saya and her other partners, she married **Emperor Kirin Xanai**, of the **Sykhai Empire**, and thanks to him, her passion for singing returned once again. diff --git a/lore/default/mixom.txt b/lore/default/mixom.txt index 508fba6cb..9d71e57be 100644 --- a/lore/default/mixom.txt +++ b/lore/default/mixom.txt @@ -23,4 +23,6 @@ Mixom is, in addition, one of the last bastions of capitalism remaining in the c \cxSaya's Notes:\c- \cfMoney and power, absolute dominance, bullshit capitalism. Disgusting... I hope they all explode.\c- -\cfYou can't take two steps without coming across something made by them, they are FUCKING EVERYWHERE. Like, for example, all the screws in your body? Mixom branded. The liquid cooling? Also Mixom... I could keep going, but it makes me feel gross saying their name so often.\c- +\cfExcept the CEO, she's the only sane person in there but they throw her under the bus whenever she tries to change things. I do commend her for the effort, but this is clearly a losing battle. She should quit already and come here.\c- + +\cfBy the way, you can't take two steps without coming across something made by them, they are FUCKING EVERYWHERE. Like, for example, all the screws in your body? Mixom branded. The liquid cooling? Also Mixom... I could keep going, but it makes me feel gross saying their name so often.\c- diff --git a/lore/default/nana.txt b/lore/default/nana.txt index 967a67f2d..587e217b2 100644 --- a/lore/default/nana.txt +++ b/lore/default/nana.txt @@ -5,12 +5,17 @@ People REL Ryuji;Saya;Gensokyo;Yui;Taro;Kirin TXT -\cxFull Name:\c- -\cf Nana Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1907-07-07\c- + \cxFull Name:\c- + \cf Nana Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1907-07-07\c- + \cxOccupation:\c- + \cf Housemaker\c- + + + **Nana** is the sole daughter of **Kaguya Houraisan**, the exiled **Lunarian** princess who made **Gensokyo** her home. Having been raised and homeschooled entirely within **Eientei** she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with **Ryuji Miyamoto** in the 60's. Having fled the **Human Village**, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could "see the world". This would happen in 1973, with the two leaving Gensokyo to form a family of their own. @@ -21,12 +26,17 @@ Nana has three children, who, like her, have also inherited the immortal blood o \cxSaya's Notes:\c- \cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder guys are scared of her, always in constant fear of being CBT'd at any moment.\c- TXT -\cxFull Name:\c- -\cf Nana Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1907-07-07\c- + \cxFull Name:\c- + \cf Nana Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1907-07-07\c- + \cxOccupation:\c- + \cf Housemaker\c- + + + **Nana** is the sole daughter of **Kaguya Houraisan**, the exiled **Lunarian** princess who made **Gensokyo** her home. Having been raised and homeschooled entirely within **Eientei** she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with **Ryuji Miyamoto** in the 60's. Having fled the **Human Village**, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could "see the world". This would happen in 1973, with the two leaving Gensokyo to form a family of their own. @@ -39,12 +49,17 @@ Nana has three children, who, like her, have also inherited the immortal blood o \cfBy the way I did notice it, you know, when she hugged you, yes. She hasn't really tried to see other guys after dad was gone... But I think that maybe... she likes you kind of in a different way, y'know...\c- TXT -\cxFull Name:\c- -\cf Nana Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1907-07-07\c- + \cxFull Name:\c- + \cf Nana Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1907-07-07\c- + \cxOccupation:\c- + \cf Housemaker\c- + + + **Nana** is the sole daughter of **Kaguya Houraisan**, the exiled **Lunarian** princess who made **Gensokyo** her home. Having been raised and homeschooled entirely within **Eientei** she did not know much of the outside world, and would have spent the rest of her immortal life there, had it not been for a chance encounter with **Ryuji Miyamoto** in the 60's. Having fled the **Human Village**, he came across Nana. The two became close friends, and the young boy made a promise to marry her when he grew up, and take her outside, so she could "see the world". This would happen in 1973, with the two leaving Gensokyo to form a family of their own. diff --git a/lore/default/puntzergamma.txt b/lore/default/puntzergamma.txt index 4ce637733..01ed47ce3 100644 --- a/lore/default/puntzergamma.txt +++ b/lore/default/puntzergamma.txt @@ -16,9 +16,9 @@ The **Puntzer** series of weapons from **Blackmann Arms** are prime examples of The **Puntzer Gamma** is a mostly compact bullpup submachine gun featuring a horizontal mag loading system akin to 21st century classics like the **BreakerTek P90**. The weapon is additionally capable of delivering "Fuller Auto" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture. -\cfPrimary Fire:\c- Shoots the weapon. +\cfPrimary Fire:\c- Full auto shooting. -\cfSecondary Fire:\c- Cycles fire modes, between single shot, 3-round burst, full auto and fuller auto. +\cfSecondary Fire:\c- "Fuller auto" unloading. \cfReloading:\c- Reloads, as expected. Your **Hammerspace™ Container**'s autoloaders will provide you with a fresh mag every time. diff --git a/lore/default/rafankos.txt b/lore/default/rafankos.txt index 402ab066e..61f335d9c 100644 --- a/lore/default/rafankos.txt +++ b/lore/default/rafankos.txt @@ -27,4 +27,4 @@ The weapon employs **Kabbadon** as fuel, a common byproduct of **Nokorokinylum** \cxSaya's Notes:\c- \cf"Ultimate Weapon"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c- -\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other two massive fuckoff guns.\c- +\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other massive fuckoff gun. You know, as a safer alternative that you're less likely to kill yourself with. Gotta admit, Misa-Misa sure loaded us up with some powerful material bringing these two along.\c- diff --git a/lore/default/raykhom.txt b/lore/default/raykhom.txt index b559587ea..3a00416fa 100644 --- a/lore/default/raykhom.txt +++ b/lore/default/raykhom.txt @@ -31,6 +31,6 @@ The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery \cfSo by Xekkian standards this is a "light weapon", really now??? It's a good thing that your hands can somehow adapt to the grip of this thing, because holy fucking hell...\c- -\cfThis shit is like, where do I start. It's some serious fucking ass destroyer, that's what. Out of all the stuff in your arsenal, I'd say this is the second strongest weapon we've got. Misa actually delivered it herself way back when, and then we had a talk with the old man from Tach-Engine to have it available for purchase, since he does have that deal going with Kmonn and all (I'm pretty sure what those two have is more than just a business partnership, if you know what I mean).\c- +\cfThis shit is like, where do I start. It's some serious fucking ass destroyer, that's what. Out of all the stuff in your arsenal, I'd say this is the third largest weapon we've got. Misa actually delivered it herself way back when, and then we had a talk with the old man from Tach-Engine to have it available for purchase, since he does have that deal going with Kmonn and all (I'm pretty sure what those two have is more than just a business partnership, if you know what I mean).\c- \cfWhen she came through the door lugging that thing around on her shoulders I knew it had to be ours.\c- diff --git a/lore/default/ryuji.txt b/lore/default/ryuji.txt index a5036deef..8722d5a7a 100644 --- a/lore/default/ryuji.txt +++ b/lore/default/ryuji.txt @@ -5,14 +5,17 @@ People REL Nana;Taro;Saya;Yui;AkariLabs;Gensokyo TXT -\cxFull Name:\c- -\cf Ryuji Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1956-03-12\c- -\cxDate of Death:\c- -\cf 2054-06-22\c- + \cxFull Name:\c- + \cf Ryuji Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1956-03-12\c- + \cxDate of Death:\c- + \cf 2054-06-22\c- + \cxOccupation:\c- + \cf Inventor\c- + **Ryuji** was born in **Gensokyo** in 1956, spending most of his life within the **Human Village**, the only one settlement within the region inhabited entirely by humans, rather than Youkai. During his early teens, he became quite rebellious, desiring to leave the village and have "adventures". One day, he fled, and got himself lost in the bamboo forest surrounding **Eientei**. There, he came across **Nana**, the daughter of **Kaguya Houraisan**, and the two became friends. After guiding him back to the village, Ryuji promised her that he'd return one day, to marry her, and take her with him to see the outside world. diff --git a/lore/default/saya.txt b/lore/default/saya.txt index fe889727c..dfba3a6ea 100644 --- a/lore/default/saya.txt +++ b/lore/default/saya.txt @@ -5,14 +5,17 @@ People REL Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC TXT -\cxFull Name:\c- -\cf Saya Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxFull Name:\c- + \cf Saya Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1993-03-20\c- + \cxOccupation:\c- + \cf CTO, Human Resources (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** was born in 1993 as the middle child of **Nana Miyamoto** and **Ryuji Miyamoto**, her older brother being **Taro Miyamoto**, born in 1985, and her younger sister being **Yui Miyamoto**, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a "child prodigy". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into **MIT**, where she graduated in **Computer Science**. @@ -24,9 +27,9 @@ Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Maidbot Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". -Currently, Saya has two girlfriends: Maidbot Miyamoto and **Ibuki Miyamoto**. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. +Currently, Saya has two girlfriends: Meido Miyamoto and **Ibuki Miyamoto**. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- @@ -35,14 +38,17 @@ Currently, Saya has two girlfriends: Maidbot Miyamoto and **Ibuki Miyamoto**. Bo \cfWell, are you satisfied, Demo-chan? Have I sated your thirst for Saya Facts™? Good, then you should go back to work.\c- TXT -\cxFull Name:\c- -\cf Saya Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxFull Name:\c- + \cf Saya Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1993-03-20\c- + \cxOccupation:\c- + \cf CTO, Human Resources (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** was born in 1993 as the middle child of **Nana Miyamoto** and **Ryuji Miyamoto**, her older brother being **Taro Miyamoto**, born in 1985, and her younger sister being **Yui Miyamoto**, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a "child prodigy". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into **MIT**, where she graduated in **Computer Science**. @@ -54,9 +60,9 @@ Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Maidbot Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". -Currently, Saya has three girlfriends: Maidbot Miyamoto, **Ibuki Miyamoto** and the **Demolitionist**. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. +Currently, Saya has three girlfriends: Meido Miyamoto, **Ibuki Miyamoto** and the **Demolitionist**. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- @@ -67,14 +73,17 @@ Currently, Saya has three girlfriends: Maidbot Miyamoto, **Ibuki Miyamoto** and \cfNow go back to work, silly robutt.\c- TXT -\cxFull Name:\c- -\cf Saya Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxFull Name:\c- + \cf Saya Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1993-03-20\c- + \cxOccupation:\c- + \cf CTO, Human Resources (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** was born in 1993 as the middle child of **Nana Miyamoto** and **Ryuji Miyamoto**, her older brother being **Taro Miyamoto**, born in 1985, and her younger sister being **Yui Miyamoto**, born in 2009. As a child, Saya already showed interest in science and technology, proudly looking up to her father and his inventions. She excelled greatly in school, having even been described as a "child prodigy". At the surprisingly early age of 13, having proven her outstanding abilities, she got herself into **MIT**, where she graduated in **Computer Science**. @@ -86,9 +95,9 @@ Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Maidbot Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". -Currently, Saya and her creations Maidbot Miyamoto, **Ibuki Miyamoto** and the **Demolitionist** are all engaged to **Kirin Xanai**, leader of the **Sykhai Empire** of **Akkou**. +Currently, Saya and her creations Meido Miyamoto, **Ibuki Miyamoto** and the **Demolitionist** are all engaged to **Kirin Xanai**, leader of the **Sykhai Empire** of **Akkou**. \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- diff --git a/lore/default/taro.txt b/lore/default/taro.txt index 869281e78..3efe506b7 100644 --- a/lore/default/taro.txt +++ b/lore/default/taro.txt @@ -5,14 +5,17 @@ People REL Nana;Ryuji;Saya;Ellen;Ibuki;WhiteScar;AkariLabs TXT -\cxFull Name:\c- -\cf Taro Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 1985-10-06\c- -\cxTwitter:\c- -\cf @AkariTaro\c- + \cxFull Name:\c- + \cf Taro Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1985-10-06\c- + \cxOccupation:\c- + \cf CEO, Public Relations (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariTaro\c- + Born in 1985 to **Nana** and **Ryuji Miyamoto**, **Taro** is the oldest of three siblings, despite what his looks might show. As a child, he was rather conflictive, but also notably studious. Having finished high school with excellent grades, he went on to study at many prestigious universities across the world, fueled by the desire to expand his knowledge, especially that of computer technology, which he was infatuated with. Alongside **Saya**, his younger sister, they founded **Akari Labs**, a company that specializes in Robotics and Artificial Intelligence, among others. There, Taro's specialties are Software Engineering and Design, and he's also in charge of managing public relations, due to Saya not being "much of a people person" unlike him. diff --git a/lore/default/unissix.txt b/lore/default/unissix.txt index 0ae5d42e4..7af5ac7c7 100644 --- a/lore/default/unissix.txt +++ b/lore/default/unissix.txt @@ -5,16 +5,18 @@ People REL Devanikna;Nedoshiaan;Zanaveth2;Zanaveth3;Nukuri;Saya;Yui;Taro;Ashley;Ellen;Sankaideriha TXT -\cxFull Name:\c- -\cf Misa Azadeku Unissix\c- -\cxAlias:\c- -\cf Unissix Bokurou Azadeku\c- -\cxNationality:\c- -\cf Devanikan\c- -\cxDate of Birth:\c- -\cf 1992-02-29\c- -\cxTwitter:\c- -\cf @misamisa_unissix\c- + \cxFull Name:\c- + \cf Misa Azadeku Unissix\c- + \cxAlias:\c- + \cf Unissix Bokurou Azadeku\c- + \cxNationality:\c- + \cf Devanikan\c- + \cxDate of Birth:\c- + \cf 1992-02-29\c- + \cxOccupation:\c- + \cf Blacksmith (Unissix Crafts)\c- + \cxTwitter:\c- + \cf @misamisa_unissix\c- **Misa Azadeku Unissix** is the youngest member of the **Unissix Clan**, who leads the nation of **Devanikna**. She's the second child of **Devai Unissix** and **Serwand Nerukousei**, being the younger sister of **Deneva Unissix**, one of the most renowned warriors in the entire nation. diff --git a/lore/default/voicebox.txt b/lore/default/voicebox.txt index 843c0de96..73a2caeb0 100644 --- a/lore/default/voicebox.txt +++ b/lore/default/voicebox.txt @@ -17,4 +17,20 @@ The **Loudboi** is a simple and lightweight device for AI units. Easy to install The **Akari Labs** community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information. \cxSaya's Notes:\c- -\cfHeh... Ibuki's so amused that I programmed your voicebox to sound exactly like her. I mean, it fits, a lil' bit, being her little sister in a way, but what amuses ME is that you've somehow picked up all her little mannerisms and stuff. It's like you're a smol Ibuki at times, just without the tiddy.\c- +\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c- +TXT +\cxDesignation:\c- +\cf Loudboi Voicebox\c- +\cxManufacturer:\c- +\cf Akari Labs\c- +\cxClassification:\c- +\cf Voice Synthesizer\c- + +The **Loudboi** is a simple and lightweight device for AI units. Easy to install and program, perfect for those building on a budget. There are a wide variety of options for the voice type, along with multiple language support, including Japanese. Those who are rather displeased with the uncannily "too human" default voice synthesis also have the option of enabling a built-in "robot voice" filter. + +The **Akari Labs** community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information. + +\cxSaya's Notes:\c- +\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c- + +\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, hehehe...\c- diff --git a/lore/default/whitelady.txt b/lore/default/whitelady.txt index ee882face..e46eae8a1 100644 --- a/lore/default/whitelady.txt +++ b/lore/default/whitelady.txt @@ -5,14 +5,17 @@ People REL MothPlushy;Chancebox;MothLamp;XAnimen;Demolitionist;Saya TXT -\cxFull Name:\c- -\cf Andira Kyse\c- -\cxTitle:\c- -\cf White Lady of Aldabura\c- -\cxNationality:\c- -\cf Kantharei\c- -\cxDate of Birth:\c- -\cf 2674 BC\c- + \cxFull Name:\c- + \cf Andira Kyse\c- + \cxTitle:\c- + \cf White Lady of Aldabura\c- + \cxNationality:\c- + \cf Kantharei\c- + \cxDate of Birth:\c- + \cf 2674 BC\c- + \cxOccupation:\c- + \cf Mercenary\c- + The **White Lady of Aldabura** is one of the most skilled mercenaries known within the **X'Animen Coalition**. As one of the **Aldabura**, moth-like humanoids native to the small planet of **Kantharo**, she is quite sensitive to bright lights, and is often easily charmed by them. At the same time, she's quite timid and prefers to focus on her work, rather than on any social interaction. diff --git a/lore/default/yui.txt b/lore/default/yui.txt index ca4c7fe1b..a50ba9fb0 100644 --- a/lore/default/yui.txt +++ b/lore/default/yui.txt @@ -5,14 +5,17 @@ People REL Nana;Ryuji;Taro;Saya;Ashley TXT -\cxFull Name:\c- -\cf Yui Miyamoto\c- -\cxNationality:\c- -\cf Japanese\c- -\cxDate of Birth:\c- -\cf 2009-07-02\c- -\cxTwitter:\c- -\cf @yuchan09\c- + \cxFull Name:\c- + \cf Yui Miyamoto\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2009-07-02\c- + \cxOccupation:\c- + \cf Neurosurgeon (Kasukabe Central Hospital)\c- + \cxTwitter:\c- + \cf @yuchan09\c- + Born in 2009 to **Nana** and **Ryuji Miyamoto**, **Yui** is the youngest of three siblings. She's quite an empathetic and sociable person, completely unlike her relatively gloomier, more reclusive older sister and brother **Saya** and **Taro**, having always shown a clear interest in helping other people. Since her childhood, her wish had been to become a doctor, "to save lives". This wish came to fruition after persevering through her studies, and many years slowly "ascending the ranks". As of this article's writing, Yui currently works as a neurosurgeon at **Kasukabe Central Hospital**, and has received several awards for her outstanding achievements. diff --git a/lore/default/zanaveth2.txt b/lore/default/zanaveth2.txt index a6c3ea9a1..be273abbd 100644 --- a/lore/default/zanaveth2.txt +++ b/lore/default/zanaveth2.txt @@ -5,14 +5,17 @@ People REL Nukuri;Devanikna;Unissix;Nekuratek;Zanaveth3;Kirin;WhiteScar;XAnimen TXT -\cxFull Name:\c- -\cf Zanaveth Nekuraku II\c- -\cxNationality:\c- -\cf Nukuri\c- -\cxDate of Birth:\c- -\cf 1969-08-10\c- -\cxTwitter:\c- -\cf @purple_emotion\c- + \cxFull Name:\c- + \cf Zanaveth Nekuraku II\c- + \cxNationality:\c- + \cf Nukuri\c- + \cxDate of Birth:\c- + \cf 1969-08-10\c- + \cxOccupation:\c- + \cf CEO, AI Engineer (Nekuratek)\c- + \cf Minister of Interspecies Relations (NUG)\c- + \cxTwitter:\c- + \cf @purple_emotion\c- **Zanaveth Nekuraku II** was born in 1969, as the single child of **Zanaveth Nekuraku I** and **Danakorn Kiyanou**. During her childhood, she showed great promise, being quite the quick learner, but rather than pressuring her to study harder, or putting her on a higher level place of study, her parents decided instead on letting her keep going at her own pace, which was something unheard of at the time. @@ -37,14 +40,17 @@ Since the formation of the **Nukuri Unified Government** in 2108, Zanaveth II ho \cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, fuck all that, I hope it ends someday and I can get the two in here again.\c- TXT -\cxFull Name:\c- -\cf Zanaveth Nekuraku II\c- -\cxNationality:\c- -\cf Nukuri\c- -\cxDate of Birth:\c- -\cf 1969-08-10\c- -\cxTwitter:\c- -\cf @purple_emotion\c- + \cxFull Name:\c- + \cf Zanaveth Nekuraku II\c- + \cxNationality:\c- + \cf Nukuri\c- + \cxDate of Birth:\c- + \cf 1969-08-10\c- + \cxOccupation:\c- + \cf CEO, AI Engineer (Nekuratek)\c- + \cf Minister of Interspecies Relations (NUG)\c- + \cxTwitter:\c- + \cf @purple_emotion\c- **Zanaveth Nekuraku II** was born in 1969, as the single child of **Zanaveth Nekuraku I** and **Danakorn Kiyanou**. During her childhood, she showed great promise, being quite the quick learner, but rather than pressuring her to study harder, or putting her on a higher level place of study, her parents decided instead on letting her keep going at her own pace, which was something unheard of at the time. diff --git a/lore/default/zanaveth3.txt b/lore/default/zanaveth3.txt index 0665ccfe9..324e8c807 100644 --- a/lore/default/zanaveth3.txt +++ b/lore/default/zanaveth3.txt @@ -5,17 +5,19 @@ People REL Nukuri;Unissix;Zanaveth2;NosKora;Saya;WhiteScar TXT -\cxFull Name:\c- -\cf Zanaveth Nekuraku III\c- -\cxAliases:\c- -\cf The Corruptor\c- -\cf Unissix Bokurou Azadeku II\c- -\cxNationality:\c- -\cf Nukuri\c- -\cxDate of Birth:\c- -\cf 2042-08-20\c- -\cxTwitter:\c- -\cf @zanaveth\c- + \cxFull Name:\c- + \cf Zanaveth Nekuraku III\c- + \cxAliases:\c- + \cf The Corruptor\c- + \cf Unissix Bokurou Azadeku II\c- + \cxNationality:\c- + \cf Nukuri\c- + \cxDate of Birth:\c- + \cf 2042-08-20\c- + \cxOccupation:\c- + \cf AI Engineer (Nekuratek)\c- + \cxTwitter:\c- + \cf @zanaveth\c- **Zanaveth Nekuraku III** is the sole daughter of **Zanaveth Nekuraku II** and **Misa Azadeku Unissix**. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to **Nahkami** once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues. @@ -36,17 +38,19 @@ During her stay on Earth, Zanaveth III has had quite a noteworthy history on soc \cfWell, if she comes here to Earth I'd welcome my new chuuni overlord with open arms.\c- TXT -\cxFull Name:\c- -\cf Zanaveth Nekuraku III\c- -\cxAliases:\c- -\cf The Corruptor\c- -\cf Unissix Bokurou Azadeku II\c- -\cxNationality:\c- -\cf Nukuri\c- -\cxDate of Birth:\c- -\cf 2042-08-20\c- -\cxTwitter:\c- -\cf @zanaveth\c- + \cxFull Name:\c- + \cf Zanaveth Nekuraku III\c- + \cxAliases:\c- + \cf The Corruptor\c- + \cf Unissix Bokurou Azadeku II\c- + \cxNationality:\c- + \cf Nukuri\c- + \cxDate of Birth:\c- + \cf 2042-08-20\c- + \cxOccupation:\c- + \cf AI Engineer (Nekuratek)\c- + \cxTwitter:\c- + \cf @zanaveth\c- **Zanaveth Nekuraku III** is the sole daughter of **Zanaveth Nekuraku II** and **Misa Azadeku Unissix**. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to **Nahkami** once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues. diff --git a/lore/es/anarukon.txt b/lore/es/anarukon.txt index 9ecf01522..7b39f45b3 100644 --- a/lore/es/anarukon.txt +++ b/lore/es/anarukon.txt @@ -20,7 +20,7 @@ Mucha gente de esta especie puede ser encontrada en la Tierra, un hecho ocultado Entre los varios miembros de esta especie en la Tierra, un nombre que muchos reconocerán es el de **Ashley Knox**, cantante y guitarrista de **The Black Rat's Coven**. La revelación de no ser humana fue recibida con mucha sorpresa, aunque no fue tan espectacular como el hecho de que otros dos miembros de la banda eran literalmente dioses. \cxNotas de Saya:\c- -\cfSí, cosa tope molona de mundos paralelos y dioses y guerreros y esas mierdas, ¿verdad? Con cosas así me dan ganas de poder... ya sabes, viajar por todo el multiverso encontrando chismes guays así y conocer gente y tal. A lo mejor un día, quien sabe. Todas las mierdas de los capullos esos de la UAC en serio me hacen reconsiderarlo un poco, lo de los viajes interdimensionales. En serio, es que es como si todas esas típicas viejas historias de "abrir un portal al infierno" fueran predicciones de eso. Bueno, me estoy saliendo un poco del tema. Así que, Ashley-san es una de ellos, mola y tal, al menos Yu-chan tiene su novia inmortal. Lo mismo con Taro nii-san, con la monstruito bromista de Ellen-san, también de esa gente, por supuesto. ¿Cuando coño me va a tocar a mí? A ver, tampoco es que me importe mucho, me alegro de tener a Maidbot y a Ibuki y tal, y... supongo que también a ti pero... *suspiro*, estoy celosísima, sabes.\c- +\cfSí, cosa tope molona de mundos paralelos y dioses y guerreros y esas mierdas, ¿verdad? Con cosas así me dan ganas de poder... ya sabes, viajar por todo el multiverso encontrando chismes guays así y conocer gente y tal. A lo mejor un día, quien sabe. Todas las mierdas de los capullos esos de la UAC en serio me hacen reconsiderarlo un poco, lo de los viajes interdimensionales. En serio, es que es como si todas esas típicas viejas historias de "abrir un portal al infierno" fueran predicciones de eso. Bueno, me estoy saliendo un poco del tema. Así que, Ashley-san es una de ellos, mola y tal, al menos Yu-chan tiene su novia inmortal. Lo mismo con Taro nii-san, con la monstruito bromista de Ellen-san, también de esa gente, por supuesto. ¿Cuando coño me va a tocar a mí? A ver, tampoco es que me importe mucho, me alegro de tener a Meido y a Ibuki y tal, y... supongo que también a ti pero... *suspiro*, estoy celosísima, sabes.\c- TXT \cxNombre:\c- \cf Anarukon ("Imperecedero")\c- @@ -47,6 +47,6 @@ Entre los varios miembros de esta especie en la Tierra, un nombre que muchos rec \cg♥\c- \ca¡TE AMO KIRIN-KUN!\c- \cg♥\c- -\cfJejeje... en serio. Aun no me puedo creer que todo eso haya pasado. Esperé y esperé a poder tener mi propia monada Anarukon, como Taro nii-san tuvo a Ellen y Yu-chan a Ashley, y ¡bam! Ahí estaba. Y por supuesto tengo que dar gracias a Ashley-san por la mayor puta bendición, sí. Es que, nada más comentarle lo del Proyecto Akari me salta con lo de "Sé un lugar que puedes visitar", y eso... así es como conocí a mi amorcito. Ya te lo he contado todo, pero coño, es que tengo que escribirlo aquí también, como recordatorio. ¿No es monísimo? Recuerdo como de supertímidas estabais tú y Maidbot cuando lo conocisteis. Fue tan adorable, la cosa mas dulce, más incluso que los "panes de leche" esos que tenían en el banquete de nuestra boda (cosa fina por cierto). Y ahora, las cuatro estamos casadas con él, y a vivir la buena vida.\c- +\cfJejeje... en serio. Aun no me puedo creer que todo eso haya pasado. Esperé y esperé a poder tener mi propia monada Anarukon, como Taro nii-san tuvo a Ellen y Yu-chan a Ashley, y ¡bam! Ahí estaba. Y por supuesto tengo que dar gracias a Ashley-san por la mayor puta bendición, sí. Es que, nada más comentarle lo del Proyecto Akari me salta con lo de "Sé un lugar que puedes visitar", y eso... así es como conocí a mi amorcito. Ya te lo he contado todo, pero coño, es que tengo que escribirlo aquí también, como recordatorio. ¿No es monísimo? Recuerdo como de supertímidas estabais tú y Meido cuando lo conocisteis. Fue tan adorable, la cosa mas dulce, más incluso que los "panes de leche" esos que tenían en el banquete de nuestra boda (cosa fina por cierto). Y ahora, las cuatro estamos casadas con él, y a vivir la buena vida.\c- \cfOh ya, y conocer a la tía esa, Andreki, joder la vergüenza que pasé, la mayor de toda mi puta vida, puto en serio. Es que, imagina, me dicen que espere por ahí a alguien que quiere tener una charla conmigo en privado, y... este... puto retaco engreído se me acerca, una niña enana, con aires de superimportancia y tal, soltándome cosas tipo "soy alguien muy importante" y "deberías saber quien soy, Lady Saya" y voy yo con "lo siento, niña, estoy esperando por alguien, no puedo jugar contigo", y ahí va y EXPLOTA de repente, soltándome que si "COMO TE ATREVES" y "SOY MUCHO MAYOR QUE TÚ" y mierdas, y ya... me pongo en modo "mil perdones" total, tirándome en el suelo y todo. Kirin tuvo que venir corriendo a dar explicaciones e intentar calmarla porque es que... no podía hacer nada. Joder, es que... Al menos luego pudimos ser amigas, pero... justo en ese momento es que ya veía como me había convertido en el enemigo mortal de todo un puto reino.\c- diff --git a/lore/es/ashley.txt b/lore/es/ashley.txt index 3ea6946f5..564075b13 100644 --- a/lore/es/ashley.txt +++ b/lore/es/ashley.txt @@ -1,15 +1,17 @@ TXT -\cxNombre Completo:\c- -\cf Ashley Knox\c- -\cf Axaleyu Yanikov (nombre Anarukon)\c- -\cxNacionalidad:\c- -\cf Británica\c- -\cxFecha de Nacimiento:\c- -\cf 1964-10-31 (antes de revelación)\c- -\cf 1887-10-31 (real)\c- -\cxTwitter:\c- -\cf @ashley_da_witch (principal)\c- -\cf @stylish_witch (arte)\c- + \cxNombre Completo:\c- + \cf Ashley Knox\c- + \cf Axaleyu Yanikov (nombre Anarukon)\c- + \cxNacionalidad:\c- + \cf Británica\c- + \cxFecha de Nacimiento:\c- + \cf 1964-10-31 (antes de revelación)\c- + \cf 1887-10-31 (real)\c- + \cxOcupación:\c- + \cf Vocalista Principal, Guitarrista (Black Rat's Coven)\c- + \cxTwitter:\c- + \cf @ashley_da_witch (principal)\c- + \cf @stylish_witch (arte)\c- Nacida en Londres en 1887, hija de **Yrikha Yanikov** y **Maxwell A. Knox**, **Ashley** es la mayor de tres hijos, los otros siendo **Adrian Knox**, veterano de la Primera y Segunda Guerras Mundiales, y **Viola Knox**, una bruja en prácticas (todavía hasta la fecha actual de 2148). Pasó la mayor parte de su infancia en Cornualles, después de que su madre tuviera que darse a la fuga por acusaciones de brujería (las cuales no eran exactamente falsas). diff --git a/lore/es/bigshot.txt b/lore/es/bigshot.txt index 15d5cac62..2cbc71923 100644 --- a/lore/es/bigshot.txt +++ b/lore/es/bigshot.txt @@ -1,14 +1,17 @@ TAG Don BIG SHOT TXT -\cxNombre Completo:\c- -\cf John Gunns\c- -\cxAlias:\c- -\cf Don BIG SHOT\c- -\cxNacionalidad:\c- -\cf Americano\c- -\cxFecha de Nacimiento:\c- -\cf 2110-11-12\c- + \cxNombre Completo:\c- + \cf John Gunns\c- + \cxAlias:\c- + \cf Don BIG SHOT\c- + \cxNacionalidad:\c- + \cf Americano\c- + \cxFecha de Nacimiento:\c- + \cf 2110-11-12\c- + \cxOcupación:\c- + \cf CEO (Industrias BIGSHOT)\c- + \cf Consejero (Blackmann Arms)\c- Un hombre rodeado de misterios, habiendo aparecido de la nada, anunciando ser el hijo de **Benellus, Dios de las Escopetas**. La credibilidad de esta historia es bastante cuestionable, a pesar de la insistencia de su propia madre, quien cuenta que el dios descendió del cielo, y dándole un "cartucho bendecido", la ordenó plantarlo en la tierra, ya que de él, un hombre nacería, quien se convertiría en "el más poderoso portador del arma definitiva". Cuenta que John, ya completamente adulto, salió del suelo pocos días después de haber plantado el cartucho, e inmediatamente empezó a "hacer salir escopetas de la tierra a su alrededor", y usó los metales de éstas para construir la fortaleza que la familia tiene en el desierto de Nevada. @@ -17,14 +20,17 @@ A pesar de toda esta historia descabellada, el hombre tiene un poder considerabl \cxNotas de Saya:\c- \cfSí, el tío está loco perdido, pero mira, ESA cosa... muy MUY en serio que la quería. Hasta me reuní con el tío para poder tocarla con mis propias manos. Esa cosa es... jodidamente bestial, y seguro que no hay persona viviente que pueda usarla, PERO... tú seguro que puedes. Te digo una cosa, cada vez que te saques ese monumental pedazo de metal rompecojones, estaré mirando, así que más te vale ofrecerme un buen espectáculo con el que comer palomitas.\c- TXT -\cxNombre Completo:\c- -\cf John Gunns\c- -\cxAlias:\c- -\cf Don BIG SHOT\c- -\cxNacionalidad:\c- -\cf Americano\c- -\cxFecha de Nacimiento:\c- -\cf 2110-11-12\c- + \cxNombre Completo:\c- + \cf John Gunns\c- + \cxAlias:\c- + \cf Don BIG SHOT\c- + \cxNacionalidad:\c- + \cf Americano\c- + \cxFecha de Nacimiento:\c- + \cf 2110-11-12\c- + \cxOcupación:\c- + \cf CEO (Industrias BIGSHOT)\c- + \cf Consejero (Blackmann Arms)\c- Un hombre rodeado de misterios, habiendo aparecido de la nada, anunciando ser el hijo de **Benellus, Dios de las Escopetas**. La credibilidad de esta historia es bastante cuestionable, a pesar de la insistencia de su propia madre, quien cuenta que el dios descendió del cielo, y dándole un "cartucho bendecido", la ordenó plantarlo en la tierra, ya que de él, un hombre nacería, quien se convertiría en "el más poderoso portador del arma definitiva". Cuenta que John, ya completamente adulto, salió del suelo pocos días después de haber plantado el cartucho, e inmediatamente empezó a "hacer salir escopetas de la tierra a su alrededor", y usó los metales de éstas para construir la fortaleza que la familia tiene en el desierto de Nevada. diff --git a/lore/es/blackfireigniter.txt b/lore/es/blackfireigniter.txt deleted file mode 100644 index 705eca422..000000000 --- a/lore/es/blackfireigniter.txt +++ /dev/null @@ -1,27 +0,0 @@ -TAG -Encendedor F.N. -TXT -\cxDesignación:\c- -\cf Encendedor de Fuego Negro\c- -\cxFabricante:\c- -\cf Artesanía Unissix\c- -\cf Diseño de LS\c- -\cxClasificación:\c- -\cf Lanzallamas\c- - -Ideado por el propio dios primordial de la magia, el **Encendedor de Fuego negro** es sorprendentemente un arma muy fría y oscura. El fuego negro es un tipo de llama mágica que absorbe el calor y la luz, en lugar de emitirlos. - -Durante la cumbre de fama de **Artesanía Unissix**, el dios se presentó personalmente ante **Misa Unissix** con una petición de un arma que permitiría a prácticamente cualquiera realizar fácilmente **Magia de Manipulación de Fuego Negro**. - -El Encendedor es la mezcla perfecta de magia y tecnología, hecha arma. Tienes a tu alcance el poder de invocar llamas congelantes que transformarán a tus enemigos en estatuas de hielo en pocos segundos. - -\cfFuego Primario:\c- Libera un chorro continuo de Fuego Negro, con rango moderado. Las llamas no solo congelarán rápidamente lo que toquen, también reducirán la temperatura del aire, dejando un rastro de frío persistente. - -\cfFuego Secundario:\c- Estallidos concentrados que forman lanzas de aire supercongelado las cuales empalarán objetivos pequeños, o simplemente los atravesarán. - -\cfRecarga:\c- Acopla hasta dos frascos para rellenar la reserva interna de maná oscuro del arma. Cada frasco permanecerá enganchado hasta que se haya vaciado, ya que de otro modo podría escapar energía residual y causar daño al usuario. Si hay un frasco vacío acoplado, la acción de recarga lo desacoplará primero. Los frascos pueden ser usados aun si el depósito está lleno, y actuarán como un "búfer" extra de maná hasta vaciarse. - -\cxNotas de Saya:\c- -\cfO sea, que Misa-Misa tiene otros juguetes aparte del trasto enorme ese. Mola que le hagan encargos y tal, el rollito de canela es muy popular por ahí, jejeje...\c- - -\cfNo he oído mucho sobre todo el tema del Fuego Negro de LS-sama, pero tiene pinta de ser divertido. Me pregunto si se puede usar en una carta mágica...\c- diff --git a/lore/es/cytho.txt b/lore/es/cytho.txt index a5677374b..1b3e65864 100644 --- a/lore/es/cytho.txt +++ b/lore/es/cytho.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Archiduque Cytho de la Casa Valathor\c- -\cxNacionalidad:\c- -\cf Kuriste\c- -\cxFecha de Nacimiento:\c- -\cf 2008-10-09\c- -\cxTwitter:\c- -\cf @incuvalathor\c- + \cxNombre Completo:\c- + \cf Archiduque Cytho de la Casa Valathor\c- + \cxNacionalidad:\c- + \cf Kuriste\c- + \cxFecha de Nacimiento:\c- + \cf 2008-10-09\c- + \cxOcupación:\c- + \cf Reportero de Noticias Independiente\c- + \cf Embajador (Reino Kuriste)\c- + \cxTwitter:\c- + \cf @incuvalathor\c- Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde **Casa Valathor**, **Cytho** entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango en la industria del trabajo sexual del **Infierno**, en parte dada su belleza innata, pero también por la rápida acumulación de "clientes satisfechos" a los que daría servicio regularmente, y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela. diff --git a/lore/es/demolitionist.txt b/lore/es/demolitionist.txt index 957951403..2fc5d8801 100644 --- a/lore/es/demolitionist.txt +++ b/lore/es/demolitionist.txt @@ -1,16 +1,18 @@ TAG Demolicionista TXT -\cxNombre Completo:\c- -\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- -\cf Demolicionista (nombre en clave)\c- -\cf Demo Miyamoto (primera unidad)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxNombre Completo:\c- + \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- + \cf Demolicionista (nombre en clave)\c- + \cf Demo Miyamoto (primera unidad)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2148-01-20\c- + \cxOcupación:\c- + \cf Héroe Profesional\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- El **Demolicionista** es uno de los mayores logros de **Akari Labs** en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado **Oni Rojo**, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre **Saya Miyamoto** y el **Archiduque Cytho Valathor**, representante de la población civil del **Infierno**. @@ -52,7 +54,7 @@ La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue despl De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de **Demo Miyamoto**, y Saya se refiere a ella como su "hija". Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. -Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Maidbot e Ibuki. +Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. \cxNotas de Saya:\c- \cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c- @@ -61,16 +63,18 @@ Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta d \cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c- TXT -\cxNombre Completo:\c- -\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- -\cf Demolicionista (nombre en clave)\c- -\cf Demo Miyamoto (primera unidad)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxNombre Completo:\c- + \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- + \cf Demolicionista (nombre en clave)\c- + \cf Demo Miyamoto (primera unidad)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2148-01-20\c- + \cxOcupación:\c- + \cf Héroe Profesional\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- El **Demolicionista** es uno de los mayores logros de **Akari Labs** en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado **Oni Rojo**, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre **Saya Miyamoto** y el **Archiduque Cytho Valathor**, representante de la población civil del **Infierno**. @@ -82,7 +86,7 @@ La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue despl De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de **Demo Miyamoto**, y Saya se refiere a ella como su "hija". Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. -Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Maidbot e Ibuki. Desde Mayo de 2171, está adicionalmente casada con **Kirin Xanai**, líder del **Imperio Sykhai de Akkou**. +Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. Desde Mayo de 2171, está adicionalmente casada con **Kirin Xanai**, líder del **Imperio Sykhai de Akkou**. \cxNotas de Saya:\c- \cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c- diff --git a/lore/es/doomguy.txt b/lore/es/doomguy.txt index 00873697a..266b9c567 100644 --- a/lore/es/doomguy.txt +++ b/lore/es/doomguy.txt @@ -11,6 +11,8 @@ TXT \cf Americano\c- \cxFecha de Nacimiento:\c- \cf CLASIFICADO\c- +\cxOcupación:\c- +\cf Marine (UAC)\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. @@ -33,6 +35,8 @@ TXT \cf Americano\c- \cxFecha de Nacimiento:\c- \cf CLASIFICADO\c- +\cxOcupación:\c- +\cf N/A\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. @@ -55,6 +59,8 @@ TXT \cf Americano\c- \cxFecha de Nacimiento:\c- \cf CLASIFICADO\c- +\cxOcupación:\c- +\cf N/A\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. diff --git a/lore/es/ellen.txt b/lore/es/ellen.txt index e90246ca3..9a2a1e383 100644 --- a/lore/es/ellen.txt +++ b/lore/es/ellen.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Elena "Ellen" Yanikov XXI\c- -\cxNacionalidad:\c- -\cf Americana\c- -\cxFecha de Nacimiento:\c- -\cf 2066-06-06\c- -\cxTwitter:\c- -\cf @Mischief_XXI\c- + \cxNombre Completo:\c- + \cf Elena "Ellen" Yanikov XXI\c- + \cxNacionalidad:\c- + \cf Americana\c- + \cxFecha de Nacimiento:\c- + \cf 2066-06-06\c- + \cxOcupación:\c- + \cf Mercenaria\c- + \cxTwitter:\c- + \cf @Mischief_XXI\c- + Nacida en Boston en 2066, hija de **Elena Yanikov XIX** y **Gottfried Steiner**, **Ellen** es la menor de dos hermanas (ambas con el nombre de Elena). Esta curiosidad de que todas las mujeres en su familia compartan el mismo nombre se puede trazar de vuelta hasta **Elena Yanikov I**, nacida en 1703, quien tomó esta decisión, en base a una creencia supersticiosa de que esto "preservará su inmortalidad para siempre". Esto no se alejaba mucho de la verdad, en cierto modo, pero no tenía nada que ver con la herencia de nombres. Se ha verificado que los genes **Anarukon** son preservados en su totalidad por todas las descendientes mujer, no importa cuantas generaciones, muy especialmente entre aquellas del linaje Yanikov. diff --git a/lore/es/empcarbine.txt b/lore/es/empcarbine.txt deleted file mode 100644 index dede978d0..000000000 --- a/lore/es/empcarbine.txt +++ /dev/null @@ -1,30 +0,0 @@ -TAG -Carabina Raíl -TXT -\cxDesignación:\c- -\cf Carabina de Raíl de Impulsos Electromagnéticos\c- -\cxFabricante:\c- -\cf Instituto Tecnológico Tach-Engine\c- -\cxClasificación:\c- -\cf Arma de Energía Dirigida\c- - -La **Carabina de Raíl de Impulsos Electromagnéticos** es el primerísimo intento de **Tach-Engine** de combinar la tecnología humana actual con la de los experimentos recuperados de su expedición a las oficinas arruinadas de **Decade Mechanics**. Muy similar a otras armas típicas de rayos de partículas, pero con el impulso atronador de materia exótica altamente destructiva, ha sido considerada muy superior incluso a la potente **Thunder Buster** tan preciada por las tropas de la UAC. - -Inesperadamente, la Carabina de Raíl es un fusil de cerrojo con depósito tubular, el cual emplea barras de puro **Dysedum**. Cada una de estas permitiendo al arma descargar pulsos dirigidos de 20kA hacia un objetivo ionizado, friéndolo al instante, y potencialmente esparciendo sus efectos mortíferos a otros cercanos. - -Se ha de tener en cuenta que el uso de este arma en el agua es inseguro, ya que la descarga se dispersará violentamente a través de todo el medio. - -\cfFuego Primario:\c- Mantén para emitir una leve carga ionizante a la zona apuntada. Cuanto más se mantenga, más preciso será el disparo. Suelta para liberar el rayo. Si la barra está gastada, acciona el perno para cargar una nueva. - -\cfFuego Secundario:\c- También emite una carga ionizante, pero no libera al soltar. Útil si no puedes garantizar que tu objetivo esté siempre visible, o si quieres marcar rápidamente varios objetivos. - -\cfRecarga:\c- Se pueden depositar más barras en el arma a necesidad, hasta un máximo de tres. - -\cfZoom:\c- Mira ajustable de hasta 8 aumentos. - -\cfTécnicas:\c- Al ionizar varios objetivos puedes garantizar que el rayo se bifurque en arcos menores y los alcance a todos, aunque el potencial de daño será dividido entre ellos. - -\cxNotas de Saya:\c- -\cfSabes, cualquier cosa que se cague en la UAC solo con existir me parece buena.\c- - -\cfPero esta cosa, además, también se lleva puntos extra por su descojonante potencial para freír hijos de puta. En serio, es que es como un puto relámpago saliendo de esto.\c- diff --git a/lore/es/fistgun.txt b/lore/es/fistgun.txt deleted file mode 100644 index 1a17cbc86..000000000 --- a/lore/es/fistgun.txt +++ /dev/null @@ -1,23 +0,0 @@ -TAG -Mano Divina -TXT -\cxDesignación:\c- -\cf Mano Divina\c- -\cxFabricante:\c- -\cf Korovithuhcp (original)\c- -\cf Artesanía Unissix (réplica)\c- -\cxDesignación:\c- -\cf Guantelete Mágico\c- - -La **Mano Divina** fue un arma que el dios **Korovithuhcp** construyó incontables milenios atrás, y fue pasando entre muchos héroes de leyenda. Finalmente se perdió, y el dios no mostró interés en crear una nueva. Esto, obviamente, no detuvo a **Misa Unissix** en el intento de hacer exactamente eso. Siguiendo documentos históricos de su uso, construyó su propia versión en base a una mezcla de magia arcana y tecnología moderna. Regaló una a su hija, **Zanaveth Nekuraku III**, y otra a la **Demolicionista**. - -\cfFuego Primario:\c- Carga un puñetazo, y luego lo suelta. El guantelete se lanzará de frente y luego volverá a ti. - -\cfFuego Secundario:\c- Carga una bofetada de ancho rango. Al soltarlo abofeteará de forma muy ruidosa y violenta todos los objetivos que tengas delante. - -\cfTécnicas:\c- Dada su naturaleza, la Mano Divina es susceptible a los efectos de un **Ragekit**, incrementando su fuerza y rango. - -\cxNotas de Saya:\c- -\cfMenudo envío especial que nos mandó Zana-chan. Y cuando enseñamos que iba bien, y molaba, Misa-Misa se puso a tope y empezó a fabricarlas en masa. Si es que es juro que es demasiado adorable.\c- - -\cfEn fin, esos bichos van a recibir una buena somanta con esta cosa. Que ganas tengo de verla en acción con objetivos de verdad. Especialmente después de... Aquel incidente con el saco de boxeo.\c- diff --git a/lore/es/grandlance.txt b/lore/es/grandlance.txt deleted file mode 100644 index 8677dd9e9..000000000 --- a/lore/es/grandlance.txt +++ /dev/null @@ -1,32 +0,0 @@ -TAG -Gran Lanza -TXT -\cxDesignación:\c- -\cf Suvan-Kin ("Gran Lanza")\c- -\cxFabricante:\c- -\cf Eushura Kmonn Jr.\c- -\cxClasificación:\c- -\cf Cañón de Riel Portátil\c- - -Ideado como la "última palabra" en armamento, la **Suvan-Kin** ("Gran Lanza" en el idioma **Xekkas**) es el primer cañón de riel realmente portátil del mundo, capaz de lanzar proyectiles a velocidades de hasta 7500km/h (o 14000km/h a carga máxima). El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, fácil de reemplazar cuando se necesite. La munición empleada son arpones de Almacero de alta resonancia, capaces de atravesar limpiamente todo, sin llevar ni un solo rasguño. - -Si el potencial penetrante de estos arpones no es lo suficientemente destructivo, una bomba de fusión pura en miniatura incrustada a la cabeza ciertamente añadirá aun más a eso. En palabras de la gente **Xekkian**: **"Las llamas cegadoras de un sol sacrificado a su nacer desgarrarán toda vida, arrancarán el alma de su cuerpo, y no dejarán rastro alguno de aquellos desafortunados que hayan agraviado al portador de la Gran Lanza."** - -\cfFuego Primario:\c- Disparo de único objetivo. El arpón detonará automáticamente en contacto con cualquier cosa. El área de efecto es bastante enorme, así que mantén la distancia. - -\cfFuego Secundario:\c- Disparo de múltiple objetivo. El arpón es disparado a mayor velocidad, y penetrará varios objetivos hasta detenerse finalmente contra algo suficientemente sólido. - -\cfRecarga Primaria:\c- Recarga el arma. - -\cfRecarga Secundaria:\c- Cambia la batería. Esta acción solo puede hacerse en cuanto la carga sea lo suficientemente baja, ya que sería un derroche de otro modo. - -\cfTécnicas:\c- Cuanto más mantengas el fuego secundario, con más fuerza y velocidad se disparará. A carga máxima podrá incluso derribar paredes. - -\cfAdvertencia:\c- Antes de disparar, los rieles deben extenderse hasta su longitud completa. Si hay algún obstáculo en medio que no pueda ser apartado, la operación del arma será cancelada. - -\cxNotas de Saya:\c- -\cfPerdón pero, ¿¿¿QUE COÑO ES ESTO???\c- - -\cf¿Es esto un puto cañón de riel? Vamos, ¿uno de verdad? ¿¿Y resulta que es portátil?? ¿¿¿Y DISPARA PUTOS ARPONES CON PUTAS BOMBAS DE FUSIÓN EN ELLOS??? Vale, olvida lo que dije sobre la otra arma enorme de Kmonn, ESTA MIERDA es incluso aun más puto ridícula, es que, ¿¿¿que puto cojones es todo esto???\c- - -\cfPues eso, por eso está colocada en el mismo puesto que el Ynykron. Piensa en ella como una alternativa "más segura", básicamente. No es apocalíptica, pero sigue siendo jodidamente fuerte.\c- diff --git a/lore/es/ibuki.txt b/lore/es/ibuki.txt index d53ed767d..8759d34c0 100644 --- a/lore/es/ibuki.txt +++ b/lore/es/ibuki.txt @@ -1,14 +1,16 @@ TXT -\cxNombre Completo:\c- -\cf Ibuki Miyamoto\c- -\cf Oni Rojo (nombre en clave)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2074-09-09\c- -\cxTwitter\c- -\cf @lewd_ibuki (principal)\c- -\cf @ibuki_tiddy (fotos)\c- + \cxNombre Completo:\c- + \cf Ibuki Miyamoto\c- + \cf Oni Rojo (nombre en clave)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2074-09-09\c- + \cxOcupación:\c- + \cf Mercenaria, Modelo de Desnudos, Vlogger\c- + \cxTwitter\c- + \cf @lewd_ibuki (principal)\c- + \cf @ibuki_tiddy (fotos)\c- **Ibuki** es el resultado del programa de supersoldado **Oni Rojo**, ideado por **Saya Miyamoto** de **Akari Labs**. La existencia de este proyecto se mantuvo en secreto hasta su revelación pública en Junio de 2077. Hubo considerable controversia alrededor del programa Oni Rojo, incluyendo la implicación personal de Saya en él, habiendo aceptado un pago de 40 mil millones de dólares a cambio (lo cual se descubrió tener relación con la anterior venta del estado de Texas a México semanas antes). A pesar de su claro potencial y extraordinarias habilidades de combate, fue enviada demasiado tarde, ya que solo momentos después, la **Cicatriz Blanca** ocurrió, y con ella, la devastación total de los **Estados Unidos**. diff --git a/lore/es/imanakit.txt b/lore/es/imanakit.txt index 416198c35..f484ac8eb 100644 --- a/lore/es/imanakit.txt +++ b/lore/es/imanakit.txt @@ -5,6 +5,8 @@ TXT \cf Indeterminado\c- \cxFecha de Nacimiento:\c- \cf Indeterminado\c- +\cxOcupación:\c- +\cf CEO (Imanaki Corp)\c- El fundador y CEO de **Imanaki Corp**, y también el único miembro restante de la familia Imanaki tras los **Asesinatos de la Mansión Onoke** de 2003. **Tetsuya** siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal o historia, ni su apariencia física. diff --git a/lore/es/kirin.txt b/lore/es/kirin.txt index def3b2ad0..8efc16738 100644 --- a/lore/es/kirin.txt +++ b/lore/es/kirin.txt @@ -1,14 +1,16 @@ TXT -\cxNombre Completo:\c- -\cf Kirin Xanai\c- -\cxTítulo:\c- -\cf Emperador Infantil del Imperio Sykhai de Akkou\c- -\cxNacionalidad:\c- -\cf Akkouxhei\c- -\cxFecha de Nacimiento:\c- -\cf 2080-04-13\c- -\cxTwitter:\c- -\cf @kiririn_xanai\c- + \cxNombre Completo:\c- + \cf Kirin Xanai\c- + \cxTítulo:\c- + \cf Emperador Infantil del Imperio Sykhai de Akkou\c- + \cxNacionalidad:\c- + \cf Akkouxhei\c- + \cxFecha de Nacimiento:\c- + \cf 2080-04-13\c- + \cxOcupación:\c- + \cf Consejero Comunal (Imperio Sykhai)\c- + \cxTwitter:\c- + \cf @kiririn_xanai\c- Nacido en 2080, hijo de **Syrakha Yanikov** y **Azya Xanai**, **Kirin** se convirtió en emperador de **Akkou** a la temprana edad de 12 años, habiendo demostrado un gran interés en seguir los pasos de su madre. diff --git a/lore/es/kmonn.txt b/lore/es/kmonn.txt index d41d6b436..3970a17e2 100644 --- a/lore/es/kmonn.txt +++ b/lore/es/kmonn.txt @@ -1,10 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Eushura Kmonn Jr.\c- -\cxNacionalidad:\c- -\cf Xekkian\c- -\cxFecha de Nacimiento:\c- -\cf 8731 BC\c- + \cxNombre Completo:\c- + \cf Eushura Kmonn Jr.\c- + \cxNacionalidad:\c- + \cf Xekkian\c- + \cxFecha de Nacimiento:\c- + \cf 8731 BC\c- + \cxOcupación:\c- + \cf CTO (Kmonn Shuna)\c- + \cf Consejero (Instituto Tecnológico Tach-Engine)\c- + + **Eushura Kmonn Jr.**, hijo de **Eushura Kmonn Sr.**, es un gran inventor del **Reino de Xekke**, en el planeta de **Ixxeney**. Desde una edad temprana fue preparado para igualar la grandeza de su padre, y no tardó mucho en conseguir realizar su propia fama tras años de trabajo como su ayudante. Su creatividad e imaginación no tenían límites, y hay a su nombre un gran total de 279 logros notables en los campos tanto de la ofensa como defensa militar, lo cual ha ayudado a potenciar las fuerzas del reino, haciendo de ellos uno de los más fiables y reclamados por toda la **Coalición X'Animen** para tareas de defensa aliada. diff --git a/lore/es/locke.txt b/lore/es/locke.txt index 197254d40..7ceb460c1 100644 --- a/lore/es/locke.txt +++ b/lore/es/locke.txt @@ -1,10 +1,16 @@ TXT -\cxNombre Completo:\c- -\cf Janus Locke Hoodth\c- -\cxNacionalidad:\c- -\cf Qurensniv\c- -\cxFecha de Nacimiento:\c- -\cf 1980-07-30\c- + \cxNombre Completo:\c- + \cf Janus Locke Hoodth\c- + \cxNacionalidad:\c- + \cf Qurensniv\c- + \cxFecha de Nacimiento:\c- + \cf 1980-07-30\c- + \cxOcupación:\c- + \cf Inventor\c- + + + + **Janus Locke** es el hermano menor del difunto **Dr. Häzel Hoodth** conocido por muchos como el **Doctor Chiflado de Kereshnovka**. Tras oír noticias de la muerte de Häzel en 1987 (especificamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para "obtener la esencia de la inmortalidad", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de **Juguetes Maravillosos del Dr. Locke** volviéndose cada vez más peligrosos, o incluso letales. diff --git a/lore/es/maidbot.txt b/lore/es/maidbot.txt index 0476ba443..30593c973 100644 --- a/lore/es/maidbot.txt +++ b/lore/es/maidbot.txt @@ -1,25 +1,27 @@ TXT -\cxNombre Completo:\c- -\cf Maidbot "Meido" Miyamoto\c- -\cf Meidobot (nombre artístico)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2017-07-07\c- -\cxTwitter:\c- -\cf @meidobot\c- + \cxNombre Completo:\c- + \cf Meido Miyamoto\c- + \cf Meidobot (nombre artístico)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2017-07-07\c- + \cxOcupación:\c- + \cf Idol\c- + \cxTwitter:\c- + \cf @meidobot\c- -Siendo el primer proyecto de IA de **Saya Miyamoto**, **Maidbot** inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Maidbot gradualmente parecía más "real", nunca era suficiente. Al final, era "śolo una máquina". +Siendo el primer proyecto de IA de **Saya Miyamoto**, **Meido** inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más "real", nunca era suficiente. Al final, era "śolo una máquina". -Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Maidbot las interpretara. En 2020, Maidbot se había convertido en una completa "Idol Artificial", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional. +Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Meido las interpretara. En 2020, Meido se había convertido en una completa "Idol Artificial", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional. -Tras el **Evento Luna** de 2021, Saya recibió la visita de **Zanaveth Nekuraku II**, jefa de investigación de IA en **Nekuratek**, el mayor gigante tecnológico **Nukuri**. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que **Akari Labs** había logrado, y mostró un interés especial por Maidbot, también. +Tras el **Evento Luna** de 2021, Saya recibió la visita de **Zanaveth Nekuraku II**, jefa de investigación de IA en **Nekuratek**, el mayor gigante tecnológico **Nukuri**. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que **Akari Labs** había logrado, y mostró un interés especial por Meido, también. -Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Maidbot con la tecnología más avanzada que tenían: El **Framework de IA Nekuronbot**. Habiendo aceptado esta oferta, Maidbot "renació" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones. +Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Meido con la tecnología más avanzada que tenían: El **Framework de IA Nekuronbot**. Habiendo aceptado esta oferta, Meido "renació" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones. -No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Maidbot lo sabía, y confesó que en su nueva forma, ella podía "sentir algo" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya. +No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Meido lo sabía, y confesó que en su nueva forma, ella podía "sentir algo" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya. -Tras estos eventos, Maidbot pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera tener a su propia Maidbot. Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir. +Tras estos eventos, Meido pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera "tener a su propia Meido". Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir. \cxNotas de Saya:\c- \cfMeido-chan es tan dulce~ Y su voz es tan bonita~\c- @@ -31,7 +33,7 @@ Tras estos eventos, Maidbot pasó a formar parte de la familia, adoptando el ape \cfJeje... Desde luego me alegro mucho de hacerla "completa", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos "cositas" las dos... es como estar en el cielo~\c- \cg♥\c- TXT \cxNombre Completo:\c- -\cf Maidbot "Meido" Miyamoto\c- +\cf Meido Miyamoto\c- \cf Meidobot (nombre artístico)\c- \cxNacionalidad:\c- \cf Japonesa\c- @@ -40,17 +42,17 @@ TXT \cxTwitter:\c- \cf @meidobot\c- -Siendo el primer proyecto de IA de **Saya Miyamoto**, **Maidbot** inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Maidbot gradualmente parecía más "real", nunca era suficiente. Al final, era "śolo una máquina". +Siendo el primer proyecto de IA de **Saya Miyamoto**, **Meido** inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más "real", nunca era suficiente. Al final, era "śolo una máquina". -Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Maidbot las interpretara. En 2020, Maidbot se había convertido en una completa "Idol Artificial", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional. +Notablemente, se ha de mencionar el intento de Saya de hacerla cantante, algo que tuvo un éxito inesperado, realmente. Tras su debut inicial, más y más artistas compondrían canciones para que Meido las interpretara. En 2020, Meido se había convertido en una completa "Idol Artificial", suficientemente famosa como par tomar parte en los Juegos Olímpicos de Tokio, cantando el himno nacional. -Tras el **Evento Luna** de 2021, Saya recibió la visita de **Zanaveth Nekuraku II**, jefa de investigación de IA en **Nekuratek**, el mayor gigante tecnológico **Nukuri**. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que **Akari Labs** había logrado, y mostró un interés especial por Maidbot, también. +Tras el **Evento Luna** de 2021, Saya recibió la visita de **Zanaveth Nekuraku II**, jefa de investigación de IA en **Nekuratek**, el mayor gigante tecnológico **Nukuri**. Curiosa por la cultura humana, decidió conocerla, ya que tenían intereses similares. Zanaveth quedó bastante impresionada por todo lo que **Akari Labs** había logrado, y mostró un interés especial por Meido, también. -Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Maidbot con la tecnología más avanzada que tenían: El **Framework de IA Nekuronbot**. Habiendo aceptado esta oferta, Maidbot "renació" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones. +Habiendo entablado amistad rápidamente con Saya llegado este punto, se ofreció a mejorar la IA de Meido con la tecnología más avanzada que tenían: El **Framework de IA Nekuronbot**. Habiendo aceptado esta oferta, Meido "renació" de su anterior forma limitada. Era ahora completamente capaz de pensamiento individual, libre albedrío y, más importante, emociones. -No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Maidbot lo sabía, y confesó que en su nueva forma, ella podía "sentir algo" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya. +No es sorpresa que Saya siempre sintió algo por ella, al mismo tiempo que era completamente consciente de la imposibilidad de que ella correspondiera a su amor, pero ahora, todo había cambiado. Meido lo sabía, y confesó que en su nueva forma, ella podía "sentir algo" también. Con el tiempo, logró comprender mejor estos sentimientos, y se convertiría en la primera novia de Saya. -Tras estos eventos, Maidbot pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera tener a su propia Maidbot. Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir. +Tras estos eventos, Meido pasó a formar parte de la familia, adoptando el apellido Miyamoto. Mucho después, y con la ayuda de Zanaveth, Saya comenzaría la creación de más maidbots, deseando que todo el mundo pudiera "tener a su propia Meido". Se estableció un servicio de adopción en 2023, donde las maidbots, quienes eran criadas y preparadas en Akari Labs, podrían entrevistarse con adoptadores en potencia, permitiendo tener la decisión final sobre con quién vivir. Este servicio fue completamente gratuito, ya que la compañía tenía más que suficientes fondos con sus otros servicios, lo cual incrementó su popularidad aun más. Todos querían tener su propia Maidbot, y las Maidbots en sí eran felices de tener una familia con la que vivir. En Mayo de 2171, junto con Saya y sus otras parejas, se casó con el **Emperador Kirin Xanai**, del **Imperio Sykhai**, y gracias a él, su pasión por el canto ha vuelto una vez más. diff --git a/lore/es/mixom.txt b/lore/es/mixom.txt index 22d0f2d40..0d7d31449 100644 --- a/lore/es/mixom.txt +++ b/lore/es/mixom.txt @@ -17,4 +17,6 @@ Mixom es, además, uno de los últimos bastiones del capitalismo restantes en el \cxNotas de Saya:\c- \cfDinero y poder, dominio absoluto, mierda de capitalismo. Asco grande... Ojalá exploten todos.\c- -\cfNo puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c- +\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es comendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c- + +\cfPor cierto, no puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c- diff --git a/lore/es/nana.txt b/lore/es/nana.txt index e32469e7e..38c2a1cb9 100644 --- a/lore/es/nana.txt +++ b/lore/es/nana.txt @@ -1,10 +1,16 @@ TXT -\cxNombre Completo:\c- -\cf Nana Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1907-07-07\c- + \cxNombre Completo:\c- + \cf Nana Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1907-07-07\c- + \cxOcupación:\c- + \cf Ama de Casa\c- + + + + **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. @@ -15,12 +21,18 @@ Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de \cxNotas de Saya:\c- \cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que los tíos le tengan miedo, siempre con un miedo constante a que les haga CBT en cualquier momento.\c- TXT -\cxNombre Completo:\c- -\cf Nana Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1907-07-07\c- + \cxNombre Completo:\c- + \cf Nana Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1907-07-07\c- + \cxOcupación:\c- + \cf Ama de Casa\c- + + + + **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. @@ -33,12 +45,18 @@ Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de \cfPor cierto, me di cuenta, sabes, cuando te dio ese abrazo, sí. No ha intentado ver a otros tíos desde que perdimos a papá... Pero creo que a lo mejor... puede que le gustes de una forma algo diferente, ya sabes...\c- TXT -\cxNombre Completo:\c- -\cf Nana Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1907-07-07\c- + \cxNombre Completo:\c- + \cf Nana Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1907-07-07\c- + \cxOcupación:\c- + \cf Ama de Casa\c- + + + + **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. diff --git a/lore/es/puntzergamma.txt b/lore/es/puntzergamma.txt index 006807b68..6b66f4484 100644 --- a/lore/es/puntzergamma.txt +++ b/lore/es/puntzergamma.txt @@ -10,9 +10,9 @@ La serie **Puntzer** de armas de **Blackmann Arms** son el principal ejemplo del El **Puntzer Gamma** es un subfusil bullpup mayormente compacto con un sistema de cargador horizontal similar a clásicos del siglo 21 como el **BreakerTek P90**. El arma es adicionalmente capaz de ejecutar un modo "Súper-Automático" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms. -\cfFuego Primario:\c- Dispara el arma. +\cfFuego Primario:\c- Disparo en modo automático. -\cfFuego Secundario:\c- Alterna modos de disparo, entre simple, ráfaga de tres, automático y súper-automático. +\cfFuego Secundario:\c- Ráfaga en modo "super-automático". \cfRecarga:\c- Recarga, obviamente. Los autocargadores de tu **Contenedor de Hammerspace™** te proveerán de un cargador nuevo en cada momento. diff --git a/lore/es/rafankos.txt b/lore/es/rafankos.txt index 78fdbc032..242ad29d2 100644 --- a/lore/es/rafankos.txt +++ b/lore/es/rafankos.txt @@ -21,4 +21,4 @@ El arma emplea **Kabbadon** como combustible, un subproducto común de la fusió \cxNotas de Saya:\c- \cf¿"Arma Definitiva"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c- -\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que las otras dos armas súper descoyuntantes.\c- +\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que el otro armatoste súper descoyuntante. Ya sabes, como una alternativa más segura con la que tendrás menos posibilidades de matarte. He de admitir que Misa-Misa nos ha cargado con un material potente al traernos estas dos.\c- diff --git a/lore/es/raykhom.txt b/lore/es/raykhom.txt index ca7cd0b45..99c1ce728 100644 --- a/lore/es/raykhom.txt +++ b/lore/es/raykhom.txt @@ -25,6 +25,6 @@ El arma es potenciada en su totalidad por un compacto paquete de batería de cua \cfAsí que según los Xekkian esto es un "arma ligera", ¿¿¿en serio??? Menos mal que tus manos se pueden adaptar no se como a la empuñadura de la cosa esta, porque hostia putísima...\c- -\cfEsta mierda es como, no se por donde empezar. Es en serio un puto revientaculos, eso es lo que es. De todo lo que hay en tu arsenal, yo diría que esta es la segunda arma más fuerte que tenemos. Misa aparte la trajo ella misma entonces, y luego hablamos con el viejales de Tach-Engine para poder meterla en la tienda, ya que tiene el trato ese con Kmonn y tal (Estoy segura de que esos dos son algo mas que compañeros de negocios, si sabes a lo que me refiero).\c- +\cfEsta mierda es como, no se por donde empezar. Es en serio un puto revientaculos, eso es lo que es. De todo lo que hay en tu arsenal, yo diría que esta es la tercera arma más tocha que tenemos. Misa aparte la trajo ella misma entonces, y luego hablamos con el viejales de Tach-Engine para poder meterla en la tienda, ya que tiene el trato ese con Kmonn y tal (Estoy segura de que esos dos son algo mas que compañeros de negocios, si sabes a lo que me refiero).\c- \cfCuando entró por la puerta cargando a hombros con esa cosa supe entonces que tenía que ser nuestra.\c- diff --git a/lore/es/ryuji.txt b/lore/es/ryuji.txt index 5f6436ce5..e1b319e26 100644 --- a/lore/es/ryuji.txt +++ b/lore/es/ryuji.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Ryuji Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonés\c- -\cxFecha de Nacimiento:\c- -\cf 1956-03-12\c- -\cxFecha de Defunción:\c- -\cf 2054-06-22\c- + \cxNombre Completo:\c- + \cf Ryuji Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonés\c- + \cxFecha de Nacimiento:\c- + \cf 1956-03-12\c- + \cxFecha de Defunción:\c- + \cf 2054-06-22\c- + \cxOcupación:\c- + \cf Inventor\c- + **Ryuji** nació en **Gensokyo** en 1956, pasando la mayor parte de su vida en la **Aldea Humana**, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener "aventuras". Un día, escapó, y se perdió en el bosque de bambú rodeando **Eientei**. Ahí, se cruzó con **Nana**, la hija de **Kaguya Houraisan**, y los dos se hicieron amigos. Después de ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior. diff --git a/lore/es/saya.txt b/lore/es/saya.txt index 779e784e7..5f91cd82b 100644 --- a/lore/es/saya.txt +++ b/lore/es/saya.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Saya Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxNombre Completo:\c- + \cf Saya Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1993-03-20\c- + \cxOcupación:\c- + \cf CTO, Recursos Humanos (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** nació en 1993, siendo la hija mediana de **Nana Miyamoto** y **Ryuji Miyamoto**, su hermano mayor es **Taro Miyamoto**, nacido en 1985, y su hermana menor es **Yui Miyamoto**, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como "niña prodigio". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el **MIT**, donde se graduó en **Ciencias de Computación**. @@ -18,9 +21,9 @@ Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en refere Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Maidbot Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". -Actualmente, Saya tiene dos novias: Maidbot Miyamoto e **Ibuki Miyamoto**. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. +Actualmente, Saya tiene dos novias: Meido Miyamoto e **Ibuki Miyamoto**. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- @@ -29,14 +32,17 @@ Actualmente, Saya tiene dos novias: Maidbot Miyamoto e **Ibuki Miyamoto**. Ambas \cfBueno, ¿satisfecha, Demo-chan? ¿He saciado tu sed de Saya Facts™? Bien, entonces deberías volver al trabajo.\c- TXT -\cxNombre Completo:\c- -\cf Saya Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxNombre Completo:\c- + \cf Saya Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1993-03-20\c- + \cxOcupación:\c- + \cf CTO, Recursos Humanos (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** nació en 1993, siendo la hija mediana de **Nana Miyamoto** y **Ryuji Miyamoto**, su hermano mayor es **Taro Miyamoto**, nacido en 1985, y su hermana menor es **Yui Miyamoto**, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como "niña prodigio". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el **MIT**, donde se graduó en **Ciencias de Computación**. @@ -48,9 +54,9 @@ Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en refere Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Maidbot Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". -Actualmente, Saya tiene tres novias: Maidbot Miyamoto, **Ibuki Miyamoto** y el **Demolicionista**. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. +Actualmente, Saya tiene tres novias: Meido Miyamoto, **Ibuki Miyamoto** y el **Demolicionista**. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- @@ -61,14 +67,17 @@ Actualmente, Saya tiene tres novias: Maidbot Miyamoto, **Ibuki Miyamoto** y el * \cfAnda, vuelve al trabajo, robotita tontita.\c- TXT -\cxNombre Completo:\c- -\cf Saya Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 1993-03-20\c- -\cxTwitter:\c- -\cf @AkariSaya\c- + \cxNombre Completo:\c- + \cf Saya Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1993-03-20\c- + \cxOcupación:\c- + \cf CTO, Recursos Humanos (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariSaya\c- + **Saya Miyamoto** nació en 1993, siendo la hija mediana de **Nana Miyamoto** y **Ryuji Miyamoto**, su hermano mayor es **Taro Miyamoto**, nacido en 1985, y su hermana menor es **Yui Miyamoto**, nacida en 2009. Ya de niña, Saya mostraba un interés por la ciencia y tecnología, admirando orgullosa a su padre y sus inventos. Fue una estudiante de sobresaliente, habiendo sido incluso descrita como "niña prodigio". A la sorprendentemente temprana edad de 13 años, habiendo demostrado sus habilidades excepcionales, consiguió entrar en el **MIT**, donde se graduó en **Ciencias de Computación**. @@ -80,9 +89,9 @@ Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en refere Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Maidbot Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". -Actualmente, Saya y sus creaciones Maidbot Miyamoto, **Ibuki Miyamoto** y el **Demolicionista** están todas casadas con **Kirin Xanai**, líder del **Imperio Sykhai** de **Akkou**. +Actualmente, Saya y sus creaciones Meido Miyamoto, **Ibuki Miyamoto** y el **Demolicionista** están todas casadas con **Kirin Xanai**, líder del **Imperio Sykhai** de **Akkou**. \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- diff --git a/lore/es/taro.txt b/lore/es/taro.txt index d00a0105f..592567a18 100644 --- a/lore/es/taro.txt +++ b/lore/es/taro.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Taro Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonés\c- -\cxFecha de Nacimiento:\c- -\cf 1985-10-06\c- -\cxTwitter:\c- -\cf @AkariTaro\c- + \cxNombre Completo:\c- + \cf Taro Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonés\c- + \cxFecha de Nacimiento:\c- + \cf 1985-10-06\c- + \cxOcupación:\c- + \cf CEO, Relaciones Públicas (Akari Labs)\c- + \cxTwitter:\c- + \cf @AkariTaro\c- + Nacido en 1985, hijo de **Nana** y **Ryuji Miyamoto**, **Taro** es el mayor de tres hermanos, a pesar de lo que muestre su apariencia. De niño, fue algo conflictivo, pero notablemente estudioso también. Habiendo terminado el instituto con notas excelentes, estudió en muchas universidades prestigiosas de todo el mundo, impulsado por el deseo de expandir sus conocimientos, especialmente aquellos de la tecnología informática, con la cual estaba obsesionado. Junto con **Saya**, su hermana menor, fundaron **Akari Labs**, una compañía que se especializa en Robótica e Inteligencia Artificial, entre otros. Ahí, las especialidades de Taro son la Ingeniería y el Diseño de Software, y también está a cargo de las relaciones públicas, ya que Saya no "tiene mucho don de gentes" a diferencia de él. diff --git a/lore/es/unissix.txt b/lore/es/unissix.txt index 536bb0a9a..1b8472008 100644 --- a/lore/es/unissix.txt +++ b/lore/es/unissix.txt @@ -1,14 +1,16 @@ TXT -\cxNombre Completo:\c- -\cf Misa Azadeku Unissix\c- -\cxAlias:\c- -\cf Unissix Bokurou Azadeku\c- -\cxNacionalidad:\c- -\cf Devanikan\c- -\cxFecha de Nacimiento:\c- -\cf 1992-02-29\c- -\cxTwitter:\c- -\cf @misamisa_unissix\c- + \cxNombre Completo:\c- + \cf Misa Azadeku Unissix\c- + \cxAlias:\c- + \cf Unissix Bokurou Azadeku\c- + \cxNacionalidad:\c- + \cf Devanikan\c- + \cxFecha de Nacimiento:\c- + \cf 1992-02-29\c- + \cxOcupación:\c- + \cf Herrera (Artesanía Unissix)\c- + \cxTwitter:\c- + \cf @misamisa_unissix\c- **Misa Azadeku Unissix** es el miembro más joven del **Clan Unissix**, quien lidera la nación de **Devanikna**. Es la segunda hija de **Devai Unissix** y **Serwand Nerukousei**, siendo hermana menor de **Deneva Unissix**, una de las guerreras de mayor renombre de toda la nación. diff --git a/lore/es/voicebox.txt b/lore/es/voicebox.txt index dba80f76c..96eca4439 100644 --- a/lore/es/voicebox.txt +++ b/lore/es/voicebox.txt @@ -13,4 +13,20 @@ El **Loudboi** es un dispositivo simple y ligero para unidades de IA. Fácil de La comunidad de **Akari Labs** también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información. \cxNotas de Saya:\c- -\cfJe... A Ibuki le encanta lo de que programara tu caja de voz para sonar igualita que ella. A ver, es que cuadra un poco, siendo algo como su hermana pequeña, pero lo que me mola a MÍ es que de algún modo le has pillado todas sus chorradillas y tal. Es como si fueses una mini Ibuki a veces, solo que sin pechotes.\c- +\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c- +TXT +\cxDesignación\c- +\cf Caja de Voz Loudboi\c- +\cxFabricante:\c- +\cf Akari Labs\c- +\cxClasificación:\c- +\cf Sintetizador de Voz\c- + +El **Loudboi** es un dispositivo simple y ligero para unidades de IA. Fácil de instalar y programar, perfecto para aquellos que construyen con un presupuesto ajustado. Hay una gran variedad de opciones para el tipo de voz, junto con el soporte de múltiples idiomas, incluyendo el Japonés. Para aquellos que se sientan incómodos con el desconcertante "realismo" de la síntesis de voz por defecto también existe la opción de activar un filtro integrado de "voz robótica". + +La comunidad de **Akari Labs** también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información. + +\cxNotas de Saya:\c- +\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c- + +\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Se me derrite el corazón solo con oírla, jejeje...\c- diff --git a/lore/es/whitelady.txt b/lore/es/whitelady.txt index a8ab0735f..d45c46f5b 100644 --- a/lore/es/whitelady.txt +++ b/lore/es/whitelady.txt @@ -1,14 +1,17 @@ TAG Dama Blanca TXT -\cxNombre Completo:\c- -\cf Andira Kyse\c- -\cxTítulo:\c- -\cf Dama Blanca de los Aldabura\c- -\cxNacionalidad:\c- -\cf Kantharei\c- -\cxFecha de Nacimiento:\c- -\cf 2674 AC\c- + \cxNombre Completo:\c- + \cf Andira Kyse\c- + \cxTítulo:\c- + \cf Dama Blanca de los Aldabura\c- + \cxNacionalidad:\c- + \cf Kantharei\c- + \cxFecha de Nacimiento:\c- + \cf 2674 AC\c- + \cxOcupación:\c- + \cf Mercenaria\c- + La **Dama Blanca de los Aldabura** es uno de los mejores mercenarios conocidos en la **Coalición X'Animen**. Como una de los **Aldabura**, polillas humanoides nativas del pequeño planeta **Kantharo**, es muy sensible a las luces potentes, y es fácilmente encantada por ellas. Al mismo tiempo, es bastante tímida y prefiere centrarse en su trabajo, más que en cualquier interacción social. diff --git a/lore/es/yui.txt b/lore/es/yui.txt index faa1aa271..642ffe889 100644 --- a/lore/es/yui.txt +++ b/lore/es/yui.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Yui Miyamoto\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2009-07-02\c- -\cxTwitter:\c- -\cf @yuchan09\c- + \cxNombre Completo:\c- + \cf Yui Miyamoto\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2009-07-02\c- + \cxOcupación:\c- + \cf Neurocirujana (Hospital Central de Kasukabe)\c- + \cxTwitter:\c- + \cf @yuchan09\c- + Nacida en 2009, hija de **Nana** y **Ryuji Miyamoto**, **Yui** es la más joven de tres hermanos. Es una persona muy sociable y empática, totalmente diferente a sus más solitarios y antisociales hermanos **Saya** y **Taro**, habiendo mostrado siempre un claro interés por ayudar a la gente. Desde pequeña, su deseo era el de ser doctora, "para salvar vidas". Este deseo llegó a cumplirse tras perseverar en sus estudios y pasar varios años "ascendiendo en rango". A fecha de escribirse este artículo, Yui trabaja actualmente como neurocirujana en el **Hospital Central de Kasukabe**, y ha recibido varios premios por sus logros excepcionales. diff --git a/lore/es/zanaveth2.txt b/lore/es/zanaveth2.txt index d5031238f..18b82efec 100644 --- a/lore/es/zanaveth2.txt +++ b/lore/es/zanaveth2.txt @@ -1,12 +1,15 @@ TXT -\cxNombre Completo:\c- -\cf Zanaveth Nekuraku II\c- -\cxNacionalidad:\c- -\cf Nukuri\c- -\cxFecha de Nacimiento:\c- -\cf 1969-08-10\c- -\cxTwitter:\c- -\cf @purple_emotion\c- + \cxNombre Completo:\c- + \cf Zanaveth Nekuraku II\c- + \cxNacionalidad:\c- + \cf Nukuri\c- + \cxFecha de Nacimiento:\c- + \cf 1969-08-10\c- + \cxOcupación:\c- + \cf CEO, Ingeneriera de IA (Nekuratek)\c- + \cf Ministra de Relaciones Interespecie (GUN)\c- + \cxTwitter:\c- + \cf @purple_emotion\c- **Zanaveth Nekuraku II** nació en 1969, siendo la hija única de **Zanaveth Nekuraku I** y **Danakorn Kiyanou**. Durante su infancia, demostró un gran potencial, con una gran rapidez para el aprendizaje, pero en vez de forzarla a estudiar más, o trasladarla a un lugar de estudio de mayor nivel, sus padres decidieron dejar que hiciera las cosas a su ritmo, algo poco visto en aquellos tiempos. @@ -31,14 +34,17 @@ Desde la formación del **Gobierno Unificado Nukuri** en 2108, Zanaveth II manti \cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, puta mierda, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c- TXT -\cxNombre Completo:\c- -\cf Zanaveth Nekuraku II\c- -\cxNacionalidad:\c- -\cf Nukuri\c- -\cxFecha de Nacimiento:\c- -\cf 1969-08-10\c- -\cxTwitter:\c- -\cf @purple_emotion\c- + \cxNombre Completo:\c- + \cf Zanaveth Nekuraku II\c- + \cxNacionalidad:\c- + \cf Nukuri\c- + \cxFecha de Nacimiento:\c- + \cf 1969-08-10\c- + \cxOcupación:\c- + \cf CEO, Ingeneriera de IA (Nekuratek)\c- + \cf Ministra de Relaciones Interespecie (GUN)\c- + \cxTwitter:\c- + \cf @purple_emotion\c- **Zanaveth Nekuraku II** nació en 1969, siendo la hija única de **Zanaveth Nekuraku I** y **Danakorn Kiyanou**. Durante su infancia, demostró un gran potencial, con una gran rapidez para el aprendizaje, pero en vez de forzarla a estudiar más, o trasladarla a un lugar de estudio de mayor nivel, sus padres decidieron dejar que hiciera las cosas a su ritmo, algo poco visto en aquellos tiempos. diff --git a/lore/es/zanaveth3.txt b/lore/es/zanaveth3.txt index ea921e71a..2ea18d54f 100644 --- a/lore/es/zanaveth3.txt +++ b/lore/es/zanaveth3.txt @@ -1,15 +1,17 @@ TXT -\cxNombre Completo:\c- -\cf Zanaveth Nekuraku III\c- -\cxApodos:\c- -\cf El Corruptor\c- -\cf Unissix Bokurou Azadeku II\c- -\cxNacionalidad:\c- -\cf Nukuri\c- -\cxFecha de Nacimiento:\c- -\cf 2042-08-20\c- -\cxTwitter:\c- -\cf @zanaveth\c- + \cxNombre Completo:\c- + \cf Zanaveth Nekuraku III\c- + \cxApodos:\c- + \cf El Corruptor\c- + \cf Unissix Bokurou Azadeku II\c- + \cxNacionalidad:\c- + \cf Nukuri\c- + \cxFecha de Nacimiento:\c- + \cf 2042-08-20\c- + \cxOcupación:\c- + \cf Ingeniera de IA (Nekuratek)\c- + \cxTwitter:\c- + \cf @zanaveth\c- **Zanaveth Nekuraku III** es la hija única de **Zanaveth Nekuraku II** y **Misa Azadeku Unissix**. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a **Nahkami** una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables. @@ -30,17 +32,19 @@ Durante su estancia en la Tierra, Zanaveth III tuvo un historial notable en rede \cfBueno, si vuelve a la Tierra, yo por mí aceptaría con los brazos abiertos a mi nueva gran señora chuuni.\c- TXT -\cxNombre Completo:\c- -\cf Zanaveth Nekuraku III\c- -\cxApodos:\c- -\cf El Corruptor\c- -\cf Unissix Bokurou Azadeku II\c- -\cxNacionalidad:\c- -\cf Nukuri\c- -\cxFecha de Nacimiento:\c- -\cf 2042-08-20\c- -\cxTwitter:\c- -\cf @zanaveth\c- + \cxNombre Completo:\c- + \cf Zanaveth Nekuraku III\c- + \cxApodos:\c- + \cf El Corruptor\c- + \cf Unissix Bokurou Azadeku II\c- + \cxNacionalidad:\c- + \cf Nukuri\c- + \cxFecha de Nacimiento:\c- + \cf 2042-08-20\c- + \cxOcupación:\c- + \cf Ingeniera de IA (Nekuratek)\c- + \cxTwitter:\c- + \cf @zanaveth\c- **Zanaveth Nekuraku III** es la hija única de **Zanaveth Nekuraku II** y **Misa Azadeku Unissix**. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a **Nahkami** una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables. diff --git a/menudef.txt b/menudef.txt index cd32773d5..7cdfaca39 100644 --- a/menudef.txt +++ b/menudef.txt @@ -73,6 +73,18 @@ OptionValue "SWWMPistolStart" 1, "$SWWM_PISTOLSTART_MAP" 2, "$SWWM_PISTOLSTART_CLUSTER" } +OptionValue "SWWMHUDScale" +{ + 0, "$SWWM_TFITSCALE" + 1, "$SWWM_LFITSCALE" +} +OptionValue "SWWMInterArt" +{ + 0, "$TXT_NO" + 1, "$TXT_YES" + 2, "$SWWM_NORENDER" + 3, "$SWWM_NOFANART" +} OptionMenu "SWWMOptionMenu" { Class "SWWMOptionMenu" @@ -83,11 +95,16 @@ OptionMenu "SWWMOptionMenu" SafeCommand "$SWWM_ARESET", "event swwmresetachievements" StaticText " " - StaticText "$SWWM_PTITLE", "Blue" + StaticText "$SWWM_PTITLE", 1 SWWMPlayTime "$SWWM_PLAYTIME", "swwm_playtime" SWWMVoiceOption "$SWWM_VOICETYPE", "swwm_voicetype" Option "$SWWM_MUTELEVEL", "swwm_mutevoice", "SWWMVoice" - Option "$SWWM_6DOF", "swwm_fly6dof", "YesNo" + Slider "$SWWM_VOICEAMP", "swwm_voiceamp", 1, 4, 1, 0 + Option "$SWWM_BEEPBOOP", "swwm_beepboop", "YesNo" + IfGame(Heretic, Hexen) + { + Option "$SWWM_6DOF", "swwm_fly6dof", "YesNo" + } Option "$SWWM_REVIVE", "swwm_revive", "YesNo" ScaleSliderFix "$SWWM_REVIVECOOLDOWN", "swwm_revivecooldown", -1, 300, 30, "$SWWM_UNLIMITED", "$SWWM_ONERETRY" Option "$SWWM_MENUPAUSE", "swwm_menupause", "YesNo" @@ -95,7 +112,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_SELFLIGHT", "swwm_selflight", "YesNo" Submenu "$SWWM_ATITLE", "SWWMAchievementMenu" StaticText " " - StaticText "$SWWM_OTITLE", "Blue" + StaticText "$SWWM_OTITLE", 1 Option "$SWWM_SHADERS", "swwm_shaders", "YesNo" Slider "$SWWM_FLASH", "swwm_flashstrength", 0.0, 1.0, 0.1, 1 Slider "$SWWM_BUMP", "swwm_bumpstrength", 0.0, 1.0, 0.1, 1 @@ -118,31 +135,44 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_ACCDAMAGE", "swwm_accdamage", "YesNo" Option "$SWWM_SCORENUMS", "swwm_scorenums", "YesNo" Option "$SWWM_SCOREBONUS", "swwm_scorebonus", "YesNo" - Option "$SWWM_POIS", "swwm_pois", "YesNo" + IfGame(Doom, Heretic) + { + Option "$SWWM_POIS", "swwm_pois", "YesNo" + } Option "$SWWM_NOMAPMSG", "swwm_nomapmsg", "NoYes" ScaleSlider "$SWWM_MAXTARGETDIST", "swwm_maxtargetdist", 0, 6000, 100, "$SWWM_UNLIMITED" ScaleSlider "$SWWM_MAXTARGETS", "swwm_maxtargets", 0, 1000, 1, "$SWWM_UNLIMITED" ScaleSlider "$SWWM_MAXDAMNUMS", "swwm_maxdamnums", 0, 1000, 1, "$SWWM_UNLIMITED" ScaleSlider "$SWWM_MAXSCORENUMS", "swwm_maxscorenums", 0, 1000, 1, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_HUDSCALE", "swwm_hudscale", 0, 8, 1, "$SWWM_GZSCALE" - ScaleSlider "$SWWM_BARSCALE", "swwm_barscale", 0, 8, 1, "$SWWM_GZSCALE" - ScaleSlider "$SWWM_NUMSCALE", "swwm_numscale", 0, 8, 1, "$SWWM_GZSCALE" - ScaleSlider "$SWWM_SCRSCALE", "swwm_scrscale", 0, 8, 1, "$SWWM_GZSCALE" - ScaleSlider "$SWWM_POISCALE", "swwm_poiscale", 0, 8, 1, "$SWWM_GZSCALE" - ScaleSlider "$SWWM_DETSCALE", "swwm_detscale", 0, 8, 1, "$SWWM_GZSCALE" + Option "$SWWM_HUDSCALE", "swwm_hudscale", "SWWMHudScale" + Slider "$SWWM_BARSCALE", "swwm_barscalerel", -4, 4, 1, 0 + Slider "$SWWM_NUMSCALE", "swwm_numscalerel", -4, 4, 1, 0 + Slider "$SWWM_SCRSCALE", "swwm_scrscalerel", -4, 4, 1, 0 + IfGame(Doom, Heretic) + { + Slider "$SWWM_POISCALE", "swwm_poiscalerel", -4, 4, 1, 0 + } + Slider "$SWWM_DETSCALE", "swwm_detscalerel", -4, 4, 1, 0 Option "$SWWM_NUMCOLOR_SCR", "swwm_numcolor_scr", "TextColors" Option "$SWWM_NUMCOLOR_BONUS", "swwm_numcolor_bonus", "TextColors" Option "$SWWM_NUMCOLOR_DMG", "swwm_numcolor_dmg", "TextColors" Option "$SWWM_NUMCOLOR_HP", "swwm_numcolor_hp", "TextColors" Option "$SWWM_NUMCOLOR_AP", "swwm_numcolor_ap", "TextColors" - Option "$SWWM_INTERART", "swwm_interart", "YesNo" - Option "$SWWM_NOINTERTIPS", "swwm_nointertips", "YesNo" - Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo" + IfGame(Doom, Heretic) + { + Option "$SWWM_INTERART", "swwm_interart", "SWWMInterArt" + Option "$SWWM_NOINTERTIPS", "swwm_nointertips", "YesNo" + Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo" + } Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo" - Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo" + Option "$SWWM_OLDLOGO", "swwm_oldlogo", "YesNo" + IfGame(Doom, Heretic) + { + Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo" + } Option "$SWWM_FILTERACHIEVEMENTS", "swwm_filterachievements", "SWWMFilterAchievements" StaticText " " - StaticText "$SWWM_ETITLE", "Blue" + StaticText "$SWWM_ETITLE", 1 Option "$SWWM_SHADOWS", "swwm_shadows", "YesNo" ScaleSlider "$SWWM_SHADOWDIST", "swwm_shadowdist", -1, 4000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" Option "$SWWM_ITEMSPARKLES", "swwm_itemsparkles", "YesNo" @@ -155,7 +185,7 @@ OptionMenu "SWWMOptionMenu" ScaleSlider "$SWWM_MAXDEBRIS", "swwm_maxdebris", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" SafeCommand "$SWWM_CLEARFX", "netevent swwmcleareffects" StaticText " " - StaticText "$SWWM_FTITLE", "Blue" + StaticText "$SWWM_FTITLE", 1 Option "$SWWM_FUNTAGS", "swwm_funtags", "YesNo" Option "$SWWM_BUTTSFX", "swwm_buttsfx", "YesNo" Option "$SWWM_OMNIBUST", "swwm_omnibust", "YesNo" @@ -165,17 +195,21 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_FUNTRAILS", "swwm_funtrails", "SWWMFunTrails" TrapOption "$SWWM_ENGINE", "swwm_engine" StaticText " " - StaticText "$SWWM_BTITLE", "Blue" + StaticText "$SWWM_BTITLE", 1 Option "$SWWM_PS_FULLRESET", "swwm_ps_fullreset", "SWWMPistolStart" Option "$SWWM_PS_RESETAMMO", "swwm_ps_resetammo", "SWWMPistolStart" Option "$SWWM_PS_RESETITEMS", "swwm_ps_resetitems", "SWWMPistolStart" Option "$SWWM_PS_RESETHEALTH", "swwm_ps_resethealth", "SWWMPistolStart" + Option "$SWWM_NODEATHEXIT", "swwm_nodeathexit", "YesNo" Option "$SWWM_ENEMYDROPS", "swwm_enemydrops", "SWWMEnemyDropType" Option "$SWWM_ONDEMANDAMMO", "swwm_ondemandammo", "YesNo" Option "$SWWM_RESETSCORE", "swwm_resetscore", "YesNo" Option "$SWWM_EXTRAALERT", "swwm_extraalert", "YesNo" Option "$SWWM_BOSSENHANCE", "swwm_upgradebosses", "YesNo" - Option "$SWWM_DOOMFALL", "swwm_doomfall", "YesNo" + IfGame(Doom, Heretic) + { + Option "$SWWM_DOOMFALL", "swwm_doomfall", "YesNo" + } Option "$SWWM_BALLUSE", "swwm_balluse", "YesNo" Option "$SWWM_CBTALL", "swwm_cbtall", "YesNo" Option "$SWWM_UNCAPALERT", "swwm_uncapalert", "YesNo" @@ -187,12 +221,15 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_STRICTUNTOUCHABLE", "swwm_strictuntouchable", "SWWMUntouchableStrictness" //Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" // comment out until DLC1 StaticText " " - StaticText "$SWWM_ITITLE", "Blue" + StaticText "$SWWM_ITITLE", 1 Option "$SWWM_USETOPICKUP", "swwm_usetopickup", "YesNo" Option "$SWWM_MELEEPICKUP", "swwm_meleepickup", "YesNo" Option "$SWWM_ARMORUSE", "swwm_autousearmor", "YesNo" Option "$SWWM_HEALTHUSE", "swwm_autousehealth", "YesNo" - Option "$SWWM_BARRIERUSE", "swwm_autousebarrier", "YesNo" + IfGame(Doom) + { + Option "$SWWM_BARRIERUSE", "swwm_autousebarrier", "YesNo" + } Option "$SWWM_SINGLEFIRST", "swwm_singlefirst", "YesNo" Option "$SWWM_EARBUSTER", "swwm_earbuster", "YesNo" Option "$SWWM_BUSTERPAUSE", "swwm_cbtpause", "YesNo" @@ -201,22 +238,12 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo" SafeCommand "$SWWM_RESETTOOLTIPS", "event swwmresettooltips" StaticText " " - StaticText "$SWWM_CTITLE", "Blue" - Option "$SWWM_SKEYS", "swwm_sharekeys", "YesNo" - Option "$SWWM_SVARMORUSE", "swwm_enforceautousearmor", "SWWMEnforce" - Option "$SWWM_SVHEALTHUSE", "swwm_enforceautousehealth", "SWWMEnforce" - Option "$SWWM_SVBARRIERUSE", "swwm_enforceautousebarrier", "SWWMEnforce" - Option "$SWWM_OTHERVOICE", "swwm_othervoice", "YesNo" - StaticText " " - StaticText "$SWWM_MCTITLE", "Blue" + StaticText "$SWWM_MCTITLE", 1 Option "$SWWM_LDSPOIL", "swwm_ldspoil", "YesNo" IfGame(Doom) { Option "$SWWM_DRLASKILL", "swwm_drlaskill", "SWWMDRLASkill" } - StaticText " " - StaticText " " - } OptionValue "SWWMMinimapColorset" { @@ -282,7 +309,7 @@ ListMenu "MainMenu" { Class "SWWMMainMenu" Size Clean - Font "TewiShadedOutline", "White", "Sapphire" + Font "BigFont", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 LineSpacing 36 SWWMLogo @@ -297,7 +324,7 @@ ListMenu "MainMenuTextOnly" { Class "SWWMMainMenu" Size Clean - Font "TewiShadedOutline", "White", "Sapphire" + Font "BigFont", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 LineSpacing 36 SWWMLogo @@ -312,7 +339,7 @@ ListMenu "GameFilesMenu" { Class "SWWMCleanMenu" Size Clean - Font "TewiShadedOutline", "White", "Sapphire" + Font "BigFont", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 LineSpacing 36 Position 0, 88 @@ -331,7 +358,7 @@ ListMenu "EpisodeMenu" { NetgameMessage "$CNEWGAME" } - Font "TewiShadedOutline", "White", "Sapphire" + Font "BigFont", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 LineSpacing 0 SWWMStaticTextM 0, 0, "$MNU_EPISODE", "Blue" @@ -342,7 +369,7 @@ ListMenu "SkillMenu" { Class "SWWMBigMenuHack" Size Clean - Font "TewiShadedOutline", "White", "Sapphire" + Font "BigFont", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 LineSpacing 0 SWWMStaticTextM 0, 0, "$MNU_CHOOSESKILL", "Blue" diff --git a/modeldef.blackfire b/modeldef.blackfire deleted file mode 100644 index 600baa7cc..000000000 --- a/modeldef.blackfire +++ /dev/null @@ -1,13 +0,0 @@ -Model "BlackfireIgniter" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.demolitionist b/modeldef.demolitionist index d9a42de62..6d63ded14 100644 --- a/modeldef.demolitionist +++ b/modeldef.demolitionist @@ -578,19 +578,14 @@ Model "Demolitionist" } // Voodoo Doll -Model "Demolitionist" +Model "SWWMVoodooDoll" { Path "models" - Model 1 "DemolitionistDoll_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoFace_Dead.png" - SurfaceSkin 1 2 "DemoBody.png" - SurfaceSkin 1 3 "DemoHead.png" - SurfaceSkin 1 4 "DemoArms.png" - SurfaceSkin 1 5 "DemoLegs.png" - SurfaceSkin 1 6 "DemoSoft.png" - SurfaceSkin 1 7 "DemoMisc.png" + Model 1 "VoodooDoll_d.3d" + SurfaceSkin 1 0 "VoodooDoll.png" + SurfaceSkin 1 1 "VoodooDollFace.png" Scale 0.0025 0.0025 0.0025 + AngleOffset -90 IGNORETRANSLATION // Still @@ -605,24 +600,14 @@ Model "Demolitionist" FrameIndex XZWZ G 1 8 FrameIndex XZWZ H 1 9 FrameIndex XZWZ I 1 10 - SurfaceSkin 1 1 "DemoFace_Off.png" FrameIndex XZWZ J 1 11 - SurfaceSkin 1 1 "DemoFace_Dead.png" FrameIndex XZWZ K 1 12 - SurfaceSkin 1 1 "DemoFace_Off.png" FrameIndex XZWZ L 1 13 FrameIndex XZWZ M 1 14 - SurfaceSkin 1 1 "DemoFace_Dead.png" FrameIndex XZWZ N 1 15 - SurfaceSkin 1 1 "DemoFace_Off.png" FrameIndex XZWZ O 1 16 - SurfaceSkin 1 1 "DemoFace_Dead.png" FrameIndex XZWZ P 1 17 - SurfaceSkin 1 1 "DemoFace_Off.png" FrameIndex XZWZ Q 1 18 - SurfaceSkin 1 1 "DemoFace_Dead.png" FrameIndex XZWZ R 1 19 - SurfaceSkin 1 1 "DemoFace_Off.png" FrameIndex XZWZ S 1 20 - SurfaceSkin 1 1 "DemoFace_Dead.png" } diff --git a/modeldef.dlcammo b/modeldef.dlcammo index ecd31cfc0..832ceb53a 100644 --- a/modeldef.dlcammo +++ b/modeldef.dlcammo @@ -3,7 +3,7 @@ Model "SMW05Ammo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.02 0.02 0.02 ZOffset 16 PitchOffset 30 @@ -16,7 +16,7 @@ Model "SMW05Ammo2" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.02 0.02 0.02 ZOffset 16 PitchOffset 30 @@ -29,7 +29,7 @@ Model "SMW05Ammo3" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.02 0.02 0.02 ZOffset 16 PitchOffset 30 @@ -42,7 +42,7 @@ Model "SMW05SmallAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -55,7 +55,7 @@ Model "SMW05BigAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.03 0.03 0.03 ZOffset 16 PitchOffset 30 @@ -69,7 +69,7 @@ Model "SheenAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.015 0.015 0.015 ZOffset 16 PitchOffset 30 @@ -82,7 +82,7 @@ Model "SheenAmmo2" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.015 0.015 0.015 ZOffset 16 PitchOffset 30 @@ -95,7 +95,7 @@ Model "SheenAmmo3" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.015 0.015 0.015 ZOffset 16 PitchOffset 30 @@ -108,7 +108,7 @@ Model "SheenTinyAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.02 0.02 0.02 ZOffset 16 PitchOffset 30 @@ -121,7 +121,7 @@ Model "SheenSmallAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -134,7 +134,7 @@ Model "SheenBigAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.03 0.03 0.03 ZOffset 16 PitchOffset 30 @@ -148,7 +148,7 @@ Model "QuadravolAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -161,7 +161,7 @@ Model "QuadravolAmmo2" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -174,7 +174,7 @@ Model "QuadravolAmmo3" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -183,12 +183,156 @@ Model "QuadravolAmmo3" FrameIndex XZW1 A 0 0 } -Model "DarkCanister" +Model "SparksterBAmmo" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "SparksterBAmmo2" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "SparksterBAmmo3" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo2" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo3" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.025 0.025 0.025 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} + +Model "MisterRound" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound2" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound3" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound5" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound10" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" Scale 0.03 0.03 0.03 ZOffset 16 PitchOffset 30 @@ -196,13 +340,25 @@ Model "DarkCanister" FrameIndex XZW1 A 0 0 } - -Model "EMPCore" +Model "MisterGAmmo" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" + Scale 0.02 0.02 0.02 + ZOffset 16 + PitchOffset 30 + ROTATING + + FrameIndex XZW1 A 0 0 +} +Model "MisterGAmmo2" +{ + Path "models/extra" + + Model 0 "BaseCube_d.3d" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -210,13 +366,13 @@ Model "EMPCore" FrameIndex XZW1 A 0 0 } -Model "EMPCore2" +Model "MisterGAmmo3" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 + Skin 0 "CHIPTILY" + Scale 0.03 0.03 0.03 ZOffset 16 PitchOffset 30 ROTATING @@ -229,7 +385,7 @@ Model "RayBolt" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -242,7 +398,7 @@ Model "RayBolt2" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -255,7 +411,7 @@ Model "RayBolt5" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.025 0.025 0.025 ZOffset 16 PitchOffset 30 @@ -268,7 +424,7 @@ Model "RayAmmo" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 @@ -281,7 +437,7 @@ Model "RayBattery" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.035 0.035 0.035 ZOffset 16 PitchOffset 30 @@ -290,12 +446,12 @@ Model "RayBattery" FrameIndex XZW1 A 0 0 } -Model "GrandSpear" +Model "UltimatePod" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.03 0.03 0.03 ZOffset 16 PitchOffset 30 @@ -303,12 +459,12 @@ Model "GrandSpear" FrameIndex XZW1 A 0 0 } -Model "GrandAmmo" +Model "UltimateAmmo" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILY" Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 diff --git a/modeldef.dlcammo2 b/modeldef.dlcammo2 deleted file mode 100644 index ba7193c0b..000000000 --- a/modeldef.dlcammo2 +++ /dev/null @@ -1,223 +0,0 @@ -Model "SparksterBAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterBAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterBAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "MisterRound" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound5" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound10" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "UltimatePod" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "UltimateAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.empcarbine b/modeldef.empcarbine deleted file mode 100644 index 320c976d4..000000000 --- a/modeldef.empcarbine +++ /dev/null @@ -1,13 +0,0 @@ -Model "EMPCarbine" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.explodiumgun2 b/modeldef.explodiumgun2 index 91faa2578..3779c0385 100644 --- a/modeldef.explodiumgun2 +++ b/modeldef.explodiumgun2 @@ -99,68 +99,59 @@ Model "DualExplodiumGun" FrameIndex XZW2 R 1 22 FrameIndex XZW2 S 1 23 // Reload (Part 1) - FrameIndex XZW2 T 1 25 - FrameIndex XZW2 U 1 26 - FrameIndex XZW2 V 1 27 - FrameIndex XZW2 W 1 28 - FrameIndex XZW2 X 1 29 - FrameIndex XZW2 Y 1 30 - FrameIndex XZW2 Z 1 31 - FrameIndex XZW3 A 1 32 - FrameIndex XZW3 B 1 33 - FrameIndex XZW3 C 1 34 - FrameIndex XZW3 D 1 35 - FrameIndex XZW3 E 1 36 - FrameIndex XZW3 F 1 37 - FrameIndex XZW3 G 1 38 - FrameIndex XZW3 H 1 39 - FrameIndex XZW3 I 1 40 + FrameIndex XZW2 T 1 310 + FrameIndex XZW2 U 1 311 + FrameIndex XZW2 V 1 312 + FrameIndex XZW2 W 1 313 + FrameIndex XZW2 X 1 314 + FrameIndex XZW2 Y 1 315 + FrameIndex XZW2 Z 1 316 + FrameIndex XZW3 A 1 317 + FrameIndex XZW3 B 1 318 + FrameIndex XZW3 C 1 319 + FrameIndex XZW3 D 1 320 + FrameIndex XZW3 E 1 321 + FrameIndex XZW3 F 1 322 + FrameIndex XZW3 G 1 323 + FrameIndex XZW3 H 1 324 // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZW3 J 1 25 - FrameIndex XZW3 K 1 26 - FrameIndex XZW3 L 1 27 - FrameIndex XZW3 M 1 28 - FrameIndex XZW3 N 1 29 - FrameIndex XZW3 O 1 30 - FrameIndex XZW3 P 1 31 - FrameIndex XZW3 Q 1 32 - FrameIndex XZW3 R 1 33 - FrameIndex XZW3 S 1 34 - FrameIndex XZW3 T 1 35 - FrameIndex XZW3 U 1 36 - FrameIndex XZW3 V 1 37 - FrameIndex XZW3 W 1 38 - FrameIndex XZW3 X 1 39 - FrameIndex XZW3 Y 1 40 + SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" + FrameIndex XZW3 I 1 310 + FrameIndex XZW3 J 1 311 + FrameIndex XZW3 K 1 312 + FrameIndex XZW3 L 1 313 + FrameIndex XZW3 M 1 314 + FrameIndex XZW3 N 1 315 + FrameIndex XZW3 O 1 316 + FrameIndex XZW3 P 1 317 + FrameIndex XZW3 Q 1 318 + FrameIndex XZW3 R 1 319 + FrameIndex XZW3 S 1 320 + FrameIndex XZW3 T 1 321 + FrameIndex XZW3 U 1 322 + FrameIndex XZW3 V 1 323 + FrameIndex XZW3 W 1 324 // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZW3 Z 1 41 - FrameIndex XZW4 A 1 42 - FrameIndex XZW4 B 1 43 - FrameIndex XZW4 C 1 44 - FrameIndex XZW4 D 1 45 - FrameIndex XZW4 E 1 46 - FrameIndex XZW4 F 1 47 - FrameIndex XZW4 G 1 48 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZW4 H 1 49 - FrameIndex XZW4 I 1 50 - FrameIndex XZW4 J 1 51 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZW4 K 1 52 - FrameIndex XZW4 L 1 53 - FrameIndex XZW4 M 1 54 - FrameIndex XZW4 N 1 55 - FrameIndex XZW4 O 1 56 - FrameIndex XZW4 P 1 57 - FrameIndex XZW4 Q 1 58 - FrameIndex XZW4 R 1 59 - FrameIndex XZW4 S 1 60 - FrameIndex XZW4 T 1 61 - FrameIndex XZW4 U 1 62 - FrameIndex XZW4 V 1 63 + SurfaceSkin 1 3 "ExplodiumGun.png" + FrameIndex XZW3 X 1 325 + FrameIndex XZW3 Y 1 326 + FrameIndex XZW3 Z 1 327 + FrameIndex XZW4 A 1 328 + FrameIndex XZW4 B 1 329 + FrameIndex XZW4 C 1 330 + FrameIndex XZW4 D 1 331 + FrameIndex XZW4 E 1 332 + FrameIndex XZW4 F 1 333 + FrameIndex XZW4 G 1 334 + FrameIndex XZW4 H 1 335 + FrameIndex XZW4 I 1 336 + FrameIndex XZW4 J 1 337 + FrameIndex XZW4 K 1 338 + FrameIndex XZW4 L 1 339 + FrameIndex XZW4 M 1 340 + FrameIndex XZW4 N 1 341 + FrameIndex XZW4 O 1 342 + FrameIndex XZW4 P 1 343 // Slide FrameIndex XZW4 W 1 65 FrameIndex XZW4 X 1 66 @@ -251,68 +242,59 @@ Model "DualExplodiumGun" FrameIndex XZWB R 1 22 FrameIndex XZWB S 1 23 // Reload (Part 1) - FrameIndex XZWB T 1 25 - FrameIndex XZWB U 1 26 - FrameIndex XZWB V 1 27 - FrameIndex XZWB W 1 28 - FrameIndex XZWB X 1 29 - FrameIndex XZWB Y 1 30 - FrameIndex XZWB Z 1 31 - FrameIndex XZWC A 1 32 - FrameIndex XZWC B 1 33 - FrameIndex XZWC C 1 34 - FrameIndex XZWC D 1 35 - FrameIndex XZWC E 1 36 - FrameIndex XZWC F 1 37 - FrameIndex XZWC G 1 38 - FrameIndex XZWC H 1 39 - FrameIndex XZWC I 1 40 + FrameIndex XZWB T 1 310 + FrameIndex XZWB U 1 311 + FrameIndex XZWB V 1 312 + FrameIndex XZWB W 1 313 + FrameIndex XZWB X 1 314 + FrameIndex XZWB Y 1 315 + FrameIndex XZWB Z 1 316 + FrameIndex XZWC A 1 317 + FrameIndex XZWC B 1 318 + FrameIndex XZWC C 1 319 + FrameIndex XZWC D 1 320 + FrameIndex XZWC E 1 321 + FrameIndex XZWC F 1 322 + FrameIndex XZWC G 1 323 + FrameIndex XZWC H 1 324 // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZWC J 1 25 - FrameIndex XZWC K 1 26 - FrameIndex XZWC L 1 27 - FrameIndex XZWC M 1 28 - FrameIndex XZWC N 1 29 - FrameIndex XZWC O 1 30 - FrameIndex XZWC P 1 31 - FrameIndex XZWC Q 1 32 - FrameIndex XZWC R 1 33 - FrameIndex XZWC S 1 34 - FrameIndex XZWC T 1 35 - FrameIndex XZWC U 1 36 - FrameIndex XZWC V 1 37 - FrameIndex XZWC W 1 38 - FrameIndex XZWC X 1 39 - FrameIndex XZWC Y 1 40 + SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWC I 1 310 + FrameIndex XZWC J 1 311 + FrameIndex XZWC K 1 312 + FrameIndex XZWC L 1 313 + FrameIndex XZWC M 1 314 + FrameIndex XZWC N 1 315 + FrameIndex XZWC O 1 316 + FrameIndex XZWC P 1 317 + FrameIndex XZWC Q 1 318 + FrameIndex XZWC R 1 319 + FrameIndex XZWC S 1 320 + FrameIndex XZWC T 1 321 + FrameIndex XZWC U 1 322 + FrameIndex XZWC V 1 323 + FrameIndex XZWC W 1 324 // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZWC Z 1 41 - FrameIndex XZWD A 1 42 - FrameIndex XZWD B 1 43 - FrameIndex XZWD C 1 44 - FrameIndex XZWD D 1 45 - FrameIndex XZWD E 1 46 - FrameIndex XZWD F 1 47 - FrameIndex XZWD G 1 48 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZWD H 1 49 - FrameIndex XZWD I 1 50 - FrameIndex XZWD J 1 51 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZWD K 1 52 - FrameIndex XZWD L 1 53 - FrameIndex XZWD M 1 54 - FrameIndex XZWD N 1 55 - FrameIndex XZWD O 1 56 - FrameIndex XZWD P 1 57 - FrameIndex XZWD Q 1 58 - FrameIndex XZWD R 1 59 - FrameIndex XZWD S 1 60 - FrameIndex XZWD T 1 61 - FrameIndex XZWD U 1 62 - FrameIndex XZWD V 1 63 + SurfaceSkin 1 3 "ExplodiumGun.png" + FrameIndex XZWC X 1 325 + FrameIndex XZWC Y 1 326 + FrameIndex XZWC Z 1 327 + FrameIndex XZWD A 1 328 + FrameIndex XZWD B 1 329 + FrameIndex XZWD C 1 330 + FrameIndex XZWD D 1 331 + FrameIndex XZWD E 1 332 + FrameIndex XZWD F 1 333 + FrameIndex XZWD G 1 334 + FrameIndex XZWD H 1 335 + FrameIndex XZWD I 1 336 + FrameIndex XZWD J 1 337 + FrameIndex XZWD K 1 338 + FrameIndex XZWD L 1 339 + FrameIndex XZWD M 1 340 + FrameIndex XZWD N 1 341 + FrameIndex XZWD O 1 342 + FrameIndex XZWD P 1 343 // Slide FrameIndex XZWD W 1 65 FrameIndex XZWD X 1 66 @@ -425,58 +407,43 @@ Model "DualExplodiumGun" // Still FrameIndex XZWI V 1 248 // Reload (Part 1) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZWI W 1 249 - FrameIndex XZWI X 1 250 - FrameIndex XZWI Y 1 251 - FrameIndex XZWI Z 1 252 - FrameIndex XZWJ A 1 253 - FrameIndex XZWJ B 1 254 - FrameIndex XZWJ C 1 255 - FrameIndex XZWJ D 1 256 - FrameIndex XZWJ E 1 257 - FrameIndex XZWJ F 1 258 - FrameIndex XZWJ G 1 259 - FrameIndex XZWJ H 1 260 - FrameIndex XZWJ I 1 261 - FrameIndex XZWJ J 1 262 - FrameIndex XZWJ K 1 263 - FrameIndex XZWJ L 1 264 + SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWI W 1 346 + FrameIndex XZWI X 1 347 + FrameIndex XZWI Y 1 348 + FrameIndex XZWI Z 1 349 + FrameIndex XZWJ A 1 350 + FrameIndex XZWJ B 1 351 + FrameIndex XZWJ C 1 352 + FrameIndex XZWJ D 1 353 + FrameIndex XZWJ E 1 354 + FrameIndex XZWJ F 1 355 + FrameIndex XZWJ G 1 356 + FrameIndex XZWJ H 1 357 + FrameIndex XZWJ I 1 358 + FrameIndex XZWJ J 1 359 + FrameIndex XZWJ K 1 360 // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZWJ M 1 265 - FrameIndex XZWJ N 1 266 - FrameIndex XZWJ O 1 267 - FrameIndex XZWJ P 1 268 - FrameIndex XZWJ Q 1 269 - FrameIndex XZWJ R 1 270 - FrameIndex XZWJ S 1 271 - FrameIndex XZWJ T 1 272 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZWJ U 1 273 - FrameIndex XZWJ V 1 274 - FrameIndex XZWJ W 1 275 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZWJ X 1 276 - FrameIndex XZWJ Y 1 277 - FrameIndex XZWJ Z 1 278 - FrameIndex XZWK A 1 279 - FrameIndex XZWK B 1 280 - FrameIndex XZWK C 1 281 - FrameIndex XZWK D 1 282 - FrameIndex XZWK E 1 283 - FrameIndex XZWK F 1 284 - FrameIndex XZWK G 1 285 - FrameIndex XZWK H 1 286 - FrameIndex XZWK I 1 287 - FrameIndex XZWK J 1 288 - FrameIndex XZWK K 1 289 - FrameIndex XZWK L 1 290 - FrameIndex XZWK M 1 291 - FrameIndex XZWK N 1 292 - FrameIndex XZWK O 1 293 - FrameIndex XZWK P 1 294 + FrameIndex XZWJ L 1 361 + FrameIndex XZWJ M 1 362 + FrameIndex XZWJ N 1 363 + FrameIndex XZWJ O 1 364 + FrameIndex XZWJ P 1 365 + FrameIndex XZWJ Q 1 366 + FrameIndex XZWJ R 1 367 + FrameIndex XZWJ S 1 368 + FrameIndex XZWJ T 1 369 + FrameIndex XZWJ U 1 370 + FrameIndex XZWJ V 1 371 + FrameIndex XZWJ W 1 372 + FrameIndex XZWJ X 1 373 + FrameIndex XZWJ Y 1 374 + FrameIndex XZWJ Z 1 375 + FrameIndex XZWK A 1 376 + FrameIndex XZWK B 1 377 + FrameIndex XZWK C 1 378 + FrameIndex XZWK D 1 379 + SurfaceSkin 1 3 "ExplodiumGun.png" // Lower FrameIndex XZWM U 1 297 FrameIndex XZWM V 1 298 @@ -505,58 +472,43 @@ Model "DualExplodiumGun" // Still FrameIndex XZWK Z 1 248 // Reload (Part 1) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZWL A 1 249 - FrameIndex XZWL B 1 250 - FrameIndex XZWL C 1 251 - FrameIndex XZWL D 1 252 - FrameIndex XZWL E 1 253 - FrameIndex XZWL F 1 254 - FrameIndex XZWL G 1 255 - FrameIndex XZWL H 1 256 - FrameIndex XZWL I 1 257 - FrameIndex XZWL J 1 258 - FrameIndex XZWL K 1 259 - FrameIndex XZWL L 1 260 - FrameIndex XZWL M 1 261 - FrameIndex XZWL N 1 262 - FrameIndex XZWL O 1 263 - FrameIndex XZWL P 1 264 + SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWL A 1 346 + FrameIndex XZWL B 1 347 + FrameIndex XZWL C 1 348 + FrameIndex XZWL D 1 349 + FrameIndex XZWL E 1 350 + FrameIndex XZWL F 1 351 + FrameIndex XZWL G 1 352 + FrameIndex XZWL H 1 353 + FrameIndex XZWL I 1 354 + FrameIndex XZWL J 1 355 + FrameIndex XZWL K 1 356 + FrameIndex XZWL L 1 357 + FrameIndex XZWL M 1 358 + FrameIndex XZWL N 1 359 + FrameIndex XZWL O 1 360 // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZWL Q 1 265 - FrameIndex XZWL R 1 266 - FrameIndex XZWL S 1 267 - FrameIndex XZWL T 1 268 - FrameIndex XZWL U 1 269 - FrameIndex XZWL V 1 270 - FrameIndex XZWL W 1 271 - FrameIndex XZWL X 1 272 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZWL Y 1 273 - FrameIndex XZWL Z 1 274 - FrameIndex XZWM A 1 275 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZWM B 1 276 - FrameIndex XZWM C 1 277 - FrameIndex XZWM D 1 278 - FrameIndex XZWM E 1 279 - FrameIndex XZWM F 1 280 - FrameIndex XZWM G 1 281 - FrameIndex XZWM H 1 282 - FrameIndex XZWM I 1 283 - FrameIndex XZWM J 1 284 - FrameIndex XZWM K 1 285 - FrameIndex XZWM L 1 286 - FrameIndex XZWM M 1 287 - FrameIndex XZWM N 1 288 - FrameIndex XZWM O 1 289 - FrameIndex XZWM P 1 290 - FrameIndex XZWM Q 1 291 - FrameIndex XZWM R 1 292 - FrameIndex XZWM S 1 293 - FrameIndex XZWM T 1 294 + SurfaceSkin 1 3 "ExplodiumGun.png" + FrameIndex XZWL P 1 361 + FrameIndex XZWL Q 1 362 + FrameIndex XZWL R 1 363 + FrameIndex XZWL S 1 364 + FrameIndex XZWL T 1 365 + FrameIndex XZWL U 1 366 + FrameIndex XZWL V 1 367 + FrameIndex XZWL W 1 368 + FrameIndex XZWL X 1 369 + FrameIndex XZWL Y 1 370 + FrameIndex XZWL Z 1 371 + FrameIndex XZWM A 1 372 + FrameIndex XZWM B 1 373 + FrameIndex XZWM C 1 374 + FrameIndex XZWM D 1 375 + FrameIndex XZWM E 1 376 + FrameIndex XZWM F 1 377 + FrameIndex XZWM G 1 378 + FrameIndex XZWM H 1 379 // Lower FrameIndex XZWN F 1 297 FrameIndex XZWN G 1 298 @@ -570,3 +522,16 @@ Model "DualExplodiumGun" FrameIndex XZWN O 1 306 FrameIndex XZWN P 1 307 } + +Model "SWWMDualWeaponGiver" +{ + Path "models" + + Model 0 "ExplodiumGunPickupDual_d.3d" + Skin 0 "ExplodiumGun.png" + Scale 0.05 0.05 0.05 + ZOffset 16 + ROTATING + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef.fistgun b/modeldef.fistgun deleted file mode 100644 index 037f2b553..000000000 --- a/modeldef.fistgun +++ /dev/null @@ -1,13 +0,0 @@ -Model "FistGun" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.grandlance b/modeldef.grandlance deleted file mode 100644 index 09ef6cbeb..000000000 --- a/modeldef.grandlance +++ /dev/null @@ -1,13 +0,0 @@ -Model "GrandLance" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" - Scale 0.06 0.06 0.06 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.hammer b/modeldef.hammer index 934dcc178..d54f2b479 100644 --- a/modeldef.hammer +++ b/modeldef.hammer @@ -3,7 +3,7 @@ Model "ItamexHammer" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 diff --git a/modeldef.mortalrifle b/modeldef.mortalrifle index 320c976d4..b061c084e 100644 --- a/modeldef.mortalrifle +++ b/modeldef.mortalrifle @@ -1,9 +1,9 @@ -Model "EMPCarbine" +Model "MisterRifle" { Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.05 0.05 0.05 ZOffset 16 PitchOffset 30 diff --git a/modeldef.newsparkster b/modeldef.newsparkster index 6baf9ea09..2feb8cc2f 100644 --- a/modeldef.newsparkster +++ b/modeldef.newsparkster @@ -3,7 +3,7 @@ Model "ModernSparkster" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.05 0.05 0.05 ZOffset 16 PitchOffset 30 diff --git a/modeldef.plasmablast b/modeldef.plasmablast index 5a87838ed..560f0c5ae 100644 --- a/modeldef.plasmablast +++ b/modeldef.plasmablast @@ -3,7 +3,7 @@ Model "PlasmaBlast" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 diff --git a/modeldef.puntzerbeta b/modeldef.puntzerbeta index 313632a4a..d834de2b3 100644 --- a/modeldef.puntzerbeta +++ b/modeldef.puntzerbeta @@ -3,7 +3,7 @@ Model "PuntzerBeta" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 diff --git a/modeldef.puntzergamma b/modeldef.puntzergamma index 68fb062c2..bbabcb626 100644 --- a/modeldef.puntzergamma +++ b/modeldef.puntzergamma @@ -3,7 +3,7 @@ Model "PuntzerGamma" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.045 0.045 0.045 ZOffset 16 PitchOffset 30 diff --git a/modeldef.quadravol b/modeldef.quadravol index b1333acee..2cd0ae4e2 100644 --- a/modeldef.quadravol +++ b/modeldef.quadravol @@ -3,7 +3,7 @@ Model "Quadravol" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.05 0.05 0.05 ZOffset 16 PitchOffset 30 diff --git a/modeldef.rafankos b/modeldef.rafankos index e2e39fff6..2de18920d 100644 --- a/modeldef.rafankos +++ b/modeldef.rafankos @@ -3,7 +3,7 @@ Model "RafanKos" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.055 0.055 0.055 ZOffset 16 PitchOffset 30 diff --git a/modeldef.raykhom b/modeldef.raykhom index 7a06bb9dc..269b440c4 100644 --- a/modeldef.raykhom +++ b/modeldef.raykhom @@ -3,7 +3,7 @@ Model "RayKhom" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.055 0.055 0.055 ZOffset 16 PitchOffset 30 diff --git a/modeldef.sheenhmg b/modeldef.sheenhmg index 7e916967b..3931ee5ed 100644 --- a/modeldef.sheenhmg +++ b/modeldef.sheenhmg @@ -3,7 +3,7 @@ Model "HeavyMahSheenGun" Path "models/extra" Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILE" + Skin 0 "CHIPTILR" Scale 0.05 0.05 0.05 ZOffset 16 PitchOffset 30 diff --git a/models/DemolitionistDoll_a.3d b/models/DemolitionistDoll_a.3d deleted file mode 100644 index 6f3b037e4..000000000 Binary files a/models/DemolitionistDoll_a.3d and /dev/null differ diff --git a/models/DemolitionistDoll_d.3d b/models/DemolitionistDoll_d.3d deleted file mode 100644 index 627b77ea8..000000000 Binary files a/models/DemolitionistDoll_d.3d and /dev/null differ diff --git a/models/Demolitionist_IK.blend b/models/Demolitionist_IK.blend new file mode 100644 index 000000000..1c70cd196 Binary files /dev/null and b/models/Demolitionist_IK.blend differ diff --git a/models/ExplodiumGun1st.blend b/models/ExplodiumGun1st.blend index 4264edf19..9a912d7f6 100644 Binary files a/models/ExplodiumGun1st.blend and b/models/ExplodiumGun1st.blend differ diff --git a/models/ExplodiumGun1stL_a.3d b/models/ExplodiumGun1stL_a.3d index b20598c1e..314993e0b 100644 Binary files a/models/ExplodiumGun1stL_a.3d and b/models/ExplodiumGun1stL_a.3d differ diff --git a/models/ExplodiumGun1stL_d.3d b/models/ExplodiumGun1stL_d.3d index 60a1d4b2c..ffc69d204 100644 Binary files a/models/ExplodiumGun1stL_d.3d and b/models/ExplodiumGun1stL_d.3d differ diff --git a/models/ExplodiumGun1st_a.3d b/models/ExplodiumGun1st_a.3d index 2912fdfea..33ba085b7 100644 Binary files a/models/ExplodiumGun1st_a.3d and b/models/ExplodiumGun1st_a.3d differ diff --git a/models/ExplodiumGunPickupDual_a.3d b/models/ExplodiumGunPickupDual_a.3d new file mode 100644 index 000000000..a7e512b88 Binary files /dev/null and b/models/ExplodiumGunPickupDual_a.3d differ diff --git a/models/ExplodiumGunPickupDual_d.3d b/models/ExplodiumGunPickupDual_d.3d new file mode 100644 index 000000000..0bc243ca8 Binary files /dev/null and b/models/ExplodiumGunPickupDual_d.3d differ diff --git a/models/GibBreast.png b/models/GibBreast.png new file mode 100644 index 000000000..0e8713283 Binary files /dev/null and b/models/GibBreast.png differ diff --git a/models/GibBreast_a.3d b/models/GibBreast_a.3d new file mode 100644 index 000000000..ccd2a102c Binary files /dev/null and b/models/GibBreast_a.3d differ diff --git a/models/GibBreast_d.3d b/models/GibBreast_d.3d new file mode 100644 index 000000000..20f66c5eb Binary files /dev/null and b/models/GibBreast_d.3d differ diff --git a/models/GibDrumstick.png b/models/GibDrumstick.png new file mode 100644 index 000000000..a2d7493f6 Binary files /dev/null and b/models/GibDrumstick.png differ diff --git a/models/GibDrumstick_a.3d b/models/GibDrumstick_a.3d new file mode 100644 index 000000000..e9d4c22e5 Binary files /dev/null and b/models/GibDrumstick_a.3d differ diff --git a/models/GibDrumstick_d.3d b/models/GibDrumstick_d.3d new file mode 100644 index 000000000..9533fb649 Binary files /dev/null and b/models/GibDrumstick_d.3d differ diff --git a/models/GibModels.blend b/models/GibModels.blend new file mode 100644 index 000000000..b1ce7ebfa Binary files /dev/null and b/models/GibModels.blend differ diff --git a/models/GibSteak.png b/models/GibSteak.png new file mode 100644 index 000000000..444457040 Binary files /dev/null and b/models/GibSteak.png differ diff --git a/models/GibSteak_a.3d b/models/GibSteak_a.3d new file mode 100644 index 000000000..454c16317 Binary files /dev/null and b/models/GibSteak_a.3d differ diff --git a/models/GibSteak_d.3d b/models/GibSteak_d.3d new file mode 100644 index 000000000..07932d77a Binary files /dev/null and b/models/GibSteak_d.3d differ diff --git a/models/VoodooDoll.blend b/models/VoodooDoll.blend new file mode 100644 index 000000000..796a9c2d7 Binary files /dev/null and b/models/VoodooDoll.blend differ diff --git a/models/VoodooDoll.png b/models/VoodooDoll.png new file mode 100644 index 000000000..bc68f40b5 Binary files /dev/null and b/models/VoodooDoll.png differ diff --git a/models/VoodooDollFace.png b/models/VoodooDollFace.png new file mode 100644 index 000000000..0785942e7 Binary files /dev/null and b/models/VoodooDollFace.png differ diff --git a/models/VoodooDoll_a.3d b/models/VoodooDoll_a.3d new file mode 100644 index 000000000..14fd66eb0 Binary files /dev/null and b/models/VoodooDoll_a.3d differ diff --git a/models/VoodooDoll_d.3d b/models/VoodooDoll_d.3d new file mode 100644 index 000000000..c9dba2dd8 Binary files /dev/null and b/models/VoodooDoll_d.3d differ diff --git a/models/extra/dlc1/BlastMuz0.png b/models/extra/dlc/BlastMuz0.png similarity index 100% rename from models/extra/dlc1/BlastMuz0.png rename to models/extra/dlc/BlastMuz0.png diff --git a/models/extra/dlc1/BlastMuz1.png b/models/extra/dlc/BlastMuz1.png similarity index 100% rename from models/extra/dlc1/BlastMuz1.png rename to models/extra/dlc/BlastMuz1.png diff --git a/models/extra/dlc1/BlastMuz2.png b/models/extra/dlc/BlastMuz2.png similarity index 100% rename from models/extra/dlc1/BlastMuz2.png rename to models/extra/dlc/BlastMuz2.png diff --git a/models/extra/dlc1/BlastMuz3.png b/models/extra/dlc/BlastMuz3.png similarity index 100% rename from models/extra/dlc1/BlastMuz3.png rename to models/extra/dlc/BlastMuz3.png diff --git a/models/extra/dlc1/BlastMuz4.png b/models/extra/dlc/BlastMuz4.png similarity index 100% rename from models/extra/dlc1/BlastMuz4.png rename to models/extra/dlc/BlastMuz4.png diff --git a/models/extra/dlc1/BlastMuz5.png b/models/extra/dlc/BlastMuz5.png similarity index 100% rename from models/extra/dlc1/BlastMuz5.png rename to models/extra/dlc/BlastMuz5.png diff --git a/models/extra/dlc1/BlastMuz6.png b/models/extra/dlc/BlastMuz6.png similarity index 100% rename from models/extra/dlc1/BlastMuz6.png rename to models/extra/dlc/BlastMuz6.png diff --git a/models/extra/dlc1/BlastMuz7.png b/models/extra/dlc/BlastMuz7.png similarity index 100% rename from models/extra/dlc1/BlastMuz7.png rename to models/extra/dlc/BlastMuz7.png diff --git a/models/extra/dlc1/BlastMuz8.png b/models/extra/dlc/BlastMuz8.png similarity index 100% rename from models/extra/dlc1/BlastMuz8.png rename to models/extra/dlc/BlastMuz8.png diff --git a/models/extra/dlc1/BlastMuz9.png b/models/extra/dlc/BlastMuz9.png similarity index 100% rename from models/extra/dlc1/BlastMuz9.png rename to models/extra/dlc/BlastMuz9.png diff --git a/models/extra/dlc1/LanceTracer.png b/models/extra/dlc/LanceTracer.png similarity index 100% rename from models/extra/dlc1/LanceTracer.png rename to models/extra/dlc/LanceTracer.png diff --git a/models/extra/dlc2/MRBolt.png b/models/extra/dlc/MRBolt.png similarity index 100% rename from models/extra/dlc2/MRBolt.png rename to models/extra/dlc/MRBolt.png diff --git a/models/extra/dlc2/MRBoltS.png b/models/extra/dlc/MRBoltS.png similarity index 100% rename from models/extra/dlc2/MRBoltS.png rename to models/extra/dlc/MRBoltS.png diff --git a/models/extra/dlc2/MRMuz0.png b/models/extra/dlc/MRMuz0.png similarity index 100% rename from models/extra/dlc2/MRMuz0.png rename to models/extra/dlc/MRMuz0.png diff --git a/models/extra/dlc2/MRMuz1.png b/models/extra/dlc/MRMuz1.png similarity index 100% rename from models/extra/dlc2/MRMuz1.png rename to models/extra/dlc/MRMuz1.png diff --git a/models/extra/dlc2/MRMuz2.png b/models/extra/dlc/MRMuz2.png similarity index 100% rename from models/extra/dlc2/MRMuz2.png rename to models/extra/dlc/MRMuz2.png diff --git a/models/extra/dlc2/MRMuz3.png b/models/extra/dlc/MRMuz3.png similarity index 100% rename from models/extra/dlc2/MRMuz3.png rename to models/extra/dlc/MRMuz3.png diff --git a/models/extra/dlc2/NewSparkMuzK.png b/models/extra/dlc/NewSparkMuzK.png similarity index 100% rename from models/extra/dlc2/NewSparkMuzK.png rename to models/extra/dlc/NewSparkMuzK.png diff --git a/models/extra/dlc2/NewSparkMuzN.png b/models/extra/dlc/NewSparkMuzN.png similarity index 100% rename from models/extra/dlc2/NewSparkMuzN.png rename to models/extra/dlc/NewSparkMuzN.png diff --git a/models/extra/dlc2/NewSparkMuzNK.png b/models/extra/dlc/NewSparkMuzNK.png similarity index 100% rename from models/extra/dlc2/NewSparkMuzNK.png rename to models/extra/dlc/NewSparkMuzNK.png diff --git a/models/extra/dlc1/PlasmaTracer.png b/models/extra/dlc/PlasmaTracer.png similarity index 100% rename from models/extra/dlc1/PlasmaTracer.png rename to models/extra/dlc/PlasmaTracer.png diff --git a/models/extra/dlc1/PlasmaTrail.png b/models/extra/dlc/PlasmaTrail.png similarity index 100% rename from models/extra/dlc1/PlasmaTrail.png rename to models/extra/dlc/PlasmaTrail.png diff --git a/models/extra/dlc1/PuntzerMuz0.png b/models/extra/dlc/PuntzerMuz0.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz0.png rename to models/extra/dlc/PuntzerMuz0.png diff --git a/models/extra/dlc1/PuntzerMuz1.png b/models/extra/dlc/PuntzerMuz1.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz1.png rename to models/extra/dlc/PuntzerMuz1.png diff --git a/models/extra/dlc1/PuntzerMuz2.png b/models/extra/dlc/PuntzerMuz2.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz2.png rename to models/extra/dlc/PuntzerMuz2.png diff --git a/models/extra/dlc1/PuntzerMuz3.png b/models/extra/dlc/PuntzerMuz3.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz3.png rename to models/extra/dlc/PuntzerMuz3.png diff --git a/models/extra/dlc1/PuntzerMuz4.png b/models/extra/dlc/PuntzerMuz4.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz4.png rename to models/extra/dlc/PuntzerMuz4.png diff --git a/models/extra/dlc1/PuntzerMuz5.png b/models/extra/dlc/PuntzerMuz5.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz5.png rename to models/extra/dlc/PuntzerMuz5.png diff --git a/models/extra/dlc1/PuntzerMuz6.png b/models/extra/dlc/PuntzerMuz6.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz6.png rename to models/extra/dlc/PuntzerMuz6.png diff --git a/models/extra/dlc1/PuntzerMuz7.png b/models/extra/dlc/PuntzerMuz7.png similarity index 100% rename from models/extra/dlc1/PuntzerMuz7.png rename to models/extra/dlc/PuntzerMuz7.png diff --git a/models/extra/dlc1/QuadMuz0.png b/models/extra/dlc/QuadMuz0.png similarity index 100% rename from models/extra/dlc1/QuadMuz0.png rename to models/extra/dlc/QuadMuz0.png diff --git a/models/extra/dlc1/QuadMuz1.png b/models/extra/dlc/QuadMuz1.png similarity index 100% rename from models/extra/dlc1/QuadMuz1.png rename to models/extra/dlc/QuadMuz1.png diff --git a/models/extra/dlc1/QuadMuz2.png b/models/extra/dlc/QuadMuz2.png similarity index 100% rename from models/extra/dlc1/QuadMuz2.png rename to models/extra/dlc/QuadMuz2.png diff --git a/models/extra/dlc1/QuadMuz3.png b/models/extra/dlc/QuadMuz3.png similarity index 100% rename from models/extra/dlc1/QuadMuz3.png rename to models/extra/dlc/QuadMuz3.png diff --git a/models/extra/dlc1/QuadMuz4.png b/models/extra/dlc/QuadMuz4.png similarity index 100% rename from models/extra/dlc1/QuadMuz4.png rename to models/extra/dlc/QuadMuz4.png diff --git a/models/extra/dlc1/QuadMuz5.png b/models/extra/dlc/QuadMuz5.png similarity index 100% rename from models/extra/dlc1/QuadMuz5.png rename to models/extra/dlc/QuadMuz5.png diff --git a/models/extra/dlc1/QuadMuz6.png b/models/extra/dlc/QuadMuz6.png similarity index 100% rename from models/extra/dlc1/QuadMuz6.png rename to models/extra/dlc/QuadMuz6.png diff --git a/models/extra/dlc1/QuadMuz7.png b/models/extra/dlc/QuadMuz7.png similarity index 100% rename from models/extra/dlc1/QuadMuz7.png rename to models/extra/dlc/QuadMuz7.png diff --git a/models/extra/dlc1/QuadMuz8.png b/models/extra/dlc/QuadMuz8.png similarity index 100% rename from models/extra/dlc1/QuadMuz8.png rename to models/extra/dlc/QuadMuz8.png diff --git a/models/extra/dlc1/QuadMuz9.png b/models/extra/dlc/QuadMuz9.png similarity index 100% rename from models/extra/dlc1/QuadMuz9.png rename to models/extra/dlc/QuadMuz9.png diff --git a/models/extra/dlc1/RailMuz0.png b/models/extra/dlc/RailMuz0.png similarity index 100% rename from models/extra/dlc1/RailMuz0.png rename to models/extra/dlc/RailMuz0.png diff --git a/models/extra/dlc1/RailMuz1.png b/models/extra/dlc/RailMuz1.png similarity index 100% rename from models/extra/dlc1/RailMuz1.png rename to models/extra/dlc/RailMuz1.png diff --git a/models/extra/dlc1/RailMuz2.png b/models/extra/dlc/RailMuz2.png similarity index 100% rename from models/extra/dlc1/RailMuz2.png rename to models/extra/dlc/RailMuz2.png diff --git a/models/extra/dlc1/RailMuz3.png b/models/extra/dlc/RailMuz3.png similarity index 100% rename from models/extra/dlc1/RailMuz3.png rename to models/extra/dlc/RailMuz3.png diff --git a/models/extra/dlc1/RayTracer.png b/models/extra/dlc/RayTracer.png similarity index 100% rename from models/extra/dlc1/RayTracer.png rename to models/extra/dlc/RayTracer.png diff --git a/models/extra/dlc1/RayTrail.png b/models/extra/dlc/RayTrail.png similarity index 100% rename from models/extra/dlc1/RayTrail.png rename to models/extra/dlc/RayTrail.png diff --git a/models/extra/dlc1/SheenMuz0.png b/models/extra/dlc/SheenMuz0.png similarity index 100% rename from models/extra/dlc1/SheenMuz0.png rename to models/extra/dlc/SheenMuz0.png diff --git a/models/extra/dlc1/SheenMuz1.png b/models/extra/dlc/SheenMuz1.png similarity index 100% rename from models/extra/dlc1/SheenMuz1.png rename to models/extra/dlc/SheenMuz1.png diff --git a/models/extra/dlc1/SheenMuz2.png b/models/extra/dlc/SheenMuz2.png similarity index 100% rename from models/extra/dlc1/SheenMuz2.png rename to models/extra/dlc/SheenMuz2.png diff --git a/models/extra/dlc1/SheenMuz3.png b/models/extra/dlc/SheenMuz3.png similarity index 100% rename from models/extra/dlc1/SheenMuz3.png rename to models/extra/dlc/SheenMuz3.png diff --git a/models/extra/dlc1/SheenMuz4.png b/models/extra/dlc/SheenMuz4.png similarity index 100% rename from models/extra/dlc1/SheenMuz4.png rename to models/extra/dlc/SheenMuz4.png diff --git a/models/extra/dlc1/SheenMuz5.png b/models/extra/dlc/SheenMuz5.png similarity index 100% rename from models/extra/dlc1/SheenMuz5.png rename to models/extra/dlc/SheenMuz5.png diff --git a/models/extra/dlc1/SheenMuz6.png b/models/extra/dlc/SheenMuz6.png similarity index 100% rename from models/extra/dlc1/SheenMuz6.png rename to models/extra/dlc/SheenMuz6.png diff --git a/models/extra/dlc1/SheenMuz7.png b/models/extra/dlc/SheenMuz7.png similarity index 100% rename from models/extra/dlc1/SheenMuz7.png rename to models/extra/dlc/SheenMuz7.png diff --git a/models/extra/dlc1/SheenTracer.png b/models/extra/dlc/SheenTracer.png similarity index 100% rename from models/extra/dlc1/SheenTracer.png rename to models/extra/dlc/SheenTracer.png diff --git a/models/extra/dlc1/SheenTracer_Blue.png b/models/extra/dlc/SheenTracer_Blue.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Blue.png rename to models/extra/dlc/SheenTracer_Blue.png diff --git a/models/extra/dlc1/SheenTracer_Cyan.png b/models/extra/dlc/SheenTracer_Cyan.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Cyan.png rename to models/extra/dlc/SheenTracer_Cyan.png diff --git a/models/extra/dlc1/SheenTracer_Green.png b/models/extra/dlc/SheenTracer_Green.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Green.png rename to models/extra/dlc/SheenTracer_Green.png diff --git a/models/extra/dlc1/SheenTracer_Magenta.png b/models/extra/dlc/SheenTracer_Magenta.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Magenta.png rename to models/extra/dlc/SheenTracer_Magenta.png diff --git a/models/extra/dlc1/SheenTracer_Red.png b/models/extra/dlc/SheenTracer_Red.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Red.png rename to models/extra/dlc/SheenTracer_Red.png diff --git a/models/extra/dlc1/SheenTracer_TransBlue.png b/models/extra/dlc/SheenTracer_TransBlue.png similarity index 100% rename from models/extra/dlc1/SheenTracer_TransBlue.png rename to models/extra/dlc/SheenTracer_TransBlue.png diff --git a/models/extra/dlc1/SheenTracer_TransPink.png b/models/extra/dlc/SheenTracer_TransPink.png similarity index 100% rename from models/extra/dlc1/SheenTracer_TransPink.png rename to models/extra/dlc/SheenTracer_TransPink.png diff --git a/models/extra/dlc1/SheenTracer_White.png b/models/extra/dlc/SheenTracer_White.png similarity index 100% rename from models/extra/dlc1/SheenTracer_White.png rename to models/extra/dlc/SheenTracer_White.png diff --git a/models/extra/dlc1/SheenTracer_Yellow.png b/models/extra/dlc/SheenTracer_Yellow.png similarity index 100% rename from models/extra/dlc1/SheenTracer_Yellow.png rename to models/extra/dlc/SheenTracer_Yellow.png diff --git a/models/extra/dlc2/UltimaMuz0.png b/models/extra/dlc/UltimaMuz0.png similarity index 100% rename from models/extra/dlc2/UltimaMuz0.png rename to models/extra/dlc/UltimaMuz0.png diff --git a/models/extra/dlc2/UltimaMuz1.png b/models/extra/dlc/UltimaMuz1.png similarity index 100% rename from models/extra/dlc2/UltimaMuz1.png rename to models/extra/dlc/UltimaMuz1.png diff --git a/models/extra/dlc2/UltimaMuz2.png b/models/extra/dlc/UltimaMuz2.png similarity index 100% rename from models/extra/dlc2/UltimaMuz2.png rename to models/extra/dlc/UltimaMuz2.png diff --git a/models/extra/dlc2/UltimaMuz3.png b/models/extra/dlc/UltimaMuz3.png similarity index 100% rename from models/extra/dlc2/UltimaMuz3.png rename to models/extra/dlc/UltimaMuz3.png diff --git a/models/extra/dlc2/UltimaTrail.png b/models/extra/dlc/UltimaTrail.png similarity index 100% rename from models/extra/dlc2/UltimaTrail.png rename to models/extra/dlc/UltimaTrail.png diff --git a/models/modelnotes.txt b/models/modelnotes.txt index 84119f98c..dc7bde861 100644 --- a/models/modelnotes.txt +++ b/models/modelnotes.txt @@ -1,4 +1,4 @@ -# DLC Weaponset 1 +# DLC Weaponset Weapon models: - Itamex Hammer @@ -6,10 +6,10 @@ Weapon models: - Puntzer Beta - Puntzer Gamma - Quadravol - - Blackfire Igniter - - EMP Rail Carbine + - Sparkster Rifle + - Mortal Rifle - Ray-Khom - - Grand Lance + - Rafan-Kos Ammo models: - Plasma Ammo @@ -23,36 +23,27 @@ Ammo models: - 50 Box - 100 Box - Quadravol Ammo - - Dark Canister - - Emp Core - - Ray-Khom Ammo - - Single - - Mag - - Battery - - Grand Lance Ammo - - Single - - Mag - -# DLC Weaponset 2 - -Weapon models: - - Hand of Divine - - Sparkster Rifle - - Mortal Rifle - - Rafan-Kos - -Ammo models: - Sparkster Ammo + - Kinylum Round + - Nokron Round - Mortal Rifle Ammo - Round - Mag - Grenade + - Ray-Khom Ammo + - Single + - Mag + - Battery - Rafan-Kos Ammo - Pod - Mag +Collectible models: + - Saya's Mug + # Final Update Character models: - Maidbot + - Rika - White Lady diff --git a/music/TRAUMATI.XM b/music/TRAUMATI.XM index 0b2beb975..50e610398 100644 Binary files a/music/TRAUMATI.XM and b/music/TRAUMATI.XM differ diff --git a/palettes/MADCAT.pal b/palettes/MADCAT.pal new file mode 100644 index 000000000..59b152556 Binary files /dev/null and b/palettes/MADCAT.pal differ diff --git a/palettes/SWWMGZTerm.pal b/palettes/SWWMGZTerm.pal new file mode 100644 index 000000000..0dcf2a063 Binary files /dev/null and b/palettes/SWWMGZTerm.pal differ diff --git a/readme.txt b/readme.txt index f474d41f1..e6b4036b4 100644 --- a/readme.txt +++ b/readme.txt @@ -1,6 +1,8 @@ + CODENAME: DEMOLITIONIST + a.k.a. Some Weird Weapons Mod: GZDoom Edition ---------------------------------------- -(C)2020-2021 Marisa Kirisame - UnSX Team +(C)2020-2022 Marisa Kirisame - UnSX Team @@ -41,6 +43,17 @@ Index of contents: 2.3. Armors 2.4. Health 2.5. Others + 2.6. DLC Weapon Set 1 + 2.6.1. Itamex Hammer + 2.6.2. Plasma Blaster + 2.6.3. Puntzer Beta + 2.6.4. Puntzer Gamma + 2.6.5. Sheen HMG + 2.6.6. Quadravol + 2.6.7. Sparkster Rifle + 2.6.8. Mortal Rifle + 2.6.9. Ray-Khom + 2.6.A. Rafan-Kos 3. Credits 3.1. UnSX Team Is 3.2. Special Thanks @@ -319,6 +332,97 @@ times little pieces of treasure that you might want to collect, as they can be very valuable. +2.6. DLC Weapon Set +- - - - - - - - - - + +Coming soon. But here's a tease. + +2.6.1. Itamex Hammer + +Slot 1. Melee weapon. +A strong as fuck sledgehammer. +Primary fire does side swings. +Secondary fire does an overhead swing. +Tertiery fire does a spin. Keep pressing it to spin more. + +2.6.2. Plasma Blaster + +Slot 2. Pistol. +A fine plasma gun. Bit of a downgrade compared to its old SWWM counterparts, +but don't let that deceive ya, it's still very useful. +Primary fire does the shootin'. +Secondary fire charges a big blast. +Can also be dual wielded. + +2.6.3. Puntzer Beta + +Slot 3. Revolver. +A six shooter, packing some fine... Drilling power. +Primary fire does a shoot. +Secondary fire is held for fast shooting mode, where spamming primary will +shoot faster. + +2.6.4. Puntzer Gamma + +Slot 4. Submachine gun. +It does the drilling, and it does it fast. +Primary fire schutts, as expected. +Secondary fire switches fire modes. You won't believe how fast this can go. + +2.6.5. Sheen HMG + +Slot 5. Heavy machine gun. +For those who wished for dakka. Here's the dakka. +Primary fire shoots. +Secondary fire shoots faster. +Tertiary fire shoots the fastest. +Watch out for overheating. + +2.6.6. Quadravol + +Slot 6. Fireball launcher. +A signature weapon of the UnSX series, mighty fireball shooting. +Primary fire does a shoot. +Secondary fire pumps for more power. +Tertiary fire toggles scatter shot. +And yes, it's a levergun, have fun. + +2.6.7. Sparkster Rifle + +Slot 7. Plasma artillery. +Yet another signature weapon of the UnSX saga, big fat plasma rifle. +Primary fire shoots blue plasma. +Secondary fire spews red plasma. +Both buttons at once release a deadly purple plasma. +Has two reloads, for each ammo type. + +2.6.8. Mortal Rifle + +Slot 8. Battle rifle. +A weird as all hell rifle that does everything. +Primary fire does schumt. +Secondary fire the grenade. +Tertiary fire a switch of modes. +Have fun. + +2.6.9. Ray-Khom + +Slot 9. GEP gun. +The most silent way to eliminate Manderley. +Primary fire lobs a silent plasma grenade. It goes far, and it blows up good. +Secondary fire zaps whatever's in front of you, don't use it underwater. +This weapon has both a primary reload and secondary reload (zoom), as it's +powered by a removable battery. + +2.6.A. Rafan-Kos + +Slot 0. Ultimate weapon. +Frickin' laser beams, big of them, very strong. +Primary fire beam. +Secondary fire more beams. +I'm tired from writing these, good night. + + 3. Credits ---------- diff --git a/shaders/glsl/Fuzz.fp b/shaders/glsl/Fuzz.fp index 35ad5e131..34bbf7828 100644 --- a/shaders/glsl/Fuzz.fp +++ b/shaders/glsl/Fuzz.fp @@ -36,6 +36,10 @@ float[]( 3. ); +#ifndef BASE_RES +#define BASE_RES vec2(640.,400.) +#endif + void SetupMaterial( inout Material mat ) { vec2 coord; diff --git a/shaders/glsl/NewLogoAnimated.fp b/shaders/glsl/NewLogoAnimated.fp new file mode 100644 index 000000000..b5644ef29 --- /dev/null +++ b/shaders/glsl/NewLogoAnimated.fp @@ -0,0 +1,98 @@ +// animated DEMOLITIONIST logo + +#define overlay(a,b) (a<0.5)?(2.0*a*b):(1.0-(2.0*(1.0-a)*(1.0-b))) +#define hardlight(a,b) (2*a<1.0)?clamp(2.0*a*b,0.0,1.0):clamp(1.0-2.0*(1.0-b)*(1.0-a),0.0,1.0) +const float pi = 3.14159265358979323846; + +vec2 warpcoord( in vec2 uv ) +{ + vec2 offset; + offset.y = sin(pi*2.*(uv.x*8.+timer*.25))*.005; + offset.x = cos(pi*2.*(uv.y*4.+timer*.25))*.005; + return uv+offset; +} + +// based on gimp color to alpha, but simplified +vec4 blacktoalpha( in vec4 src ) +{ + vec4 dst = src; + float alpha = 0.; + float a; + a = clamp(dst.r,0.,1.); + if ( a > alpha ) alpha = a; + a = clamp(dst.g,0.,1.); + if ( a > alpha ) alpha = a; + a = clamp(dst.b,0.,1.); + if ( a > alpha ) alpha = a; + if ( alpha > 0. ) + { + float ainv = 1./alpha; + dst.rgb *= ainv; + } + dst.a *= alpha; + return dst; +} +#ifdef NO_BILINEAR +#define BilinearSample(x,y,z,w) texture(x,y) +#else +vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize ) +{ + vec2 f = fract(pos*size); + pos += (.5-f)*pxsize; + vec4 p0q0 = texture(tex,pos); + vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0)); + vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y)); + vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y)); + vec4 pInterp_q0 = mix(p0q0,p1q0,f.x); + vec4 pInterp_q1 = mix(p0q1,p1q1,f.x); + return mix(pInterp_q0,pInterp_q1,f.y); +} +#endif + +vec3 GradientMap( in vec3 color ) +{ + float gray = dot(color,vec3(.333333)); + vec2 size = vec2(512.,8.); + vec2 pxsize = 1./size; + return BilinearSample(gradtex,vec2(gray/2.+.25,0),size,pxsize).rgb; +} + +void SetupMaterial( inout Material mat ) +{ + // store these to save some time + vec2 size = vec2(textureSize(Layer1,0)); + vec2 pxsize = 1./size; + // y'all ready for this multilayered madness? + vec2 uv = vTexCoord.st; + // base blank layer + vec4 base = vec4(1.); + // first layer, warp then multiply red + base.rgb *= BilinearSample(Layer1,warpcoord(uv),size,pxsize).x; + // first layer, multiply green + base.rgb *= BilinearSample(Layer1,uv,size,pxsize).y; + // first layer, add blue + base.rgb += BilinearSample(Layer1,uv,size,pxsize).zzz; + // multiply by red fade + base.rgb *= texture(fadetex,vec2(.5)).x; + // gradient map result + base.rgb = GradientMap(base.rgb); + // color to alpha + base = blacktoalpha(base); + // second layer, alpha blend + vec4 tmp = BilinearSample(Layer2,uv,size,pxsize); + vec4 tmp2; + tmp2.a = tmp.a+base.a*(1-tmp.a); + tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1-tmp.a))/tmp2.a; + base = tmp2; + // third layer, hard light with two multiplied masks + tmp.xy = BilinearSample(Layer3,uv,size,pxsize).xy; + tmp.y *= BilinearSample(Layer3,clamp(uv+vec2(1.-texture(fadetex,vec2(.5)).y*2.,0.),vec2(0.),vec2(1.)),size,pxsize).z; + tmp2.r = hardlight(base.r,tmp.x); + tmp2.g = hardlight(base.g,tmp.x); + tmp2.b = hardlight(base.b,tmp.x); + base.rgb = mix(base.rgb,tmp2.rgb,tmp.y); + // clamp + base = clamp(base,vec4(0.),vec4(1.)); + // ding, logo's done + mat.Base = base; +} diff --git a/shaders/pp/Ghostscreen.fp b/shaders/pp/Ghostscreen.fp index 3eb6d082e..84e9a3773 100644 --- a/shaders/pp/Ghostscreen.fp +++ b/shaders/pp/Ghostscreen.fp @@ -7,8 +7,8 @@ void main() float p = distance(uv,vec2(.5))/sqrt(2.); for ( float i=0.; i<4.; i+=1. ) { - vec2 suv = fract((.5-uv)*(1.-i*p*p)+.5); + vec2 suv = (.5-uv)*(1.-i*p*p)+.5; col += texture(InputTexture,suv).rgb*pow(p,2.)*vec3(.6,.8,1.3); } - FragColor = vec4(col,1.0); + FragColor = vec4(col,1.); } diff --git a/sndinfo.txt b/sndinfo.txt index 61341e81f..36040e821 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -17,6 +17,14 @@ squeak sounds/SQUEAK.ogg recordscratch sounds/RECSCRAP.ogg compat/warn sounds/UTWARN.ogg hahaha/hahaha sounds/HAHAHA.ogg +title/explo1 sounds/OUCHEX1.ogg +title/explo2 sounds/OUCHEX2.ogg +title/explo3 sounds/OUCHEX3.ogg +title/explo4 sounds/OUCHEX4.ogg +$random title/explo { title/explo1 title/explo2 title/explo3 title/explo4 } +$limit title/explo 64 +title/thump sounds/TitleThump.ogg +$limit title/thump 16 saya/giggle1 sounds/saya/saya_giggle1.ogg saya/giggle2 sounds/saya/saya_giggle2.ogg @@ -53,53 +61,6 @@ voice/default/death2 sounds/voice/default/demodeath2.ogg voice/default/death3 sounds/voice/default/demodeath3.ogg voice/default/death4 sounds/voice/default/demodeath4.ogg voice/default/death5 sounds/voice/default/demodeath5.ogg -voice/default/fightstart1 sounds/voice/default/demofightstart1.ogg -voice/default/fightstart2 sounds/voice/default/demofightstart2.ogg -voice/default/fightstart3 sounds/voice/default/demofightstart3.ogg -voice/default/fightstart4 sounds/voice/default/demofightstart4.ogg -voice/default/fightstart5 sounds/voice/default/demofightstart5.ogg -voice/default/fightstart6 sounds/voice/default/demofightstart6.ogg -voice/default/fightstart7 sounds/voice/default/demofightstart7.ogg -voice/default/fightstart8 sounds/voice/default/demofightstart8.ogg -voice/default/fightstart9 sounds/voice/default/demofightstart9.ogg -voice/default/fightstart10 sounds/voice/default/demofightstart10.ogg -voice/default/fightstart11 sounds/voice/default/demofightstart11.ogg -voice/default/fightstart12 sounds/voice/default/demofightstart12.ogg -voice/default/fightstart13 sounds/voice/default/demofightstart13.ogg -voice/default/fightstart14 sounds/voice/default/demofightstart14.ogg -voice/default/fightstart15 sounds/voice/default/demofightstart15.ogg -voice/default/fightstart16 sounds/voice/default/demofightstart16.ogg -voice/default/fightstart17 sounds/voice/default/demofightstart17.ogg -voice/default/fightstart18 sounds/voice/default/demofightstart18.ogg -voice/default/fightstart19 sounds/voice/default/demofightstart19.ogg -voice/default/fightstart20 sounds/voice/default/demofightstart20.ogg -voice/default/fightstart21 sounds/voice/default/demofightstart21.ogg -voice/default/findsecret1 sounds/voice/default/demofindsecret1.ogg -voice/default/findsecret2 sounds/voice/default/demofindsecret2.ogg -voice/default/findsecret3 sounds/voice/default/demofindsecret3.ogg -voice/default/findsecret4 sounds/voice/default/demofindsecret4.ogg -voice/default/findsecret5 sounds/voice/default/demofindsecret5.ogg -voice/default/findsecret6 sounds/voice/default/demofindsecret6.ogg -voice/default/findsecret7 sounds/voice/default/demofindsecret7.ogg -voice/default/findsecret8 sounds/voice/default/demofindsecret8.ogg -voice/default/findsecret9 sounds/voice/default/demofindsecret9.ogg -voice/default/findsecret10 sounds/voice/default/demofindsecret10.ogg -voice/default/findsecret11 sounds/voice/default/demofindsecret11.ogg -voice/default/findsecret12 sounds/voice/default/demofindsecret12.ogg -voice/default/findsecret13 sounds/voice/default/demofindsecret13.ogg -voice/default/getweapon1 sounds/voice/default/demogetweapon1.ogg -voice/default/getweapon2 sounds/voice/default/demogetweapon2.ogg -voice/default/getweapon3 sounds/voice/default/demogetweapon3.ogg -voice/default/getweapon4 sounds/voice/default/demogetweapon4.ogg -voice/default/getweapon5 sounds/voice/default/demogetweapon5.ogg -voice/default/getweapon6 sounds/voice/default/demogetweapon6.ogg -voice/default/getweapon7 sounds/voice/default/demogetweapon7.ogg -voice/default/getweapon8 sounds/voice/default/demogetweapon8.ogg -voice/default/getweapon9 sounds/voice/default/demogetweapon9.ogg -voice/default/getweapon10 sounds/voice/default/demogetweapon10.ogg -voice/default/getweapon11 sounds/voice/default/demogetweapon11.ogg -voice/default/getweapon12 sounds/voice/default/demogetweapon12.ogg -voice/default/getweapon13 sounds/voice/default/demogetweapon13.ogg voice/default/grunt1 sounds/voice/default/demogrunt1.ogg voice/default/grunt2 sounds/voice/default/demogrunt2.ogg voice/default/grunt3 sounds/voice/default/demogrunt3.ogg @@ -111,210 +72,17 @@ voice/default/hipain2 sounds/voice/default/demohipain2.ogg voice/default/hipain3 sounds/voice/default/demohipain3.ogg voice/default/hipain4 sounds/voice/default/demohipain4.ogg voice/default/hipain5 sounds/voice/default/demohipain5.ogg -voice/default/locked1 sounds/voice/default/demolocked1.ogg -voice/default/locked2 sounds/voice/default/demolocked2.ogg -voice/default/locked3 sounds/voice/default/demolocked3.ogg -voice/default/locked4 sounds/voice/default/demolocked4.ogg -voice/default/jammed1 sounds/voice/default/demojammed1.ogg -voice/default/jammed2 sounds/voice/default/demojammed2.ogg -voice/default/jammed3 sounds/voice/default/demojammed3.ogg -voice/default/jammed4 sounds/voice/default/demojammed4.ogg voice/default/lopain1 sounds/voice/default/demolopain1.ogg voice/default/lopain2 sounds/voice/default/demolopain2.ogg voice/default/lopain3 sounds/voice/default/demolopain3.ogg voice/default/lopain4 sounds/voice/default/demolopain4.ogg voice/default/lopain5 sounds/voice/default/demolopain5.ogg -voice/default/mapstart1 sounds/voice/default/demomapstart1.ogg -voice/default/mapstart2 sounds/voice/default/demomapstart2.ogg -voice/default/mapstart3 sounds/voice/default/demomapstart3.ogg -voice/default/mapstart4 sounds/voice/default/demomapstart4.ogg -voice/default/mapstart5 sounds/voice/default/demomapstart5.ogg -voice/default/mapstart6 sounds/voice/default/demomapstart6.ogg -voice/default/mapstart7 sounds/voice/default/demomapstart7.ogg -voice/default/mapstart8 sounds/voice/default/demomapstart8.ogg -voice/default/mapstart9 sounds/voice/default/demomapstart9.ogg -voice/default/mapstart10 sounds/voice/default/demomapstart10.ogg -voice/default/mapstart11 sounds/voice/default/demomapstart11.ogg -voice/default/mapstart12 sounds/voice/default/demomapstart12.ogg -voice/default/mapstart13 sounds/voice/default/demomapstart13.ogg -voice/default/mapstart14 sounds/voice/default/demomapstart14.ogg voice/default/pain1 sounds/voice/default/demopain1.ogg voice/default/pain2 sounds/voice/default/demopain2.ogg voice/default/pain3 sounds/voice/default/demopain3.ogg voice/default/pain4 sounds/voice/default/demopain4.ogg voice/default/pain5 sounds/voice/default/demopain5.ogg voice/default/pain6 sounds/voice/default/demopain6.ogg -voice/default/puzzfail1 sounds/voice/default/demopuzzfail1.ogg -voice/default/puzzfail2 sounds/voice/default/demopuzzfail2.ogg -voice/default/puzzfail3 sounds/voice/default/demopuzzfail3.ogg -voice/default/puzzfail4 sounds/voice/default/demopuzzfail4.ogg -voice/default/puzzfail5 sounds/voice/default/demopuzzfail5.ogg -voice/default/puzzfail6 sounds/voice/default/demopuzzfail6.ogg -voice/default/puzzsucc1 sounds/voice/default/demopuzzsucc1.ogg -voice/default/puzzsucc2 sounds/voice/default/demopuzzsucc2.ogg -voice/default/puzzsucc3 sounds/voice/default/demopuzzsucc3.ogg -voice/default/puzzsucc4 sounds/voice/default/demopuzzsucc4.ogg -voice/default/puzzsucc5 sounds/voice/default/demopuzzsucc5.ogg -voice/default/scorekill1 sounds/voice/default/demoscorekill1.ogg -voice/default/scorekill2 sounds/voice/default/demoscorekill2.ogg -voice/default/scorekill3 sounds/voice/default/demoscorekill3.ogg -voice/default/scorekill4 sounds/voice/default/demoscorekill4.ogg -voice/default/scorekill5 sounds/voice/default/demoscorekill5.ogg -voice/default/scorekill6 sounds/voice/default/demoscorekill6.ogg -voice/default/scorekill7 sounds/voice/default/demoscorekill7.ogg -voice/default/scorekill8 sounds/voice/default/demoscorekill8.ogg -voice/default/scorekill9 sounds/voice/default/demoscorekill9.ogg -voice/default/scorekill10 sounds/voice/default/demoscorekill10.ogg -voice/default/scorekill11 sounds/voice/default/demoscorekill11.ogg -voice/default/scorekill12 sounds/voice/default/demoscorekill12.ogg -voice/default/scorekill13 sounds/voice/default/demoscorekill13.ogg -voice/default/scorekill14 sounds/voice/default/demoscorekill14.ogg -voice/default/scorekill15 sounds/voice/default/demoscorekill15.ogg -voice/default/scorekill16 sounds/voice/default/demoscorekill16.ogg -voice/default/scorekill17 sounds/voice/default/demoscorekill17.ogg -voice/default/scorekill18 sounds/voice/default/demoscorekill18.ogg -voice/default/scorekill19 sounds/voice/default/demoscorekill19.ogg -voice/default/scorekill20 sounds/voice/default/demoscorekill20.ogg -voice/default/scorekill21 sounds/voice/default/demoscorekill21.ogg -voice/default/scorekill22 sounds/voice/default/demoscorekill22.ogg -voice/default/scorekill23 sounds/voice/default/demoscorekill23.ogg -voice/default/scorekill24 sounds/voice/default/demoscorekill24.ogg -voice/default/scorekill25 sounds/voice/default/demoscorekill25.ogg -voice/default/scorekill26 sounds/voice/default/demoscorekill26.ogg -voice/default/friendkill1 sounds/voice/default/demofriendkill1.ogg -voice/default/friendkill2 sounds/voice/default/demofriendkill2.ogg -voice/default/friendkill3 sounds/voice/default/demofriendkill3.ogg -voice/default/friendkill4 sounds/voice/default/demofriendkill4.ogg -voice/default/gethit1 sounds/voice/default/demogethit1.ogg -voice/default/gethit2 sounds/voice/default/demogethit2.ogg -voice/default/gethit3 sounds/voice/default/demogethit3.ogg -voice/default/gethit4 sounds/voice/default/demogethit4.ogg -voice/default/gethit5 sounds/voice/default/demogethit5.ogg -voice/default/gethit6 sounds/voice/default/demogethit6.ogg -voice/default/gethit7 sounds/voice/default/demogethit7.ogg -voice/default/gethit8 sounds/voice/default/demogethit8.ogg -voice/default/gethit9 sounds/voice/default/demogethit9.ogg -voice/default/gethit10 sounds/voice/default/demogethit10.ogg -voice/default/gethit11 sounds/voice/default/demogethit11.ogg -voice/default/gethit12 sounds/voice/default/demogethit12.ogg -voice/default/gethit13 sounds/voice/default/demogethit13.ogg -voice/default/gethit14 sounds/voice/default/demogethit14.ogg -voice/default/gethit15 sounds/voice/default/demogethit15.ogg -voice/default/gethit16 sounds/voice/default/demogethit16.ogg -voice/default/gethit17 sounds/voice/default/demogethit17.ogg -voice/default/gethit18 sounds/voice/default/demogethit18.ogg -voice/default/gethit19 sounds/voice/default/demogethit19.ogg -voice/default/friendhit1 sounds/voice/default/demofriendhit1.ogg -voice/default/friendhit2 sounds/voice/default/demofriendhit2.ogg -voice/default/friendhit3 sounds/voice/default/demofriendhit3.ogg -voice/default/friendhit4 sounds/voice/default/demofriendhit4.ogg -voice/default/friendhit5 sounds/voice/default/demofriendhit5.ogg -voice/default/friendhit6 sounds/voice/default/demofriendhit6.ogg -voice/default/friendhit7 sounds/voice/default/demofriendhit7.ogg -voice/default/greet1 sounds/voice/default/demogreet1.ogg -voice/default/greet2 sounds/voice/default/demogreet2.ogg -voice/default/greet3 sounds/voice/default/demogreet3.ogg -voice/default/greet4 sounds/voice/default/demogreet4.ogg -voice/default/greet5 sounds/voice/default/demogreet5.ogg -voice/default/greet6 sounds/voice/default/demogreet6.ogg -voice/default/greet7 sounds/voice/default/demogreet7.ogg -voice/default/hitfriend1 sounds/voice/default/demohitfriend1.ogg -voice/default/hitfriend2 sounds/voice/default/demohitfriend2.ogg -voice/default/hitfriend3 sounds/voice/default/demohitfriend3.ogg -voice/default/ragekit1 sounds/voice/default/demoragekit1.ogg -voice/default/ragekit2 sounds/voice/default/demoragekit2.ogg -voice/default/ragekit3 sounds/voice/default/demoragekit3.ogg -voice/default/ragekit4 sounds/voice/default/demoragekit4.ogg -voice/default/ragekit5 sounds/voice/default/demoragekit5.ogg -voice/default/ragekit6 sounds/voice/default/demoragekit6.ogg -voice/default/koraxgreet1 sounds/voice/default/demokoraxgreet1.ogg -voice/default/koraxgreet2 sounds/voice/default/demokoraxgreet2.ogg -voice/default/koraxgreet3 sounds/voice/default/demokoraxgreet3.ogg -voice/default/koraxgreet4 sounds/voice/default/demokoraxgreet4.ogg -voice/default/koraxgreet5 sounds/voice/default/demokoraxgreet5.ogg -voice/default/koraxgreet6 sounds/voice/default/demokoraxgreet6.ogg -voice/default/koraxgreet7 sounds/voice/default/demokoraxgreet7.ogg -voice/default/koraxgreet8 sounds/voice/default/demokoraxgreet8.ogg -voice/default/koraxgreet9 sounds/voice/default/demokoraxgreet9.ogg -voice/default/koraxgreet10 sounds/voice/default/demokoraxgreet10.ogg -voice/default/koraxgreet11 sounds/voice/default/demokoraxgreet11.ogg -voice/default/koraxgreet12 sounds/voice/default/demokoraxgreet12.ogg -voice/default/koraxgreet13 sounds/voice/default/demokoraxgreet13.ogg -voice/default/koraxblood1 sounds/voice/default/demokoraxblood1.ogg -voice/default/koraxblood2 sounds/voice/default/demokoraxblood2.ogg -voice/default/koraxblood3 sounds/voice/default/demokoraxblood3.ogg -voice/default/koraxblood4 sounds/voice/default/demokoraxblood4.ogg -voice/default/koraxblood5 sounds/voice/default/demokoraxblood5.ogg -voice/default/koraxblood6 sounds/voice/default/demokoraxblood6.ogg -voice/default/koraxblood7 sounds/voice/default/demokoraxblood7.ogg -voice/default/koraxblood8 sounds/voice/default/demokoraxblood8.ogg -voice/default/koraxblood9 sounds/voice/default/demokoraxblood9.ogg -voice/default/koraxblood10 sounds/voice/default/demokoraxblood10.ogg -voice/default/koraxblood11 sounds/voice/default/demokoraxblood11.ogg -voice/default/koraxblood12 sounds/voice/default/demokoraxblood12.ogg -voice/default/koraxblood13 sounds/voice/default/demokoraxblood13.ogg -voice/default/koraxgame1 sounds/voice/default/demokoraxgame1.ogg -voice/default/koraxgame2 sounds/voice/default/demokoraxgame2.ogg -voice/default/koraxgame3 sounds/voice/default/demokoraxgame3.ogg -voice/default/koraxgame4 sounds/voice/default/demokoraxgame4.ogg -voice/default/koraxgame5 sounds/voice/default/demokoraxgame5.ogg -voice/default/koraxgame6 sounds/voice/default/demokoraxgame6.ogg -voice/default/koraxgame7 sounds/voice/default/demokoraxgame7.ogg -voice/default/koraxgame8 sounds/voice/default/demokoraxgame8.ogg -voice/default/koraxgame9 sounds/voice/default/demokoraxgame9.ogg -voice/default/koraxgame10 sounds/voice/default/demokoraxgame10.ogg -voice/default/koraxgame11 sounds/voice/default/demokoraxgame11.ogg -voice/default/koraxgame12 sounds/voice/default/demokoraxgame12.ogg -voice/default/koraxgame13 sounds/voice/default/demokoraxgame13.ogg -voice/default/koraxgame14 sounds/voice/default/demokoraxgame14.ogg -voice/default/koraxworship1 sounds/voice/default/demokoraxworship1.ogg -voice/default/koraxworship2 sounds/voice/default/demokoraxworship2.ogg -voice/default/koraxworship3 sounds/voice/default/demokoraxworship3.ogg -voice/default/koraxworship4 sounds/voice/default/demokoraxworship4.ogg -voice/default/koraxworship5 sounds/voice/default/demokoraxworship5.ogg -voice/default/koraxworship6 sounds/voice/default/demokoraxworship6.ogg -voice/default/koraxworship7 sounds/voice/default/demokoraxworship7.ogg -voice/default/koraxworship8 sounds/voice/default/demokoraxworship8.ogg -voice/default/koraxworship9 sounds/voice/default/demokoraxworship9.ogg -voice/default/koraxworship10 sounds/voice/default/demokoraxworship10.ogg -voice/default/koraxworship11 sounds/voice/default/demokoraxworship11.ogg -voice/default/koraxmasters1 sounds/voice/default/demokoraxmasters1.ogg -voice/default/koraxmasters2 sounds/voice/default/demokoraxmasters2.ogg -voice/default/koraxmasters3 sounds/voice/default/demokoraxmasters3.ogg -voice/default/koraxmasters4 sounds/voice/default/demokoraxmasters4.ogg -voice/default/koraxmasters5 sounds/voice/default/demokoraxmasters5.ogg -voice/default/koraxmasters6 sounds/voice/default/demokoraxmasters6.ogg -voice/default/koraxmasters7 sounds/voice/default/demokoraxmasters7.ogg -voice/default/koraxmasters8 sounds/voice/default/demokoraxmasters8.ogg -voice/default/koraxmasters9 sounds/voice/default/demokoraxmasters9.ogg -voice/default/giggle1 sounds/voice/default/demogiggle1.ogg -voice/default/giggle2 sounds/voice/default/demogiggle2.ogg -voice/default/giggle3 sounds/voice/default/demogiggle3.ogg -voice/default/giggle4 sounds/voice/default/demogiggle4.ogg -voice/default/giggle5 sounds/voice/default/demogiggle5.ogg -voice/default/giggle6 sounds/voice/default/demogiggle6.ogg -voice/default/giggle7 sounds/voice/default/demogiggle7.ogg -voice/default/giggle8 sounds/voice/default/demogiggle8.ogg -voice/default/giggle9 sounds/voice/default/demogiggle9.ogg -voice/default/giggle10 sounds/voice/default/demogiggle10.ogg -voice/default/giggle11 sounds/voice/default/demogiggle11.ogg -voice/default/giggle12 sounds/voice/default/demogiggle12.ogg -voice/default/giggle13 sounds/voice/default/demogiggle13.ogg -voice/default/giggle14 sounds/voice/default/demogiggle14.ogg -voice/default/giggle15 sounds/voice/default/demogiggle15.ogg -voice/default/giggle16 sounds/voice/default/demogiggle16.ogg -voice/default/giggle17 sounds/voice/default/demogiggle17.ogg -voice/default/giggle18 sounds/voice/default/demogiggle18.ogg -voice/default/giggle19 sounds/voice/default/demogiggle19.ogg -voice/default/hug1 sounds/voice/default/demohug1.ogg -voice/default/hug2 sounds/voice/default/demohug2.ogg -voice/default/hug3 sounds/voice/default/demohug3.ogg -voice/default/hug4 sounds/voice/default/demohug4.ogg -voice/default/hug5 sounds/voice/default/demohug5.ogg -voice/default/hug6 sounds/voice/default/demohug6.ogg -voice/default/hug7 sounds/voice/default/demohug7.ogg -voice/default/hug8 sounds/voice/default/demohug8.ogg -voice/default/hug9 sounds/voice/default/demohug9.ogg $random voice/default/grunt { voice/default/grunt1 voice/default/grunt2 voice/default/grunt3 voice/default/grunt4 voice/default/grunt5 voice/default/grunt6 } $random voice/default/lopain { voice/default/lopain1 voice/default/lopain2 voice/default/lopain3 voice/default/lopain4 voice/default/lopain5 } @@ -322,10 +90,599 @@ $random voice/default/pain { voice/default/pain1 voice/default/pain2 voice/defau $random voice/default/hipain { voice/default/hipain1 voice/default/hipain2 voice/default/hipain3 voice/default/hipain4 voice/default/hipain5 } $random voice/default/death { voice/default/death1 voice/default/death2 voice/default/death3 voice/default/death4 voice/default/death5 } -$random voice/default/giggle { voice/default/giggle1 voice/default/giggle2 voice/default/giggle3 voice/default/giggle4 voice/default/giggle5 voice/default/giggle6 voice/default/giggle7 voice/default/giggle8 voice/default/giggle9 voice/default/giggle10 voice/default/giggle11 voice/default/giggle12 voice/default/giggle13 voice/default/giggle14 voice/default/giggle15 voice/default/giggle16 voice/default/giggle17 voice/default/giggle18 voice/default/giggle19 } -$random voice/default/hug { voice/default/hug1 voice/default/hug2 voice/default/hug3 voice/default/hug4 voice/default/hug5 voice/default/hug6 voice/default/hug7 voice/default/hug8 voice/default/hug9 } -$random voice/default/gigglelow { voice/default/giggle1 voice/default/giggle2 voice/default/giggle5 voice/default/giggle6 voice/default/giggle8 voice/default/giggle10 voice/default/giggle15 voice/default/giggle16 voice/default/giggle18 } -$random voice/default/gigglehigh { voice/default/giggle3 voice/default/giggle4 voice/default/giggle7 voice/default/giggle9 voice/default/giggle11 voice/default/giggle12 voice/default/giggle13 voice/default/giggle14 voice/default/giggle17 } +voice/default/fightstart1 sounds/voice/default/va/demofightstart1.ogg +voice/default/fightstart2 sounds/voice/default/va/demofightstart2.ogg +voice/default/fightstart3 sounds/voice/default/va/demofightstart3.ogg +voice/default/fightstart4 sounds/voice/default/va/demofightstart4.ogg +voice/default/fightstart5 sounds/voice/default/va/demofightstart5.ogg +voice/default/fightstart6 sounds/voice/default/va/demofightstart6.ogg +voice/default/fightstart7 sounds/voice/default/va/demofightstart7.ogg +voice/default/fightstart8 sounds/voice/default/va/demofightstart8.ogg +voice/default/fightstart9 sounds/voice/default/va/demofightstart9.ogg +voice/default/fightstart10 sounds/voice/default/va/demofightstart10.ogg +voice/default/fightstart11 sounds/voice/default/va/demofightstart11.ogg +voice/default/fightstart12 sounds/voice/default/va/demofightstart12.ogg +voice/default/fightstart13 sounds/voice/default/va/demofightstart13.ogg +voice/default/fightstart14 sounds/voice/default/va/demofightstart14.ogg +voice/default/fightstart15 sounds/voice/default/va/demofightstart15.ogg +voice/default/fightstart16 sounds/voice/default/va/demofightstart16.ogg +voice/default/fightstart17 sounds/voice/default/va/demofightstart17.ogg +voice/default/fightstart18 sounds/voice/default/va/demofightstart18.ogg +voice/default/fightstart19 sounds/voice/default/va/demofightstart19.ogg +voice/default/fightstart20 sounds/voice/default/va/demofightstart20.ogg +voice/default/fightstart21 sounds/voice/default/va/demofightstart21.ogg +voice/default/findsecret1 sounds/voice/default/va/demofindsecret1.ogg +voice/default/findsecret2 sounds/voice/default/va/demofindsecret2.ogg +voice/default/findsecret3 sounds/voice/default/va/demofindsecret3.ogg +voice/default/findsecret4 sounds/voice/default/va/demofindsecret4.ogg +voice/default/findsecret5 sounds/voice/default/va/demofindsecret5.ogg +voice/default/findsecret6 sounds/voice/default/va/demofindsecret6.ogg +voice/default/findsecret7 sounds/voice/default/va/demofindsecret7.ogg +voice/default/findsecret8 sounds/voice/default/va/demofindsecret8.ogg +voice/default/findsecret9 sounds/voice/default/va/demofindsecret9.ogg +voice/default/findsecret10 sounds/voice/default/va/demofindsecret10.ogg +voice/default/findsecret11 sounds/voice/default/va/demofindsecret11.ogg +voice/default/findsecret12 sounds/voice/default/va/demofindsecret12.ogg +voice/default/findsecret13 sounds/voice/default/va/demofindsecret13.ogg +voice/default/getweapon1 sounds/voice/default/va/demogetweapon1.ogg +voice/default/getweapon2 sounds/voice/default/va/demogetweapon2.ogg +voice/default/getweapon3 sounds/voice/default/va/demogetweapon3.ogg +voice/default/getweapon4 sounds/voice/default/va/demogetweapon4.ogg +voice/default/getweapon5 sounds/voice/default/va/demogetweapon5.ogg +voice/default/getweapon6 sounds/voice/default/va/demogetweapon6.ogg +voice/default/getweapon7 sounds/voice/default/va/demogetweapon7.ogg +voice/default/getweapon8 sounds/voice/default/va/demogetweapon8.ogg +voice/default/getweapon9 sounds/voice/default/va/demogetweapon9.ogg +voice/default/getweapon10 sounds/voice/default/va/demogetweapon10.ogg +voice/default/getweapon11 sounds/voice/default/va/demogetweapon11.ogg +voice/default/getweapon12 sounds/voice/default/va/demogetweapon12.ogg +voice/default/getweapon13 sounds/voice/default/va/demogetweapon13.ogg +voice/default/locked1 sounds/voice/default/va/demolocked1.ogg +voice/default/locked2 sounds/voice/default/va/demolocked2.ogg +voice/default/locked3 sounds/voice/default/va/demolocked3.ogg +voice/default/locked4 sounds/voice/default/va/demolocked4.ogg +voice/default/locked5 sounds/voice/default/va/demolocked5.ogg +voice/default/locked6 sounds/voice/default/va/demolocked6.ogg +voice/default/jammed1 sounds/voice/default/va/demojammed1.ogg +voice/default/jammed2 sounds/voice/default/va/demojammed2.ogg +voice/default/jammed3 sounds/voice/default/va/demojammed3.ogg +voice/default/jammed4 sounds/voice/default/va/demojammed4.ogg +voice/default/jammed5 sounds/voice/default/va/demojammed5.ogg +voice/default/jammed6 sounds/voice/default/va/demojammed6.ogg +voice/default/jammed7 sounds/voice/default/va/demojammed7.ogg +voice/default/mapstart1 sounds/voice/default/va/demomapstart1.ogg +voice/default/mapstart2 sounds/voice/default/va/demomapstart2.ogg +voice/default/mapstart3 sounds/voice/default/va/demomapstart3.ogg +voice/default/mapstart4 sounds/voice/default/va/demomapstart4.ogg +voice/default/mapstart5 sounds/voice/default/va/demomapstart5.ogg +voice/default/mapstart6 sounds/voice/default/va/demomapstart6.ogg +voice/default/mapstart7 sounds/voice/default/va/demomapstart7.ogg +voice/default/mapstart8 sounds/voice/default/va/demomapstart8.ogg +voice/default/mapstart9 sounds/voice/default/va/demomapstart9.ogg +voice/default/mapstart10 sounds/voice/default/va/demomapstart10.ogg +voice/default/mapstart11 sounds/voice/default/va/demomapstart11.ogg +voice/default/mapstart12 sounds/voice/default/va/demomapstart12.ogg +voice/default/mapstart13 sounds/voice/default/va/demomapstart13.ogg +voice/default/mapstart14 sounds/voice/default/va/demomapstart14.ogg +voice/default/puzzfail1 sounds/voice/default/va/demopuzzfail1.ogg +voice/default/puzzfail2 sounds/voice/default/va/demopuzzfail2.ogg +voice/default/puzzfail3 sounds/voice/default/va/demopuzzfail3.ogg +voice/default/puzzfail4 sounds/voice/default/va/demopuzzfail4.ogg +voice/default/puzzfail5 sounds/voice/default/va/demopuzzfail5.ogg +voice/default/puzzfail6 sounds/voice/default/va/demopuzzfail6.ogg +voice/default/puzzsucc1 sounds/voice/default/va/demopuzzsucc1.ogg +voice/default/puzzsucc2 sounds/voice/default/va/demopuzzsucc2.ogg +voice/default/puzzsucc3 sounds/voice/default/va/demopuzzsucc3.ogg +voice/default/puzzsucc4 sounds/voice/default/va/demopuzzsucc4.ogg +voice/default/puzzsucc5 sounds/voice/default/va/demopuzzsucc5.ogg +voice/default/puzzsucc6 sounds/voice/default/va/demopuzzsucc6.ogg +voice/default/scorekill1 sounds/voice/default/va/demoscorekill1.ogg +voice/default/scorekill2 sounds/voice/default/va/demoscorekill2.ogg +voice/default/scorekill3 sounds/voice/default/va/demoscorekill3.ogg +voice/default/scorekill4 sounds/voice/default/va/demoscorekill4.ogg +voice/default/scorekill5 sounds/voice/default/va/demoscorekill5.ogg +voice/default/scorekill6 sounds/voice/default/va/demoscorekill6.ogg +voice/default/scorekill7 sounds/voice/default/va/demoscorekill7.ogg +voice/default/scorekill8 sounds/voice/default/va/demoscorekill8.ogg +voice/default/scorekill9 sounds/voice/default/va/demoscorekill9.ogg +voice/default/scorekill10 sounds/voice/default/va/demoscorekill10.ogg +voice/default/scorekill11 sounds/voice/default/va/demoscorekill11.ogg +voice/default/scorekill12 sounds/voice/default/va/demoscorekill12.ogg +voice/default/scorekill13 sounds/voice/default/va/demoscorekill13.ogg +voice/default/scorekill14 sounds/voice/default/va/demoscorekill14.ogg +voice/default/scorekill15 sounds/voice/default/va/demoscorekill15.ogg +voice/default/scorekill16 sounds/voice/default/va/demoscorekill16.ogg +voice/default/scorekill17 sounds/voice/default/va/demoscorekill17.ogg +voice/default/scorekill18 sounds/voice/default/va/demoscorekill18.ogg +voice/default/scorekill19 sounds/voice/default/va/demoscorekill19.ogg +voice/default/scorekill20 sounds/voice/default/va/demoscorekill20.ogg +voice/default/scorekill21 sounds/voice/default/va/demoscorekill21.ogg +voice/default/scorekill22 sounds/voice/default/va/demoscorekill22.ogg +voice/default/scorekill23 sounds/voice/default/va/demoscorekill23.ogg +voice/default/scorekill24 sounds/voice/default/va/demoscorekill24.ogg +voice/default/scorekill25 sounds/voice/default/va/demoscorekill25.ogg +voice/default/friendkill1 sounds/voice/default/va/demofriendkill1.ogg +voice/default/friendkill2 sounds/voice/default/va/demofriendkill2.ogg +voice/default/friendkill3 sounds/voice/default/va/demofriendkill3.ogg +voice/default/friendkill4 sounds/voice/default/va/demofriendkill4.ogg +voice/default/gethit1 sounds/voice/default/va/demogethit1.ogg +voice/default/gethit2 sounds/voice/default/va/demogethit2.ogg +voice/default/gethit3 sounds/voice/default/va/demogethit3.ogg +voice/default/gethit4 sounds/voice/default/va/demogethit4.ogg +voice/default/gethit5 sounds/voice/default/va/demogethit5.ogg +voice/default/gethit6 sounds/voice/default/va/demogethit6.ogg +voice/default/gethit7 sounds/voice/default/va/demogethit7.ogg +voice/default/gethit8 sounds/voice/default/va/demogethit8.ogg +voice/default/gethit9 sounds/voice/default/va/demogethit9.ogg +voice/default/gethit10 sounds/voice/default/va/demogethit10.ogg +voice/default/gethit11 sounds/voice/default/va/demogethit11.ogg +voice/default/gethit12 sounds/voice/default/va/demogethit12.ogg +voice/default/gethit13 sounds/voice/default/va/demogethit13.ogg +voice/default/gethit14 sounds/voice/default/va/demogethit14.ogg +voice/default/gethit15 sounds/voice/default/va/demogethit15.ogg +voice/default/gethit16 sounds/voice/default/va/demogethit16.ogg +voice/default/gethit17 sounds/voice/default/va/demogethit17.ogg +voice/default/gethit18 sounds/voice/default/va/demogethit18.ogg +voice/default/gethit19 sounds/voice/default/va/demogethit19.ogg +voice/default/friendhit1 sounds/voice/default/va/demofriendhit1.ogg +voice/default/friendhit2 sounds/voice/default/va/demofriendhit2.ogg +voice/default/friendhit3 sounds/voice/default/va/demofriendhit3.ogg +voice/default/friendhit4 sounds/voice/default/va/demofriendhit4.ogg +voice/default/friendhit5 sounds/voice/default/va/demofriendhit5.ogg +voice/default/friendhit6 sounds/voice/default/va/demofriendhit6.ogg +voice/default/friendhit7 sounds/voice/default/va/demofriendhit7.ogg +voice/default/greet1 sounds/voice/default/va/demogreet1.ogg +voice/default/greet2 sounds/voice/default/va/demogreet2.ogg +voice/default/greet3 sounds/voice/default/va/demogreet3.ogg +voice/default/greet4 sounds/voice/default/va/demogreet4.ogg +voice/default/greet5 sounds/voice/default/va/demogreet5.ogg +voice/default/greet6 sounds/voice/default/va/demogreet6.ogg +voice/default/greet7 sounds/voice/default/va/demogreet7.ogg +voice/default/hitfriend1 sounds/voice/default/va/demohitfriend1.ogg +voice/default/hitfriend2 sounds/voice/default/va/demohitfriend2.ogg +voice/default/hitfriend3 sounds/voice/default/va/demohitfriend3.ogg +voice/default/ragekit1 sounds/voice/default/va/demoragekit1.ogg +voice/default/ragekit2 sounds/voice/default/va/demoragekit2.ogg +voice/default/ragekit3 sounds/voice/default/va/demoragekit3.ogg +voice/default/ragekit4 sounds/voice/default/va/demoragekit4.ogg +voice/default/ragekit5 sounds/voice/default/va/demoragekit5.ogg +voice/default/ragekit6 sounds/voice/default/va/demoragekit6.ogg +voice/default/ragekit7 sounds/voice/default/va/demoragekit7.ogg +voice/default/ragekit8 sounds/voice/default/va/demoragekit8.ogg +voice/default/ragekit9 sounds/voice/default/va/demoragekit9.ogg +voice/default/ragekit10 sounds/voice/default/va/demoragekit10.ogg +voice/default/ragekit11 sounds/voice/default/va/demoragekit11.ogg +voice/default/ragekit12 sounds/voice/default/va/demoragekit12.ogg +voice/default/ragekit13 sounds/voice/default/va/demoragekit13.ogg +voice/default/ragekit14 sounds/voice/default/va/demoragekit14.ogg +voice/default/ragekit15 sounds/voice/default/va/demoragekit15.ogg +voice/default/ragekit16 sounds/voice/default/va/demoragekit16.ogg +voice/default/ragekit17 sounds/voice/default/va/demoragekit17.ogg +voice/default/koraxgreet1 sounds/voice/default/va/demokoraxgreet1.ogg +voice/default/koraxgreet2 sounds/voice/default/va/demokoraxgreet2.ogg +voice/default/koraxgreet3 sounds/voice/default/va/demokoraxgreet3.ogg +voice/default/koraxgreet4 sounds/voice/default/va/demokoraxgreet4.ogg +voice/default/koraxgreet5 sounds/voice/default/va/demokoraxgreet5.ogg +voice/default/koraxgreet6 sounds/voice/default/va/demokoraxgreet6.ogg +voice/default/koraxgreet7 sounds/voice/default/va/demokoraxgreet7.ogg +voice/default/koraxgreet8 sounds/voice/default/va/demokoraxgreet8.ogg +voice/default/koraxgreet9 sounds/voice/default/va/demokoraxgreet9.ogg +voice/default/koraxgreet10 sounds/voice/default/va/demokoraxgreet10.ogg +voice/default/koraxgreet11 sounds/voice/default/va/demokoraxgreet11.ogg +voice/default/koraxgreet12 sounds/voice/default/va/demokoraxgreet12.ogg +voice/default/koraxgreet13 sounds/voice/default/va/demokoraxgreet13.ogg +voice/default/koraxblood1 sounds/voice/default/va/demokoraxblood1.ogg +voice/default/koraxblood2 sounds/voice/default/va/demokoraxblood2.ogg +voice/default/koraxblood3 sounds/voice/default/va/demokoraxblood3.ogg +voice/default/koraxblood4 sounds/voice/default/va/demokoraxblood4.ogg +voice/default/koraxblood5 sounds/voice/default/va/demokoraxblood5.ogg +voice/default/koraxblood6 sounds/voice/default/va/demokoraxblood6.ogg +voice/default/koraxblood7 sounds/voice/default/va/demokoraxblood7.ogg +voice/default/koraxblood8 sounds/voice/default/va/demokoraxblood8.ogg +voice/default/koraxblood9 sounds/voice/default/va/demokoraxblood9.ogg +voice/default/koraxblood10 sounds/voice/default/va/demokoraxblood10.ogg +voice/default/koraxblood11 sounds/voice/default/va/demokoraxblood11.ogg +voice/default/koraxblood12 sounds/voice/default/va/demokoraxblood12.ogg +voice/default/koraxblood13 sounds/voice/default/va/demokoraxblood13.ogg +voice/default/koraxgame1 sounds/voice/default/va/demokoraxgame1.ogg +voice/default/koraxgame2 sounds/voice/default/va/demokoraxgame2.ogg +voice/default/koraxgame3 sounds/voice/default/va/demokoraxgame3.ogg +voice/default/koraxgame4 sounds/voice/default/va/demokoraxgame4.ogg +voice/default/koraxgame5 sounds/voice/default/va/demokoraxgame5.ogg +voice/default/koraxgame6 sounds/voice/default/va/demokoraxgame6.ogg +voice/default/koraxgame7 sounds/voice/default/va/demokoraxgame7.ogg +voice/default/koraxgame8 sounds/voice/default/va/demokoraxgame8.ogg +voice/default/koraxgame9 sounds/voice/default/va/demokoraxgame9.ogg +voice/default/koraxgame10 sounds/voice/default/va/demokoraxgame10.ogg +voice/default/koraxgame11 sounds/voice/default/va/demokoraxgame11.ogg +voice/default/koraxgame12 sounds/voice/default/va/demokoraxgame12.ogg +voice/default/koraxgame13 sounds/voice/default/va/demokoraxgame13.ogg +voice/default/koraxgame14 sounds/voice/default/va/demokoraxgame14.ogg +voice/default/koraxworship1 sounds/voice/default/va/demokoraxworship1.ogg +voice/default/koraxworship2 sounds/voice/default/va/demokoraxworship2.ogg +voice/default/koraxworship3 sounds/voice/default/va/demokoraxworship3.ogg +voice/default/koraxworship4 sounds/voice/default/va/demokoraxworship4.ogg +voice/default/koraxworship5 sounds/voice/default/va/demokoraxworship5.ogg +voice/default/koraxworship6 sounds/voice/default/va/demokoraxworship6.ogg +voice/default/koraxworship7 sounds/voice/default/va/demokoraxworship7.ogg +voice/default/koraxworship8 sounds/voice/default/va/demokoraxworship8.ogg +voice/default/koraxworship9 sounds/voice/default/va/demokoraxworship9.ogg +voice/default/koraxworship10 sounds/voice/default/va/demokoraxworship10.ogg +voice/default/koraxworship11 sounds/voice/default/va/demokoraxworship11.ogg +voice/default/koraxmasters1 sounds/voice/default/va/demokoraxmasters1.ogg +voice/default/koraxmasters2 sounds/voice/default/va/demokoraxmasters2.ogg +voice/default/koraxmasters3 sounds/voice/default/va/demokoraxmasters3.ogg +voice/default/koraxmasters4 sounds/voice/default/va/demokoraxmasters4.ogg +voice/default/koraxmasters5 sounds/voice/default/va/demokoraxmasters5.ogg +voice/default/koraxmasters6 sounds/voice/default/va/demokoraxmasters6.ogg +voice/default/koraxmasters7 sounds/voice/default/va/demokoraxmasters7.ogg +voice/default/koraxmasters8 sounds/voice/default/va/demokoraxmasters8.ogg +voice/default/koraxmasters9 sounds/voice/default/va/demokoraxmasters9.ogg +voice/default/getdeepimpact sounds/voice/default/va/demogetdeepimpact.ogg +voice/default/getpusherweapon sounds/voice/default/va/demogetpusherweapon.ogg +voice/default/getexplodiumgun1 sounds/voice/default/va/demogetexplodiumgun1.ogg +voice/default/getexplodiumgun2 sounds/voice/default/va/demogetexplodiumgun2.ogg +voice/default/getspreadgun sounds/voice/default/va/demogetspreadgun.ogg +voice/default/getwallbuster sounds/voice/default/va/demogetwallbuster.ogg +voice/default/geteviscerator sounds/voice/default/va/demogeteviscerator.ogg +voice/default/gethellblazer sounds/voice/default/va/demogethellblazer.ogg +voice/default/getsparkster sounds/voice/default/va/demogetsparkster.ogg +voice/default/getsilverbullet sounds/voice/default/va/demogetsilverbullet.ogg +voice/default/getcandygun sounds/voice/default/va/demogetcandygun.ogg +voice/default/getynykron sounds/voice/default/va/demogetynykron.ogg +voice/default/getitamexhammer sounds/voice/default/va/demogetitamexhammer.ogg +voice/default/getplasmablast1 sounds/voice/default/va/demogetplasmablast1.ogg +voice/default/getplasmablast2 sounds/voice/default/va/demogetplasmablast2.ogg +voice/default/getpuntzerbeta sounds/voice/default/va/demogetpuntzerbeta.ogg +voice/default/getpuntzergamma sounds/voice/default/va/demogetpuntzergamma.ogg +voice/default/getheavymahsheengun sounds/voice/default/va/demogetheavymahsheengun.ogg +voice/default/getquadravol sounds/voice/default/va/demogetquadravol.ogg +voice/default/getblackfireigniter sounds/voice/default/va/demogetblackfireigniter.ogg +voice/default/getempcarbine sounds/voice/default/va/demogetempcarbine.ogg +voice/default/getraykhom sounds/voice/default/va/demogetraykhomdeepimpact.ogg +voice/default/getgrandlance sounds/voice/default/va/demogetgrandlance.ogg +voice/default/getwhiteglove sounds/voice/default/va/demogetwhiteglove.ogg +voice/default/getnewsparkster sounds/voice/default/va/demogetnewsparkster.ogg +voice/default/getmortalrifle sounds/voice/default/va/demogetmortalrifle.ogg +voice/default/getrafankos sounds/voice/default/va/demogetrafankos.ogg +voice/default/keyget1 sounds/voice/default/va/demokeyget1.ogg +voice/default/keyget2 sounds/voice/default/va/demokeyget2.ogg +voice/default/keyget3 sounds/voice/default/va/demokeyget3.ogg +voice/default/keyget4 sounds/voice/default/va/demokeyget4.ogg +voice/default/keyget5 sounds/voice/default/va/demokeyget5.ogg +voice/default/usefail1 sounds/voice/default/va/demousefail1.ogg +voice/default/usefail2 sounds/voice/default/va/demousefail2.ogg +voice/default/usefail3 sounds/voice/default/va/demousefail3.ogg +voice/default/usefail4 sounds/voice/default/va/demousefail4.ogg +voice/default/usefail5 sounds/voice/default/va/demousefail5.ogg +voice/default/usefail6 sounds/voice/default/va/demousefail6.ogg +voice/default/usefail7 sounds/voice/default/va/demousefail7.ogg +voice/default/usefail8 sounds/voice/default/va/demousefail8.ogg +voice/default/usefail9 sounds/voice/default/va/demousefail9.ogg +voice/default/usegrunt1 sounds/voice/default/va/demousegrunt1.ogg +voice/default/usegrunt2 sounds/voice/default/va/demousegrunt2.ogg +voice/default/usegrunt3 sounds/voice/default/va/demousegrunt3.ogg +voice/default/usegrunt4 sounds/voice/default/va/demousegrunt4.ogg +$random voice/default/usegrunt { voice/default/usegrunt1 voice/default/usegrunt2 voice/default/usegrunt3 voice/default/usegrunt4 } +voice/default/cubeget sounds/voice/default/va/democubeget.ogg +voice/default/akariget sounds/voice/default/va/demoakariget.ogg +voice/default/signalsget sounds/voice/default/va/demosignalsget.ogg +voice/default/nutatcoget sounds/voice/default/va/demonutatcoget.ogg +voice/default/frispyget sounds/voice/default/va/demofrispyget.ogg +voice/default/sayaget sounds/voice/default/va/demosayaget.ogg +voice/default/mothget sounds/voice/default/va/demomothget.ogg +voice/default/demoget sounds/voice/default/va/demodemoget.ogg +voice/default/peachget sounds/voice/default/va/demopeachget.ogg +voice/default/breadget sounds/voice/default/va/demobreadget.ogg +voice/default/mangaget sounds/voice/default/va/demomangaget.ogg +voice/default/kiringet sounds/voice/default/va/demokiringet.ogg +voice/default/korax1 sounds/voice/default/va/demokorax1.ogg +voice/default/korax2 sounds/voice/default/va/demokorax2.ogg +voice/default/korax3 sounds/voice/default/va/demokorax3.ogg +voice/default/korax4 sounds/voice/default/va/demokorax4.ogg +voice/default/korax5 sounds/voice/default/va/demokorax5.ogg +voice/default/korax6 sounds/voice/default/va/demokorax6.ogg +voice/default/korax7 sounds/voice/default/va/demokorax7.ogg +voice/default/korax8 sounds/voice/default/va/demokorax8.ogg +voice/default/korax9 sounds/voice/default/va/demokorax9.ogg +voice/default/romero1 sounds/voice/default/va/demoromero1.ogg +voice/default/romero2 sounds/voice/default/va/demoromero2.ogg +voice/default/romero3 sounds/voice/default/va/demoromero3.ogg +voice/default/romero4 sounds/voice/default/va/demoromero4.ogg +voice/default/romero5 sounds/voice/default/va/demoromero5.ogg +voice/default/romero6 sounds/voice/default/va/demoromero6.ogg +voice/default/romero7 sounds/voice/default/va/demoromero7.ogg +voice/default/romero8 sounds/voice/default/va/demoromero8.ogg +voice/default/archangelus1 sounds/voice/default/va/demoarchangelus1.ogg +voice/default/archangelus2 sounds/voice/default/va/demoarchangelus2.ogg +voice/default/archangelus3 sounds/voice/default/va/demoarchangelus3.ogg +voice/default/archangelus4 sounds/voice/default/va/demoarchangelus4.ogg +voice/default/archangelus5 sounds/voice/default/va/demoarchangelus5.ogg +voice/default/archangelus6 sounds/voice/default/va/demoarchangelus6.ogg +voice/default/archangelus7 sounds/voice/default/va/demoarchangelus7.ogg +voice/default/archangelus8 sounds/voice/default/va/demoarchangelus8.ogg +voice/default/dsparila1 sounds/voice/default/va/demodsparila1.ogg +voice/default/dsparila2 sounds/voice/default/va/demodsparila2.ogg +voice/default/dsparila3 sounds/voice/default/va/demodsparila3.ogg +voice/default/dsparilb1 sounds/voice/default/va/demodsparilb1.ogg +voice/default/dsparilb2 sounds/voice/default/va/demodsparilb2.ogg +voice/default/dsparilb3 sounds/voice/default/va/demodsparilb3.ogg +voice/default/pethdoom1 sounds/voice/default/va/demopethdoom1.ogg +voice/default/pethdoom2 sounds/voice/default/va/demopethdoom2.ogg +voice/default/pethdoom3 sounds/voice/default/va/demopethdoom3.ogg +voice/default/pethdoom4 sounds/voice/default/va/demopethdoom4.ogg +voice/default/pethdoom5 sounds/voice/default/va/demopethdoom5.ogg +voice/default/pethdoom6 sounds/voice/default/va/demopethdoom6.ogg +voice/default/pethdoom7 sounds/voice/default/va/demopethdoom7.ogg +voice/default/pethdoom8 sounds/voice/default/va/demopethdoom8.ogg +voice/default/pethdoom9 sounds/voice/default/va/demopethdoom9.ogg +voice/default/pethdoomfinish1 sounds/voice/default/va/demopethdoomfinish1.ogg +voice/default/pethdoomfinish2 sounds/voice/default/va/demopethdoomfinish2.ogg +voice/default/pethdoomfinish3 sounds/voice/default/va/demopethdoomfinish3.ogg +voice/default/pethdoomfinish4 sounds/voice/default/va/demopethdoomfinish4.ogg +voice/default/pethdoomfinish5 sounds/voice/default/va/demopethdoomfinish5.ogg +voice/default/pethdoomfinish6 sounds/voice/default/va/demopethdoomfinish6.ogg +voice/default/pethdoomfinish7 sounds/voice/default/va/demopethdoomfinish7.ogg +voice/default/pethdoomfinish8 sounds/voice/default/va/demopethdoomfinish8.ogg +voice/default/pethdoomfinish9 sounds/voice/default/va/demopethdoomfinish9.ogg +voice/default/petmashiro1 sounds/voice/default/va/demopetmashiro1.ogg +voice/default/petmashiro2 sounds/voice/default/va/demopetmashiro2.ogg +voice/default/petmashiro3 sounds/voice/default/va/demopetmashiro3.ogg +voice/default/petmashiro4 sounds/voice/default/va/demopetmashiro4.ogg +voice/default/petmashiro5 sounds/voice/default/va/demopetmashiro5.ogg +voice/default/petmashiro6 sounds/voice/default/va/demopetmashiro6.ogg +voice/default/petmashiro7 sounds/voice/default/va/demopetmashiro7.ogg +voice/default/buttonpush1 sounds/voice/default/va/demobuttonpush1.ogg +voice/default/buttonpush2 sounds/voice/default/va/demobuttonpush2.ogg +voice/default/buttonpush3 sounds/voice/default/va/demobuttonpush3.ogg +voice/default/falling sounds/voice/default/va/demofalling.ogg + +voice/legacy/death1 sounds/voice/legacy/demodeath1.ogg +voice/legacy/death2 sounds/voice/legacy/demodeath2.ogg +voice/legacy/death3 sounds/voice/legacy/demodeath3.ogg +voice/legacy/death4 sounds/voice/legacy/demodeath4.ogg +voice/legacy/death5 sounds/voice/legacy/demodeath5.ogg +voice/legacy/grunt1 sounds/voice/legacy/demogrunt1.ogg +voice/legacy/grunt2 sounds/voice/legacy/demogrunt2.ogg +voice/legacy/grunt3 sounds/voice/legacy/demogrunt3.ogg +voice/legacy/grunt4 sounds/voice/legacy/demogrunt4.ogg +voice/legacy/grunt5 sounds/voice/legacy/demogrunt5.ogg +voice/legacy/grunt6 sounds/voice/legacy/demogrunt6.ogg +voice/legacy/hipain1 sounds/voice/legacy/demohipain1.ogg +voice/legacy/hipain2 sounds/voice/legacy/demohipain2.ogg +voice/legacy/hipain3 sounds/voice/legacy/demohipain3.ogg +voice/legacy/hipain4 sounds/voice/legacy/demohipain4.ogg +voice/legacy/hipain5 sounds/voice/legacy/demohipain5.ogg +voice/legacy/lopain1 sounds/voice/legacy/demolopain1.ogg +voice/legacy/lopain2 sounds/voice/legacy/demolopain2.ogg +voice/legacy/lopain3 sounds/voice/legacy/demolopain3.ogg +voice/legacy/lopain4 sounds/voice/legacy/demolopain4.ogg +voice/legacy/lopain5 sounds/voice/legacy/demolopain5.ogg +voice/legacy/pain1 sounds/voice/legacy/demopain1.ogg +voice/legacy/pain2 sounds/voice/legacy/demopain2.ogg +voice/legacy/pain3 sounds/voice/legacy/demopain3.ogg +voice/legacy/pain4 sounds/voice/legacy/demopain4.ogg +voice/legacy/pain5 sounds/voice/legacy/demopain5.ogg +voice/legacy/pain6 sounds/voice/legacy/demopain6.ogg + +$random voice/legacy/grunt { voice/legacy/grunt1 voice/legacy/grunt2 voice/legacy/grunt3 voice/legacy/grunt4 voice/legacy/grunt5 voice/legacy/grunt6 } +$random voice/legacy/lopain { voice/legacy/lopain1 voice/legacy/lopain2 voice/legacy/lopain3 voice/legacy/lopain4 voice/legacy/lopain5 } +$random voice/legacy/pain { voice/legacy/pain1 voice/legacy/pain2 voice/legacy/pain3 voice/legacy/pain4 voice/legacy/pain5 } +$random voice/legacy/hipain { voice/legacy/hipain1 voice/legacy/hipain2 voice/legacy/hipain3 voice/legacy/hipain4 voice/legacy/hipain5 } +$random voice/legacy/death { voice/legacy/death1 voice/legacy/death2 voice/legacy/death3 voice/legacy/death4 voice/legacy/death5 } + +voice/legacy/fightstart1 sounds/voice/legacy/va/demofightstart1.ogg +voice/legacy/fightstart2 sounds/voice/legacy/va/demofightstart2.ogg +voice/legacy/fightstart3 sounds/voice/legacy/va/demofightstart3.ogg +voice/legacy/fightstart4 sounds/voice/legacy/va/demofightstart4.ogg +voice/legacy/fightstart5 sounds/voice/legacy/va/demofightstart5.ogg +voice/legacy/fightstart6 sounds/voice/legacy/va/demofightstart6.ogg +voice/legacy/fightstart7 sounds/voice/legacy/va/demofightstart7.ogg +voice/legacy/fightstart8 sounds/voice/legacy/va/demofightstart8.ogg +voice/legacy/fightstart9 sounds/voice/legacy/va/demofightstart9.ogg +voice/legacy/fightstart10 sounds/voice/legacy/va/demofightstart10.ogg +voice/legacy/fightstart11 sounds/voice/legacy/va/demofightstart11.ogg +voice/legacy/fightstart12 sounds/voice/legacy/va/demofightstart12.ogg +voice/legacy/fightstart13 sounds/voice/legacy/va/demofightstart13.ogg +voice/legacy/fightstart14 sounds/voice/legacy/va/demofightstart14.ogg +voice/legacy/fightstart15 sounds/voice/legacy/va/demofightstart15.ogg +voice/legacy/fightstart16 sounds/voice/legacy/va/demofightstart16.ogg +voice/legacy/fightstart17 sounds/voice/legacy/va/demofightstart17.ogg +voice/legacy/fightstart18 sounds/voice/legacy/va/demofightstart18.ogg +voice/legacy/fightstart19 sounds/voice/legacy/va/demofightstart19.ogg +voice/legacy/fightstart20 sounds/voice/legacy/va/demofightstart20.ogg +voice/legacy/fightstart21 sounds/voice/legacy/va/demofightstart21.ogg +voice/legacy/findsecret1 sounds/voice/legacy/va/demofindsecret1.ogg +voice/legacy/findsecret2 sounds/voice/legacy/va/demofindsecret2.ogg +voice/legacy/findsecret3 sounds/voice/legacy/va/demofindsecret3.ogg +voice/legacy/findsecret4 sounds/voice/legacy/va/demofindsecret4.ogg +voice/legacy/findsecret5 sounds/voice/legacy/va/demofindsecret5.ogg +voice/legacy/findsecret6 sounds/voice/legacy/va/demofindsecret6.ogg +voice/legacy/findsecret7 sounds/voice/legacy/va/demofindsecret7.ogg +voice/legacy/findsecret8 sounds/voice/legacy/va/demofindsecret8.ogg +voice/legacy/findsecret9 sounds/voice/legacy/va/demofindsecret9.ogg +voice/legacy/findsecret10 sounds/voice/legacy/va/demofindsecret10.ogg +voice/legacy/findsecret11 sounds/voice/legacy/va/demofindsecret11.ogg +voice/legacy/findsecret12 sounds/voice/legacy/va/demofindsecret12.ogg +voice/legacy/findsecret13 sounds/voice/legacy/va/demofindsecret13.ogg +voice/legacy/getweapon1 sounds/voice/legacy/va/demogetweapon1.ogg +voice/legacy/getweapon2 sounds/voice/legacy/va/demogetweapon2.ogg +voice/legacy/getweapon3 sounds/voice/legacy/va/demogetweapon3.ogg +voice/legacy/getweapon4 sounds/voice/legacy/va/demogetweapon4.ogg +voice/legacy/getweapon5 sounds/voice/legacy/va/demogetweapon5.ogg +voice/legacy/getweapon6 sounds/voice/legacy/va/demogetweapon6.ogg +voice/legacy/getweapon7 sounds/voice/legacy/va/demogetweapon7.ogg +voice/legacy/getweapon8 sounds/voice/legacy/va/demogetweapon8.ogg +voice/legacy/getweapon9 sounds/voice/legacy/va/demogetweapon9.ogg +voice/legacy/getweapon10 sounds/voice/legacy/va/demogetweapon10.ogg +voice/legacy/getweapon11 sounds/voice/legacy/va/demogetweapon11.ogg +voice/legacy/getweapon12 sounds/voice/legacy/va/demogetweapon12.ogg +voice/legacy/getweapon13 sounds/voice/legacy/va/demogetweapon13.ogg +voice/legacy/locked1 sounds/voice/legacy/va/demolocked1.ogg +voice/legacy/locked2 sounds/voice/legacy/va/demolocked2.ogg +voice/legacy/locked3 sounds/voice/legacy/va/demolocked3.ogg +voice/legacy/locked4 sounds/voice/legacy/va/demolocked4.ogg +voice/legacy/jammed1 sounds/voice/legacy/va/demojammed1.ogg +voice/legacy/jammed2 sounds/voice/legacy/va/demojammed2.ogg +voice/legacy/jammed3 sounds/voice/legacy/va/demojammed3.ogg +voice/legacy/jammed4 sounds/voice/legacy/va/demojammed4.ogg +voice/legacy/mapstart1 sounds/voice/legacy/va/demomapstart1.ogg +voice/legacy/mapstart2 sounds/voice/legacy/va/demomapstart2.ogg +voice/legacy/mapstart3 sounds/voice/legacy/va/demomapstart3.ogg +voice/legacy/mapstart4 sounds/voice/legacy/va/demomapstart4.ogg +voice/legacy/mapstart5 sounds/voice/legacy/va/demomapstart5.ogg +voice/legacy/mapstart6 sounds/voice/legacy/va/demomapstart6.ogg +voice/legacy/mapstart7 sounds/voice/legacy/va/demomapstart7.ogg +voice/legacy/mapstart8 sounds/voice/legacy/va/demomapstart8.ogg +voice/legacy/mapstart9 sounds/voice/legacy/va/demomapstart9.ogg +voice/legacy/mapstart10 sounds/voice/legacy/va/demomapstart10.ogg +voice/legacy/mapstart11 sounds/voice/legacy/va/demomapstart11.ogg +voice/legacy/mapstart12 sounds/voice/legacy/va/demomapstart12.ogg +voice/legacy/mapstart13 sounds/voice/legacy/va/demomapstart13.ogg +voice/legacy/mapstart14 sounds/voice/legacy/va/demomapstart14.ogg +voice/legacy/puzzfail1 sounds/voice/legacy/va/demopuzzfail1.ogg +voice/legacy/puzzfail2 sounds/voice/legacy/va/demopuzzfail2.ogg +voice/legacy/puzzfail3 sounds/voice/legacy/va/demopuzzfail3.ogg +voice/legacy/puzzfail4 sounds/voice/legacy/va/demopuzzfail4.ogg +voice/legacy/puzzfail5 sounds/voice/legacy/va/demopuzzfail5.ogg +voice/legacy/puzzfail6 sounds/voice/legacy/va/demopuzzfail6.ogg +voice/legacy/puzzsucc1 sounds/voice/legacy/va/demopuzzsucc1.ogg +voice/legacy/puzzsucc2 sounds/voice/legacy/va/demopuzzsucc2.ogg +voice/legacy/puzzsucc3 sounds/voice/legacy/va/demopuzzsucc3.ogg +voice/legacy/puzzsucc4 sounds/voice/legacy/va/demopuzzsucc4.ogg +voice/legacy/puzzsucc5 sounds/voice/legacy/va/demopuzzsucc5.ogg +voice/legacy/scorekill1 sounds/voice/legacy/va/demoscorekill1.ogg +voice/legacy/scorekill2 sounds/voice/legacy/va/demoscorekill2.ogg +voice/legacy/scorekill3 sounds/voice/legacy/va/demoscorekill3.ogg +voice/legacy/scorekill4 sounds/voice/legacy/va/demoscorekill4.ogg +voice/legacy/scorekill5 sounds/voice/legacy/va/demoscorekill5.ogg +voice/legacy/scorekill6 sounds/voice/legacy/va/demoscorekill6.ogg +voice/legacy/scorekill7 sounds/voice/legacy/va/demoscorekill7.ogg +voice/legacy/scorekill8 sounds/voice/legacy/va/demoscorekill8.ogg +voice/legacy/scorekill9 sounds/voice/legacy/va/demoscorekill9.ogg +voice/legacy/scorekill10 sounds/voice/legacy/va/demoscorekill10.ogg +voice/legacy/scorekill11 sounds/voice/legacy/va/demoscorekill11.ogg +voice/legacy/scorekill12 sounds/voice/legacy/va/demoscorekill12.ogg +voice/legacy/scorekill13 sounds/voice/legacy/va/demoscorekill13.ogg +voice/legacy/scorekill14 sounds/voice/legacy/va/demoscorekill14.ogg +voice/legacy/scorekill15 sounds/voice/legacy/va/demoscorekill15.ogg +voice/legacy/scorekill16 sounds/voice/legacy/va/demoscorekill16.ogg +voice/legacy/scorekill17 sounds/voice/legacy/va/demoscorekill17.ogg +voice/legacy/scorekill18 sounds/voice/legacy/va/demoscorekill18.ogg +voice/legacy/scorekill19 sounds/voice/legacy/va/demoscorekill19.ogg +voice/legacy/scorekill20 sounds/voice/legacy/va/demoscorekill20.ogg +voice/legacy/scorekill21 sounds/voice/legacy/va/demoscorekill21.ogg +voice/legacy/scorekill22 sounds/voice/legacy/va/demoscorekill22.ogg +voice/legacy/scorekill23 sounds/voice/legacy/va/demoscorekill23.ogg +voice/legacy/scorekill24 sounds/voice/legacy/va/demoscorekill24.ogg +voice/legacy/scorekill25 sounds/voice/legacy/va/demoscorekill25.ogg +voice/legacy/scorekill26 sounds/voice/legacy/va/demoscorekill26.ogg +voice/legacy/friendkill1 sounds/voice/legacy/va/demofriendkill1.ogg +voice/legacy/friendkill2 sounds/voice/legacy/va/demofriendkill2.ogg +voice/legacy/friendkill3 sounds/voice/legacy/va/demofriendkill3.ogg +voice/legacy/friendkill4 sounds/voice/legacy/va/demofriendkill4.ogg +voice/legacy/gethit1 sounds/voice/legacy/va/demogethit1.ogg +voice/legacy/gethit2 sounds/voice/legacy/va/demogethit2.ogg +voice/legacy/gethit3 sounds/voice/legacy/va/demogethit3.ogg +voice/legacy/gethit4 sounds/voice/legacy/va/demogethit4.ogg +voice/legacy/gethit5 sounds/voice/legacy/va/demogethit5.ogg +voice/legacy/gethit6 sounds/voice/legacy/va/demogethit6.ogg +voice/legacy/gethit7 sounds/voice/legacy/va/demogethit7.ogg +voice/legacy/gethit8 sounds/voice/legacy/va/demogethit8.ogg +voice/legacy/gethit9 sounds/voice/legacy/va/demogethit9.ogg +voice/legacy/gethit10 sounds/voice/legacy/va/demogethit10.ogg +voice/legacy/gethit11 sounds/voice/legacy/va/demogethit11.ogg +voice/legacy/gethit12 sounds/voice/legacy/va/demogethit12.ogg +voice/legacy/gethit13 sounds/voice/legacy/va/demogethit13.ogg +voice/legacy/gethit14 sounds/voice/legacy/va/demogethit14.ogg +voice/legacy/gethit15 sounds/voice/legacy/va/demogethit15.ogg +voice/legacy/gethit16 sounds/voice/legacy/va/demogethit16.ogg +voice/legacy/gethit17 sounds/voice/legacy/va/demogethit17.ogg +voice/legacy/gethit18 sounds/voice/legacy/va/demogethit18.ogg +voice/legacy/gethit19 sounds/voice/legacy/va/demogethit19.ogg +voice/legacy/friendhit1 sounds/voice/legacy/va/demofriendhit1.ogg +voice/legacy/friendhit2 sounds/voice/legacy/va/demofriendhit2.ogg +voice/legacy/friendhit3 sounds/voice/legacy/va/demofriendhit3.ogg +voice/legacy/friendhit4 sounds/voice/legacy/va/demofriendhit4.ogg +voice/legacy/friendhit5 sounds/voice/legacy/va/demofriendhit5.ogg +voice/legacy/friendhit6 sounds/voice/legacy/va/demofriendhit6.ogg +voice/legacy/friendhit7 sounds/voice/legacy/va/demofriendhit7.ogg +voice/legacy/greet1 sounds/voice/legacy/va/demogreet1.ogg +voice/legacy/greet2 sounds/voice/legacy/va/demogreet2.ogg +voice/legacy/greet3 sounds/voice/legacy/va/demogreet3.ogg +voice/legacy/greet4 sounds/voice/legacy/va/demogreet4.ogg +voice/legacy/greet5 sounds/voice/legacy/va/demogreet5.ogg +voice/legacy/greet6 sounds/voice/legacy/va/demogreet6.ogg +voice/legacy/greet7 sounds/voice/legacy/va/demogreet7.ogg +voice/legacy/hitfriend1 sounds/voice/legacy/va/demohitfriend1.ogg +voice/legacy/hitfriend2 sounds/voice/legacy/va/demohitfriend2.ogg +voice/legacy/hitfriend3 sounds/voice/legacy/va/demohitfriend3.ogg +voice/legacy/ragekit1 sounds/voice/legacy/va/demoragekit1.ogg +voice/legacy/ragekit2 sounds/voice/legacy/va/demoragekit2.ogg +voice/legacy/ragekit3 sounds/voice/legacy/va/demoragekit3.ogg +voice/legacy/ragekit4 sounds/voice/legacy/va/demoragekit4.ogg +voice/legacy/ragekit5 sounds/voice/legacy/va/demoragekit5.ogg +voice/legacy/ragekit6 sounds/voice/legacy/va/demoragekit6.ogg +voice/legacy/koraxgreet1 sounds/voice/legacy/va/demokoraxgreet1.ogg +voice/legacy/koraxgreet2 sounds/voice/legacy/va/demokoraxgreet2.ogg +voice/legacy/koraxgreet3 sounds/voice/legacy/va/demokoraxgreet3.ogg +voice/legacy/koraxgreet4 sounds/voice/legacy/va/demokoraxgreet4.ogg +voice/legacy/koraxgreet5 sounds/voice/legacy/va/demokoraxgreet5.ogg +voice/legacy/koraxgreet6 sounds/voice/legacy/va/demokoraxgreet6.ogg +voice/legacy/koraxgreet7 sounds/voice/legacy/va/demokoraxgreet7.ogg +voice/legacy/koraxgreet8 sounds/voice/legacy/va/demokoraxgreet8.ogg +voice/legacy/koraxgreet9 sounds/voice/legacy/va/demokoraxgreet9.ogg +voice/legacy/koraxgreet10 sounds/voice/legacy/va/demokoraxgreet10.ogg +voice/legacy/koraxgreet11 sounds/voice/legacy/va/demokoraxgreet11.ogg +voice/legacy/koraxgreet12 sounds/voice/legacy/va/demokoraxgreet12.ogg +voice/legacy/koraxgreet13 sounds/voice/legacy/va/demokoraxgreet13.ogg +voice/legacy/koraxblood1 sounds/voice/legacy/va/demokoraxblood1.ogg +voice/legacy/koraxblood2 sounds/voice/legacy/va/demokoraxblood2.ogg +voice/legacy/koraxblood3 sounds/voice/legacy/va/demokoraxblood3.ogg +voice/legacy/koraxblood4 sounds/voice/legacy/va/demokoraxblood4.ogg +voice/legacy/koraxblood5 sounds/voice/legacy/va/demokoraxblood5.ogg +voice/legacy/koraxblood6 sounds/voice/legacy/va/demokoraxblood6.ogg +voice/legacy/koraxblood7 sounds/voice/legacy/va/demokoraxblood7.ogg +voice/legacy/koraxblood8 sounds/voice/legacy/va/demokoraxblood8.ogg +voice/legacy/koraxblood9 sounds/voice/legacy/va/demokoraxblood9.ogg +voice/legacy/koraxblood10 sounds/voice/legacy/va/demokoraxblood10.ogg +voice/legacy/koraxblood11 sounds/voice/legacy/va/demokoraxblood11.ogg +voice/legacy/koraxblood12 sounds/voice/legacy/va/demokoraxblood12.ogg +voice/legacy/koraxblood13 sounds/voice/legacy/va/demokoraxblood13.ogg +voice/legacy/koraxgame1 sounds/voice/legacy/va/demokoraxgame1.ogg +voice/legacy/koraxgame2 sounds/voice/legacy/va/demokoraxgame2.ogg +voice/legacy/koraxgame3 sounds/voice/legacy/va/demokoraxgame3.ogg +voice/legacy/koraxgame4 sounds/voice/legacy/va/demokoraxgame4.ogg +voice/legacy/koraxgame5 sounds/voice/legacy/va/demokoraxgame5.ogg +voice/legacy/koraxgame6 sounds/voice/legacy/va/demokoraxgame6.ogg +voice/legacy/koraxgame7 sounds/voice/legacy/va/demokoraxgame7.ogg +voice/legacy/koraxgame8 sounds/voice/legacy/va/demokoraxgame8.ogg +voice/legacy/koraxgame9 sounds/voice/legacy/va/demokoraxgame9.ogg +voice/legacy/koraxgame10 sounds/voice/legacy/va/demokoraxgame10.ogg +voice/legacy/koraxgame11 sounds/voice/legacy/va/demokoraxgame11.ogg +voice/legacy/koraxgame12 sounds/voice/legacy/va/demokoraxgame12.ogg +voice/legacy/koraxgame13 sounds/voice/legacy/va/demokoraxgame13.ogg +voice/legacy/koraxgame14 sounds/voice/legacy/va/demokoraxgame14.ogg +voice/legacy/koraxworship1 sounds/voice/legacy/va/demokoraxworship1.ogg +voice/legacy/koraxworship2 sounds/voice/legacy/va/demokoraxworship2.ogg +voice/legacy/koraxworship3 sounds/voice/legacy/va/demokoraxworship3.ogg +voice/legacy/koraxworship4 sounds/voice/legacy/va/demokoraxworship4.ogg +voice/legacy/koraxworship5 sounds/voice/legacy/va/demokoraxworship5.ogg +voice/legacy/koraxworship6 sounds/voice/legacy/va/demokoraxworship6.ogg +voice/legacy/koraxworship7 sounds/voice/legacy/va/demokoraxworship7.ogg +voice/legacy/koraxworship8 sounds/voice/legacy/va/demokoraxworship8.ogg +voice/legacy/koraxworship9 sounds/voice/legacy/va/demokoraxworship9.ogg +voice/legacy/koraxworship10 sounds/voice/legacy/va/demokoraxworship10.ogg +voice/legacy/koraxworship11 sounds/voice/legacy/va/demokoraxworship11.ogg +voice/legacy/koraxmasters1 sounds/voice/legacy/va/demokoraxmasters1.ogg +voice/legacy/koraxmasters2 sounds/voice/legacy/va/demokoraxmasters2.ogg +voice/legacy/koraxmasters3 sounds/voice/legacy/va/demokoraxmasters3.ogg +voice/legacy/koraxmasters4 sounds/voice/legacy/va/demokoraxmasters4.ogg +voice/legacy/koraxmasters5 sounds/voice/legacy/va/demokoraxmasters5.ogg +voice/legacy/koraxmasters6 sounds/voice/legacy/va/demokoraxmasters6.ogg +voice/legacy/koraxmasters7 sounds/voice/legacy/va/demokoraxmasters7.ogg +voice/legacy/koraxmasters8 sounds/voice/legacy/va/demokoraxmasters8.ogg +voice/legacy/koraxmasters9 sounds/voice/legacy/va/demokoraxmasters9.ogg demolitionist/walk1 sounds/demolitionist/demowalk1.ogg demolitionist/walk2 sounds/demolitionist/demowalk2.ogg @@ -448,10 +805,14 @@ $playersound demolitionist neutral *gasp DSEMPTY $playersound demolitionist neutral *taunt DSEMPTY $playersound demolitionist neutral *evillaugh DSEMPTY +voodoodoll/hit sounds/general/BodyHit.ogg +voodoodoll/fall sounds/general/BodyThud.ogg + deepimpact/fire sounds/deepimpact/impfire.ogg deepimpact/charge sounds/deepimpact/impaltcharge.ogg deepimpact/altfire sounds/deepimpact/impaltfire.ogg deepimpact/dryfire sounds/deepimpact/impdryfire.ogg +deepimpact/dryaltfire sounds/deepimpact/impdryaltfire.ogg deepimpact/select sounds/deepimpact/impsel.ogg deepimpact/checkout sounds/deepimpact/impidle.ogg deepimpact/deselect sounds/deepimpact/impdown.ogg diff --git a/sounds/OUCHEX1.ogg b/sounds/OUCHEX1.ogg new file mode 100644 index 000000000..240df30d5 Binary files /dev/null and b/sounds/OUCHEX1.ogg differ diff --git a/sounds/OUCHEX2.ogg b/sounds/OUCHEX2.ogg new file mode 100644 index 000000000..db8aaaf05 Binary files /dev/null and b/sounds/OUCHEX2.ogg differ diff --git a/sounds/OUCHEX3.ogg b/sounds/OUCHEX3.ogg new file mode 100644 index 000000000..8013036c3 Binary files /dev/null and b/sounds/OUCHEX3.ogg differ diff --git a/sounds/OUCHEX4.ogg b/sounds/OUCHEX4.ogg new file mode 100644 index 000000000..122a1ed40 Binary files /dev/null and b/sounds/OUCHEX4.ogg differ diff --git a/sounds/TitleThump.ogg b/sounds/TitleThump.ogg new file mode 100644 index 000000000..b722111a0 Binary files /dev/null and b/sounds/TitleThump.ogg differ diff --git a/sounds/deepimpact/impdryaltfire.ogg b/sounds/deepimpact/impdryaltfire.ogg new file mode 100644 index 000000000..cd6475366 Binary files /dev/null and b/sounds/deepimpact/impdryaltfire.ogg differ diff --git a/sounds/general/BodyHit.ogg b/sounds/general/BodyHit.ogg new file mode 100644 index 000000000..b7b559ce7 Binary files /dev/null and b/sounds/general/BodyHit.ogg differ diff --git a/sounds/general/BodyThud.ogg b/sounds/general/BodyThud.ogg new file mode 100644 index 000000000..75fee6d7a Binary files /dev/null and b/sounds/general/BodyThud.ogg differ diff --git a/sounds/voice/default/demogiggle1.ogg b/sounds/voice/default/demogiggle1.ogg deleted file mode 100644 index dc18fc329..000000000 Binary files a/sounds/voice/default/demogiggle1.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle10.ogg b/sounds/voice/default/demogiggle10.ogg deleted file mode 100644 index d6560c4f5..000000000 Binary files a/sounds/voice/default/demogiggle10.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle11.ogg b/sounds/voice/default/demogiggle11.ogg deleted file mode 100644 index 0e4666732..000000000 Binary files a/sounds/voice/default/demogiggle11.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle12.ogg b/sounds/voice/default/demogiggle12.ogg deleted file mode 100644 index b09fdc526..000000000 Binary files a/sounds/voice/default/demogiggle12.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle13.ogg b/sounds/voice/default/demogiggle13.ogg deleted file mode 100644 index 96762fa10..000000000 Binary files a/sounds/voice/default/demogiggle13.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle14.ogg b/sounds/voice/default/demogiggle14.ogg deleted file mode 100644 index 4460f0136..000000000 Binary files a/sounds/voice/default/demogiggle14.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle15.ogg b/sounds/voice/default/demogiggle15.ogg deleted file mode 100644 index 38f2e7174..000000000 Binary files a/sounds/voice/default/demogiggle15.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle16.ogg b/sounds/voice/default/demogiggle16.ogg deleted file mode 100644 index 511862fd9..000000000 Binary files a/sounds/voice/default/demogiggle16.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle17.ogg b/sounds/voice/default/demogiggle17.ogg deleted file mode 100644 index ff15f1ad6..000000000 Binary files a/sounds/voice/default/demogiggle17.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle18.ogg b/sounds/voice/default/demogiggle18.ogg deleted file mode 100644 index 4b06f1ade..000000000 Binary files a/sounds/voice/default/demogiggle18.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle19.ogg b/sounds/voice/default/demogiggle19.ogg deleted file mode 100644 index fb8185b72..000000000 Binary files a/sounds/voice/default/demogiggle19.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle2.ogg b/sounds/voice/default/demogiggle2.ogg deleted file mode 100644 index 0ae0b4d9e..000000000 Binary files a/sounds/voice/default/demogiggle2.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle3.ogg b/sounds/voice/default/demogiggle3.ogg deleted file mode 100644 index a756f85e2..000000000 Binary files a/sounds/voice/default/demogiggle3.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle4.ogg b/sounds/voice/default/demogiggle4.ogg deleted file mode 100644 index b0e89985d..000000000 Binary files a/sounds/voice/default/demogiggle4.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle5.ogg b/sounds/voice/default/demogiggle5.ogg deleted file mode 100644 index b8c8b55b5..000000000 Binary files a/sounds/voice/default/demogiggle5.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle6.ogg b/sounds/voice/default/demogiggle6.ogg deleted file mode 100644 index 1c0e45454..000000000 Binary files a/sounds/voice/default/demogiggle6.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle7.ogg b/sounds/voice/default/demogiggle7.ogg deleted file mode 100644 index 02dccb542..000000000 Binary files a/sounds/voice/default/demogiggle7.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle8.ogg b/sounds/voice/default/demogiggle8.ogg deleted file mode 100644 index d01a5e04b..000000000 Binary files a/sounds/voice/default/demogiggle8.ogg and /dev/null differ diff --git a/sounds/voice/default/demogiggle9.ogg b/sounds/voice/default/demogiggle9.ogg deleted file mode 100644 index 0e2f5236d..000000000 Binary files a/sounds/voice/default/demogiggle9.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug1.ogg b/sounds/voice/default/demohug1.ogg deleted file mode 100644 index f1b467dc0..000000000 Binary files a/sounds/voice/default/demohug1.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug2.ogg b/sounds/voice/default/demohug2.ogg deleted file mode 100644 index 72885652b..000000000 Binary files a/sounds/voice/default/demohug2.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug3.ogg b/sounds/voice/default/demohug3.ogg deleted file mode 100644 index b9e445733..000000000 Binary files a/sounds/voice/default/demohug3.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug4.ogg b/sounds/voice/default/demohug4.ogg deleted file mode 100644 index 229bd65fe..000000000 Binary files a/sounds/voice/default/demohug4.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug5.ogg b/sounds/voice/default/demohug5.ogg deleted file mode 100644 index b5e991bb1..000000000 Binary files a/sounds/voice/default/demohug5.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug6.ogg b/sounds/voice/default/demohug6.ogg deleted file mode 100644 index 4b76b4868..000000000 Binary files a/sounds/voice/default/demohug6.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug7.ogg b/sounds/voice/default/demohug7.ogg deleted file mode 100644 index a65460b1b..000000000 Binary files a/sounds/voice/default/demohug7.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug8.ogg b/sounds/voice/default/demohug8.ogg deleted file mode 100644 index 7dd7abc3d..000000000 Binary files a/sounds/voice/default/demohug8.ogg and /dev/null differ diff --git a/sounds/voice/default/demohug9.ogg b/sounds/voice/default/demohug9.ogg deleted file mode 100644 index bc4ff4b8e..000000000 Binary files a/sounds/voice/default/demohug9.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demoakariget.ogg b/sounds/voice/default/va/demoakariget.ogg new file mode 100644 index 000000000..5fa4daec0 Binary files /dev/null and b/sounds/voice/default/va/demoakariget.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus1.ogg b/sounds/voice/default/va/demoarchangelus1.ogg new file mode 100644 index 000000000..bc6f86c1f Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus1.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus2.ogg b/sounds/voice/default/va/demoarchangelus2.ogg new file mode 100644 index 000000000..bc8b2dcef Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus2.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus3.ogg b/sounds/voice/default/va/demoarchangelus3.ogg new file mode 100644 index 000000000..3a3fb8592 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus3.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus4.ogg b/sounds/voice/default/va/demoarchangelus4.ogg new file mode 100644 index 000000000..0376b1870 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus4.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus5.ogg b/sounds/voice/default/va/demoarchangelus5.ogg new file mode 100644 index 000000000..935ca4c81 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus5.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus6.ogg b/sounds/voice/default/va/demoarchangelus6.ogg new file mode 100644 index 000000000..dd1466251 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus6.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus7.ogg b/sounds/voice/default/va/demoarchangelus7.ogg new file mode 100644 index 000000000..6a4c41283 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus7.ogg differ diff --git a/sounds/voice/default/va/demoarchangelus8.ogg b/sounds/voice/default/va/demoarchangelus8.ogg new file mode 100644 index 000000000..7c1f7b468 Binary files /dev/null and b/sounds/voice/default/va/demoarchangelus8.ogg differ diff --git a/sounds/voice/default/va/demobreadget.ogg b/sounds/voice/default/va/demobreadget.ogg new file mode 100644 index 000000000..77615a7f6 Binary files /dev/null and b/sounds/voice/default/va/demobreadget.ogg differ diff --git a/sounds/voice/default/va/demobuttonpush1.ogg b/sounds/voice/default/va/demobuttonpush1.ogg new file mode 100644 index 000000000..fa5db7c8c Binary files /dev/null and b/sounds/voice/default/va/demobuttonpush1.ogg differ diff --git a/sounds/voice/default/va/demobuttonpush2.ogg b/sounds/voice/default/va/demobuttonpush2.ogg new file mode 100644 index 000000000..73609e199 Binary files /dev/null and b/sounds/voice/default/va/demobuttonpush2.ogg differ diff --git a/sounds/voice/default/va/demobuttonpush3.ogg b/sounds/voice/default/va/demobuttonpush3.ogg new file mode 100644 index 000000000..fa218b2a7 Binary files /dev/null and b/sounds/voice/default/va/demobuttonpush3.ogg differ diff --git a/sounds/voice/default/va/democubeget.ogg b/sounds/voice/default/va/democubeget.ogg new file mode 100644 index 000000000..2cfc67f17 Binary files /dev/null and b/sounds/voice/default/va/democubeget.ogg differ diff --git a/sounds/voice/default/va/demodemoget.ogg b/sounds/voice/default/va/demodemoget.ogg new file mode 100644 index 000000000..6c1c7614a Binary files /dev/null and b/sounds/voice/default/va/demodemoget.ogg differ diff --git a/sounds/voice/default/va/demodsparila1.ogg b/sounds/voice/default/va/demodsparila1.ogg new file mode 100644 index 000000000..409ff571c Binary files /dev/null and b/sounds/voice/default/va/demodsparila1.ogg differ diff --git a/sounds/voice/default/va/demodsparila2.ogg b/sounds/voice/default/va/demodsparila2.ogg new file mode 100644 index 000000000..bf412ca8f Binary files /dev/null and b/sounds/voice/default/va/demodsparila2.ogg differ diff --git a/sounds/voice/default/va/demodsparila3.ogg b/sounds/voice/default/va/demodsparila3.ogg new file mode 100644 index 000000000..3d717404a Binary files /dev/null and b/sounds/voice/default/va/demodsparila3.ogg differ diff --git a/sounds/voice/default/va/demodsparilb1.ogg b/sounds/voice/default/va/demodsparilb1.ogg new file mode 100644 index 000000000..7869b0539 Binary files /dev/null and b/sounds/voice/default/va/demodsparilb1.ogg differ diff --git a/sounds/voice/default/va/demodsparilb2.ogg b/sounds/voice/default/va/demodsparilb2.ogg new file mode 100644 index 000000000..b4a7f6f7b Binary files /dev/null and b/sounds/voice/default/va/demodsparilb2.ogg differ diff --git a/sounds/voice/default/va/demodsparilb3.ogg b/sounds/voice/default/va/demodsparilb3.ogg new file mode 100644 index 000000000..379d3024a Binary files /dev/null and b/sounds/voice/default/va/demodsparilb3.ogg differ diff --git a/sounds/voice/default/va/demofalling.ogg b/sounds/voice/default/va/demofalling.ogg new file mode 100644 index 000000000..3c93ff343 Binary files /dev/null and b/sounds/voice/default/va/demofalling.ogg differ diff --git a/sounds/voice/default/va/demofightstart1.ogg b/sounds/voice/default/va/demofightstart1.ogg new file mode 100644 index 000000000..f3443f74b Binary files /dev/null and b/sounds/voice/default/va/demofightstart1.ogg differ diff --git a/sounds/voice/default/va/demofightstart10.ogg b/sounds/voice/default/va/demofightstart10.ogg new file mode 100644 index 000000000..2f16727b1 Binary files /dev/null and b/sounds/voice/default/va/demofightstart10.ogg differ diff --git a/sounds/voice/default/va/demofightstart11.ogg b/sounds/voice/default/va/demofightstart11.ogg new file mode 100644 index 000000000..b6d486bba Binary files /dev/null and b/sounds/voice/default/va/demofightstart11.ogg differ diff --git a/sounds/voice/default/va/demofightstart12.ogg b/sounds/voice/default/va/demofightstart12.ogg new file mode 100644 index 000000000..905855111 Binary files /dev/null and b/sounds/voice/default/va/demofightstart12.ogg differ diff --git a/sounds/voice/default/va/demofightstart13.ogg b/sounds/voice/default/va/demofightstart13.ogg new file mode 100644 index 000000000..83f492860 Binary files /dev/null and b/sounds/voice/default/va/demofightstart13.ogg differ diff --git a/sounds/voice/default/va/demofightstart14.ogg b/sounds/voice/default/va/demofightstart14.ogg new file mode 100644 index 000000000..7166d242d Binary files /dev/null and b/sounds/voice/default/va/demofightstart14.ogg differ diff --git a/sounds/voice/default/va/demofightstart15.ogg b/sounds/voice/default/va/demofightstart15.ogg new file mode 100644 index 000000000..3552d5fa7 Binary files /dev/null and b/sounds/voice/default/va/demofightstart15.ogg differ diff --git a/sounds/voice/default/va/demofightstart16.ogg b/sounds/voice/default/va/demofightstart16.ogg new file mode 100644 index 000000000..ce37f609c Binary files /dev/null and b/sounds/voice/default/va/demofightstart16.ogg differ diff --git a/sounds/voice/default/va/demofightstart17.ogg b/sounds/voice/default/va/demofightstart17.ogg new file mode 100644 index 000000000..578d2ba78 Binary files /dev/null and b/sounds/voice/default/va/demofightstart17.ogg differ diff --git a/sounds/voice/default/va/demofightstart18.ogg b/sounds/voice/default/va/demofightstart18.ogg new file mode 100644 index 000000000..a6455fa91 Binary files /dev/null and b/sounds/voice/default/va/demofightstart18.ogg differ diff --git a/sounds/voice/default/va/demofightstart19.ogg b/sounds/voice/default/va/demofightstart19.ogg new file mode 100644 index 000000000..5f6968799 Binary files /dev/null and b/sounds/voice/default/va/demofightstart19.ogg differ diff --git a/sounds/voice/default/va/demofightstart2.ogg b/sounds/voice/default/va/demofightstart2.ogg new file mode 100644 index 000000000..2816b279b Binary files /dev/null and b/sounds/voice/default/va/demofightstart2.ogg differ diff --git a/sounds/voice/default/va/demofightstart20.ogg b/sounds/voice/default/va/demofightstart20.ogg new file mode 100644 index 000000000..6deac22d8 Binary files /dev/null and b/sounds/voice/default/va/demofightstart20.ogg differ diff --git a/sounds/voice/default/va/demofightstart21.ogg b/sounds/voice/default/va/demofightstart21.ogg new file mode 100644 index 000000000..1db45265e Binary files /dev/null and b/sounds/voice/default/va/demofightstart21.ogg differ diff --git a/sounds/voice/default/va/demofightstart3.ogg b/sounds/voice/default/va/demofightstart3.ogg new file mode 100644 index 000000000..fab53cbf7 Binary files /dev/null and b/sounds/voice/default/va/demofightstart3.ogg differ diff --git a/sounds/voice/default/va/demofightstart4.ogg b/sounds/voice/default/va/demofightstart4.ogg new file mode 100644 index 000000000..0b6c85214 Binary files /dev/null and b/sounds/voice/default/va/demofightstart4.ogg differ diff --git a/sounds/voice/default/va/demofightstart5.ogg b/sounds/voice/default/va/demofightstart5.ogg new file mode 100644 index 000000000..52f820aab Binary files /dev/null and b/sounds/voice/default/va/demofightstart5.ogg differ diff --git a/sounds/voice/default/va/demofightstart6.ogg b/sounds/voice/default/va/demofightstart6.ogg new file mode 100644 index 000000000..2e6411e4d Binary files /dev/null and b/sounds/voice/default/va/demofightstart6.ogg differ diff --git a/sounds/voice/default/va/demofightstart7.ogg b/sounds/voice/default/va/demofightstart7.ogg new file mode 100644 index 000000000..8c4d3367b Binary files /dev/null and b/sounds/voice/default/va/demofightstart7.ogg differ diff --git a/sounds/voice/default/va/demofightstart8.ogg b/sounds/voice/default/va/demofightstart8.ogg new file mode 100644 index 000000000..067b6f75e Binary files /dev/null and b/sounds/voice/default/va/demofightstart8.ogg differ diff --git a/sounds/voice/default/va/demofightstart9.ogg b/sounds/voice/default/va/demofightstart9.ogg new file mode 100644 index 000000000..67b6ac654 Binary files /dev/null and b/sounds/voice/default/va/demofightstart9.ogg differ diff --git a/sounds/voice/default/va/demofindsecret1.ogg b/sounds/voice/default/va/demofindsecret1.ogg new file mode 100644 index 000000000..7ed06cedc Binary files /dev/null and b/sounds/voice/default/va/demofindsecret1.ogg differ diff --git a/sounds/voice/default/va/demofindsecret10.ogg b/sounds/voice/default/va/demofindsecret10.ogg new file mode 100644 index 000000000..500fef747 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret10.ogg differ diff --git a/sounds/voice/default/va/demofindsecret11.ogg b/sounds/voice/default/va/demofindsecret11.ogg new file mode 100644 index 000000000..92c661967 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret11.ogg differ diff --git a/sounds/voice/default/va/demofindsecret12.ogg b/sounds/voice/default/va/demofindsecret12.ogg new file mode 100644 index 000000000..e24b735c5 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret12.ogg differ diff --git a/sounds/voice/default/va/demofindsecret13.ogg b/sounds/voice/default/va/demofindsecret13.ogg new file mode 100644 index 000000000..f5ddb4205 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret13.ogg differ diff --git a/sounds/voice/default/va/demofindsecret2.ogg b/sounds/voice/default/va/demofindsecret2.ogg new file mode 100644 index 000000000..aa94e0968 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret2.ogg differ diff --git a/sounds/voice/default/va/demofindsecret3.ogg b/sounds/voice/default/va/demofindsecret3.ogg new file mode 100644 index 000000000..85127307e Binary files /dev/null and b/sounds/voice/default/va/demofindsecret3.ogg differ diff --git a/sounds/voice/default/va/demofindsecret4.ogg b/sounds/voice/default/va/demofindsecret4.ogg new file mode 100644 index 000000000..4eeb11709 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret4.ogg differ diff --git a/sounds/voice/default/va/demofindsecret5.ogg b/sounds/voice/default/va/demofindsecret5.ogg new file mode 100644 index 000000000..fd6e18131 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret5.ogg differ diff --git a/sounds/voice/default/va/demofindsecret6.ogg b/sounds/voice/default/va/demofindsecret6.ogg new file mode 100644 index 000000000..137cd4505 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret6.ogg differ diff --git a/sounds/voice/default/va/demofindsecret7.ogg b/sounds/voice/default/va/demofindsecret7.ogg new file mode 100644 index 000000000..fe4905141 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret7.ogg differ diff --git a/sounds/voice/default/va/demofindsecret8.ogg b/sounds/voice/default/va/demofindsecret8.ogg new file mode 100644 index 000000000..03449cff3 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret8.ogg differ diff --git a/sounds/voice/default/va/demofindsecret9.ogg b/sounds/voice/default/va/demofindsecret9.ogg new file mode 100644 index 000000000..7ef0ccdc7 Binary files /dev/null and b/sounds/voice/default/va/demofindsecret9.ogg differ diff --git a/sounds/voice/default/va/demofriendhit1.ogg b/sounds/voice/default/va/demofriendhit1.ogg new file mode 100644 index 000000000..24716f182 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit1.ogg differ diff --git a/sounds/voice/default/va/demofriendhit2.ogg b/sounds/voice/default/va/demofriendhit2.ogg new file mode 100644 index 000000000..2c744a896 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit2.ogg differ diff --git a/sounds/voice/default/va/demofriendhit3.ogg b/sounds/voice/default/va/demofriendhit3.ogg new file mode 100644 index 000000000..f0081e5c2 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit3.ogg differ diff --git a/sounds/voice/default/va/demofriendhit4.ogg b/sounds/voice/default/va/demofriendhit4.ogg new file mode 100644 index 000000000..c211138c0 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit4.ogg differ diff --git a/sounds/voice/default/va/demofriendhit5.ogg b/sounds/voice/default/va/demofriendhit5.ogg new file mode 100644 index 000000000..8cc6eb690 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit5.ogg differ diff --git a/sounds/voice/default/va/demofriendhit6.ogg b/sounds/voice/default/va/demofriendhit6.ogg new file mode 100644 index 000000000..724b01ccf Binary files /dev/null and b/sounds/voice/default/va/demofriendhit6.ogg differ diff --git a/sounds/voice/default/va/demofriendhit7.ogg b/sounds/voice/default/va/demofriendhit7.ogg new file mode 100644 index 000000000..d4c5b5c05 Binary files /dev/null and b/sounds/voice/default/va/demofriendhit7.ogg differ diff --git a/sounds/voice/default/va/demofriendkill1.ogg b/sounds/voice/default/va/demofriendkill1.ogg new file mode 100644 index 000000000..58fe6111b Binary files /dev/null and b/sounds/voice/default/va/demofriendkill1.ogg differ diff --git a/sounds/voice/default/va/demofriendkill2.ogg b/sounds/voice/default/va/demofriendkill2.ogg new file mode 100644 index 000000000..0fbdd3e1f Binary files /dev/null and b/sounds/voice/default/va/demofriendkill2.ogg differ diff --git a/sounds/voice/default/va/demofriendkill3.ogg b/sounds/voice/default/va/demofriendkill3.ogg new file mode 100644 index 000000000..5f6497e54 Binary files /dev/null and b/sounds/voice/default/va/demofriendkill3.ogg differ diff --git a/sounds/voice/default/va/demofriendkill4.ogg b/sounds/voice/default/va/demofriendkill4.ogg new file mode 100644 index 000000000..e6d302445 Binary files /dev/null and b/sounds/voice/default/va/demofriendkill4.ogg differ diff --git a/sounds/voice/default/va/demofrispyget.ogg b/sounds/voice/default/va/demofrispyget.ogg new file mode 100644 index 000000000..a344d808d Binary files /dev/null and b/sounds/voice/default/va/demofrispyget.ogg differ diff --git a/sounds/voice/default/va/demogetcandygun.ogg b/sounds/voice/default/va/demogetcandygun.ogg new file mode 100644 index 000000000..489eca047 Binary files /dev/null and b/sounds/voice/default/va/demogetcandygun.ogg differ diff --git a/sounds/voice/default/va/demogetdeepimpact.ogg b/sounds/voice/default/va/demogetdeepimpact.ogg new file mode 100644 index 000000000..64db45676 Binary files /dev/null and b/sounds/voice/default/va/demogetdeepimpact.ogg differ diff --git a/sounds/voice/default/va/demogeteviscerator.ogg b/sounds/voice/default/va/demogeteviscerator.ogg new file mode 100644 index 000000000..5fc4e76fb Binary files /dev/null and b/sounds/voice/default/va/demogeteviscerator.ogg differ diff --git a/sounds/voice/default/va/demogetexplodiumgun1.ogg b/sounds/voice/default/va/demogetexplodiumgun1.ogg new file mode 100644 index 000000000..9cd5afb2a Binary files /dev/null and b/sounds/voice/default/va/demogetexplodiumgun1.ogg differ diff --git a/sounds/voice/default/va/demogetexplodiumgun2.ogg b/sounds/voice/default/va/demogetexplodiumgun2.ogg new file mode 100644 index 000000000..52d61ee46 Binary files /dev/null and b/sounds/voice/default/va/demogetexplodiumgun2.ogg differ diff --git a/sounds/voice/default/va/demogetheavymahsheengun.ogg b/sounds/voice/default/va/demogetheavymahsheengun.ogg new file mode 100644 index 000000000..14aa34d0a Binary files /dev/null and b/sounds/voice/default/va/demogetheavymahsheengun.ogg differ diff --git a/sounds/voice/default/va/demogethellblazer.ogg b/sounds/voice/default/va/demogethellblazer.ogg new file mode 100644 index 000000000..0a991fe80 Binary files /dev/null and b/sounds/voice/default/va/demogethellblazer.ogg differ diff --git a/sounds/voice/default/va/demogethit1.ogg b/sounds/voice/default/va/demogethit1.ogg new file mode 100644 index 000000000..f4199563e Binary files /dev/null and b/sounds/voice/default/va/demogethit1.ogg differ diff --git a/sounds/voice/default/va/demogethit10.ogg b/sounds/voice/default/va/demogethit10.ogg new file mode 100644 index 000000000..0ed07a01b Binary files /dev/null and b/sounds/voice/default/va/demogethit10.ogg differ diff --git a/sounds/voice/default/va/demogethit11.ogg b/sounds/voice/default/va/demogethit11.ogg new file mode 100644 index 000000000..8dcbe1323 Binary files /dev/null and b/sounds/voice/default/va/demogethit11.ogg differ diff --git a/sounds/voice/default/va/demogethit12.ogg b/sounds/voice/default/va/demogethit12.ogg new file mode 100644 index 000000000..b242a002e Binary files /dev/null and b/sounds/voice/default/va/demogethit12.ogg differ diff --git a/sounds/voice/default/va/demogethit13.ogg b/sounds/voice/default/va/demogethit13.ogg new file mode 100644 index 000000000..37047e6ca Binary files /dev/null and b/sounds/voice/default/va/demogethit13.ogg differ diff --git a/sounds/voice/default/va/demogethit14.ogg b/sounds/voice/default/va/demogethit14.ogg new file mode 100644 index 000000000..fca4219e1 Binary files /dev/null and b/sounds/voice/default/va/demogethit14.ogg differ diff --git a/sounds/voice/default/va/demogethit15.ogg b/sounds/voice/default/va/demogethit15.ogg new file mode 100644 index 000000000..6c6e7abde Binary files /dev/null and b/sounds/voice/default/va/demogethit15.ogg differ diff --git a/sounds/voice/default/va/demogethit16.ogg b/sounds/voice/default/va/demogethit16.ogg new file mode 100644 index 000000000..baacb51aa Binary files /dev/null and b/sounds/voice/default/va/demogethit16.ogg differ diff --git a/sounds/voice/default/va/demogethit17.ogg b/sounds/voice/default/va/demogethit17.ogg new file mode 100644 index 000000000..2abb2175b Binary files /dev/null and b/sounds/voice/default/va/demogethit17.ogg differ diff --git a/sounds/voice/default/va/demogethit18.ogg b/sounds/voice/default/va/demogethit18.ogg new file mode 100644 index 000000000..eaee2630c Binary files /dev/null and b/sounds/voice/default/va/demogethit18.ogg differ diff --git a/sounds/voice/default/va/demogethit19.ogg b/sounds/voice/default/va/demogethit19.ogg new file mode 100644 index 000000000..88c668f3e Binary files /dev/null and b/sounds/voice/default/va/demogethit19.ogg differ diff --git a/sounds/voice/default/va/demogethit2.ogg b/sounds/voice/default/va/demogethit2.ogg new file mode 100644 index 000000000..17b0f9968 Binary files /dev/null and b/sounds/voice/default/va/demogethit2.ogg differ diff --git a/sounds/voice/default/va/demogethit3.ogg b/sounds/voice/default/va/demogethit3.ogg new file mode 100644 index 000000000..c868a7dd8 Binary files /dev/null and b/sounds/voice/default/va/demogethit3.ogg differ diff --git a/sounds/voice/default/va/demogethit4.ogg b/sounds/voice/default/va/demogethit4.ogg new file mode 100644 index 000000000..b7f9a5165 Binary files /dev/null and b/sounds/voice/default/va/demogethit4.ogg differ diff --git a/sounds/voice/default/va/demogethit5.ogg b/sounds/voice/default/va/demogethit5.ogg new file mode 100644 index 000000000..81ae5b76c Binary files /dev/null and b/sounds/voice/default/va/demogethit5.ogg differ diff --git a/sounds/voice/default/va/demogethit6.ogg b/sounds/voice/default/va/demogethit6.ogg new file mode 100644 index 000000000..a87cd0617 Binary files /dev/null and b/sounds/voice/default/va/demogethit6.ogg differ diff --git a/sounds/voice/default/va/demogethit7.ogg b/sounds/voice/default/va/demogethit7.ogg new file mode 100644 index 000000000..85c771f49 Binary files /dev/null and b/sounds/voice/default/va/demogethit7.ogg differ diff --git a/sounds/voice/default/va/demogethit8.ogg b/sounds/voice/default/va/demogethit8.ogg new file mode 100644 index 000000000..4d493a3e0 Binary files /dev/null and b/sounds/voice/default/va/demogethit8.ogg differ diff --git a/sounds/voice/default/va/demogethit9.ogg b/sounds/voice/default/va/demogethit9.ogg new file mode 100644 index 000000000..e589a761a Binary files /dev/null and b/sounds/voice/default/va/demogethit9.ogg differ diff --git a/sounds/voice/default/va/demogetitamexhammer.ogg b/sounds/voice/default/va/demogetitamexhammer.ogg new file mode 100644 index 000000000..e8b1badb4 Binary files /dev/null and b/sounds/voice/default/va/demogetitamexhammer.ogg differ diff --git a/sounds/voice/default/va/demogetmortalrifle.ogg b/sounds/voice/default/va/demogetmortalrifle.ogg new file mode 100644 index 000000000..8c268dcbb Binary files /dev/null and b/sounds/voice/default/va/demogetmortalrifle.ogg differ diff --git a/sounds/voice/default/va/demogetnewsparkster.ogg b/sounds/voice/default/va/demogetnewsparkster.ogg new file mode 100644 index 000000000..540e118e0 Binary files /dev/null and b/sounds/voice/default/va/demogetnewsparkster.ogg differ diff --git a/sounds/voice/default/va/demogetplasmablast1.ogg b/sounds/voice/default/va/demogetplasmablast1.ogg new file mode 100644 index 000000000..aacfa70b4 Binary files /dev/null and b/sounds/voice/default/va/demogetplasmablast1.ogg differ diff --git a/sounds/voice/default/va/demogetplasmablast2.ogg b/sounds/voice/default/va/demogetplasmablast2.ogg new file mode 100644 index 000000000..98ce4f761 Binary files /dev/null and b/sounds/voice/default/va/demogetplasmablast2.ogg differ diff --git a/sounds/voice/default/va/demogetpuntzerbeta.ogg b/sounds/voice/default/va/demogetpuntzerbeta.ogg new file mode 100644 index 000000000..454816b9e Binary files /dev/null and b/sounds/voice/default/va/demogetpuntzerbeta.ogg differ diff --git a/sounds/voice/default/va/demogetpuntzergamma.ogg b/sounds/voice/default/va/demogetpuntzergamma.ogg new file mode 100644 index 000000000..d531da25d Binary files /dev/null and b/sounds/voice/default/va/demogetpuntzergamma.ogg differ diff --git a/sounds/voice/default/va/demogetpusherweapon.ogg b/sounds/voice/default/va/demogetpusherweapon.ogg new file mode 100644 index 000000000..e6271ec91 Binary files /dev/null and b/sounds/voice/default/va/demogetpusherweapon.ogg differ diff --git a/sounds/voice/default/va/demogetquadravol.ogg b/sounds/voice/default/va/demogetquadravol.ogg new file mode 100644 index 000000000..b1b4cf757 Binary files /dev/null and b/sounds/voice/default/va/demogetquadravol.ogg differ diff --git a/sounds/voice/default/va/demogetrafankos.ogg b/sounds/voice/default/va/demogetrafankos.ogg new file mode 100644 index 000000000..027698803 Binary files /dev/null and b/sounds/voice/default/va/demogetrafankos.ogg differ diff --git a/sounds/voice/default/va/demogetraykhom.ogg b/sounds/voice/default/va/demogetraykhom.ogg new file mode 100644 index 000000000..7e0b08637 Binary files /dev/null and b/sounds/voice/default/va/demogetraykhom.ogg differ diff --git a/sounds/voice/default/va/demogetsilverbullet.ogg b/sounds/voice/default/va/demogetsilverbullet.ogg new file mode 100644 index 000000000..3c9cef587 Binary files /dev/null and b/sounds/voice/default/va/demogetsilverbullet.ogg differ diff --git a/sounds/voice/default/va/demogetsparkster.ogg b/sounds/voice/default/va/demogetsparkster.ogg new file mode 100644 index 000000000..035f4f37d Binary files /dev/null and b/sounds/voice/default/va/demogetsparkster.ogg differ diff --git a/sounds/voice/default/va/demogetspreadgun.ogg b/sounds/voice/default/va/demogetspreadgun.ogg new file mode 100644 index 000000000..38480963e Binary files /dev/null and b/sounds/voice/default/va/demogetspreadgun.ogg differ diff --git a/sounds/voice/default/va/demogetwallbuster.ogg b/sounds/voice/default/va/demogetwallbuster.ogg new file mode 100644 index 000000000..577de6e4f Binary files /dev/null and b/sounds/voice/default/va/demogetwallbuster.ogg differ diff --git a/sounds/voice/default/va/demogetweapon1.ogg b/sounds/voice/default/va/demogetweapon1.ogg new file mode 100644 index 000000000..3b6102e3f Binary files /dev/null and b/sounds/voice/default/va/demogetweapon1.ogg differ diff --git a/sounds/voice/default/va/demogetweapon10.ogg b/sounds/voice/default/va/demogetweapon10.ogg new file mode 100644 index 000000000..780ec25c3 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon10.ogg differ diff --git a/sounds/voice/default/va/demogetweapon11.ogg b/sounds/voice/default/va/demogetweapon11.ogg new file mode 100644 index 000000000..425bce967 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon11.ogg differ diff --git a/sounds/voice/default/va/demogetweapon12.ogg b/sounds/voice/default/va/demogetweapon12.ogg new file mode 100644 index 000000000..7c68dea6f Binary files /dev/null and b/sounds/voice/default/va/demogetweapon12.ogg differ diff --git a/sounds/voice/default/va/demogetweapon13.ogg b/sounds/voice/default/va/demogetweapon13.ogg new file mode 100644 index 000000000..595df0ff3 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon13.ogg differ diff --git a/sounds/voice/default/va/demogetweapon2.ogg b/sounds/voice/default/va/demogetweapon2.ogg new file mode 100644 index 000000000..8ff774c4f Binary files /dev/null and b/sounds/voice/default/va/demogetweapon2.ogg differ diff --git a/sounds/voice/default/va/demogetweapon3.ogg b/sounds/voice/default/va/demogetweapon3.ogg new file mode 100644 index 000000000..250c89f9c Binary files /dev/null and b/sounds/voice/default/va/demogetweapon3.ogg differ diff --git a/sounds/voice/default/va/demogetweapon4.ogg b/sounds/voice/default/va/demogetweapon4.ogg new file mode 100644 index 000000000..26ec8960f Binary files /dev/null and b/sounds/voice/default/va/demogetweapon4.ogg differ diff --git a/sounds/voice/default/va/demogetweapon5.ogg b/sounds/voice/default/va/demogetweapon5.ogg new file mode 100644 index 000000000..b159620b6 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon5.ogg differ diff --git a/sounds/voice/default/va/demogetweapon6.ogg b/sounds/voice/default/va/demogetweapon6.ogg new file mode 100644 index 000000000..5f745584d Binary files /dev/null and b/sounds/voice/default/va/demogetweapon6.ogg differ diff --git a/sounds/voice/default/va/demogetweapon7.ogg b/sounds/voice/default/va/demogetweapon7.ogg new file mode 100644 index 000000000..38db13bb2 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon7.ogg differ diff --git a/sounds/voice/default/va/demogetweapon8.ogg b/sounds/voice/default/va/demogetweapon8.ogg new file mode 100644 index 000000000..e30c6a8b7 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon8.ogg differ diff --git a/sounds/voice/default/va/demogetweapon9.ogg b/sounds/voice/default/va/demogetweapon9.ogg new file mode 100644 index 000000000..2831aff58 Binary files /dev/null and b/sounds/voice/default/va/demogetweapon9.ogg differ diff --git a/sounds/voice/default/va/demogetynykron.ogg b/sounds/voice/default/va/demogetynykron.ogg new file mode 100644 index 000000000..0c0650342 Binary files /dev/null and b/sounds/voice/default/va/demogetynykron.ogg differ diff --git a/sounds/voice/default/va/demogreet1.ogg b/sounds/voice/default/va/demogreet1.ogg new file mode 100644 index 000000000..ac39ed350 Binary files /dev/null and b/sounds/voice/default/va/demogreet1.ogg differ diff --git a/sounds/voice/default/va/demogreet2.ogg b/sounds/voice/default/va/demogreet2.ogg new file mode 100644 index 000000000..8c3714f7f Binary files /dev/null and b/sounds/voice/default/va/demogreet2.ogg differ diff --git a/sounds/voice/default/va/demogreet3.ogg b/sounds/voice/default/va/demogreet3.ogg new file mode 100644 index 000000000..2a8ed48d2 Binary files /dev/null and b/sounds/voice/default/va/demogreet3.ogg differ diff --git a/sounds/voice/default/va/demogreet4.ogg b/sounds/voice/default/va/demogreet4.ogg new file mode 100644 index 000000000..ca74fa480 Binary files /dev/null and b/sounds/voice/default/va/demogreet4.ogg differ diff --git a/sounds/voice/default/va/demogreet5.ogg b/sounds/voice/default/va/demogreet5.ogg new file mode 100644 index 000000000..53159c921 Binary files /dev/null and b/sounds/voice/default/va/demogreet5.ogg differ diff --git a/sounds/voice/default/va/demogreet6.ogg b/sounds/voice/default/va/demogreet6.ogg new file mode 100644 index 000000000..7ab9c0c30 Binary files /dev/null and b/sounds/voice/default/va/demogreet6.ogg differ diff --git a/sounds/voice/default/va/demogreet7.ogg b/sounds/voice/default/va/demogreet7.ogg new file mode 100644 index 000000000..04a49ee3a Binary files /dev/null and b/sounds/voice/default/va/demogreet7.ogg differ diff --git a/sounds/voice/default/va/demohitfriend1.ogg b/sounds/voice/default/va/demohitfriend1.ogg new file mode 100644 index 000000000..9db2e6cf8 Binary files /dev/null and b/sounds/voice/default/va/demohitfriend1.ogg differ diff --git a/sounds/voice/default/va/demohitfriend2.ogg b/sounds/voice/default/va/demohitfriend2.ogg new file mode 100644 index 000000000..4bc881b8e Binary files /dev/null and b/sounds/voice/default/va/demohitfriend2.ogg differ diff --git a/sounds/voice/default/va/demohitfriend3.ogg b/sounds/voice/default/va/demohitfriend3.ogg new file mode 100644 index 000000000..8142d9d93 Binary files /dev/null and b/sounds/voice/default/va/demohitfriend3.ogg differ diff --git a/sounds/voice/default/va/demojammed1.ogg b/sounds/voice/default/va/demojammed1.ogg new file mode 100644 index 000000000..51cb8fd87 Binary files /dev/null and b/sounds/voice/default/va/demojammed1.ogg differ diff --git a/sounds/voice/default/va/demojammed2.ogg b/sounds/voice/default/va/demojammed2.ogg new file mode 100644 index 000000000..f049e3b87 Binary files /dev/null and b/sounds/voice/default/va/demojammed2.ogg differ diff --git a/sounds/voice/default/va/demojammed3.ogg b/sounds/voice/default/va/demojammed3.ogg new file mode 100644 index 000000000..eea3a4c94 Binary files /dev/null and b/sounds/voice/default/va/demojammed3.ogg differ diff --git a/sounds/voice/default/va/demojammed4.ogg b/sounds/voice/default/va/demojammed4.ogg new file mode 100644 index 000000000..b89961f1a Binary files /dev/null and b/sounds/voice/default/va/demojammed4.ogg differ diff --git a/sounds/voice/default/va/demojammed5.ogg b/sounds/voice/default/va/demojammed5.ogg new file mode 100644 index 000000000..013757b00 Binary files /dev/null and b/sounds/voice/default/va/demojammed5.ogg differ diff --git a/sounds/voice/default/va/demojammed6.ogg b/sounds/voice/default/va/demojammed6.ogg new file mode 100644 index 000000000..26070e09d Binary files /dev/null and b/sounds/voice/default/va/demojammed6.ogg differ diff --git a/sounds/voice/default/va/demojammed7.ogg b/sounds/voice/default/va/demojammed7.ogg new file mode 100644 index 000000000..d8fff9771 Binary files /dev/null and b/sounds/voice/default/va/demojammed7.ogg differ diff --git a/sounds/voice/default/va/demokeyget1.ogg b/sounds/voice/default/va/demokeyget1.ogg new file mode 100644 index 000000000..5d26f36e6 Binary files /dev/null and b/sounds/voice/default/va/demokeyget1.ogg differ diff --git a/sounds/voice/default/va/demokeyget2.ogg b/sounds/voice/default/va/demokeyget2.ogg new file mode 100644 index 000000000..becb570fb Binary files /dev/null and b/sounds/voice/default/va/demokeyget2.ogg differ diff --git a/sounds/voice/default/va/demokeyget3.ogg b/sounds/voice/default/va/demokeyget3.ogg new file mode 100644 index 000000000..87e0452bf Binary files /dev/null and b/sounds/voice/default/va/demokeyget3.ogg differ diff --git a/sounds/voice/default/va/demokeyget4.ogg b/sounds/voice/default/va/demokeyget4.ogg new file mode 100644 index 000000000..462e67f2f Binary files /dev/null and b/sounds/voice/default/va/demokeyget4.ogg differ diff --git a/sounds/voice/default/va/demokeyget5.ogg b/sounds/voice/default/va/demokeyget5.ogg new file mode 100644 index 000000000..13443a0d8 Binary files /dev/null and b/sounds/voice/default/va/demokeyget5.ogg differ diff --git a/sounds/voice/default/va/demokiringet.ogg b/sounds/voice/default/va/demokiringet.ogg new file mode 100644 index 000000000..4b6bf7f8f Binary files /dev/null and b/sounds/voice/default/va/demokiringet.ogg differ diff --git a/sounds/voice/default/va/demokorax1.ogg b/sounds/voice/default/va/demokorax1.ogg new file mode 100644 index 000000000..51ed95beb Binary files /dev/null and b/sounds/voice/default/va/demokorax1.ogg differ diff --git a/sounds/voice/default/va/demokorax2.ogg b/sounds/voice/default/va/demokorax2.ogg new file mode 100644 index 000000000..8ef96cc5a Binary files /dev/null and b/sounds/voice/default/va/demokorax2.ogg differ diff --git a/sounds/voice/default/va/demokorax3.ogg b/sounds/voice/default/va/demokorax3.ogg new file mode 100644 index 000000000..3915118cc Binary files /dev/null and b/sounds/voice/default/va/demokorax3.ogg differ diff --git a/sounds/voice/default/va/demokorax4.ogg b/sounds/voice/default/va/demokorax4.ogg new file mode 100644 index 000000000..0bc72f6ef Binary files /dev/null and b/sounds/voice/default/va/demokorax4.ogg differ diff --git a/sounds/voice/default/va/demokorax5.ogg b/sounds/voice/default/va/demokorax5.ogg new file mode 100644 index 000000000..3e14667de Binary files /dev/null and b/sounds/voice/default/va/demokorax5.ogg differ diff --git a/sounds/voice/default/va/demokorax6.ogg b/sounds/voice/default/va/demokorax6.ogg new file mode 100644 index 000000000..442d0a137 Binary files /dev/null and b/sounds/voice/default/va/demokorax6.ogg differ diff --git a/sounds/voice/default/va/demokorax7.ogg b/sounds/voice/default/va/demokorax7.ogg new file mode 100644 index 000000000..c9ae7470a Binary files /dev/null and b/sounds/voice/default/va/demokorax7.ogg differ diff --git a/sounds/voice/default/va/demokorax8.ogg b/sounds/voice/default/va/demokorax8.ogg new file mode 100644 index 000000000..845c13d82 Binary files /dev/null and b/sounds/voice/default/va/demokorax8.ogg differ diff --git a/sounds/voice/default/va/demokorax9.ogg b/sounds/voice/default/va/demokorax9.ogg new file mode 100644 index 000000000..a711a97fb Binary files /dev/null and b/sounds/voice/default/va/demokorax9.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood1.ogg b/sounds/voice/default/va/demokoraxblood1.ogg new file mode 100644 index 000000000..0dc25c80d Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood1.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood10.ogg b/sounds/voice/default/va/demokoraxblood10.ogg new file mode 100644 index 000000000..1b41cea88 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood10.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood11.ogg b/sounds/voice/default/va/demokoraxblood11.ogg new file mode 100644 index 000000000..816ac9b21 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood11.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood12.ogg b/sounds/voice/default/va/demokoraxblood12.ogg new file mode 100644 index 000000000..31e8df7be Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood12.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood13.ogg b/sounds/voice/default/va/demokoraxblood13.ogg new file mode 100644 index 000000000..40ae3d4af Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood13.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood2.ogg b/sounds/voice/default/va/demokoraxblood2.ogg new file mode 100644 index 000000000..c36886055 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood2.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood3.ogg b/sounds/voice/default/va/demokoraxblood3.ogg new file mode 100644 index 000000000..225989dd7 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood3.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood4.ogg b/sounds/voice/default/va/demokoraxblood4.ogg new file mode 100644 index 000000000..27d3dd417 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood4.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood5.ogg b/sounds/voice/default/va/demokoraxblood5.ogg new file mode 100644 index 000000000..385d04b17 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood5.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood6.ogg b/sounds/voice/default/va/demokoraxblood6.ogg new file mode 100644 index 000000000..e8075c2bf Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood6.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood7.ogg b/sounds/voice/default/va/demokoraxblood7.ogg new file mode 100644 index 000000000..9e354328c Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood7.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood8.ogg b/sounds/voice/default/va/demokoraxblood8.ogg new file mode 100644 index 000000000..70aba75b0 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood8.ogg differ diff --git a/sounds/voice/default/va/demokoraxblood9.ogg b/sounds/voice/default/va/demokoraxblood9.ogg new file mode 100644 index 000000000..c39808fb7 Binary files /dev/null and b/sounds/voice/default/va/demokoraxblood9.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame1.ogg b/sounds/voice/default/va/demokoraxgame1.ogg new file mode 100644 index 000000000..44b4ffdc3 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame1.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame10.ogg b/sounds/voice/default/va/demokoraxgame10.ogg new file mode 100644 index 000000000..9243a2ae6 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame10.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame11.ogg b/sounds/voice/default/va/demokoraxgame11.ogg new file mode 100644 index 000000000..bf9fa9ba0 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame11.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame12.ogg b/sounds/voice/default/va/demokoraxgame12.ogg new file mode 100644 index 000000000..037a38172 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame12.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame13.ogg b/sounds/voice/default/va/demokoraxgame13.ogg new file mode 100644 index 000000000..4c0b52fb9 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame13.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame14.ogg b/sounds/voice/default/va/demokoraxgame14.ogg new file mode 100644 index 000000000..9e3986b81 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame14.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame2.ogg b/sounds/voice/default/va/demokoraxgame2.ogg new file mode 100644 index 000000000..a13096423 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame2.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame3.ogg b/sounds/voice/default/va/demokoraxgame3.ogg new file mode 100644 index 000000000..e25489a79 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame3.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame4.ogg b/sounds/voice/default/va/demokoraxgame4.ogg new file mode 100644 index 000000000..b750527f0 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame4.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame5.ogg b/sounds/voice/default/va/demokoraxgame5.ogg new file mode 100644 index 000000000..e2a21fae8 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame5.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame6.ogg b/sounds/voice/default/va/demokoraxgame6.ogg new file mode 100644 index 000000000..22a0c7911 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame6.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame7.ogg b/sounds/voice/default/va/demokoraxgame7.ogg new file mode 100644 index 000000000..a30800e68 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame7.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame8.ogg b/sounds/voice/default/va/demokoraxgame8.ogg new file mode 100644 index 000000000..2d139519c Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame8.ogg differ diff --git a/sounds/voice/default/va/demokoraxgame9.ogg b/sounds/voice/default/va/demokoraxgame9.ogg new file mode 100644 index 000000000..17cfc0871 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgame9.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet1.ogg b/sounds/voice/default/va/demokoraxgreet1.ogg new file mode 100644 index 000000000..2b7668203 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet1.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet10.ogg b/sounds/voice/default/va/demokoraxgreet10.ogg new file mode 100644 index 000000000..4f8a26636 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet10.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet11.ogg b/sounds/voice/default/va/demokoraxgreet11.ogg new file mode 100644 index 000000000..7114b1957 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet11.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet12.ogg b/sounds/voice/default/va/demokoraxgreet12.ogg new file mode 100644 index 000000000..9fbf045f1 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet12.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet13.ogg b/sounds/voice/default/va/demokoraxgreet13.ogg new file mode 100644 index 000000000..b0cea6957 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet13.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet2.ogg b/sounds/voice/default/va/demokoraxgreet2.ogg new file mode 100644 index 000000000..068d7bcb7 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet2.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet3.ogg b/sounds/voice/default/va/demokoraxgreet3.ogg new file mode 100644 index 000000000..391633a23 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet3.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet4.ogg b/sounds/voice/default/va/demokoraxgreet4.ogg new file mode 100644 index 000000000..7faa75e3e Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet4.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet5.ogg b/sounds/voice/default/va/demokoraxgreet5.ogg new file mode 100644 index 000000000..953397cc7 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet5.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet6.ogg b/sounds/voice/default/va/demokoraxgreet6.ogg new file mode 100644 index 000000000..80779bffd Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet6.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet7.ogg b/sounds/voice/default/va/demokoraxgreet7.ogg new file mode 100644 index 000000000..fdb4b239a Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet7.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet8.ogg b/sounds/voice/default/va/demokoraxgreet8.ogg new file mode 100644 index 000000000..c2931f6ad Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet8.ogg differ diff --git a/sounds/voice/default/va/demokoraxgreet9.ogg b/sounds/voice/default/va/demokoraxgreet9.ogg new file mode 100644 index 000000000..99eaa48e6 Binary files /dev/null and b/sounds/voice/default/va/demokoraxgreet9.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters1.ogg b/sounds/voice/default/va/demokoraxmasters1.ogg new file mode 100644 index 000000000..8ffacb186 Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters1.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters2.ogg b/sounds/voice/default/va/demokoraxmasters2.ogg new file mode 100644 index 000000000..94864283c Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters2.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters3.ogg b/sounds/voice/default/va/demokoraxmasters3.ogg new file mode 100644 index 000000000..ac4b10c88 Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters3.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters4.ogg b/sounds/voice/default/va/demokoraxmasters4.ogg new file mode 100644 index 000000000..afc962d27 Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters4.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters5.ogg b/sounds/voice/default/va/demokoraxmasters5.ogg new file mode 100644 index 000000000..1ab449b35 Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters5.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters6.ogg b/sounds/voice/default/va/demokoraxmasters6.ogg new file mode 100644 index 000000000..804e4a91c Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters6.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters7.ogg b/sounds/voice/default/va/demokoraxmasters7.ogg new file mode 100644 index 000000000..96309be58 Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters7.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters8.ogg b/sounds/voice/default/va/demokoraxmasters8.ogg new file mode 100644 index 000000000..c72d0563b Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters8.ogg differ diff --git a/sounds/voice/default/va/demokoraxmasters9.ogg b/sounds/voice/default/va/demokoraxmasters9.ogg new file mode 100644 index 000000000..a765d063a Binary files /dev/null and b/sounds/voice/default/va/demokoraxmasters9.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship1.ogg b/sounds/voice/default/va/demokoraxworship1.ogg new file mode 100644 index 000000000..5d24de64a Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship1.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship10.ogg b/sounds/voice/default/va/demokoraxworship10.ogg new file mode 100644 index 000000000..f9d8fac06 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship10.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship11.ogg b/sounds/voice/default/va/demokoraxworship11.ogg new file mode 100644 index 000000000..a51582377 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship11.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship2.ogg b/sounds/voice/default/va/demokoraxworship2.ogg new file mode 100644 index 000000000..cc0f6d937 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship2.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship3.ogg b/sounds/voice/default/va/demokoraxworship3.ogg new file mode 100644 index 000000000..36e5c499e Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship3.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship4.ogg b/sounds/voice/default/va/demokoraxworship4.ogg new file mode 100644 index 000000000..45611cee0 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship4.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship5.ogg b/sounds/voice/default/va/demokoraxworship5.ogg new file mode 100644 index 000000000..c73e0a0b2 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship5.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship6.ogg b/sounds/voice/default/va/demokoraxworship6.ogg new file mode 100644 index 000000000..bbe25dbe3 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship6.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship7.ogg b/sounds/voice/default/va/demokoraxworship7.ogg new file mode 100644 index 000000000..6264cf8d9 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship7.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship8.ogg b/sounds/voice/default/va/demokoraxworship8.ogg new file mode 100644 index 000000000..6de4efb73 Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship8.ogg differ diff --git a/sounds/voice/default/va/demokoraxworship9.ogg b/sounds/voice/default/va/demokoraxworship9.ogg new file mode 100644 index 000000000..564be958c Binary files /dev/null and b/sounds/voice/default/va/demokoraxworship9.ogg differ diff --git a/sounds/voice/default/va/demolocked1.ogg b/sounds/voice/default/va/demolocked1.ogg new file mode 100644 index 000000000..5132e8549 Binary files /dev/null and b/sounds/voice/default/va/demolocked1.ogg differ diff --git a/sounds/voice/default/va/demolocked2.ogg b/sounds/voice/default/va/demolocked2.ogg new file mode 100644 index 000000000..28a0dee0c Binary files /dev/null and b/sounds/voice/default/va/demolocked2.ogg differ diff --git a/sounds/voice/default/va/demolocked3.ogg b/sounds/voice/default/va/demolocked3.ogg new file mode 100644 index 000000000..329c7a735 Binary files /dev/null and b/sounds/voice/default/va/demolocked3.ogg differ diff --git a/sounds/voice/default/va/demolocked4.ogg b/sounds/voice/default/va/demolocked4.ogg new file mode 100644 index 000000000..cca215dcc Binary files /dev/null and b/sounds/voice/default/va/demolocked4.ogg differ diff --git a/sounds/voice/default/va/demolocked5.ogg b/sounds/voice/default/va/demolocked5.ogg new file mode 100644 index 000000000..bab6e159e Binary files /dev/null and b/sounds/voice/default/va/demolocked5.ogg differ diff --git a/sounds/voice/default/va/demolocked6.ogg b/sounds/voice/default/va/demolocked6.ogg new file mode 100644 index 000000000..f2cae5034 Binary files /dev/null and b/sounds/voice/default/va/demolocked6.ogg differ diff --git a/sounds/voice/default/va/demomangaget.ogg b/sounds/voice/default/va/demomangaget.ogg new file mode 100644 index 000000000..165969d02 Binary files /dev/null and b/sounds/voice/default/va/demomangaget.ogg differ diff --git a/sounds/voice/default/va/demomapstart1.ogg b/sounds/voice/default/va/demomapstart1.ogg new file mode 100644 index 000000000..a23b2b9b2 Binary files /dev/null and b/sounds/voice/default/va/demomapstart1.ogg differ diff --git a/sounds/voice/default/va/demomapstart10.ogg b/sounds/voice/default/va/demomapstart10.ogg new file mode 100644 index 000000000..ecc502c4b Binary files /dev/null and b/sounds/voice/default/va/demomapstart10.ogg differ diff --git a/sounds/voice/default/va/demomapstart11.ogg b/sounds/voice/default/va/demomapstart11.ogg new file mode 100644 index 000000000..2999f43e4 Binary files /dev/null and b/sounds/voice/default/va/demomapstart11.ogg differ diff --git a/sounds/voice/default/va/demomapstart12.ogg b/sounds/voice/default/va/demomapstart12.ogg new file mode 100644 index 000000000..100119ec4 Binary files /dev/null and b/sounds/voice/default/va/demomapstart12.ogg differ diff --git a/sounds/voice/default/va/demomapstart13.ogg b/sounds/voice/default/va/demomapstart13.ogg new file mode 100644 index 000000000..3de5e1ca0 Binary files /dev/null and b/sounds/voice/default/va/demomapstart13.ogg differ diff --git a/sounds/voice/default/va/demomapstart14.ogg b/sounds/voice/default/va/demomapstart14.ogg new file mode 100644 index 000000000..6bffd26cd Binary files /dev/null and b/sounds/voice/default/va/demomapstart14.ogg differ diff --git a/sounds/voice/default/va/demomapstart2.ogg b/sounds/voice/default/va/demomapstart2.ogg new file mode 100644 index 000000000..866016673 Binary files /dev/null and b/sounds/voice/default/va/demomapstart2.ogg differ diff --git a/sounds/voice/default/va/demomapstart3.ogg b/sounds/voice/default/va/demomapstart3.ogg new file mode 100644 index 000000000..ae04a6223 Binary files /dev/null and b/sounds/voice/default/va/demomapstart3.ogg differ diff --git a/sounds/voice/default/va/demomapstart4.ogg b/sounds/voice/default/va/demomapstart4.ogg new file mode 100644 index 000000000..5c0354f41 Binary files /dev/null and b/sounds/voice/default/va/demomapstart4.ogg differ diff --git a/sounds/voice/default/va/demomapstart5.ogg b/sounds/voice/default/va/demomapstart5.ogg new file mode 100644 index 000000000..63a6204ff Binary files /dev/null and b/sounds/voice/default/va/demomapstart5.ogg differ diff --git a/sounds/voice/default/va/demomapstart6.ogg b/sounds/voice/default/va/demomapstart6.ogg new file mode 100644 index 000000000..57dd367b9 Binary files /dev/null and b/sounds/voice/default/va/demomapstart6.ogg differ diff --git a/sounds/voice/default/va/demomapstart7.ogg b/sounds/voice/default/va/demomapstart7.ogg new file mode 100644 index 000000000..b41fbb87f Binary files /dev/null and b/sounds/voice/default/va/demomapstart7.ogg differ diff --git a/sounds/voice/default/va/demomapstart8.ogg b/sounds/voice/default/va/demomapstart8.ogg new file mode 100644 index 000000000..8acc25d05 Binary files /dev/null and b/sounds/voice/default/va/demomapstart8.ogg differ diff --git a/sounds/voice/default/va/demomapstart9.ogg b/sounds/voice/default/va/demomapstart9.ogg new file mode 100644 index 000000000..060478e17 Binary files /dev/null and b/sounds/voice/default/va/demomapstart9.ogg differ diff --git a/sounds/voice/default/va/demomothget.ogg b/sounds/voice/default/va/demomothget.ogg new file mode 100644 index 000000000..d72ed9dbd Binary files /dev/null and b/sounds/voice/default/va/demomothget.ogg differ diff --git a/sounds/voice/default/va/demonutatcoget.ogg b/sounds/voice/default/va/demonutatcoget.ogg new file mode 100644 index 000000000..500341cb9 Binary files /dev/null and b/sounds/voice/default/va/demonutatcoget.ogg differ diff --git a/sounds/voice/default/va/demopeachget.ogg b/sounds/voice/default/va/demopeachget.ogg new file mode 100644 index 000000000..b4b4c3cff Binary files /dev/null and b/sounds/voice/default/va/demopeachget.ogg differ diff --git a/sounds/voice/default/va/demopethdoom1.ogg b/sounds/voice/default/va/demopethdoom1.ogg new file mode 100644 index 000000000..e6048cdcf Binary files /dev/null and b/sounds/voice/default/va/demopethdoom1.ogg differ diff --git a/sounds/voice/default/va/demopethdoom2.ogg b/sounds/voice/default/va/demopethdoom2.ogg new file mode 100644 index 000000000..5cedf0a6d Binary files /dev/null and b/sounds/voice/default/va/demopethdoom2.ogg differ diff --git a/sounds/voice/default/va/demopethdoom3.ogg b/sounds/voice/default/va/demopethdoom3.ogg new file mode 100644 index 000000000..9c987b41a Binary files /dev/null and b/sounds/voice/default/va/demopethdoom3.ogg differ diff --git a/sounds/voice/default/va/demopethdoom4.ogg b/sounds/voice/default/va/demopethdoom4.ogg new file mode 100644 index 000000000..6d1bb9497 Binary files /dev/null and b/sounds/voice/default/va/demopethdoom4.ogg differ diff --git a/sounds/voice/default/va/demopethdoom5.ogg b/sounds/voice/default/va/demopethdoom5.ogg new file mode 100644 index 000000000..b4d21c20a Binary files /dev/null and b/sounds/voice/default/va/demopethdoom5.ogg differ diff --git a/sounds/voice/default/va/demopethdoom6.ogg b/sounds/voice/default/va/demopethdoom6.ogg new file mode 100644 index 000000000..1e8156510 Binary files /dev/null and b/sounds/voice/default/va/demopethdoom6.ogg differ diff --git a/sounds/voice/default/va/demopethdoom7.ogg b/sounds/voice/default/va/demopethdoom7.ogg new file mode 100644 index 000000000..dc1ecb31c Binary files /dev/null and b/sounds/voice/default/va/demopethdoom7.ogg differ diff --git a/sounds/voice/default/va/demopethdoom8.ogg b/sounds/voice/default/va/demopethdoom8.ogg new file mode 100644 index 000000000..1093a5695 Binary files /dev/null and b/sounds/voice/default/va/demopethdoom8.ogg differ diff --git a/sounds/voice/default/va/demopethdoom9.ogg b/sounds/voice/default/va/demopethdoom9.ogg new file mode 100644 index 000000000..9eafca619 Binary files /dev/null and b/sounds/voice/default/va/demopethdoom9.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish1.ogg b/sounds/voice/default/va/demopethdoomfinish1.ogg new file mode 100644 index 000000000..d8b24e7ff Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish1.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish2.ogg b/sounds/voice/default/va/demopethdoomfinish2.ogg new file mode 100644 index 000000000..f7745a35b Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish2.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish3.ogg b/sounds/voice/default/va/demopethdoomfinish3.ogg new file mode 100644 index 000000000..ebc1a79c5 Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish3.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish4.ogg b/sounds/voice/default/va/demopethdoomfinish4.ogg new file mode 100644 index 000000000..71b023b20 Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish4.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish5.ogg b/sounds/voice/default/va/demopethdoomfinish5.ogg new file mode 100644 index 000000000..1fc98f38d Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish5.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish6.ogg b/sounds/voice/default/va/demopethdoomfinish6.ogg new file mode 100644 index 000000000..8813a7706 Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish6.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish7.ogg b/sounds/voice/default/va/demopethdoomfinish7.ogg new file mode 100644 index 000000000..b1b0147c8 Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish7.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish8.ogg b/sounds/voice/default/va/demopethdoomfinish8.ogg new file mode 100644 index 000000000..3577dc35a Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish8.ogg differ diff --git a/sounds/voice/default/va/demopethdoomfinish9.ogg b/sounds/voice/default/va/demopethdoomfinish9.ogg new file mode 100644 index 000000000..f2667249f Binary files /dev/null and b/sounds/voice/default/va/demopethdoomfinish9.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro1.ogg b/sounds/voice/default/va/demopetmashiro1.ogg new file mode 100644 index 000000000..68bf8ee99 Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro1.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro2.ogg b/sounds/voice/default/va/demopetmashiro2.ogg new file mode 100644 index 000000000..c6be5034f Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro2.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro3.ogg b/sounds/voice/default/va/demopetmashiro3.ogg new file mode 100644 index 000000000..8efb08403 Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro3.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro4.ogg b/sounds/voice/default/va/demopetmashiro4.ogg new file mode 100644 index 000000000..f3413aa02 Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro4.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro5.ogg b/sounds/voice/default/va/demopetmashiro5.ogg new file mode 100644 index 000000000..90db918ff Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro5.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro6.ogg b/sounds/voice/default/va/demopetmashiro6.ogg new file mode 100644 index 000000000..211a31a50 Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro6.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro7.ogg b/sounds/voice/default/va/demopetmashiro7.ogg new file mode 100644 index 000000000..c4828acbb Binary files /dev/null and b/sounds/voice/default/va/demopetmashiro7.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail1.ogg b/sounds/voice/default/va/demopuzzfail1.ogg new file mode 100644 index 000000000..1562e984e Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail1.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail2.ogg b/sounds/voice/default/va/demopuzzfail2.ogg new file mode 100644 index 000000000..242f274d4 Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail2.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail3.ogg b/sounds/voice/default/va/demopuzzfail3.ogg new file mode 100644 index 000000000..ce63ee75d Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail3.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail4.ogg b/sounds/voice/default/va/demopuzzfail4.ogg new file mode 100644 index 000000000..e160c00d7 Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail4.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail5.ogg b/sounds/voice/default/va/demopuzzfail5.ogg new file mode 100644 index 000000000..b29d30047 Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail5.ogg differ diff --git a/sounds/voice/default/va/demopuzzfail6.ogg b/sounds/voice/default/va/demopuzzfail6.ogg new file mode 100644 index 000000000..4a1d56875 Binary files /dev/null and b/sounds/voice/default/va/demopuzzfail6.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc1.ogg b/sounds/voice/default/va/demopuzzsucc1.ogg new file mode 100644 index 000000000..bd6122aff Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc1.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc2.ogg b/sounds/voice/default/va/demopuzzsucc2.ogg new file mode 100644 index 000000000..dfbc9a230 Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc2.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc3.ogg b/sounds/voice/default/va/demopuzzsucc3.ogg new file mode 100644 index 000000000..0dcba4764 Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc3.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc4.ogg b/sounds/voice/default/va/demopuzzsucc4.ogg new file mode 100644 index 000000000..acbe34d07 Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc4.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc5.ogg b/sounds/voice/default/va/demopuzzsucc5.ogg new file mode 100644 index 000000000..3fb66a275 Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc5.ogg differ diff --git a/sounds/voice/default/va/demopuzzsucc6.ogg b/sounds/voice/default/va/demopuzzsucc6.ogg new file mode 100644 index 000000000..3f8c9d713 Binary files /dev/null and b/sounds/voice/default/va/demopuzzsucc6.ogg differ diff --git a/sounds/voice/default/va/demoragekit1.ogg b/sounds/voice/default/va/demoragekit1.ogg new file mode 100644 index 000000000..c8f36ba38 Binary files /dev/null and b/sounds/voice/default/va/demoragekit1.ogg differ diff --git a/sounds/voice/default/va/demoragekit10.ogg b/sounds/voice/default/va/demoragekit10.ogg new file mode 100644 index 000000000..d3090f6e1 Binary files /dev/null and b/sounds/voice/default/va/demoragekit10.ogg differ diff --git a/sounds/voice/default/va/demoragekit11.ogg b/sounds/voice/default/va/demoragekit11.ogg new file mode 100644 index 000000000..4854fa8f1 Binary files /dev/null and b/sounds/voice/default/va/demoragekit11.ogg differ diff --git a/sounds/voice/default/va/demoragekit12.ogg b/sounds/voice/default/va/demoragekit12.ogg new file mode 100644 index 000000000..c69096fd3 Binary files /dev/null and b/sounds/voice/default/va/demoragekit12.ogg differ diff --git a/sounds/voice/default/va/demoragekit13.ogg b/sounds/voice/default/va/demoragekit13.ogg new file mode 100644 index 000000000..cbd1e96f7 Binary files /dev/null and b/sounds/voice/default/va/demoragekit13.ogg differ diff --git a/sounds/voice/default/va/demoragekit14.ogg b/sounds/voice/default/va/demoragekit14.ogg new file mode 100644 index 000000000..69b3d25c7 Binary files /dev/null and b/sounds/voice/default/va/demoragekit14.ogg differ diff --git a/sounds/voice/default/va/demoragekit15.ogg b/sounds/voice/default/va/demoragekit15.ogg new file mode 100644 index 000000000..e4fef64a4 Binary files /dev/null and b/sounds/voice/default/va/demoragekit15.ogg differ diff --git a/sounds/voice/default/va/demoragekit16.ogg b/sounds/voice/default/va/demoragekit16.ogg new file mode 100644 index 000000000..a97516769 Binary files /dev/null and b/sounds/voice/default/va/demoragekit16.ogg differ diff --git a/sounds/voice/default/va/demoragekit17.ogg b/sounds/voice/default/va/demoragekit17.ogg new file mode 100644 index 000000000..7137867ff Binary files /dev/null and b/sounds/voice/default/va/demoragekit17.ogg differ diff --git a/sounds/voice/default/va/demoragekit2.ogg b/sounds/voice/default/va/demoragekit2.ogg new file mode 100644 index 000000000..31b20e86a Binary files /dev/null and b/sounds/voice/default/va/demoragekit2.ogg differ diff --git a/sounds/voice/default/va/demoragekit3.ogg b/sounds/voice/default/va/demoragekit3.ogg new file mode 100644 index 000000000..74cf36551 Binary files /dev/null and b/sounds/voice/default/va/demoragekit3.ogg differ diff --git a/sounds/voice/default/va/demoragekit4.ogg b/sounds/voice/default/va/demoragekit4.ogg new file mode 100644 index 000000000..eca21c7a8 Binary files /dev/null and b/sounds/voice/default/va/demoragekit4.ogg differ diff --git a/sounds/voice/default/va/demoragekit5.ogg b/sounds/voice/default/va/demoragekit5.ogg new file mode 100644 index 000000000..2f2024c7b Binary files /dev/null and b/sounds/voice/default/va/demoragekit5.ogg differ diff --git a/sounds/voice/default/va/demoragekit6.ogg b/sounds/voice/default/va/demoragekit6.ogg new file mode 100644 index 000000000..8358e295c Binary files /dev/null and b/sounds/voice/default/va/demoragekit6.ogg differ diff --git a/sounds/voice/default/va/demoragekit7.ogg b/sounds/voice/default/va/demoragekit7.ogg new file mode 100644 index 000000000..f67f7a19d Binary files /dev/null and b/sounds/voice/default/va/demoragekit7.ogg differ diff --git a/sounds/voice/default/va/demoragekit8.ogg b/sounds/voice/default/va/demoragekit8.ogg new file mode 100644 index 000000000..7590428dc Binary files /dev/null and b/sounds/voice/default/va/demoragekit8.ogg differ diff --git a/sounds/voice/default/va/demoragekit9.ogg b/sounds/voice/default/va/demoragekit9.ogg new file mode 100644 index 000000000..dface75f2 Binary files /dev/null and b/sounds/voice/default/va/demoragekit9.ogg differ diff --git a/sounds/voice/default/va/demoromero1.ogg b/sounds/voice/default/va/demoromero1.ogg new file mode 100644 index 000000000..708423c9d Binary files /dev/null and b/sounds/voice/default/va/demoromero1.ogg differ diff --git a/sounds/voice/default/va/demoromero2.ogg b/sounds/voice/default/va/demoromero2.ogg new file mode 100644 index 000000000..40617e20e Binary files /dev/null and b/sounds/voice/default/va/demoromero2.ogg differ diff --git a/sounds/voice/default/va/demoromero3.ogg b/sounds/voice/default/va/demoromero3.ogg new file mode 100644 index 000000000..c3dbfa5d6 Binary files /dev/null and b/sounds/voice/default/va/demoromero3.ogg differ diff --git a/sounds/voice/default/va/demoromero4.ogg b/sounds/voice/default/va/demoromero4.ogg new file mode 100644 index 000000000..1520466be Binary files /dev/null and b/sounds/voice/default/va/demoromero4.ogg differ diff --git a/sounds/voice/default/va/demoromero5.ogg b/sounds/voice/default/va/demoromero5.ogg new file mode 100644 index 000000000..6e1efdf0f Binary files /dev/null and b/sounds/voice/default/va/demoromero5.ogg differ diff --git a/sounds/voice/default/va/demoromero6.ogg b/sounds/voice/default/va/demoromero6.ogg new file mode 100644 index 000000000..be1eb0e83 Binary files /dev/null and b/sounds/voice/default/va/demoromero6.ogg differ diff --git a/sounds/voice/default/va/demoromero7.ogg b/sounds/voice/default/va/demoromero7.ogg new file mode 100644 index 000000000..02ed17348 Binary files /dev/null and b/sounds/voice/default/va/demoromero7.ogg differ diff --git a/sounds/voice/default/va/demoromero8.ogg b/sounds/voice/default/va/demoromero8.ogg new file mode 100644 index 000000000..4f4c3303e Binary files /dev/null and b/sounds/voice/default/va/demoromero8.ogg differ diff --git a/sounds/voice/default/va/demosayaget.ogg b/sounds/voice/default/va/demosayaget.ogg new file mode 100644 index 000000000..3a662b551 Binary files /dev/null and b/sounds/voice/default/va/demosayaget.ogg differ diff --git a/sounds/voice/default/va/demoscorekill1.ogg b/sounds/voice/default/va/demoscorekill1.ogg new file mode 100644 index 000000000..d83b0cf47 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill1.ogg differ diff --git a/sounds/voice/default/va/demoscorekill10.ogg b/sounds/voice/default/va/demoscorekill10.ogg new file mode 100644 index 000000000..7058518c4 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill10.ogg differ diff --git a/sounds/voice/default/va/demoscorekill11.ogg b/sounds/voice/default/va/demoscorekill11.ogg new file mode 100644 index 000000000..d07de10d1 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill11.ogg differ diff --git a/sounds/voice/default/va/demoscorekill12.ogg b/sounds/voice/default/va/demoscorekill12.ogg new file mode 100644 index 000000000..b1beebc22 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill12.ogg differ diff --git a/sounds/voice/default/va/demoscorekill13.ogg b/sounds/voice/default/va/demoscorekill13.ogg new file mode 100644 index 000000000..8b528088e Binary files /dev/null and b/sounds/voice/default/va/demoscorekill13.ogg differ diff --git a/sounds/voice/default/va/demoscorekill14.ogg b/sounds/voice/default/va/demoscorekill14.ogg new file mode 100644 index 000000000..2df724280 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill14.ogg differ diff --git a/sounds/voice/default/va/demoscorekill15.ogg b/sounds/voice/default/va/demoscorekill15.ogg new file mode 100644 index 000000000..bcbf75761 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill15.ogg differ diff --git a/sounds/voice/default/va/demoscorekill16.ogg b/sounds/voice/default/va/demoscorekill16.ogg new file mode 100644 index 000000000..90edebf42 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill16.ogg differ diff --git a/sounds/voice/default/va/demoscorekill17.ogg b/sounds/voice/default/va/demoscorekill17.ogg new file mode 100644 index 000000000..efd53bc57 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill17.ogg differ diff --git a/sounds/voice/default/va/demoscorekill18.ogg b/sounds/voice/default/va/demoscorekill18.ogg new file mode 100644 index 000000000..b5cfed579 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill18.ogg differ diff --git a/sounds/voice/default/va/demoscorekill19.ogg b/sounds/voice/default/va/demoscorekill19.ogg new file mode 100644 index 000000000..ed0f477bf Binary files /dev/null and b/sounds/voice/default/va/demoscorekill19.ogg differ diff --git a/sounds/voice/default/va/demoscorekill2.ogg b/sounds/voice/default/va/demoscorekill2.ogg new file mode 100644 index 000000000..987de343f Binary files /dev/null and b/sounds/voice/default/va/demoscorekill2.ogg differ diff --git a/sounds/voice/default/va/demoscorekill20.ogg b/sounds/voice/default/va/demoscorekill20.ogg new file mode 100644 index 000000000..c32521595 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill20.ogg differ diff --git a/sounds/voice/default/va/demoscorekill21.ogg b/sounds/voice/default/va/demoscorekill21.ogg new file mode 100644 index 000000000..ad27605b9 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill21.ogg differ diff --git a/sounds/voice/default/va/demoscorekill22.ogg b/sounds/voice/default/va/demoscorekill22.ogg new file mode 100644 index 000000000..970951e13 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill22.ogg differ diff --git a/sounds/voice/default/va/demoscorekill23.ogg b/sounds/voice/default/va/demoscorekill23.ogg new file mode 100644 index 000000000..5bedaa985 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill23.ogg differ diff --git a/sounds/voice/default/va/demoscorekill24.ogg b/sounds/voice/default/va/demoscorekill24.ogg new file mode 100644 index 000000000..4ec1f1ad1 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill24.ogg differ diff --git a/sounds/voice/default/va/demoscorekill25.ogg b/sounds/voice/default/va/demoscorekill25.ogg new file mode 100644 index 000000000..e492aae3b Binary files /dev/null and b/sounds/voice/default/va/demoscorekill25.ogg differ diff --git a/sounds/voice/default/va/demoscorekill3.ogg b/sounds/voice/default/va/demoscorekill3.ogg new file mode 100644 index 000000000..63a1f3226 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill3.ogg differ diff --git a/sounds/voice/default/va/demoscorekill4.ogg b/sounds/voice/default/va/demoscorekill4.ogg new file mode 100644 index 000000000..23a23e068 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill4.ogg differ diff --git a/sounds/voice/default/va/demoscorekill5.ogg b/sounds/voice/default/va/demoscorekill5.ogg new file mode 100644 index 000000000..0592d5e44 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill5.ogg differ diff --git a/sounds/voice/default/va/demoscorekill6.ogg b/sounds/voice/default/va/demoscorekill6.ogg new file mode 100644 index 000000000..ff334a244 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill6.ogg differ diff --git a/sounds/voice/default/va/demoscorekill7.ogg b/sounds/voice/default/va/demoscorekill7.ogg new file mode 100644 index 000000000..7e2f7d5fd Binary files /dev/null and b/sounds/voice/default/va/demoscorekill7.ogg differ diff --git a/sounds/voice/default/va/demoscorekill8.ogg b/sounds/voice/default/va/demoscorekill8.ogg new file mode 100644 index 000000000..011ffd7cd Binary files /dev/null and b/sounds/voice/default/va/demoscorekill8.ogg differ diff --git a/sounds/voice/default/va/demoscorekill9.ogg b/sounds/voice/default/va/demoscorekill9.ogg new file mode 100644 index 000000000..93fe75b95 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill9.ogg differ diff --git a/sounds/voice/default/va/demosignalsget.ogg b/sounds/voice/default/va/demosignalsget.ogg new file mode 100644 index 000000000..cf7ee33d5 Binary files /dev/null and b/sounds/voice/default/va/demosignalsget.ogg differ diff --git a/sounds/voice/default/va/demousefail1.ogg b/sounds/voice/default/va/demousefail1.ogg new file mode 100644 index 000000000..690d1a643 Binary files /dev/null and b/sounds/voice/default/va/demousefail1.ogg differ diff --git a/sounds/voice/default/va/demousefail2.ogg b/sounds/voice/default/va/demousefail2.ogg new file mode 100644 index 000000000..cab7f2b40 Binary files /dev/null and b/sounds/voice/default/va/demousefail2.ogg differ diff --git a/sounds/voice/default/va/demousefail3.ogg b/sounds/voice/default/va/demousefail3.ogg new file mode 100644 index 000000000..2c28a69bb Binary files /dev/null and b/sounds/voice/default/va/demousefail3.ogg differ diff --git a/sounds/voice/default/va/demousefail4.ogg b/sounds/voice/default/va/demousefail4.ogg new file mode 100644 index 000000000..70a089e84 Binary files /dev/null and b/sounds/voice/default/va/demousefail4.ogg differ diff --git a/sounds/voice/default/va/demousefail5.ogg b/sounds/voice/default/va/demousefail5.ogg new file mode 100644 index 000000000..9b804de4f Binary files /dev/null and b/sounds/voice/default/va/demousefail5.ogg differ diff --git a/sounds/voice/default/va/demousefail6.ogg b/sounds/voice/default/va/demousefail6.ogg new file mode 100644 index 000000000..76369287b Binary files /dev/null and b/sounds/voice/default/va/demousefail6.ogg differ diff --git a/sounds/voice/default/va/demousefail7.ogg b/sounds/voice/default/va/demousefail7.ogg new file mode 100644 index 000000000..f82124e3f Binary files /dev/null and b/sounds/voice/default/va/demousefail7.ogg differ diff --git a/sounds/voice/default/va/demousefail8.ogg b/sounds/voice/default/va/demousefail8.ogg new file mode 100644 index 000000000..99ac62160 Binary files /dev/null and b/sounds/voice/default/va/demousefail8.ogg differ diff --git a/sounds/voice/default/va/demousefail9.ogg b/sounds/voice/default/va/demousefail9.ogg new file mode 100644 index 000000000..032dd485c Binary files /dev/null and b/sounds/voice/default/va/demousefail9.ogg differ diff --git a/sounds/voice/default/va/demousegrunt1.ogg b/sounds/voice/default/va/demousegrunt1.ogg new file mode 100644 index 000000000..5ed34dc8f Binary files /dev/null and b/sounds/voice/default/va/demousegrunt1.ogg differ diff --git a/sounds/voice/default/va/demousegrunt2.ogg b/sounds/voice/default/va/demousegrunt2.ogg new file mode 100644 index 000000000..4c48d55ff Binary files /dev/null and b/sounds/voice/default/va/demousegrunt2.ogg differ diff --git a/sounds/voice/default/va/demousegrunt3.ogg b/sounds/voice/default/va/demousegrunt3.ogg new file mode 100644 index 000000000..60b841211 Binary files /dev/null and b/sounds/voice/default/va/demousegrunt3.ogg differ diff --git a/sounds/voice/default/va/demousegrunt4.ogg b/sounds/voice/default/va/demousegrunt4.ogg new file mode 100644 index 000000000..f28a7b555 Binary files /dev/null and b/sounds/voice/default/va/demousegrunt4.ogg differ diff --git a/sounds/voice/legacy/demodeath1.ogg b/sounds/voice/legacy/demodeath1.ogg new file mode 100644 index 000000000..bc213cd59 Binary files /dev/null and b/sounds/voice/legacy/demodeath1.ogg differ diff --git a/sounds/voice/legacy/demodeath2.ogg b/sounds/voice/legacy/demodeath2.ogg new file mode 100644 index 000000000..b212e9a79 Binary files /dev/null and b/sounds/voice/legacy/demodeath2.ogg differ diff --git a/sounds/voice/legacy/demodeath3.ogg b/sounds/voice/legacy/demodeath3.ogg new file mode 100644 index 000000000..0e852002f Binary files /dev/null and b/sounds/voice/legacy/demodeath3.ogg differ diff --git a/sounds/voice/legacy/demodeath4.ogg b/sounds/voice/legacy/demodeath4.ogg new file mode 100644 index 000000000..1c1a4f872 Binary files /dev/null and b/sounds/voice/legacy/demodeath4.ogg differ diff --git a/sounds/voice/legacy/demodeath5.ogg b/sounds/voice/legacy/demodeath5.ogg new file mode 100644 index 000000000..1e1a25b45 Binary files /dev/null and b/sounds/voice/legacy/demodeath5.ogg differ diff --git a/sounds/voice/legacy/demogrunt1.ogg b/sounds/voice/legacy/demogrunt1.ogg new file mode 100644 index 000000000..bd3d818df Binary files /dev/null and b/sounds/voice/legacy/demogrunt1.ogg differ diff --git a/sounds/voice/legacy/demogrunt2.ogg b/sounds/voice/legacy/demogrunt2.ogg new file mode 100644 index 000000000..2c9412e36 Binary files /dev/null and b/sounds/voice/legacy/demogrunt2.ogg differ diff --git a/sounds/voice/legacy/demogrunt3.ogg b/sounds/voice/legacy/demogrunt3.ogg new file mode 100644 index 000000000..5e80c06af Binary files /dev/null and b/sounds/voice/legacy/demogrunt3.ogg differ diff --git a/sounds/voice/legacy/demogrunt4.ogg b/sounds/voice/legacy/demogrunt4.ogg new file mode 100644 index 000000000..03de92028 Binary files /dev/null and b/sounds/voice/legacy/demogrunt4.ogg differ diff --git a/sounds/voice/legacy/demogrunt5.ogg b/sounds/voice/legacy/demogrunt5.ogg new file mode 100644 index 000000000..a6d53a1e9 Binary files /dev/null and b/sounds/voice/legacy/demogrunt5.ogg differ diff --git a/sounds/voice/legacy/demogrunt6.ogg b/sounds/voice/legacy/demogrunt6.ogg new file mode 100644 index 000000000..06503e5d2 Binary files /dev/null and b/sounds/voice/legacy/demogrunt6.ogg differ diff --git a/sounds/voice/legacy/demohipain1.ogg b/sounds/voice/legacy/demohipain1.ogg new file mode 100644 index 000000000..8488011d7 Binary files /dev/null and b/sounds/voice/legacy/demohipain1.ogg differ diff --git a/sounds/voice/legacy/demohipain2.ogg b/sounds/voice/legacy/demohipain2.ogg new file mode 100644 index 000000000..1acdeef91 Binary files /dev/null and b/sounds/voice/legacy/demohipain2.ogg differ diff --git a/sounds/voice/legacy/demohipain3.ogg b/sounds/voice/legacy/demohipain3.ogg new file mode 100644 index 000000000..986ded96d Binary files /dev/null and b/sounds/voice/legacy/demohipain3.ogg differ diff --git a/sounds/voice/legacy/demohipain4.ogg b/sounds/voice/legacy/demohipain4.ogg new file mode 100644 index 000000000..f0f86f45e Binary files /dev/null and b/sounds/voice/legacy/demohipain4.ogg differ diff --git a/sounds/voice/legacy/demohipain5.ogg b/sounds/voice/legacy/demohipain5.ogg new file mode 100644 index 000000000..89d165c08 Binary files /dev/null and b/sounds/voice/legacy/demohipain5.ogg differ diff --git a/sounds/voice/legacy/demolopain1.ogg b/sounds/voice/legacy/demolopain1.ogg new file mode 100644 index 000000000..2387fef3e Binary files /dev/null and b/sounds/voice/legacy/demolopain1.ogg differ diff --git a/sounds/voice/legacy/demolopain2.ogg b/sounds/voice/legacy/demolopain2.ogg new file mode 100644 index 000000000..5c4cd0473 Binary files /dev/null and b/sounds/voice/legacy/demolopain2.ogg differ diff --git a/sounds/voice/legacy/demolopain3.ogg b/sounds/voice/legacy/demolopain3.ogg new file mode 100644 index 000000000..060ed5466 Binary files /dev/null and b/sounds/voice/legacy/demolopain3.ogg differ diff --git a/sounds/voice/legacy/demolopain4.ogg b/sounds/voice/legacy/demolopain4.ogg new file mode 100644 index 000000000..fdeb76303 Binary files /dev/null and b/sounds/voice/legacy/demolopain4.ogg differ diff --git a/sounds/voice/legacy/demolopain5.ogg b/sounds/voice/legacy/demolopain5.ogg new file mode 100644 index 000000000..46e7b5c00 Binary files /dev/null and b/sounds/voice/legacy/demolopain5.ogg differ diff --git a/sounds/voice/legacy/demopain1.ogg b/sounds/voice/legacy/demopain1.ogg new file mode 100644 index 000000000..e7cc6f7da Binary files /dev/null and b/sounds/voice/legacy/demopain1.ogg differ diff --git a/sounds/voice/legacy/demopain2.ogg b/sounds/voice/legacy/demopain2.ogg new file mode 100644 index 000000000..d5fcfa9b6 Binary files /dev/null and b/sounds/voice/legacy/demopain2.ogg differ diff --git a/sounds/voice/legacy/demopain3.ogg b/sounds/voice/legacy/demopain3.ogg new file mode 100644 index 000000000..6dfc9a717 Binary files /dev/null and b/sounds/voice/legacy/demopain3.ogg differ diff --git a/sounds/voice/legacy/demopain4.ogg b/sounds/voice/legacy/demopain4.ogg new file mode 100644 index 000000000..cb243b07a Binary files /dev/null and b/sounds/voice/legacy/demopain4.ogg differ diff --git a/sounds/voice/legacy/demopain5.ogg b/sounds/voice/legacy/demopain5.ogg new file mode 100644 index 000000000..2173828ae Binary files /dev/null and b/sounds/voice/legacy/demopain5.ogg differ diff --git a/sounds/voice/legacy/demopain6.ogg b/sounds/voice/legacy/demopain6.ogg new file mode 100644 index 000000000..554703a52 Binary files /dev/null and b/sounds/voice/legacy/demopain6.ogg differ diff --git a/sounds/voice/default/demofightstart1.ogg b/sounds/voice/legacy/va/demofightstart1.ogg similarity index 100% rename from sounds/voice/default/demofightstart1.ogg rename to sounds/voice/legacy/va/demofightstart1.ogg diff --git a/sounds/voice/default/demofightstart10.ogg b/sounds/voice/legacy/va/demofightstart10.ogg similarity index 100% rename from sounds/voice/default/demofightstart10.ogg rename to sounds/voice/legacy/va/demofightstart10.ogg diff --git a/sounds/voice/default/demofightstart11.ogg b/sounds/voice/legacy/va/demofightstart11.ogg similarity index 100% rename from sounds/voice/default/demofightstart11.ogg rename to sounds/voice/legacy/va/demofightstart11.ogg diff --git a/sounds/voice/default/demofightstart12.ogg b/sounds/voice/legacy/va/demofightstart12.ogg similarity index 100% rename from sounds/voice/default/demofightstart12.ogg rename to sounds/voice/legacy/va/demofightstart12.ogg diff --git a/sounds/voice/default/demofightstart13.ogg b/sounds/voice/legacy/va/demofightstart13.ogg similarity index 100% rename from sounds/voice/default/demofightstart13.ogg rename to sounds/voice/legacy/va/demofightstart13.ogg diff --git a/sounds/voice/default/demofightstart14.ogg b/sounds/voice/legacy/va/demofightstart14.ogg similarity index 100% rename from sounds/voice/default/demofightstart14.ogg rename to sounds/voice/legacy/va/demofightstart14.ogg diff --git a/sounds/voice/default/demofightstart15.ogg b/sounds/voice/legacy/va/demofightstart15.ogg similarity index 100% rename from sounds/voice/default/demofightstart15.ogg rename to sounds/voice/legacy/va/demofightstart15.ogg diff --git a/sounds/voice/default/demofightstart16.ogg b/sounds/voice/legacy/va/demofightstart16.ogg similarity index 100% rename from sounds/voice/default/demofightstart16.ogg rename to sounds/voice/legacy/va/demofightstart16.ogg diff --git a/sounds/voice/default/demofightstart17.ogg b/sounds/voice/legacy/va/demofightstart17.ogg similarity index 100% rename from sounds/voice/default/demofightstart17.ogg rename to sounds/voice/legacy/va/demofightstart17.ogg diff --git a/sounds/voice/default/demofightstart18.ogg b/sounds/voice/legacy/va/demofightstart18.ogg similarity index 100% rename from sounds/voice/default/demofightstart18.ogg rename to sounds/voice/legacy/va/demofightstart18.ogg diff --git a/sounds/voice/default/demofightstart19.ogg b/sounds/voice/legacy/va/demofightstart19.ogg similarity index 100% rename from sounds/voice/default/demofightstart19.ogg rename to sounds/voice/legacy/va/demofightstart19.ogg diff --git a/sounds/voice/default/demofightstart2.ogg b/sounds/voice/legacy/va/demofightstart2.ogg similarity index 100% rename from sounds/voice/default/demofightstart2.ogg rename to sounds/voice/legacy/va/demofightstart2.ogg diff --git a/sounds/voice/default/demofightstart20.ogg b/sounds/voice/legacy/va/demofightstart20.ogg similarity index 100% rename from sounds/voice/default/demofightstart20.ogg rename to sounds/voice/legacy/va/demofightstart20.ogg diff --git a/sounds/voice/default/demofightstart21.ogg b/sounds/voice/legacy/va/demofightstart21.ogg similarity index 100% rename from sounds/voice/default/demofightstart21.ogg rename to sounds/voice/legacy/va/demofightstart21.ogg diff --git a/sounds/voice/default/demofightstart3.ogg b/sounds/voice/legacy/va/demofightstart3.ogg similarity index 100% rename from sounds/voice/default/demofightstart3.ogg rename to sounds/voice/legacy/va/demofightstart3.ogg diff --git a/sounds/voice/default/demofightstart4.ogg b/sounds/voice/legacy/va/demofightstart4.ogg similarity index 100% rename from sounds/voice/default/demofightstart4.ogg rename to sounds/voice/legacy/va/demofightstart4.ogg diff --git a/sounds/voice/default/demofightstart5.ogg b/sounds/voice/legacy/va/demofightstart5.ogg similarity index 100% rename from sounds/voice/default/demofightstart5.ogg rename to sounds/voice/legacy/va/demofightstart5.ogg diff --git a/sounds/voice/default/demofightstart6.ogg b/sounds/voice/legacy/va/demofightstart6.ogg similarity index 100% rename from sounds/voice/default/demofightstart6.ogg rename to sounds/voice/legacy/va/demofightstart6.ogg diff --git a/sounds/voice/default/demofightstart7.ogg b/sounds/voice/legacy/va/demofightstart7.ogg similarity index 100% rename from sounds/voice/default/demofightstart7.ogg rename to sounds/voice/legacy/va/demofightstart7.ogg diff --git a/sounds/voice/default/demofightstart8.ogg b/sounds/voice/legacy/va/demofightstart8.ogg similarity index 100% rename from sounds/voice/default/demofightstart8.ogg rename to sounds/voice/legacy/va/demofightstart8.ogg diff --git a/sounds/voice/default/demofightstart9.ogg b/sounds/voice/legacy/va/demofightstart9.ogg similarity index 100% rename from sounds/voice/default/demofightstart9.ogg rename to sounds/voice/legacy/va/demofightstart9.ogg diff --git a/sounds/voice/default/demofindsecret1.ogg b/sounds/voice/legacy/va/demofindsecret1.ogg similarity index 100% rename from sounds/voice/default/demofindsecret1.ogg rename to sounds/voice/legacy/va/demofindsecret1.ogg diff --git a/sounds/voice/default/demofindsecret10.ogg b/sounds/voice/legacy/va/demofindsecret10.ogg similarity index 100% rename from sounds/voice/default/demofindsecret10.ogg rename to sounds/voice/legacy/va/demofindsecret10.ogg diff --git a/sounds/voice/default/demofindsecret11.ogg b/sounds/voice/legacy/va/demofindsecret11.ogg similarity index 100% rename from sounds/voice/default/demofindsecret11.ogg rename to sounds/voice/legacy/va/demofindsecret11.ogg diff --git a/sounds/voice/default/demofindsecret12.ogg b/sounds/voice/legacy/va/demofindsecret12.ogg similarity index 100% rename from sounds/voice/default/demofindsecret12.ogg rename to sounds/voice/legacy/va/demofindsecret12.ogg diff --git a/sounds/voice/default/demofindsecret13.ogg b/sounds/voice/legacy/va/demofindsecret13.ogg similarity index 100% rename from sounds/voice/default/demofindsecret13.ogg rename to sounds/voice/legacy/va/demofindsecret13.ogg diff --git a/sounds/voice/default/demofindsecret2.ogg b/sounds/voice/legacy/va/demofindsecret2.ogg similarity index 100% rename from sounds/voice/default/demofindsecret2.ogg rename to sounds/voice/legacy/va/demofindsecret2.ogg diff --git a/sounds/voice/default/demofindsecret3.ogg b/sounds/voice/legacy/va/demofindsecret3.ogg similarity index 100% rename from sounds/voice/default/demofindsecret3.ogg rename to sounds/voice/legacy/va/demofindsecret3.ogg diff --git a/sounds/voice/default/demofindsecret4.ogg b/sounds/voice/legacy/va/demofindsecret4.ogg similarity index 100% rename from sounds/voice/default/demofindsecret4.ogg rename to sounds/voice/legacy/va/demofindsecret4.ogg diff --git a/sounds/voice/default/demofindsecret5.ogg b/sounds/voice/legacy/va/demofindsecret5.ogg similarity index 100% rename from sounds/voice/default/demofindsecret5.ogg rename to sounds/voice/legacy/va/demofindsecret5.ogg diff --git a/sounds/voice/default/demofindsecret6.ogg b/sounds/voice/legacy/va/demofindsecret6.ogg similarity index 100% rename from sounds/voice/default/demofindsecret6.ogg rename to sounds/voice/legacy/va/demofindsecret6.ogg diff --git a/sounds/voice/default/demofindsecret7.ogg b/sounds/voice/legacy/va/demofindsecret7.ogg similarity index 100% rename from sounds/voice/default/demofindsecret7.ogg rename to sounds/voice/legacy/va/demofindsecret7.ogg diff --git a/sounds/voice/default/demofindsecret8.ogg b/sounds/voice/legacy/va/demofindsecret8.ogg similarity index 100% rename from sounds/voice/default/demofindsecret8.ogg rename to sounds/voice/legacy/va/demofindsecret8.ogg diff --git a/sounds/voice/default/demofindsecret9.ogg b/sounds/voice/legacy/va/demofindsecret9.ogg similarity index 100% rename from sounds/voice/default/demofindsecret9.ogg rename to sounds/voice/legacy/va/demofindsecret9.ogg diff --git a/sounds/voice/default/demofriendhit1.ogg b/sounds/voice/legacy/va/demofriendhit1.ogg similarity index 100% rename from sounds/voice/default/demofriendhit1.ogg rename to sounds/voice/legacy/va/demofriendhit1.ogg diff --git a/sounds/voice/default/demofriendhit2.ogg b/sounds/voice/legacy/va/demofriendhit2.ogg similarity index 100% rename from sounds/voice/default/demofriendhit2.ogg rename to sounds/voice/legacy/va/demofriendhit2.ogg diff --git a/sounds/voice/default/demofriendhit3.ogg b/sounds/voice/legacy/va/demofriendhit3.ogg similarity index 100% rename from sounds/voice/default/demofriendhit3.ogg rename to sounds/voice/legacy/va/demofriendhit3.ogg diff --git a/sounds/voice/default/demofriendhit4.ogg b/sounds/voice/legacy/va/demofriendhit4.ogg similarity index 100% rename from sounds/voice/default/demofriendhit4.ogg rename to sounds/voice/legacy/va/demofriendhit4.ogg diff --git a/sounds/voice/default/demofriendhit5.ogg b/sounds/voice/legacy/va/demofriendhit5.ogg similarity index 100% rename from sounds/voice/default/demofriendhit5.ogg rename to sounds/voice/legacy/va/demofriendhit5.ogg diff --git a/sounds/voice/default/demofriendhit6.ogg b/sounds/voice/legacy/va/demofriendhit6.ogg similarity index 100% rename from sounds/voice/default/demofriendhit6.ogg rename to sounds/voice/legacy/va/demofriendhit6.ogg diff --git a/sounds/voice/default/demofriendhit7.ogg b/sounds/voice/legacy/va/demofriendhit7.ogg similarity index 100% rename from sounds/voice/default/demofriendhit7.ogg rename to sounds/voice/legacy/va/demofriendhit7.ogg diff --git a/sounds/voice/default/demofriendkill1.ogg b/sounds/voice/legacy/va/demofriendkill1.ogg similarity index 100% rename from sounds/voice/default/demofriendkill1.ogg rename to sounds/voice/legacy/va/demofriendkill1.ogg diff --git a/sounds/voice/default/demofriendkill2.ogg b/sounds/voice/legacy/va/demofriendkill2.ogg similarity index 100% rename from sounds/voice/default/demofriendkill2.ogg rename to sounds/voice/legacy/va/demofriendkill2.ogg diff --git a/sounds/voice/default/demofriendkill3.ogg b/sounds/voice/legacy/va/demofriendkill3.ogg similarity index 100% rename from sounds/voice/default/demofriendkill3.ogg rename to sounds/voice/legacy/va/demofriendkill3.ogg diff --git a/sounds/voice/default/demofriendkill4.ogg b/sounds/voice/legacy/va/demofriendkill4.ogg similarity index 100% rename from sounds/voice/default/demofriendkill4.ogg rename to sounds/voice/legacy/va/demofriendkill4.ogg diff --git a/sounds/voice/default/demogethit1.ogg b/sounds/voice/legacy/va/demogethit1.ogg similarity index 100% rename from sounds/voice/default/demogethit1.ogg rename to sounds/voice/legacy/va/demogethit1.ogg diff --git a/sounds/voice/default/demogethit10.ogg b/sounds/voice/legacy/va/demogethit10.ogg similarity index 100% rename from sounds/voice/default/demogethit10.ogg rename to sounds/voice/legacy/va/demogethit10.ogg diff --git a/sounds/voice/default/demogethit11.ogg b/sounds/voice/legacy/va/demogethit11.ogg similarity index 100% rename from sounds/voice/default/demogethit11.ogg rename to sounds/voice/legacy/va/demogethit11.ogg diff --git a/sounds/voice/default/demogethit12.ogg b/sounds/voice/legacy/va/demogethit12.ogg similarity index 100% rename from sounds/voice/default/demogethit12.ogg rename to sounds/voice/legacy/va/demogethit12.ogg diff --git a/sounds/voice/default/demogethit13.ogg b/sounds/voice/legacy/va/demogethit13.ogg similarity index 100% rename from sounds/voice/default/demogethit13.ogg rename to sounds/voice/legacy/va/demogethit13.ogg diff --git a/sounds/voice/default/demogethit14.ogg b/sounds/voice/legacy/va/demogethit14.ogg similarity index 100% rename from sounds/voice/default/demogethit14.ogg rename to sounds/voice/legacy/va/demogethit14.ogg diff --git a/sounds/voice/default/demogethit15.ogg b/sounds/voice/legacy/va/demogethit15.ogg similarity index 100% rename from sounds/voice/default/demogethit15.ogg rename to sounds/voice/legacy/va/demogethit15.ogg diff --git a/sounds/voice/default/demogethit16.ogg b/sounds/voice/legacy/va/demogethit16.ogg similarity index 100% rename from sounds/voice/default/demogethit16.ogg rename to sounds/voice/legacy/va/demogethit16.ogg diff --git a/sounds/voice/default/demogethit17.ogg b/sounds/voice/legacy/va/demogethit17.ogg similarity index 100% rename from sounds/voice/default/demogethit17.ogg rename to sounds/voice/legacy/va/demogethit17.ogg diff --git a/sounds/voice/default/demogethit18.ogg b/sounds/voice/legacy/va/demogethit18.ogg similarity index 100% rename from sounds/voice/default/demogethit18.ogg rename to sounds/voice/legacy/va/demogethit18.ogg diff --git a/sounds/voice/default/demogethit19.ogg b/sounds/voice/legacy/va/demogethit19.ogg similarity index 100% rename from sounds/voice/default/demogethit19.ogg rename to sounds/voice/legacy/va/demogethit19.ogg diff --git a/sounds/voice/default/demogethit2.ogg b/sounds/voice/legacy/va/demogethit2.ogg similarity index 100% rename from sounds/voice/default/demogethit2.ogg rename to sounds/voice/legacy/va/demogethit2.ogg diff --git a/sounds/voice/default/demogethit3.ogg b/sounds/voice/legacy/va/demogethit3.ogg similarity index 100% rename from sounds/voice/default/demogethit3.ogg rename to sounds/voice/legacy/va/demogethit3.ogg diff --git a/sounds/voice/default/demogethit4.ogg b/sounds/voice/legacy/va/demogethit4.ogg similarity index 100% rename from sounds/voice/default/demogethit4.ogg rename to sounds/voice/legacy/va/demogethit4.ogg diff --git a/sounds/voice/default/demogethit5.ogg b/sounds/voice/legacy/va/demogethit5.ogg similarity index 100% rename from sounds/voice/default/demogethit5.ogg rename to sounds/voice/legacy/va/demogethit5.ogg diff --git a/sounds/voice/default/demogethit6.ogg b/sounds/voice/legacy/va/demogethit6.ogg similarity index 100% rename from sounds/voice/default/demogethit6.ogg rename to sounds/voice/legacy/va/demogethit6.ogg diff --git a/sounds/voice/default/demogethit7.ogg b/sounds/voice/legacy/va/demogethit7.ogg similarity index 100% rename from sounds/voice/default/demogethit7.ogg rename to sounds/voice/legacy/va/demogethit7.ogg diff --git a/sounds/voice/default/demogethit8.ogg b/sounds/voice/legacy/va/demogethit8.ogg similarity index 100% rename from sounds/voice/default/demogethit8.ogg rename to sounds/voice/legacy/va/demogethit8.ogg diff --git a/sounds/voice/default/demogethit9.ogg b/sounds/voice/legacy/va/demogethit9.ogg similarity index 100% rename from sounds/voice/default/demogethit9.ogg rename to sounds/voice/legacy/va/demogethit9.ogg diff --git a/sounds/voice/default/demogetweapon1.ogg b/sounds/voice/legacy/va/demogetweapon1.ogg similarity index 100% rename from sounds/voice/default/demogetweapon1.ogg rename to sounds/voice/legacy/va/demogetweapon1.ogg diff --git a/sounds/voice/default/demogetweapon10.ogg b/sounds/voice/legacy/va/demogetweapon10.ogg similarity index 100% rename from sounds/voice/default/demogetweapon10.ogg rename to sounds/voice/legacy/va/demogetweapon10.ogg diff --git a/sounds/voice/default/demogetweapon11.ogg b/sounds/voice/legacy/va/demogetweapon11.ogg similarity index 100% rename from sounds/voice/default/demogetweapon11.ogg rename to sounds/voice/legacy/va/demogetweapon11.ogg diff --git a/sounds/voice/default/demogetweapon12.ogg b/sounds/voice/legacy/va/demogetweapon12.ogg similarity index 100% rename from sounds/voice/default/demogetweapon12.ogg rename to sounds/voice/legacy/va/demogetweapon12.ogg diff --git a/sounds/voice/default/demogetweapon13.ogg b/sounds/voice/legacy/va/demogetweapon13.ogg similarity index 100% rename from sounds/voice/default/demogetweapon13.ogg rename to sounds/voice/legacy/va/demogetweapon13.ogg diff --git a/sounds/voice/default/demogetweapon2.ogg b/sounds/voice/legacy/va/demogetweapon2.ogg similarity index 100% rename from sounds/voice/default/demogetweapon2.ogg rename to sounds/voice/legacy/va/demogetweapon2.ogg diff --git a/sounds/voice/default/demogetweapon3.ogg b/sounds/voice/legacy/va/demogetweapon3.ogg similarity index 100% rename from sounds/voice/default/demogetweapon3.ogg rename to sounds/voice/legacy/va/demogetweapon3.ogg diff --git a/sounds/voice/default/demogetweapon4.ogg b/sounds/voice/legacy/va/demogetweapon4.ogg similarity index 100% rename from sounds/voice/default/demogetweapon4.ogg rename to sounds/voice/legacy/va/demogetweapon4.ogg diff --git a/sounds/voice/default/demogetweapon5.ogg b/sounds/voice/legacy/va/demogetweapon5.ogg similarity index 100% rename from sounds/voice/default/demogetweapon5.ogg rename to sounds/voice/legacy/va/demogetweapon5.ogg diff --git a/sounds/voice/default/demogetweapon6.ogg b/sounds/voice/legacy/va/demogetweapon6.ogg similarity index 100% rename from sounds/voice/default/demogetweapon6.ogg rename to sounds/voice/legacy/va/demogetweapon6.ogg diff --git a/sounds/voice/default/demogetweapon7.ogg b/sounds/voice/legacy/va/demogetweapon7.ogg similarity index 100% rename from sounds/voice/default/demogetweapon7.ogg rename to sounds/voice/legacy/va/demogetweapon7.ogg diff --git a/sounds/voice/default/demogetweapon8.ogg b/sounds/voice/legacy/va/demogetweapon8.ogg similarity index 100% rename from sounds/voice/default/demogetweapon8.ogg rename to sounds/voice/legacy/va/demogetweapon8.ogg diff --git a/sounds/voice/default/demogetweapon9.ogg b/sounds/voice/legacy/va/demogetweapon9.ogg similarity index 100% rename from sounds/voice/default/demogetweapon9.ogg rename to sounds/voice/legacy/va/demogetweapon9.ogg diff --git a/sounds/voice/default/demogreet1.ogg b/sounds/voice/legacy/va/demogreet1.ogg similarity index 100% rename from sounds/voice/default/demogreet1.ogg rename to sounds/voice/legacy/va/demogreet1.ogg diff --git a/sounds/voice/default/demogreet2.ogg b/sounds/voice/legacy/va/demogreet2.ogg similarity index 100% rename from sounds/voice/default/demogreet2.ogg rename to sounds/voice/legacy/va/demogreet2.ogg diff --git a/sounds/voice/default/demogreet3.ogg b/sounds/voice/legacy/va/demogreet3.ogg similarity index 100% rename from sounds/voice/default/demogreet3.ogg rename to sounds/voice/legacy/va/demogreet3.ogg diff --git a/sounds/voice/default/demogreet4.ogg b/sounds/voice/legacy/va/demogreet4.ogg similarity index 100% rename from sounds/voice/default/demogreet4.ogg rename to sounds/voice/legacy/va/demogreet4.ogg diff --git a/sounds/voice/default/demogreet5.ogg b/sounds/voice/legacy/va/demogreet5.ogg similarity index 100% rename from sounds/voice/default/demogreet5.ogg rename to sounds/voice/legacy/va/demogreet5.ogg diff --git a/sounds/voice/default/demogreet6.ogg b/sounds/voice/legacy/va/demogreet6.ogg similarity index 100% rename from sounds/voice/default/demogreet6.ogg rename to sounds/voice/legacy/va/demogreet6.ogg diff --git a/sounds/voice/default/demogreet7.ogg b/sounds/voice/legacy/va/demogreet7.ogg similarity index 100% rename from sounds/voice/default/demogreet7.ogg rename to sounds/voice/legacy/va/demogreet7.ogg diff --git a/sounds/voice/default/demohitfriend1.ogg b/sounds/voice/legacy/va/demohitfriend1.ogg similarity index 100% rename from sounds/voice/default/demohitfriend1.ogg rename to sounds/voice/legacy/va/demohitfriend1.ogg diff --git a/sounds/voice/default/demohitfriend2.ogg b/sounds/voice/legacy/va/demohitfriend2.ogg similarity index 100% rename from sounds/voice/default/demohitfriend2.ogg rename to sounds/voice/legacy/va/demohitfriend2.ogg diff --git a/sounds/voice/default/demohitfriend3.ogg b/sounds/voice/legacy/va/demohitfriend3.ogg similarity index 100% rename from sounds/voice/default/demohitfriend3.ogg rename to sounds/voice/legacy/va/demohitfriend3.ogg diff --git a/sounds/voice/default/demojammed1.ogg b/sounds/voice/legacy/va/demojammed1.ogg similarity index 100% rename from sounds/voice/default/demojammed1.ogg rename to sounds/voice/legacy/va/demojammed1.ogg diff --git a/sounds/voice/default/demojammed2.ogg b/sounds/voice/legacy/va/demojammed2.ogg similarity index 100% rename from sounds/voice/default/demojammed2.ogg rename to sounds/voice/legacy/va/demojammed2.ogg diff --git a/sounds/voice/default/demojammed3.ogg b/sounds/voice/legacy/va/demojammed3.ogg similarity index 100% rename from sounds/voice/default/demojammed3.ogg rename to sounds/voice/legacy/va/demojammed3.ogg diff --git a/sounds/voice/default/demojammed4.ogg b/sounds/voice/legacy/va/demojammed4.ogg similarity index 100% rename from sounds/voice/default/demojammed4.ogg rename to sounds/voice/legacy/va/demojammed4.ogg diff --git a/sounds/voice/default/demokoraxblood1.ogg b/sounds/voice/legacy/va/demokoraxblood1.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood1.ogg rename to sounds/voice/legacy/va/demokoraxblood1.ogg diff --git a/sounds/voice/default/demokoraxblood10.ogg b/sounds/voice/legacy/va/demokoraxblood10.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood10.ogg rename to sounds/voice/legacy/va/demokoraxblood10.ogg diff --git a/sounds/voice/default/demokoraxblood11.ogg b/sounds/voice/legacy/va/demokoraxblood11.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood11.ogg rename to sounds/voice/legacy/va/demokoraxblood11.ogg diff --git a/sounds/voice/default/demokoraxblood12.ogg b/sounds/voice/legacy/va/demokoraxblood12.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood12.ogg rename to sounds/voice/legacy/va/demokoraxblood12.ogg diff --git a/sounds/voice/default/demokoraxblood13.ogg b/sounds/voice/legacy/va/demokoraxblood13.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood13.ogg rename to sounds/voice/legacy/va/demokoraxblood13.ogg diff --git a/sounds/voice/default/demokoraxblood2.ogg b/sounds/voice/legacy/va/demokoraxblood2.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood2.ogg rename to sounds/voice/legacy/va/demokoraxblood2.ogg diff --git a/sounds/voice/default/demokoraxblood3.ogg b/sounds/voice/legacy/va/demokoraxblood3.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood3.ogg rename to sounds/voice/legacy/va/demokoraxblood3.ogg diff --git a/sounds/voice/default/demokoraxblood4.ogg b/sounds/voice/legacy/va/demokoraxblood4.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood4.ogg rename to sounds/voice/legacy/va/demokoraxblood4.ogg diff --git a/sounds/voice/default/demokoraxblood5.ogg b/sounds/voice/legacy/va/demokoraxblood5.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood5.ogg rename to sounds/voice/legacy/va/demokoraxblood5.ogg diff --git a/sounds/voice/default/demokoraxblood6.ogg b/sounds/voice/legacy/va/demokoraxblood6.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood6.ogg rename to sounds/voice/legacy/va/demokoraxblood6.ogg diff --git a/sounds/voice/default/demokoraxblood7.ogg b/sounds/voice/legacy/va/demokoraxblood7.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood7.ogg rename to sounds/voice/legacy/va/demokoraxblood7.ogg diff --git a/sounds/voice/default/demokoraxblood8.ogg b/sounds/voice/legacy/va/demokoraxblood8.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood8.ogg rename to sounds/voice/legacy/va/demokoraxblood8.ogg diff --git a/sounds/voice/default/demokoraxblood9.ogg b/sounds/voice/legacy/va/demokoraxblood9.ogg similarity index 100% rename from sounds/voice/default/demokoraxblood9.ogg rename to sounds/voice/legacy/va/demokoraxblood9.ogg diff --git a/sounds/voice/default/demokoraxgame1.ogg b/sounds/voice/legacy/va/demokoraxgame1.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame1.ogg rename to sounds/voice/legacy/va/demokoraxgame1.ogg diff --git a/sounds/voice/default/demokoraxgame10.ogg b/sounds/voice/legacy/va/demokoraxgame10.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame10.ogg rename to sounds/voice/legacy/va/demokoraxgame10.ogg diff --git a/sounds/voice/default/demokoraxgame11.ogg b/sounds/voice/legacy/va/demokoraxgame11.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame11.ogg rename to sounds/voice/legacy/va/demokoraxgame11.ogg diff --git a/sounds/voice/default/demokoraxgame12.ogg b/sounds/voice/legacy/va/demokoraxgame12.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame12.ogg rename to sounds/voice/legacy/va/demokoraxgame12.ogg diff --git a/sounds/voice/default/demokoraxgame13.ogg b/sounds/voice/legacy/va/demokoraxgame13.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame13.ogg rename to sounds/voice/legacy/va/demokoraxgame13.ogg diff --git a/sounds/voice/default/demokoraxgame14.ogg b/sounds/voice/legacy/va/demokoraxgame14.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame14.ogg rename to sounds/voice/legacy/va/demokoraxgame14.ogg diff --git a/sounds/voice/default/demokoraxgame2.ogg b/sounds/voice/legacy/va/demokoraxgame2.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame2.ogg rename to sounds/voice/legacy/va/demokoraxgame2.ogg diff --git a/sounds/voice/default/demokoraxgame3.ogg b/sounds/voice/legacy/va/demokoraxgame3.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame3.ogg rename to sounds/voice/legacy/va/demokoraxgame3.ogg diff --git a/sounds/voice/default/demokoraxgame4.ogg b/sounds/voice/legacy/va/demokoraxgame4.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame4.ogg rename to sounds/voice/legacy/va/demokoraxgame4.ogg diff --git a/sounds/voice/default/demokoraxgame5.ogg b/sounds/voice/legacy/va/demokoraxgame5.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame5.ogg rename to sounds/voice/legacy/va/demokoraxgame5.ogg diff --git a/sounds/voice/default/demokoraxgame6.ogg b/sounds/voice/legacy/va/demokoraxgame6.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame6.ogg rename to sounds/voice/legacy/va/demokoraxgame6.ogg diff --git a/sounds/voice/default/demokoraxgame7.ogg b/sounds/voice/legacy/va/demokoraxgame7.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame7.ogg rename to sounds/voice/legacy/va/demokoraxgame7.ogg diff --git a/sounds/voice/default/demokoraxgame8.ogg b/sounds/voice/legacy/va/demokoraxgame8.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame8.ogg rename to sounds/voice/legacy/va/demokoraxgame8.ogg diff --git a/sounds/voice/default/demokoraxgame9.ogg b/sounds/voice/legacy/va/demokoraxgame9.ogg similarity index 100% rename from sounds/voice/default/demokoraxgame9.ogg rename to sounds/voice/legacy/va/demokoraxgame9.ogg diff --git a/sounds/voice/default/demokoraxgreet1.ogg b/sounds/voice/legacy/va/demokoraxgreet1.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet1.ogg rename to sounds/voice/legacy/va/demokoraxgreet1.ogg diff --git a/sounds/voice/default/demokoraxgreet10.ogg b/sounds/voice/legacy/va/demokoraxgreet10.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet10.ogg rename to sounds/voice/legacy/va/demokoraxgreet10.ogg diff --git a/sounds/voice/default/demokoraxgreet11.ogg b/sounds/voice/legacy/va/demokoraxgreet11.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet11.ogg rename to sounds/voice/legacy/va/demokoraxgreet11.ogg diff --git a/sounds/voice/default/demokoraxgreet12.ogg b/sounds/voice/legacy/va/demokoraxgreet12.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet12.ogg rename to sounds/voice/legacy/va/demokoraxgreet12.ogg diff --git a/sounds/voice/default/demokoraxgreet13.ogg b/sounds/voice/legacy/va/demokoraxgreet13.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet13.ogg rename to sounds/voice/legacy/va/demokoraxgreet13.ogg diff --git a/sounds/voice/default/demokoraxgreet2.ogg b/sounds/voice/legacy/va/demokoraxgreet2.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet2.ogg rename to sounds/voice/legacy/va/demokoraxgreet2.ogg diff --git a/sounds/voice/default/demokoraxgreet3.ogg b/sounds/voice/legacy/va/demokoraxgreet3.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet3.ogg rename to sounds/voice/legacy/va/demokoraxgreet3.ogg diff --git a/sounds/voice/default/demokoraxgreet4.ogg b/sounds/voice/legacy/va/demokoraxgreet4.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet4.ogg rename to sounds/voice/legacy/va/demokoraxgreet4.ogg diff --git a/sounds/voice/default/demokoraxgreet5.ogg b/sounds/voice/legacy/va/demokoraxgreet5.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet5.ogg rename to sounds/voice/legacy/va/demokoraxgreet5.ogg diff --git a/sounds/voice/default/demokoraxgreet6.ogg b/sounds/voice/legacy/va/demokoraxgreet6.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet6.ogg rename to sounds/voice/legacy/va/demokoraxgreet6.ogg diff --git a/sounds/voice/default/demokoraxgreet7.ogg b/sounds/voice/legacy/va/demokoraxgreet7.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet7.ogg rename to sounds/voice/legacy/va/demokoraxgreet7.ogg diff --git a/sounds/voice/default/demokoraxgreet8.ogg b/sounds/voice/legacy/va/demokoraxgreet8.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet8.ogg rename to sounds/voice/legacy/va/demokoraxgreet8.ogg diff --git a/sounds/voice/default/demokoraxgreet9.ogg b/sounds/voice/legacy/va/demokoraxgreet9.ogg similarity index 100% rename from sounds/voice/default/demokoraxgreet9.ogg rename to sounds/voice/legacy/va/demokoraxgreet9.ogg diff --git a/sounds/voice/default/demokoraxmasters1.ogg b/sounds/voice/legacy/va/demokoraxmasters1.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters1.ogg rename to sounds/voice/legacy/va/demokoraxmasters1.ogg diff --git a/sounds/voice/default/demokoraxmasters2.ogg b/sounds/voice/legacy/va/demokoraxmasters2.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters2.ogg rename to sounds/voice/legacy/va/demokoraxmasters2.ogg diff --git a/sounds/voice/default/demokoraxmasters3.ogg b/sounds/voice/legacy/va/demokoraxmasters3.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters3.ogg rename to sounds/voice/legacy/va/demokoraxmasters3.ogg diff --git a/sounds/voice/default/demokoraxmasters4.ogg b/sounds/voice/legacy/va/demokoraxmasters4.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters4.ogg rename to sounds/voice/legacy/va/demokoraxmasters4.ogg diff --git a/sounds/voice/default/demokoraxmasters5.ogg b/sounds/voice/legacy/va/demokoraxmasters5.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters5.ogg rename to sounds/voice/legacy/va/demokoraxmasters5.ogg diff --git a/sounds/voice/default/demokoraxmasters6.ogg b/sounds/voice/legacy/va/demokoraxmasters6.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters6.ogg rename to sounds/voice/legacy/va/demokoraxmasters6.ogg diff --git a/sounds/voice/default/demokoraxmasters7.ogg b/sounds/voice/legacy/va/demokoraxmasters7.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters7.ogg rename to sounds/voice/legacy/va/demokoraxmasters7.ogg diff --git a/sounds/voice/default/demokoraxmasters8.ogg b/sounds/voice/legacy/va/demokoraxmasters8.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters8.ogg rename to sounds/voice/legacy/va/demokoraxmasters8.ogg diff --git a/sounds/voice/default/demokoraxmasters9.ogg b/sounds/voice/legacy/va/demokoraxmasters9.ogg similarity index 100% rename from sounds/voice/default/demokoraxmasters9.ogg rename to sounds/voice/legacy/va/demokoraxmasters9.ogg diff --git a/sounds/voice/default/demokoraxworship1.ogg b/sounds/voice/legacy/va/demokoraxworship1.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship1.ogg rename to sounds/voice/legacy/va/demokoraxworship1.ogg diff --git a/sounds/voice/default/demokoraxworship10.ogg b/sounds/voice/legacy/va/demokoraxworship10.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship10.ogg rename to sounds/voice/legacy/va/demokoraxworship10.ogg diff --git a/sounds/voice/default/demokoraxworship11.ogg b/sounds/voice/legacy/va/demokoraxworship11.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship11.ogg rename to sounds/voice/legacy/va/demokoraxworship11.ogg diff --git a/sounds/voice/default/demokoraxworship2.ogg b/sounds/voice/legacy/va/demokoraxworship2.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship2.ogg rename to sounds/voice/legacy/va/demokoraxworship2.ogg diff --git a/sounds/voice/default/demokoraxworship3.ogg b/sounds/voice/legacy/va/demokoraxworship3.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship3.ogg rename to sounds/voice/legacy/va/demokoraxworship3.ogg diff --git a/sounds/voice/default/demokoraxworship4.ogg b/sounds/voice/legacy/va/demokoraxworship4.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship4.ogg rename to sounds/voice/legacy/va/demokoraxworship4.ogg diff --git a/sounds/voice/default/demokoraxworship5.ogg b/sounds/voice/legacy/va/demokoraxworship5.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship5.ogg rename to sounds/voice/legacy/va/demokoraxworship5.ogg diff --git a/sounds/voice/default/demokoraxworship6.ogg b/sounds/voice/legacy/va/demokoraxworship6.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship6.ogg rename to sounds/voice/legacy/va/demokoraxworship6.ogg diff --git a/sounds/voice/default/demokoraxworship7.ogg b/sounds/voice/legacy/va/demokoraxworship7.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship7.ogg rename to sounds/voice/legacy/va/demokoraxworship7.ogg diff --git a/sounds/voice/default/demokoraxworship8.ogg b/sounds/voice/legacy/va/demokoraxworship8.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship8.ogg rename to sounds/voice/legacy/va/demokoraxworship8.ogg diff --git a/sounds/voice/default/demokoraxworship9.ogg b/sounds/voice/legacy/va/demokoraxworship9.ogg similarity index 100% rename from sounds/voice/default/demokoraxworship9.ogg rename to sounds/voice/legacy/va/demokoraxworship9.ogg diff --git a/sounds/voice/default/demolocked1.ogg b/sounds/voice/legacy/va/demolocked1.ogg similarity index 100% rename from sounds/voice/default/demolocked1.ogg rename to sounds/voice/legacy/va/demolocked1.ogg diff --git a/sounds/voice/default/demolocked2.ogg b/sounds/voice/legacy/va/demolocked2.ogg similarity index 100% rename from sounds/voice/default/demolocked2.ogg rename to sounds/voice/legacy/va/demolocked2.ogg diff --git a/sounds/voice/default/demolocked3.ogg b/sounds/voice/legacy/va/demolocked3.ogg similarity index 100% rename from sounds/voice/default/demolocked3.ogg rename to sounds/voice/legacy/va/demolocked3.ogg diff --git a/sounds/voice/default/demolocked4.ogg b/sounds/voice/legacy/va/demolocked4.ogg similarity index 100% rename from sounds/voice/default/demolocked4.ogg rename to sounds/voice/legacy/va/demolocked4.ogg diff --git a/sounds/voice/default/demomapstart1.ogg b/sounds/voice/legacy/va/demomapstart1.ogg similarity index 100% rename from sounds/voice/default/demomapstart1.ogg rename to sounds/voice/legacy/va/demomapstart1.ogg diff --git a/sounds/voice/default/demomapstart10.ogg b/sounds/voice/legacy/va/demomapstart10.ogg similarity index 100% rename from sounds/voice/default/demomapstart10.ogg rename to sounds/voice/legacy/va/demomapstart10.ogg diff --git a/sounds/voice/default/demomapstart11.ogg b/sounds/voice/legacy/va/demomapstart11.ogg similarity index 100% rename from sounds/voice/default/demomapstart11.ogg rename to sounds/voice/legacy/va/demomapstart11.ogg diff --git a/sounds/voice/default/demomapstart12.ogg b/sounds/voice/legacy/va/demomapstart12.ogg similarity index 100% rename from sounds/voice/default/demomapstart12.ogg rename to sounds/voice/legacy/va/demomapstart12.ogg diff --git a/sounds/voice/default/demomapstart13.ogg b/sounds/voice/legacy/va/demomapstart13.ogg similarity index 100% rename from sounds/voice/default/demomapstart13.ogg rename to sounds/voice/legacy/va/demomapstart13.ogg diff --git a/sounds/voice/default/demomapstart14.ogg b/sounds/voice/legacy/va/demomapstart14.ogg similarity index 100% rename from sounds/voice/default/demomapstart14.ogg rename to sounds/voice/legacy/va/demomapstart14.ogg diff --git a/sounds/voice/default/demomapstart2.ogg b/sounds/voice/legacy/va/demomapstart2.ogg similarity index 100% rename from sounds/voice/default/demomapstart2.ogg rename to sounds/voice/legacy/va/demomapstart2.ogg diff --git a/sounds/voice/default/demomapstart3.ogg b/sounds/voice/legacy/va/demomapstart3.ogg similarity index 100% rename from sounds/voice/default/demomapstart3.ogg rename to sounds/voice/legacy/va/demomapstart3.ogg diff --git a/sounds/voice/default/demomapstart4.ogg b/sounds/voice/legacy/va/demomapstart4.ogg similarity index 100% rename from sounds/voice/default/demomapstart4.ogg rename to sounds/voice/legacy/va/demomapstart4.ogg diff --git a/sounds/voice/default/demomapstart5.ogg b/sounds/voice/legacy/va/demomapstart5.ogg similarity index 100% rename from sounds/voice/default/demomapstart5.ogg rename to sounds/voice/legacy/va/demomapstart5.ogg diff --git a/sounds/voice/default/demomapstart6.ogg b/sounds/voice/legacy/va/demomapstart6.ogg similarity index 100% rename from sounds/voice/default/demomapstart6.ogg rename to sounds/voice/legacy/va/demomapstart6.ogg diff --git a/sounds/voice/default/demomapstart7.ogg b/sounds/voice/legacy/va/demomapstart7.ogg similarity index 100% rename from sounds/voice/default/demomapstart7.ogg rename to sounds/voice/legacy/va/demomapstart7.ogg diff --git a/sounds/voice/default/demomapstart8.ogg b/sounds/voice/legacy/va/demomapstart8.ogg similarity index 100% rename from sounds/voice/default/demomapstart8.ogg rename to sounds/voice/legacy/va/demomapstart8.ogg diff --git a/sounds/voice/default/demomapstart9.ogg b/sounds/voice/legacy/va/demomapstart9.ogg similarity index 100% rename from sounds/voice/default/demomapstart9.ogg rename to sounds/voice/legacy/va/demomapstart9.ogg diff --git a/sounds/voice/default/demopuzzfail1.ogg b/sounds/voice/legacy/va/demopuzzfail1.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail1.ogg rename to sounds/voice/legacy/va/demopuzzfail1.ogg diff --git a/sounds/voice/default/demopuzzfail2.ogg b/sounds/voice/legacy/va/demopuzzfail2.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail2.ogg rename to sounds/voice/legacy/va/demopuzzfail2.ogg diff --git a/sounds/voice/default/demopuzzfail3.ogg b/sounds/voice/legacy/va/demopuzzfail3.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail3.ogg rename to sounds/voice/legacy/va/demopuzzfail3.ogg diff --git a/sounds/voice/default/demopuzzfail4.ogg b/sounds/voice/legacy/va/demopuzzfail4.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail4.ogg rename to sounds/voice/legacy/va/demopuzzfail4.ogg diff --git a/sounds/voice/default/demopuzzfail5.ogg b/sounds/voice/legacy/va/demopuzzfail5.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail5.ogg rename to sounds/voice/legacy/va/demopuzzfail5.ogg diff --git a/sounds/voice/default/demopuzzfail6.ogg b/sounds/voice/legacy/va/demopuzzfail6.ogg similarity index 100% rename from sounds/voice/default/demopuzzfail6.ogg rename to sounds/voice/legacy/va/demopuzzfail6.ogg diff --git a/sounds/voice/default/demopuzzsucc1.ogg b/sounds/voice/legacy/va/demopuzzsucc1.ogg similarity index 100% rename from sounds/voice/default/demopuzzsucc1.ogg rename to sounds/voice/legacy/va/demopuzzsucc1.ogg diff --git a/sounds/voice/default/demopuzzsucc2.ogg b/sounds/voice/legacy/va/demopuzzsucc2.ogg similarity index 100% rename from sounds/voice/default/demopuzzsucc2.ogg rename to sounds/voice/legacy/va/demopuzzsucc2.ogg diff --git a/sounds/voice/default/demopuzzsucc3.ogg b/sounds/voice/legacy/va/demopuzzsucc3.ogg similarity index 100% rename from sounds/voice/default/demopuzzsucc3.ogg rename to sounds/voice/legacy/va/demopuzzsucc3.ogg diff --git a/sounds/voice/default/demopuzzsucc4.ogg b/sounds/voice/legacy/va/demopuzzsucc4.ogg similarity index 100% rename from sounds/voice/default/demopuzzsucc4.ogg rename to sounds/voice/legacy/va/demopuzzsucc4.ogg diff --git a/sounds/voice/default/demopuzzsucc5.ogg b/sounds/voice/legacy/va/demopuzzsucc5.ogg similarity index 100% rename from sounds/voice/default/demopuzzsucc5.ogg rename to sounds/voice/legacy/va/demopuzzsucc5.ogg diff --git a/sounds/voice/default/demoragekit1.ogg b/sounds/voice/legacy/va/demoragekit1.ogg similarity index 100% rename from sounds/voice/default/demoragekit1.ogg rename to sounds/voice/legacy/va/demoragekit1.ogg diff --git a/sounds/voice/default/demoragekit2.ogg b/sounds/voice/legacy/va/demoragekit2.ogg similarity index 100% rename from sounds/voice/default/demoragekit2.ogg rename to sounds/voice/legacy/va/demoragekit2.ogg diff --git a/sounds/voice/default/demoragekit3.ogg b/sounds/voice/legacy/va/demoragekit3.ogg similarity index 100% rename from sounds/voice/default/demoragekit3.ogg rename to sounds/voice/legacy/va/demoragekit3.ogg diff --git a/sounds/voice/default/demoragekit4.ogg b/sounds/voice/legacy/va/demoragekit4.ogg similarity index 100% rename from sounds/voice/default/demoragekit4.ogg rename to sounds/voice/legacy/va/demoragekit4.ogg diff --git a/sounds/voice/default/demoragekit5.ogg b/sounds/voice/legacy/va/demoragekit5.ogg similarity index 100% rename from sounds/voice/default/demoragekit5.ogg rename to sounds/voice/legacy/va/demoragekit5.ogg diff --git a/sounds/voice/default/demoragekit6.ogg b/sounds/voice/legacy/va/demoragekit6.ogg similarity index 100% rename from sounds/voice/default/demoragekit6.ogg rename to sounds/voice/legacy/va/demoragekit6.ogg diff --git a/sounds/voice/default/demoscorekill1.ogg b/sounds/voice/legacy/va/demoscorekill1.ogg similarity index 100% rename from sounds/voice/default/demoscorekill1.ogg rename to sounds/voice/legacy/va/demoscorekill1.ogg diff --git a/sounds/voice/default/demoscorekill10.ogg b/sounds/voice/legacy/va/demoscorekill10.ogg similarity index 100% rename from sounds/voice/default/demoscorekill10.ogg rename to sounds/voice/legacy/va/demoscorekill10.ogg diff --git a/sounds/voice/default/demoscorekill11.ogg b/sounds/voice/legacy/va/demoscorekill11.ogg similarity index 100% rename from sounds/voice/default/demoscorekill11.ogg rename to sounds/voice/legacy/va/demoscorekill11.ogg diff --git a/sounds/voice/default/demoscorekill12.ogg b/sounds/voice/legacy/va/demoscorekill12.ogg similarity index 100% rename from sounds/voice/default/demoscorekill12.ogg rename to sounds/voice/legacy/va/demoscorekill12.ogg diff --git a/sounds/voice/default/demoscorekill13.ogg b/sounds/voice/legacy/va/demoscorekill13.ogg similarity index 100% rename from sounds/voice/default/demoscorekill13.ogg rename to sounds/voice/legacy/va/demoscorekill13.ogg diff --git a/sounds/voice/default/demoscorekill14.ogg b/sounds/voice/legacy/va/demoscorekill14.ogg similarity index 100% rename from sounds/voice/default/demoscorekill14.ogg rename to sounds/voice/legacy/va/demoscorekill14.ogg diff --git a/sounds/voice/default/demoscorekill15.ogg b/sounds/voice/legacy/va/demoscorekill15.ogg similarity index 100% rename from sounds/voice/default/demoscorekill15.ogg rename to sounds/voice/legacy/va/demoscorekill15.ogg diff --git a/sounds/voice/default/demoscorekill16.ogg b/sounds/voice/legacy/va/demoscorekill16.ogg similarity index 100% rename from sounds/voice/default/demoscorekill16.ogg rename to sounds/voice/legacy/va/demoscorekill16.ogg diff --git a/sounds/voice/default/demoscorekill17.ogg b/sounds/voice/legacy/va/demoscorekill17.ogg similarity index 100% rename from sounds/voice/default/demoscorekill17.ogg rename to sounds/voice/legacy/va/demoscorekill17.ogg diff --git a/sounds/voice/default/demoscorekill18.ogg b/sounds/voice/legacy/va/demoscorekill18.ogg similarity index 100% rename from sounds/voice/default/demoscorekill18.ogg rename to sounds/voice/legacy/va/demoscorekill18.ogg diff --git a/sounds/voice/default/demoscorekill19.ogg b/sounds/voice/legacy/va/demoscorekill19.ogg similarity index 100% rename from sounds/voice/default/demoscorekill19.ogg rename to sounds/voice/legacy/va/demoscorekill19.ogg diff --git a/sounds/voice/default/demoscorekill2.ogg b/sounds/voice/legacy/va/demoscorekill2.ogg similarity index 100% rename from sounds/voice/default/demoscorekill2.ogg rename to sounds/voice/legacy/va/demoscorekill2.ogg diff --git a/sounds/voice/default/demoscorekill20.ogg b/sounds/voice/legacy/va/demoscorekill20.ogg similarity index 100% rename from sounds/voice/default/demoscorekill20.ogg rename to sounds/voice/legacy/va/demoscorekill20.ogg diff --git a/sounds/voice/default/demoscorekill21.ogg b/sounds/voice/legacy/va/demoscorekill21.ogg similarity index 100% rename from sounds/voice/default/demoscorekill21.ogg rename to sounds/voice/legacy/va/demoscorekill21.ogg diff --git a/sounds/voice/default/demoscorekill22.ogg b/sounds/voice/legacy/va/demoscorekill22.ogg similarity index 100% rename from sounds/voice/default/demoscorekill22.ogg rename to sounds/voice/legacy/va/demoscorekill22.ogg diff --git a/sounds/voice/default/demoscorekill23.ogg b/sounds/voice/legacy/va/demoscorekill23.ogg similarity index 100% rename from sounds/voice/default/demoscorekill23.ogg rename to sounds/voice/legacy/va/demoscorekill23.ogg diff --git a/sounds/voice/default/demoscorekill24.ogg b/sounds/voice/legacy/va/demoscorekill24.ogg similarity index 100% rename from sounds/voice/default/demoscorekill24.ogg rename to sounds/voice/legacy/va/demoscorekill24.ogg diff --git a/sounds/voice/default/demoscorekill25.ogg b/sounds/voice/legacy/va/demoscorekill25.ogg similarity index 100% rename from sounds/voice/default/demoscorekill25.ogg rename to sounds/voice/legacy/va/demoscorekill25.ogg diff --git a/sounds/voice/default/demoscorekill26.ogg b/sounds/voice/legacy/va/demoscorekill26.ogg similarity index 100% rename from sounds/voice/default/demoscorekill26.ogg rename to sounds/voice/legacy/va/demoscorekill26.ogg diff --git a/sounds/voice/default/demoscorekill3.ogg b/sounds/voice/legacy/va/demoscorekill3.ogg similarity index 100% rename from sounds/voice/default/demoscorekill3.ogg rename to sounds/voice/legacy/va/demoscorekill3.ogg diff --git a/sounds/voice/default/demoscorekill4.ogg b/sounds/voice/legacy/va/demoscorekill4.ogg similarity index 100% rename from sounds/voice/default/demoscorekill4.ogg rename to sounds/voice/legacy/va/demoscorekill4.ogg diff --git a/sounds/voice/default/demoscorekill5.ogg b/sounds/voice/legacy/va/demoscorekill5.ogg similarity index 100% rename from sounds/voice/default/demoscorekill5.ogg rename to sounds/voice/legacy/va/demoscorekill5.ogg diff --git a/sounds/voice/default/demoscorekill6.ogg b/sounds/voice/legacy/va/demoscorekill6.ogg similarity index 100% rename from sounds/voice/default/demoscorekill6.ogg rename to sounds/voice/legacy/va/demoscorekill6.ogg diff --git a/sounds/voice/default/demoscorekill7.ogg b/sounds/voice/legacy/va/demoscorekill7.ogg similarity index 100% rename from sounds/voice/default/demoscorekill7.ogg rename to sounds/voice/legacy/va/demoscorekill7.ogg diff --git a/sounds/voice/default/demoscorekill8.ogg b/sounds/voice/legacy/va/demoscorekill8.ogg similarity index 100% rename from sounds/voice/default/demoscorekill8.ogg rename to sounds/voice/legacy/va/demoscorekill8.ogg diff --git a/sounds/voice/default/demoscorekill9.ogg b/sounds/voice/legacy/va/demoscorekill9.ogg similarity index 100% rename from sounds/voice/default/demoscorekill9.ogg rename to sounds/voice/legacy/va/demoscorekill9.ogg diff --git a/sprites/EIXTC0.png b/sprites/EIXTC0.png new file mode 100644 index 000000000..cdfb2043a Binary files /dev/null and b/sprites/EIXTC0.png differ diff --git a/sprites/EIXTD0.png b/sprites/EIXTD0.png new file mode 100644 index 000000000..3fdbdf109 Binary files /dev/null and b/sprites/EIXTD0.png differ diff --git a/sprites/LGFDA0.png b/sprites/LGFDA0.png new file mode 100644 index 000000000..a6f29931f Binary files /dev/null and b/sprites/LGFDA0.png differ diff --git a/sprites/SGIBA0.png b/sprites/MEATA0.png similarity index 100% rename from sprites/SGIBA0.png rename to sprites/MEATA0.png diff --git a/sprites/SGIBB0.png b/sprites/MEATB0.png similarity index 100% rename from sprites/SGIBB0.png rename to sprites/MEATB0.png diff --git a/sprites/SGIBC0.png b/sprites/MEATC0.png similarity index 100% rename from sprites/SGIBC0.png rename to sprites/MEATC0.png diff --git a/sprites/SGIBD0.png b/sprites/MEATD0.png similarity index 100% rename from sprites/SGIBD0.png rename to sprites/MEATD0.png diff --git a/sprites/SGIBE0.png b/sprites/MEATE0.png similarity index 100% rename from sprites/SGIBE0.png rename to sprites/MEATE0.png diff --git a/sprites/SGIBF0.png b/sprites/MEATF0.png similarity index 100% rename from sprites/SGIBF0.png rename to sprites/MEATF0.png diff --git a/sprites/SSPKA0.png b/sprites/SPKPA0.png similarity index 100% rename from sprites/SSPKA0.png rename to sprites/SPKPA0.png diff --git a/sprites/dlc1/BFXXA0.png b/sprites/dlc/BFXXA0.png similarity index 100% rename from sprites/dlc1/BFXXA0.png rename to sprites/dlc/BFXXA0.png diff --git a/sprites/dlc1/BFXXB0.png b/sprites/dlc/BFXXB0.png similarity index 100% rename from sprites/dlc1/BFXXB0.png rename to sprites/dlc/BFXXB0.png diff --git a/sprites/dlc1/BFXXC0.png b/sprites/dlc/BFXXC0.png similarity index 100% rename from sprites/dlc1/BFXXC0.png rename to sprites/dlc/BFXXC0.png diff --git a/sprites/dlc1/BFXXD0.png b/sprites/dlc/BFXXD0.png similarity index 100% rename from sprites/dlc1/BFXXD0.png rename to sprites/dlc/BFXXD0.png diff --git a/sprites/dlc1/BFXXE0.png b/sprites/dlc/BFXXE0.png similarity index 100% rename from sprites/dlc1/BFXXE0.png rename to sprites/dlc/BFXXE0.png diff --git a/sprites/dlc1/BFXXF0.png b/sprites/dlc/BFXXF0.png similarity index 100% rename from sprites/dlc1/BFXXF0.png rename to sprites/dlc/BFXXF0.png diff --git a/sprites/dlc1/BFXXG0.png b/sprites/dlc/BFXXG0.png similarity index 100% rename from sprites/dlc1/BFXXG0.png rename to sprites/dlc/BFXXG0.png diff --git a/sprites/dlc1/BFXXH0.png b/sprites/dlc/BFXXH0.png similarity index 100% rename from sprites/dlc1/BFXXH0.png rename to sprites/dlc/BFXXH0.png diff --git a/sprites/dlc1/BFXXI0.png b/sprites/dlc/BFXXI0.png similarity index 100% rename from sprites/dlc1/BFXXI0.png rename to sprites/dlc/BFXXI0.png diff --git a/sprites/dlc1/BFXXJ0.png b/sprites/dlc/BFXXJ0.png similarity index 100% rename from sprites/dlc1/BFXXJ0.png rename to sprites/dlc/BFXXJ0.png diff --git a/sprites/dlc1/BFXXK0.png b/sprites/dlc/BFXXK0.png similarity index 100% rename from sprites/dlc1/BFXXK0.png rename to sprites/dlc/BFXXK0.png diff --git a/sprites/dlc1/BFXXL0.png b/sprites/dlc/BFXXL0.png similarity index 100% rename from sprites/dlc1/BFXXL0.png rename to sprites/dlc/BFXXL0.png diff --git a/sprites/dlc1/BFXXM0.png b/sprites/dlc/BFXXM0.png similarity index 100% rename from sprites/dlc1/BFXXM0.png rename to sprites/dlc/BFXXM0.png diff --git a/sprites/dlc1/BFXXN0.png b/sprites/dlc/BFXXN0.png similarity index 100% rename from sprites/dlc1/BFXXN0.png rename to sprites/dlc/BFXXN0.png diff --git a/sprites/dlc1/BFXXO0.png b/sprites/dlc/BFXXO0.png similarity index 100% rename from sprites/dlc1/BFXXO0.png rename to sprites/dlc/BFXXO0.png diff --git a/sprites/dlc1/BFXXP0.png b/sprites/dlc/BFXXP0.png similarity index 100% rename from sprites/dlc1/BFXXP0.png rename to sprites/dlc/BFXXP0.png diff --git a/sprites/dlc1/BFXXQ0.png b/sprites/dlc/BFXXQ0.png similarity index 100% rename from sprites/dlc1/BFXXQ0.png rename to sprites/dlc/BFXXQ0.png diff --git a/sprites/dlc1/BFXXR0.png b/sprites/dlc/BFXXR0.png similarity index 100% rename from sprites/dlc1/BFXXR0.png rename to sprites/dlc/BFXXR0.png diff --git a/sprites/dlc1/BFXXS0.png b/sprites/dlc/BFXXS0.png similarity index 100% rename from sprites/dlc1/BFXXS0.png rename to sprites/dlc/BFXXS0.png diff --git a/sprites/dlc1/BFXXT0.png b/sprites/dlc/BFXXT0.png similarity index 100% rename from sprites/dlc1/BFXXT0.png rename to sprites/dlc/BFXXT0.png diff --git a/sprites/dlc2/NSFLA0.png b/sprites/dlc/NSFLA0.png similarity index 100% rename from sprites/dlc2/NSFLA0.png rename to sprites/dlc/NSFLA0.png diff --git a/sprites/dlc2/NSFLB0.png b/sprites/dlc/NSFLB0.png similarity index 100% rename from sprites/dlc2/NSFLB0.png rename to sprites/dlc/NSFLB0.png diff --git a/sprites/dlc2/NSFLC0.png b/sprites/dlc/NSFLC0.png similarity index 100% rename from sprites/dlc2/NSFLC0.png rename to sprites/dlc/NSFLC0.png diff --git a/sprites/dlc1/PBBLA0.png b/sprites/dlc/PBBLA0.png similarity index 100% rename from sprites/dlc1/PBBLA0.png rename to sprites/dlc/PBBLA0.png diff --git a/sprites/dlc1/PBBLB0.png b/sprites/dlc/PBBLB0.png similarity index 100% rename from sprites/dlc1/PBBLB0.png rename to sprites/dlc/PBBLB0.png diff --git a/sprites/dlc1/PBBLC0.png b/sprites/dlc/PBBLC0.png similarity index 100% rename from sprites/dlc1/PBBLC0.png rename to sprites/dlc/PBBLC0.png diff --git a/sprites/dlc1/PBBLD0.png b/sprites/dlc/PBBLD0.png similarity index 100% rename from sprites/dlc1/PBBLD0.png rename to sprites/dlc/PBBLD0.png diff --git a/sprites/dlc1/PBBLE0.png b/sprites/dlc/PBBLE0.png similarity index 100% rename from sprites/dlc1/PBBLE0.png rename to sprites/dlc/PBBLE0.png diff --git a/sprites/dlc1/PBBLF0.png b/sprites/dlc/PBBLF0.png similarity index 100% rename from sprites/dlc1/PBBLF0.png rename to sprites/dlc/PBBLF0.png diff --git a/sprites/dlc1/PBBLG0.png b/sprites/dlc/PBBLG0.png similarity index 100% rename from sprites/dlc1/PBBLG0.png rename to sprites/dlc/PBBLG0.png diff --git a/sprites/dlc1/PBBLH0.png b/sprites/dlc/PBBLH0.png similarity index 100% rename from sprites/dlc1/PBBLH0.png rename to sprites/dlc/PBBLH0.png diff --git a/sprites/dlc1/PBBLI0.png b/sprites/dlc/PBBLI0.png similarity index 100% rename from sprites/dlc1/PBBLI0.png rename to sprites/dlc/PBBLI0.png diff --git a/sprites/dlc1/PBBLJ0.png b/sprites/dlc/PBBLJ0.png similarity index 100% rename from sprites/dlc1/PBBLJ0.png rename to sprites/dlc/PBBLJ0.png diff --git a/sprites/dlc1/PBMBA0.png b/sprites/dlc/PBMBA0.png similarity index 100% rename from sprites/dlc1/PBMBA0.png rename to sprites/dlc/PBMBA0.png diff --git a/sprites/dlc1/PBMBB0.png b/sprites/dlc/PBMBB0.png similarity index 100% rename from sprites/dlc1/PBMBB0.png rename to sprites/dlc/PBMBB0.png diff --git a/sprites/dlc1/PBMBC0.png b/sprites/dlc/PBMBC0.png similarity index 100% rename from sprites/dlc1/PBMBC0.png rename to sprites/dlc/PBMBC0.png diff --git a/sprites/dlc1/PBMBD0.png b/sprites/dlc/PBMBD0.png similarity index 100% rename from sprites/dlc1/PBMBD0.png rename to sprites/dlc/PBMBD0.png diff --git a/sprites/dlc1/PBMBE0.png b/sprites/dlc/PBMBE0.png similarity index 100% rename from sprites/dlc1/PBMBE0.png rename to sprites/dlc/PBMBE0.png diff --git a/sprites/dlc1/PBMBF0.png b/sprites/dlc/PBMBF0.png similarity index 100% rename from sprites/dlc1/PBMBF0.png rename to sprites/dlc/PBMBF0.png diff --git a/sprites/dlc1/PBMBG0.png b/sprites/dlc/PBMBG0.png similarity index 100% rename from sprites/dlc1/PBMBG0.png rename to sprites/dlc/PBMBG0.png diff --git a/sprites/dlc1/PBMBH0.png b/sprites/dlc/PBMBH0.png similarity index 100% rename from sprites/dlc1/PBMBH0.png rename to sprites/dlc/PBMBH0.png diff --git a/sprites/dlc1/PBMBI0.png b/sprites/dlc/PBMBI0.png similarity index 100% rename from sprites/dlc1/PBMBI0.png rename to sprites/dlc/PBMBI0.png diff --git a/sprites/dlc1/PBMBJ0.png b/sprites/dlc/PBMBJ0.png similarity index 100% rename from sprites/dlc1/PBMBJ0.png rename to sprites/dlc/PBMBJ0.png diff --git a/sprites/dlc1/PBMBK0.png b/sprites/dlc/PBMBK0.png similarity index 100% rename from sprites/dlc1/PBMBK0.png rename to sprites/dlc/PBMBK0.png diff --git a/sprites/dlc1/PBMBL0.png b/sprites/dlc/PBMBL0.png similarity index 100% rename from sprites/dlc1/PBMBL0.png rename to sprites/dlc/PBMBL0.png diff --git a/sprites/dlc1/QEMBA0.png b/sprites/dlc/QEMBA0.png similarity index 100% rename from sprites/dlc1/QEMBA0.png rename to sprites/dlc/QEMBA0.png diff --git a/sprites/dlc1/QEMBB0.png b/sprites/dlc/QEMBB0.png similarity index 100% rename from sprites/dlc1/QEMBB0.png rename to sprites/dlc/QEMBB0.png diff --git a/sprites/dlc1/QEMBC0.png b/sprites/dlc/QEMBC0.png similarity index 100% rename from sprites/dlc1/QEMBC0.png rename to sprites/dlc/QEMBC0.png diff --git a/sprites/dlc1/QEMBD0.png b/sprites/dlc/QEMBD0.png similarity index 100% rename from sprites/dlc1/QEMBD0.png rename to sprites/dlc/QEMBD0.png diff --git a/sprites/dlc1/QEMBE0.png b/sprites/dlc/QEMBE0.png similarity index 100% rename from sprites/dlc1/QEMBE0.png rename to sprites/dlc/QEMBE0.png diff --git a/sprites/dlc1/QFBLA0.png b/sprites/dlc/QFBLA0.png similarity index 100% rename from sprites/dlc1/QFBLA0.png rename to sprites/dlc/QFBLA0.png diff --git a/sprites/dlc1/QFBLB0.png b/sprites/dlc/QFBLB0.png similarity index 100% rename from sprites/dlc1/QFBLB0.png rename to sprites/dlc/QFBLB0.png diff --git a/sprites/dlc1/QFBLC0.png b/sprites/dlc/QFBLC0.png similarity index 100% rename from sprites/dlc1/QFBLC0.png rename to sprites/dlc/QFBLC0.png diff --git a/sprites/dlc1/QFBLD0.png b/sprites/dlc/QFBLD0.png similarity index 100% rename from sprites/dlc1/QFBLD0.png rename to sprites/dlc/QFBLD0.png diff --git a/sprites/dlc1/QFBLE0.png b/sprites/dlc/QFBLE0.png similarity index 100% rename from sprites/dlc1/QFBLE0.png rename to sprites/dlc/QFBLE0.png diff --git a/sprites/dlc1/QFBLF0.png b/sprites/dlc/QFBLF0.png similarity index 100% rename from sprites/dlc1/QFBLF0.png rename to sprites/dlc/QFBLF0.png diff --git a/sprites/dlc1/QFBLG0.png b/sprites/dlc/QFBLG0.png similarity index 100% rename from sprites/dlc1/QFBLG0.png rename to sprites/dlc/QFBLG0.png diff --git a/sprites/dlc1/QFBLH0.png b/sprites/dlc/QFBLH0.png similarity index 100% rename from sprites/dlc1/QFBLH0.png rename to sprites/dlc/QFBLH0.png diff --git a/sprites/dlc1/QFBLI0.png b/sprites/dlc/QFBLI0.png similarity index 100% rename from sprites/dlc1/QFBLI0.png rename to sprites/dlc/QFBLI0.png diff --git a/sprites/dlc1/QFBLJ0.png b/sprites/dlc/QFBLJ0.png similarity index 100% rename from sprites/dlc1/QFBLJ0.png rename to sprites/dlc/QFBLJ0.png diff --git a/sprites/dlc1/QFLRA0.png b/sprites/dlc/QFLRA0.png similarity index 100% rename from sprites/dlc1/QFLRA0.png rename to sprites/dlc/QFLRA0.png diff --git a/sprites/dlc1/RAYTA0.png b/sprites/dlc/RAYTA0.png similarity index 100% rename from sprites/dlc1/RAYTA0.png rename to sprites/dlc/RAYTA0.png diff --git a/sprites/dlc1/RAYTB0.png b/sprites/dlc/RAYTB0.png similarity index 100% rename from sprites/dlc1/RAYTB0.png rename to sprites/dlc/RAYTB0.png diff --git a/sprites/dlc1/RAYTC0.png b/sprites/dlc/RAYTC0.png similarity index 100% rename from sprites/dlc1/RAYTC0.png rename to sprites/dlc/RAYTC0.png diff --git a/sprites/dlc1/RAYTD0.png b/sprites/dlc/RAYTD0.png similarity index 100% rename from sprites/dlc1/RAYTD0.png rename to sprites/dlc/RAYTD0.png diff --git a/sprites/dlc1/RAYTE0.png b/sprites/dlc/RAYTE0.png similarity index 100% rename from sprites/dlc1/RAYTE0.png rename to sprites/dlc/RAYTE0.png diff --git a/sprites/dlc1/RAYTF0.png b/sprites/dlc/RAYTF0.png similarity index 100% rename from sprites/dlc1/RAYTF0.png rename to sprites/dlc/RAYTF0.png diff --git a/sprites/dlc1/RAYTG0.png b/sprites/dlc/RAYTG0.png similarity index 100% rename from sprites/dlc1/RAYTG0.png rename to sprites/dlc/RAYTG0.png diff --git a/sprites/dlc1/RAYTH0.png b/sprites/dlc/RAYTH0.png similarity index 100% rename from sprites/dlc1/RAYTH0.png rename to sprites/dlc/RAYTH0.png diff --git a/sprites/dlc1/RAYTI0.png b/sprites/dlc/RAYTI0.png similarity index 100% rename from sprites/dlc1/RAYTI0.png rename to sprites/dlc/RAYTI0.png diff --git a/sprites/dlc1/RAYTJ0.png b/sprites/dlc/RAYTJ0.png similarity index 100% rename from sprites/dlc1/RAYTJ0.png rename to sprites/dlc/RAYTJ0.png diff --git a/sprites/dlc1/RAYTK0.png b/sprites/dlc/RAYTK0.png similarity index 100% rename from sprites/dlc1/RAYTK0.png rename to sprites/dlc/RAYTK0.png diff --git a/sprites/dlc2/RFXPA0.png b/sprites/dlc/RFXPA0.png similarity index 100% rename from sprites/dlc2/RFXPA0.png rename to sprites/dlc/RFXPA0.png diff --git a/sprites/dlc2/RFXPB0.png b/sprites/dlc/RFXPB0.png similarity index 100% rename from sprites/dlc2/RFXPB0.png rename to sprites/dlc/RFXPB0.png diff --git a/sprites/dlc2/RFXPC0.png b/sprites/dlc/RFXPC0.png similarity index 100% rename from sprites/dlc2/RFXPC0.png rename to sprites/dlc/RFXPC0.png diff --git a/sprites/dlc2/RFXPD0.png b/sprites/dlc/RFXPD0.png similarity index 100% rename from sprites/dlc2/RFXPD0.png rename to sprites/dlc/RFXPD0.png diff --git a/sprites/dlc2/RFXPE0.png b/sprites/dlc/RFXPE0.png similarity index 100% rename from sprites/dlc2/RFXPE0.png rename to sprites/dlc/RFXPE0.png diff --git a/sprites/dlc2/RFXPF0.png b/sprites/dlc/RFXPF0.png similarity index 100% rename from sprites/dlc2/RFXPF0.png rename to sprites/dlc/RFXPF0.png diff --git a/sprites/dlc2/RFXPG0.png b/sprites/dlc/RFXPG0.png similarity index 100% rename from sprites/dlc2/RFXPG0.png rename to sprites/dlc/RFXPG0.png diff --git a/sprites/dlc2/RFXPH0.png b/sprites/dlc/RFXPH0.png similarity index 100% rename from sprites/dlc2/RFXPH0.png rename to sprites/dlc/RFXPH0.png diff --git a/sprites/dlc2/RFXPI0.png b/sprites/dlc/RFXPI0.png similarity index 100% rename from sprites/dlc2/RFXPI0.png rename to sprites/dlc/RFXPI0.png diff --git a/sprites/dlc2/RFXPJ0.png b/sprites/dlc/RFXPJ0.png similarity index 100% rename from sprites/dlc2/RFXPJ0.png rename to sprites/dlc/RFXPJ0.png diff --git a/sprites/dlc2/RFXPK0.png b/sprites/dlc/RFXPK0.png similarity index 100% rename from sprites/dlc2/RFXPK0.png rename to sprites/dlc/RFXPK0.png diff --git a/sprites/dlc2/RFXPL0.png b/sprites/dlc/RFXPL0.png similarity index 100% rename from sprites/dlc2/RFXPL0.png rename to sprites/dlc/RFXPL0.png diff --git a/sprites/dlc2/RFXPM0.png b/sprites/dlc/RFXPM0.png similarity index 100% rename from sprites/dlc2/RFXPM0.png rename to sprites/dlc/RFXPM0.png diff --git a/sprites/dlc2/RFXPN0.png b/sprites/dlc/RFXPN0.png similarity index 100% rename from sprites/dlc2/RFXPN0.png rename to sprites/dlc/RFXPN0.png diff --git a/sprites/dlc2/RFXPO0.png b/sprites/dlc/RFXPO0.png similarity index 100% rename from sprites/dlc2/RFXPO0.png rename to sprites/dlc/RFXPO0.png diff --git a/sprites/dlc2/RFXPP0.png b/sprites/dlc/RFXPP0.png similarity index 100% rename from sprites/dlc2/RFXPP0.png rename to sprites/dlc/RFXPP0.png diff --git a/sprites/dlc2/RFXPQ0.png b/sprites/dlc/RFXPQ0.png similarity index 100% rename from sprites/dlc2/RFXPQ0.png rename to sprites/dlc/RFXPQ0.png diff --git a/sprites/dlc2/RFXPR0.png b/sprites/dlc/RFXPR0.png similarity index 100% rename from sprites/dlc2/RFXPR0.png rename to sprites/dlc/RFXPR0.png diff --git a/sprites/dlc2/RFXPS0.png b/sprites/dlc/RFXPS0.png similarity index 100% rename from sprites/dlc2/RFXPS0.png rename to sprites/dlc/RFXPS0.png diff --git a/sprites/dlc2/RFXPT0.png b/sprites/dlc/RFXPT0.png similarity index 100% rename from sprites/dlc2/RFXPT0.png rename to sprites/dlc/RFXPT0.png diff --git a/sprites/dlc2/RFXPU0.png b/sprites/dlc/RFXPU0.png similarity index 100% rename from sprites/dlc2/RFXPU0.png rename to sprites/dlc/RFXPU0.png diff --git a/sprites/dlc2/RFXPV0.png b/sprites/dlc/RFXPV0.png similarity index 100% rename from sprites/dlc2/RFXPV0.png rename to sprites/dlc/RFXPV0.png diff --git a/sprites/dlc2/RFXPW0.png b/sprites/dlc/RFXPW0.png similarity index 100% rename from sprites/dlc2/RFXPW0.png rename to sprites/dlc/RFXPW0.png diff --git a/sprites/dlc2/RFXPX0.png b/sprites/dlc/RFXPX0.png similarity index 100% rename from sprites/dlc2/RFXPX0.png rename to sprites/dlc/RFXPX0.png diff --git a/sprites/dlc2/RFXPY0.png b/sprites/dlc/RFXPY0.png similarity index 100% rename from sprites/dlc2/RFXPY0.png rename to sprites/dlc/RFXPY0.png diff --git a/sprites/dlc2/RFXPZ0.png b/sprites/dlc/RFXPZ0.png similarity index 100% rename from sprites/dlc2/RFXPZ0.png rename to sprites/dlc/RFXPZ0.png diff --git a/sprites/dlc2/RFXP[0.png b/sprites/dlc/RFXP[0.png similarity index 100% rename from sprites/dlc2/RFXP[0.png rename to sprites/dlc/RFXP[0.png diff --git a/sprites/dlc2/RFXP^0.png b/sprites/dlc/RFXP^0.png similarity index 100% rename from sprites/dlc2/RFXP^0.png rename to sprites/dlc/RFXP^0.png diff --git a/sprites/dlc1/XEX5A0.png b/sprites/dlc/XEX5A0.png similarity index 100% rename from sprites/dlc1/XEX5A0.png rename to sprites/dlc/XEX5A0.png diff --git a/sprites/dlc1/XEX5B0.png b/sprites/dlc/XEX5B0.png similarity index 100% rename from sprites/dlc1/XEX5B0.png rename to sprites/dlc/XEX5B0.png diff --git a/sprites/dlc1/XEX5C0.png b/sprites/dlc/XEX5C0.png similarity index 100% rename from sprites/dlc1/XEX5C0.png rename to sprites/dlc/XEX5C0.png diff --git a/sprites/dlc1/XEX5D0.png b/sprites/dlc/XEX5D0.png similarity index 100% rename from sprites/dlc1/XEX5D0.png rename to sprites/dlc/XEX5D0.png diff --git a/sprites/dlc1/XEX5E0.png b/sprites/dlc/XEX5E0.png similarity index 100% rename from sprites/dlc1/XEX5E0.png rename to sprites/dlc/XEX5E0.png diff --git a/sprites/dlc1/XEX5F0.png b/sprites/dlc/XEX5F0.png similarity index 100% rename from sprites/dlc1/XEX5F0.png rename to sprites/dlc/XEX5F0.png diff --git a/sprites/dlc1/XEX5G0.png b/sprites/dlc/XEX5G0.png similarity index 100% rename from sprites/dlc1/XEX5G0.png rename to sprites/dlc/XEX5G0.png diff --git a/sprites/dlc1/XEX5H0.png b/sprites/dlc/XEX5H0.png similarity index 100% rename from sprites/dlc1/XEX5H0.png rename to sprites/dlc/XEX5H0.png diff --git a/sprites/dlc1/XEX5I0.png b/sprites/dlc/XEX5I0.png similarity index 100% rename from sprites/dlc1/XEX5I0.png rename to sprites/dlc/XEX5I0.png diff --git a/sprites/dlc1/XEX5J0.png b/sprites/dlc/XEX5J0.png similarity index 100% rename from sprites/dlc1/XEX5J0.png rename to sprites/dlc/XEX5J0.png diff --git a/sprites/dlc1/XEX5K0.png b/sprites/dlc/XEX5K0.png similarity index 100% rename from sprites/dlc1/XEX5K0.png rename to sprites/dlc/XEX5K0.png diff --git a/sprites/dlc1/XEX5L0.png b/sprites/dlc/XEX5L0.png similarity index 100% rename from sprites/dlc1/XEX5L0.png rename to sprites/dlc/XEX5L0.png diff --git a/sprites/dlc1/XEX5M0.png b/sprites/dlc/XEX5M0.png similarity index 100% rename from sprites/dlc1/XEX5M0.png rename to sprites/dlc/XEX5M0.png diff --git a/sprites/dlc1/XEX5N0.png b/sprites/dlc/XEX5N0.png similarity index 100% rename from sprites/dlc1/XEX5N0.png rename to sprites/dlc/XEX5N0.png diff --git a/sprites/dlc1/XEX5O0.png b/sprites/dlc/XEX5O0.png similarity index 100% rename from sprites/dlc1/XEX5O0.png rename to sprites/dlc/XEX5O0.png diff --git a/sprites/dlc1/XEX5P0.png b/sprites/dlc/XEX5P0.png similarity index 100% rename from sprites/dlc1/XEX5P0.png rename to sprites/dlc/XEX5P0.png diff --git a/sprites/dlc1/XEX5Q0.png b/sprites/dlc/XEX5Q0.png similarity index 100% rename from sprites/dlc1/XEX5Q0.png rename to sprites/dlc/XEX5Q0.png diff --git a/sprites/dlc1/XEX5R0.png b/sprites/dlc/XEX5R0.png similarity index 100% rename from sprites/dlc1/XEX5R0.png rename to sprites/dlc/XEX5R0.png diff --git a/sprites/dlc1/XEX5S0.png b/sprites/dlc/XEX5S0.png similarity index 100% rename from sprites/dlc1/XEX5S0.png rename to sprites/dlc/XEX5S0.png diff --git a/sprites/dlc1/XEX6A0.png b/sprites/dlc/XEX6A0.png similarity index 100% rename from sprites/dlc1/XEX6A0.png rename to sprites/dlc/XEX6A0.png diff --git a/sprites/dlc1/XEX6B0.png b/sprites/dlc/XEX6B0.png similarity index 100% rename from sprites/dlc1/XEX6B0.png rename to sprites/dlc/XEX6B0.png diff --git a/sprites/dlc1/XEX6C0.png b/sprites/dlc/XEX6C0.png similarity index 100% rename from sprites/dlc1/XEX6C0.png rename to sprites/dlc/XEX6C0.png diff --git a/sprites/dlc1/XEX6D0.png b/sprites/dlc/XEX6D0.png similarity index 100% rename from sprites/dlc1/XEX6D0.png rename to sprites/dlc/XEX6D0.png diff --git a/sprites/dlc1/XEX6E0.png b/sprites/dlc/XEX6E0.png similarity index 100% rename from sprites/dlc1/XEX6E0.png rename to sprites/dlc/XEX6E0.png diff --git a/sprites/dlc1/XEX6F0.png b/sprites/dlc/XEX6F0.png similarity index 100% rename from sprites/dlc1/XEX6F0.png rename to sprites/dlc/XEX6F0.png diff --git a/sprites/dlc1/XEX6G0.png b/sprites/dlc/XEX6G0.png similarity index 100% rename from sprites/dlc1/XEX6G0.png rename to sprites/dlc/XEX6G0.png diff --git a/sprites/dlc1/XEX6H0.png b/sprites/dlc/XEX6H0.png similarity index 100% rename from sprites/dlc1/XEX6H0.png rename to sprites/dlc/XEX6H0.png diff --git a/sprites/dlc1/XEX6I0.png b/sprites/dlc/XEX6I0.png similarity index 100% rename from sprites/dlc1/XEX6I0.png rename to sprites/dlc/XEX6I0.png diff --git a/sprites/dlc1/XEX6J0.png b/sprites/dlc/XEX6J0.png similarity index 100% rename from sprites/dlc1/XEX6J0.png rename to sprites/dlc/XEX6J0.png diff --git a/sprites/dlc1/XEX6K0.png b/sprites/dlc/XEX6K0.png similarity index 100% rename from sprites/dlc1/XEX6K0.png rename to sprites/dlc/XEX6K0.png diff --git a/sprites/dlc1/XEX6L0.png b/sprites/dlc/XEX6L0.png similarity index 100% rename from sprites/dlc1/XEX6L0.png rename to sprites/dlc/XEX6L0.png diff --git a/sprites/dlc1/XEX6M0.png b/sprites/dlc/XEX6M0.png similarity index 100% rename from sprites/dlc1/XEX6M0.png rename to sprites/dlc/XEX6M0.png diff --git a/sprites/dlc1/XEX6N0.png b/sprites/dlc/XEX6N0.png similarity index 100% rename from sprites/dlc1/XEX6N0.png rename to sprites/dlc/XEX6N0.png diff --git a/sprites/dlc1/XEX6O0.png b/sprites/dlc/XEX6O0.png similarity index 100% rename from sprites/dlc1/XEX6O0.png rename to sprites/dlc/XEX6O0.png diff --git a/sprites/dlc1/XEX6P0.png b/sprites/dlc/XEX6P0.png similarity index 100% rename from sprites/dlc1/XEX6P0.png rename to sprites/dlc/XEX6P0.png diff --git a/sprites/dlc1/XEX6Q0.png b/sprites/dlc/XEX6Q0.png similarity index 100% rename from sprites/dlc1/XEX6Q0.png rename to sprites/dlc/XEX6Q0.png diff --git a/sprites/dlc1/XEX6R0.png b/sprites/dlc/XEX6R0.png similarity index 100% rename from sprites/dlc1/XEX6R0.png rename to sprites/dlc/XEX6R0.png diff --git a/sprites/dlc1/XEX6S0.png b/sprites/dlc/XEX6S0.png similarity index 100% rename from sprites/dlc1/XEX6S0.png rename to sprites/dlc/XEX6S0.png diff --git a/sprites/dlc1/XRG6A0.png b/sprites/dlc/XRG6A0.png similarity index 100% rename from sprites/dlc1/XRG6A0.png rename to sprites/dlc/XRG6A0.png diff --git a/sprites/dlc1/XRG6B0.png b/sprites/dlc/XRG6B0.png similarity index 100% rename from sprites/dlc1/XRG6B0.png rename to sprites/dlc/XRG6B0.png diff --git a/sprites/dlc1/XRG6C0.png b/sprites/dlc/XRG6C0.png similarity index 100% rename from sprites/dlc1/XRG6C0.png rename to sprites/dlc/XRG6C0.png diff --git a/sprites/dlc1/XRG6D0.png b/sprites/dlc/XRG6D0.png similarity index 100% rename from sprites/dlc1/XRG6D0.png rename to sprites/dlc/XRG6D0.png diff --git a/sprites/dlc1/XRG6E0.png b/sprites/dlc/XRG6E0.png similarity index 100% rename from sprites/dlc1/XRG6E0.png rename to sprites/dlc/XRG6E0.png diff --git a/sprites/dlc1/XRG6F0.png b/sprites/dlc/XRG6F0.png similarity index 100% rename from sprites/dlc1/XRG6F0.png rename to sprites/dlc/XRG6F0.png diff --git a/sprites/dlc1/XRG6G0.png b/sprites/dlc/XRG6G0.png similarity index 100% rename from sprites/dlc1/XRG6G0.png rename to sprites/dlc/XRG6G0.png diff --git a/sprites/dlc1/XRG6H0.png b/sprites/dlc/XRG6H0.png similarity index 100% rename from sprites/dlc1/XRG6H0.png rename to sprites/dlc/XRG6H0.png diff --git a/sprites/dlc1/XRG6I0.png b/sprites/dlc/XRG6I0.png similarity index 100% rename from sprites/dlc1/XRG6I0.png rename to sprites/dlc/XRG6I0.png diff --git a/sprites/dlc1/XRG6J0.png b/sprites/dlc/XRG6J0.png similarity index 100% rename from sprites/dlc1/XRG6J0.png rename to sprites/dlc/XRG6J0.png diff --git a/sprites/dlc1/XRG6K0.png b/sprites/dlc/XRG6K0.png similarity index 100% rename from sprites/dlc1/XRG6K0.png rename to sprites/dlc/XRG6K0.png diff --git a/sprites/dlc1/XRG6L0.png b/sprites/dlc/XRG6L0.png similarity index 100% rename from sprites/dlc1/XRG6L0.png rename to sprites/dlc/XRG6L0.png diff --git a/sprites/dlc1/XRG6M0.png b/sprites/dlc/XRG6M0.png similarity index 100% rename from sprites/dlc1/XRG6M0.png rename to sprites/dlc/XRG6M0.png diff --git a/sprites/dlc1/XRG6N0.png b/sprites/dlc/XRG6N0.png similarity index 100% rename from sprites/dlc1/XRG6N0.png rename to sprites/dlc/XRG6N0.png diff --git a/sprites/dlc1/XRG6O0.png b/sprites/dlc/XRG6O0.png similarity index 100% rename from sprites/dlc1/XRG6O0.png rename to sprites/dlc/XRG6O0.png diff --git a/sprites/dlc1/XRG6P0.png b/sprites/dlc/XRG6P0.png similarity index 100% rename from sprites/dlc1/XRG6P0.png rename to sprites/dlc/XRG6P0.png diff --git a/sprites/dlc1/XRG6Q0.png b/sprites/dlc/XRG6Q0.png similarity index 100% rename from sprites/dlc1/XRG6Q0.png rename to sprites/dlc/XRG6Q0.png diff --git a/sprites/dlc1/XRG6R0.png b/sprites/dlc/XRG6R0.png similarity index 100% rename from sprites/dlc1/XRG6R0.png rename to sprites/dlc/XRG6R0.png diff --git a/sprites/dlc1/XRG6S0.png b/sprites/dlc/XRG6S0.png similarity index 100% rename from sprites/dlc1/XRG6S0.png rename to sprites/dlc/XRG6S0.png diff --git a/sprites/dlc1/XRG6T0.png b/sprites/dlc/XRG6T0.png similarity index 100% rename from sprites/dlc1/XRG6T0.png rename to sprites/dlc/XRG6T0.png diff --git a/sprites/dlc1/XRG6U0.png b/sprites/dlc/XRG6U0.png similarity index 100% rename from sprites/dlc1/XRG6U0.png rename to sprites/dlc/XRG6U0.png diff --git a/sprites/dlc1/XRG6V0.png b/sprites/dlc/XRG6V0.png similarity index 100% rename from sprites/dlc1/XRG6V0.png rename to sprites/dlc/XRG6V0.png diff --git a/sprites/dlc1/XRG6W0.png b/sprites/dlc/XRG6W0.png similarity index 100% rename from sprites/dlc1/XRG6W0.png rename to sprites/dlc/XRG6W0.png diff --git a/sprites/dlc1/XRG6X0.png b/sprites/dlc/XRG6X0.png similarity index 100% rename from sprites/dlc1/XRG6X0.png rename to sprites/dlc/XRG6X0.png diff --git a/sprites/dlc1/XRG7A0.png b/sprites/dlc/XRG7A0.png similarity index 100% rename from sprites/dlc1/XRG7A0.png rename to sprites/dlc/XRG7A0.png diff --git a/sprites/dlc1/XRG7B0.png b/sprites/dlc/XRG7B0.png similarity index 100% rename from sprites/dlc1/XRG7B0.png rename to sprites/dlc/XRG7B0.png diff --git a/sprites/dlc1/XRG7C0.png b/sprites/dlc/XRG7C0.png similarity index 100% rename from sprites/dlc1/XRG7C0.png rename to sprites/dlc/XRG7C0.png diff --git a/sprites/dlc1/XRG7D0.png b/sprites/dlc/XRG7D0.png similarity index 100% rename from sprites/dlc1/XRG7D0.png rename to sprites/dlc/XRG7D0.png diff --git a/sprites/dlc1/XRG7E0.png b/sprites/dlc/XRG7E0.png similarity index 100% rename from sprites/dlc1/XRG7E0.png rename to sprites/dlc/XRG7E0.png diff --git a/sprites/dlc1/XRG7F0.png b/sprites/dlc/XRG7F0.png similarity index 100% rename from sprites/dlc1/XRG7F0.png rename to sprites/dlc/XRG7F0.png diff --git a/sprites/dlc1/XRG7G0.png b/sprites/dlc/XRG7G0.png similarity index 100% rename from sprites/dlc1/XRG7G0.png rename to sprites/dlc/XRG7G0.png diff --git a/sprites/dlc1/XRG7H0.png b/sprites/dlc/XRG7H0.png similarity index 100% rename from sprites/dlc1/XRG7H0.png rename to sprites/dlc/XRG7H0.png diff --git a/sprites/dlc1/XRG7I0.png b/sprites/dlc/XRG7I0.png similarity index 100% rename from sprites/dlc1/XRG7I0.png rename to sprites/dlc/XRG7I0.png diff --git a/sprites/dlc1/XRG7J0.png b/sprites/dlc/XRG7J0.png similarity index 100% rename from sprites/dlc1/XRG7J0.png rename to sprites/dlc/XRG7J0.png diff --git a/sprites/dlc1/XRG7K0.png b/sprites/dlc/XRG7K0.png similarity index 100% rename from sprites/dlc1/XRG7K0.png rename to sprites/dlc/XRG7K0.png diff --git a/sprites/dlc1/XRG7L0.png b/sprites/dlc/XRG7L0.png similarity index 100% rename from sprites/dlc1/XRG7L0.png rename to sprites/dlc/XRG7L0.png diff --git a/sprites/dlc1/XRG7M0.png b/sprites/dlc/XRG7M0.png similarity index 100% rename from sprites/dlc1/XRG7M0.png rename to sprites/dlc/XRG7M0.png diff --git a/sprites/dlc1/XRG7N0.png b/sprites/dlc/XRG7N0.png similarity index 100% rename from sprites/dlc1/XRG7N0.png rename to sprites/dlc/XRG7N0.png diff --git a/sprites/dlc1/XRG7O0.png b/sprites/dlc/XRG7O0.png similarity index 100% rename from sprites/dlc1/XRG7O0.png rename to sprites/dlc/XRG7O0.png diff --git a/sprites/dlc1/XRG7P0.png b/sprites/dlc/XRG7P0.png similarity index 100% rename from sprites/dlc1/XRG7P0.png rename to sprites/dlc/XRG7P0.png diff --git a/sprites/dlc1/XRG7Q0.png b/sprites/dlc/XRG7Q0.png similarity index 100% rename from sprites/dlc1/XRG7Q0.png rename to sprites/dlc/XRG7Q0.png diff --git a/sprites/dlc1/XRG7R0.png b/sprites/dlc/XRG7R0.png similarity index 100% rename from sprites/dlc1/XRG7R0.png rename to sprites/dlc/XRG7R0.png diff --git a/sprites/dlc1/XRG7S0.png b/sprites/dlc/XRG7S0.png similarity index 100% rename from sprites/dlc1/XRG7S0.png rename to sprites/dlc/XRG7S0.png diff --git a/sprites/dlc1/XRG7T0.png b/sprites/dlc/XRG7T0.png similarity index 100% rename from sprites/dlc1/XRG7T0.png rename to sprites/dlc/XRG7T0.png diff --git a/sprites/dlc1/XRG7U0.png b/sprites/dlc/XRG7U0.png similarity index 100% rename from sprites/dlc1/XRG7U0.png rename to sprites/dlc/XRG7U0.png diff --git a/sprites/dlc1/XRG7V0.png b/sprites/dlc/XRG7V0.png similarity index 100% rename from sprites/dlc1/XRG7V0.png rename to sprites/dlc/XRG7V0.png diff --git a/sprites/dlc1/XRG7W0.png b/sprites/dlc/XRG7W0.png similarity index 100% rename from sprites/dlc1/XRG7W0.png rename to sprites/dlc/XRG7W0.png diff --git a/sprites/dlc1/XRG7X0.png b/sprites/dlc/XRG7X0.png similarity index 100% rename from sprites/dlc1/XRG7X0.png rename to sprites/dlc/XRG7X0.png diff --git a/sprites/dlc1/BFRGA0.png b/sprites/dlc1/BFRGA0.png deleted file mode 100644 index abf639ed9..000000000 Binary files a/sprites/dlc1/BFRGA0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGB0.png b/sprites/dlc1/BFRGB0.png deleted file mode 100644 index c90483827..000000000 Binary files a/sprites/dlc1/BFRGB0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGC0.png b/sprites/dlc1/BFRGC0.png deleted file mode 100644 index af9249b5b..000000000 Binary files a/sprites/dlc1/BFRGC0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGD0.png b/sprites/dlc1/BFRGD0.png deleted file mode 100644 index 64160f88a..000000000 Binary files a/sprites/dlc1/BFRGD0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGE0.png b/sprites/dlc1/BFRGE0.png deleted file mode 100644 index 4c84df6ef..000000000 Binary files a/sprites/dlc1/BFRGE0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGF0.png b/sprites/dlc1/BFRGF0.png deleted file mode 100644 index 684253c5d..000000000 Binary files a/sprites/dlc1/BFRGF0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGG0.png b/sprites/dlc1/BFRGG0.png deleted file mode 100644 index f867ebc9c..000000000 Binary files a/sprites/dlc1/BFRGG0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGH0.png b/sprites/dlc1/BFRGH0.png deleted file mode 100644 index 7633df691..000000000 Binary files a/sprites/dlc1/BFRGH0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGI0.png b/sprites/dlc1/BFRGI0.png deleted file mode 100644 index e07408f0c..000000000 Binary files a/sprites/dlc1/BFRGI0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGJ0.png b/sprites/dlc1/BFRGJ0.png deleted file mode 100644 index 420221716..000000000 Binary files a/sprites/dlc1/BFRGJ0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGK0.png b/sprites/dlc1/BFRGK0.png deleted file mode 100644 index ad28212b0..000000000 Binary files a/sprites/dlc1/BFRGK0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGL0.png b/sprites/dlc1/BFRGL0.png deleted file mode 100644 index ac5ef5d3f..000000000 Binary files a/sprites/dlc1/BFRGL0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGM0.png b/sprites/dlc1/BFRGM0.png deleted file mode 100644 index 495cc8e37..000000000 Binary files a/sprites/dlc1/BFRGM0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGN0.png b/sprites/dlc1/BFRGN0.png deleted file mode 100644 index 10224ade1..000000000 Binary files a/sprites/dlc1/BFRGN0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGO0.png b/sprites/dlc1/BFRGO0.png deleted file mode 100644 index 96c27f7e2..000000000 Binary files a/sprites/dlc1/BFRGO0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGP0.png b/sprites/dlc1/BFRGP0.png deleted file mode 100644 index 6881266a2..000000000 Binary files a/sprites/dlc1/BFRGP0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGQ0.png b/sprites/dlc1/BFRGQ0.png deleted file mode 100644 index b6a9b9048..000000000 Binary files a/sprites/dlc1/BFRGQ0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGR0.png b/sprites/dlc1/BFRGR0.png deleted file mode 100644 index f3034aad2..000000000 Binary files a/sprites/dlc1/BFRGR0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGS0.png b/sprites/dlc1/BFRGS0.png deleted file mode 100644 index d25a2a670..000000000 Binary files a/sprites/dlc1/BFRGS0.png and /dev/null differ diff --git a/sprites/dlc1/BFRGT0.png b/sprites/dlc1/BFRGT0.png deleted file mode 100644 index facb08d93..000000000 Binary files a/sprites/dlc1/BFRGT0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMA0.png b/sprites/dlc1/BFSMA0.png deleted file mode 100644 index 5283fd9ed..000000000 Binary files a/sprites/dlc1/BFSMA0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMB0.png b/sprites/dlc1/BFSMB0.png deleted file mode 100644 index f6a9a51d5..000000000 Binary files a/sprites/dlc1/BFSMB0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMC0.png b/sprites/dlc1/BFSMC0.png deleted file mode 100644 index 4d824a694..000000000 Binary files a/sprites/dlc1/BFSMC0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMD0.png b/sprites/dlc1/BFSMD0.png deleted file mode 100644 index 837b9679e..000000000 Binary files a/sprites/dlc1/BFSMD0.png and /dev/null differ diff --git a/sprites/dlc1/BFSME0.png b/sprites/dlc1/BFSME0.png deleted file mode 100644 index 2e065d1ca..000000000 Binary files a/sprites/dlc1/BFSME0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMF0.png b/sprites/dlc1/BFSMF0.png deleted file mode 100644 index 643da6bca..000000000 Binary files a/sprites/dlc1/BFSMF0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMG0.png b/sprites/dlc1/BFSMG0.png deleted file mode 100644 index bd81cf706..000000000 Binary files a/sprites/dlc1/BFSMG0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMH0.png b/sprites/dlc1/BFSMH0.png deleted file mode 100644 index 0d1ed2e74..000000000 Binary files a/sprites/dlc1/BFSMH0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMI0.png b/sprites/dlc1/BFSMI0.png deleted file mode 100644 index 6bb9c43fc..000000000 Binary files a/sprites/dlc1/BFSMI0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMJ0.png b/sprites/dlc1/BFSMJ0.png deleted file mode 100644 index 06063af76..000000000 Binary files a/sprites/dlc1/BFSMJ0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMK0.png b/sprites/dlc1/BFSMK0.png deleted file mode 100644 index c33a20ee2..000000000 Binary files a/sprites/dlc1/BFSMK0.png and /dev/null differ diff --git a/sprites/dlc1/BFSML0.png b/sprites/dlc1/BFSML0.png deleted file mode 100644 index 33451d07c..000000000 Binary files a/sprites/dlc1/BFSML0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMM0.png b/sprites/dlc1/BFSMM0.png deleted file mode 100644 index 13ed3d366..000000000 Binary files a/sprites/dlc1/BFSMM0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMN0.png b/sprites/dlc1/BFSMN0.png deleted file mode 100644 index 31e81badc..000000000 Binary files a/sprites/dlc1/BFSMN0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMO0.png b/sprites/dlc1/BFSMO0.png deleted file mode 100644 index 9a8b5d91b..000000000 Binary files a/sprites/dlc1/BFSMO0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMP0.png b/sprites/dlc1/BFSMP0.png deleted file mode 100644 index 6be2e152c..000000000 Binary files a/sprites/dlc1/BFSMP0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMQ0.png b/sprites/dlc1/BFSMQ0.png deleted file mode 100644 index d2fe207c3..000000000 Binary files a/sprites/dlc1/BFSMQ0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMR0.png b/sprites/dlc1/BFSMR0.png deleted file mode 100644 index ba53fa355..000000000 Binary files a/sprites/dlc1/BFSMR0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMS0.png b/sprites/dlc1/BFSMS0.png deleted file mode 100644 index 8e5597266..000000000 Binary files a/sprites/dlc1/BFSMS0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMT0.png b/sprites/dlc1/BFSMT0.png deleted file mode 100644 index e4426a304..000000000 Binary files a/sprites/dlc1/BFSMT0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMU0.png b/sprites/dlc1/BFSMU0.png deleted file mode 100644 index d2f259698..000000000 Binary files a/sprites/dlc1/BFSMU0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMV0.png b/sprites/dlc1/BFSMV0.png deleted file mode 100644 index 9f7d106d2..000000000 Binary files a/sprites/dlc1/BFSMV0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMW0.png b/sprites/dlc1/BFSMW0.png deleted file mode 100644 index 7baadfb71..000000000 Binary files a/sprites/dlc1/BFSMW0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMX0.png b/sprites/dlc1/BFSMX0.png deleted file mode 100644 index def97bddd..000000000 Binary files a/sprites/dlc1/BFSMX0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMY0.png b/sprites/dlc1/BFSMY0.png deleted file mode 100644 index 4e00dd239..000000000 Binary files a/sprites/dlc1/BFSMY0.png and /dev/null differ diff --git a/sprites/dlc1/BFSMZ0.png b/sprites/dlc1/BFSMZ0.png deleted file mode 100644 index 130120dfe..000000000 Binary files a/sprites/dlc1/BFSMZ0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLA0.png b/sprites/dlc1/BXPLA0.png deleted file mode 100644 index 1c5c5c69f..000000000 Binary files a/sprites/dlc1/BXPLA0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLB0.png b/sprites/dlc1/BXPLB0.png deleted file mode 100644 index d0bd66ae8..000000000 Binary files a/sprites/dlc1/BXPLB0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLC0.png b/sprites/dlc1/BXPLC0.png deleted file mode 100644 index fa099a743..000000000 Binary files a/sprites/dlc1/BXPLC0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLD0.png b/sprites/dlc1/BXPLD0.png deleted file mode 100644 index 4f5aa973b..000000000 Binary files a/sprites/dlc1/BXPLD0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLE0.png b/sprites/dlc1/BXPLE0.png deleted file mode 100644 index c6f941378..000000000 Binary files a/sprites/dlc1/BXPLE0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLF0.png b/sprites/dlc1/BXPLF0.png deleted file mode 100644 index 0cd553847..000000000 Binary files a/sprites/dlc1/BXPLF0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLG0.png b/sprites/dlc1/BXPLG0.png deleted file mode 100644 index c24da1316..000000000 Binary files a/sprites/dlc1/BXPLG0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLH0.png b/sprites/dlc1/BXPLH0.png deleted file mode 100644 index be3a08c2a..000000000 Binary files a/sprites/dlc1/BXPLH0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLI0.png b/sprites/dlc1/BXPLI0.png deleted file mode 100644 index 28a2b4ca1..000000000 Binary files a/sprites/dlc1/BXPLI0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLJ0.png b/sprites/dlc1/BXPLJ0.png deleted file mode 100644 index 5fdffae6b..000000000 Binary files a/sprites/dlc1/BXPLJ0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLK0.png b/sprites/dlc1/BXPLK0.png deleted file mode 100644 index ead15921a..000000000 Binary files a/sprites/dlc1/BXPLK0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLL0.png b/sprites/dlc1/BXPLL0.png deleted file mode 100644 index 0c3d4636f..000000000 Binary files a/sprites/dlc1/BXPLL0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLM0.png b/sprites/dlc1/BXPLM0.png deleted file mode 100644 index 5fa8dde78..000000000 Binary files a/sprites/dlc1/BXPLM0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLN0.png b/sprites/dlc1/BXPLN0.png deleted file mode 100644 index cca9562aa..000000000 Binary files a/sprites/dlc1/BXPLN0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLO0.png b/sprites/dlc1/BXPLO0.png deleted file mode 100644 index 8fd14f70b..000000000 Binary files a/sprites/dlc1/BXPLO0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLP0.png b/sprites/dlc1/BXPLP0.png deleted file mode 100644 index 5c5f44ca4..000000000 Binary files a/sprites/dlc1/BXPLP0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLQ0.png b/sprites/dlc1/BXPLQ0.png deleted file mode 100644 index 773df61b7..000000000 Binary files a/sprites/dlc1/BXPLQ0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLR0.png b/sprites/dlc1/BXPLR0.png deleted file mode 100644 index c9ccd9753..000000000 Binary files a/sprites/dlc1/BXPLR0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLS0.png b/sprites/dlc1/BXPLS0.png deleted file mode 100644 index 12928f35e..000000000 Binary files a/sprites/dlc1/BXPLS0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLT0.png b/sprites/dlc1/BXPLT0.png deleted file mode 100644 index 161e84743..000000000 Binary files a/sprites/dlc1/BXPLT0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLU0.png b/sprites/dlc1/BXPLU0.png deleted file mode 100644 index 8e3d291cf..000000000 Binary files a/sprites/dlc1/BXPLU0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLV0.png b/sprites/dlc1/BXPLV0.png deleted file mode 100644 index 9ee7c6adc..000000000 Binary files a/sprites/dlc1/BXPLV0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLW0.png b/sprites/dlc1/BXPLW0.png deleted file mode 100644 index 560414766..000000000 Binary files a/sprites/dlc1/BXPLW0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLX0.png b/sprites/dlc1/BXPLX0.png deleted file mode 100644 index b2f026e01..000000000 Binary files a/sprites/dlc1/BXPLX0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLY0.png b/sprites/dlc1/BXPLY0.png deleted file mode 100644 index 0c82cfb81..000000000 Binary files a/sprites/dlc1/BXPLY0.png and /dev/null differ diff --git a/sprites/dlc1/BXPLZ0.png b/sprites/dlc1/BXPLZ0.png deleted file mode 100644 index 7d954a889..000000000 Binary files a/sprites/dlc1/BXPLZ0.png and /dev/null differ diff --git a/sprites/dlc1/BXPL[0.png b/sprites/dlc1/BXPL[0.png deleted file mode 100644 index 5b7f834c2..000000000 Binary files a/sprites/dlc1/BXPL[0.png and /dev/null differ diff --git a/sprites/dlc1/BXPL^0.png b/sprites/dlc1/BXPL^0.png deleted file mode 100644 index 0eb5dbb1b..000000000 Binary files a/sprites/dlc1/BXPL^0.png and /dev/null differ diff --git a/swwmcomp.acs b/swwmcomp.acs index 2e7e67242..98ee39a6f 100644 --- a/swwmcomp.acs +++ b/swwmcomp.acs @@ -97,3 +97,217 @@ SCRIPT "E1M8_KNOCKOUT" ( void ) Delay(100); Exit_Normal(0); } + +// DUMP 2 and 3 rewritten hub progress scripts +// Because the way these use BigFont makes them unreadable otherwise + +SCRIPT "DUMP2_HUB" ( void ) +{ + Delay(35); + ACS_Terminate(2,0); + int mapstodo; + switch( GameSkill() ) + { + case 0: + mapstodo = 8; + break; + case 1: + mapstodo = 16; + break; + case 2: + mapstodo = 32; + break; + case 3: + mapstodo = 48; + break; + default: + mapstodo = 64; + break; + } + bool unlockedfinal = false; + while ( true ) + { + int lvent = ScriptCall("BaseStatusBar","GetGlobalACSValue",59); + bool unlockfinal = false; + switch( GameSkill() ) + { + case 0: + if ( lvent >= 8 ) unlockfinal = true; + break; + case 1: + if ( lvent >= 16 ) unlockfinal = true; + break; + case 2: + if ( lvent >= 32 ) unlockfinal = true; + break; + case 3: + if ( lvent >= 48 ) unlockfinal = true; + break; + default: + if ( lvent >= 64 ) unlockfinal = true; + break; + } + if ( unlockfinal && !unlockedfinal ) + { + unlockedfinal = true; + Ceiling_LowerByValue(10,96,96); + } + SetFont("BigFont"); + int progress = mapstodo-lvent; + SetHudSize(640,480,0); + if ( progress > 0 ) HudMessageBold(d:progress,s:" more maps to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); + else HudMessageBold(s:"The final room is open...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); + Delay(1); + } +} + +SCRIPT "DUMP3_HUB" ( void ) +{ + Delay(1); + ACS_Terminate(1,0); + int mapstodo; + switch( GameSkill() ) + { + case 0: + mapstodo = 8; + break; + case 1: + mapstodo = 16; + break; + case 2: + mapstodo = 32; + break; + case 3: + mapstodo = 48; + break; + default: + mapstodo = 64; + break; + } + bool unlockedfinal = false; + while ( true ) + { + int lvent = ScriptCall("BaseStatusBar","GetGlobalACSValue",59); + bool unlockfinal = false; + switch( GameSkill() ) + { + case 0: + if ( lvent >= 8 ) unlockfinal = true; + break; + case 1: + if ( lvent >= 16 ) unlockfinal = true; + break; + case 2: + if ( lvent >= 32 ) unlockfinal = true; + break; + case 3: + if ( lvent >= 48 ) unlockfinal = true; + break; + default: + if ( lvent >= 64 ) unlockfinal = true; + break; + } + if ( unlockfinal && !unlockedfinal ) + { + unlockedfinal = true; + Floor_LowerByValue(11,96,256); + } + SetFont("BigFont"); + int progress = mapstodo-lvent; + SetHudSize(640,480,0); + if ( progress > 1 ) HudMessageBold(d:progress,s:" more maps to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); + else if ( progress > 0 ) HudMessageBold(d:progress,s:" more map to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); + else HudMessageBold(s:"The final room is open...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); + Delay(1); + } +} + +// same here, just TOO BIG +str DUMP3MapNames[74][2] = +{ + { "", "" }, // 0 + { "Check-In", "undeadRyker" }, + { "Pissboy", "Anonymous" }, + { "Simplicity is Golden", "demo_the_man" }, + { "Invitation to Destruction", "Gardevoir" }, + { "SOLITARY", "CJacobs" }, + { "Ruins & Lava", "VBob" }, + { "Bloodsport Canyon", "Hoodoo456" }, + { "Nuclear Control Facilities", "Titan314" }, + { "Mountain Temple", "Project_ILE" }, + { "Overflow", "SpudTheRubbish" }, // 10 + { "'Venture into the Bouncy Castle", "Beed28" }, + { "The Crater", "combatxtreme & Plutonic Overkill" }, + { "The Fun Lab", "TerminusEst13" }, + { "Durex Waste Disposal", "Minimum Payne" }, + { "The Corporate Ladder", "Kinsie" }, + { "Regressive Experience", "Dukka" }, + { "Baby's First Map", "Bobman23" }, + { "Research Facility", "deathgod5309" }, + { "AMONG US", "HumansAmongUs" }, + { "The Darkness Beyond", "KarolineDianne" }, // 20 + { "Base Stimpack", "charcola" }, + { "Crunk Refinery", "BobBarker" }, + { "0-Pipe Gear", "Toooooasty" }, + { "Escape from Argent Prison", "Lance Charleson" }, + { "Live Fire Exorcise", "Sgt. Shivers" }, + { "Attack First", "simpletonn" }, + { "Hitler's Prison", "Luigi2600" }, + { "Tomb of Hetickhamen", "Action Max" }, + { "The Weed Number", "Abysswalker" }, + { "This Is Serious Mum", "deathz0r" }, // 30 + { "Not Another Tech Base", "ArchXeno" }, + { "Hydraulic Plant", "SpiritOfDecay" }, + { "Janus", "SoundOfDoomDoors" }, + { "Gamma Station Entrance", "SMG_Marine" }, + { "Realm of the Sempiternal Archvile", "Darsycho" }, + { "Judgement Day", "Stale_meat" }, + { "Complex Alive", "Roxas" }, + { "DUMP TD", "Arctangent" }, + { "Dumping Ground", "TotalInjury" }, + { "Mercury Rain", "Jimmy" }, // 40 + { "mapsterpiece", "idiotbitz" }, + { "Tunnel Crates Rule!", "Stale_Meat" }, + { "CLOVERHOUSE", "Icept" }, + { "Generic UAC Outpost", "Anonymous" }, + { "Felt", "FloatRand" }, + { "Panic Room", "comet1338" }, + { "Simple Chaos", "willykuo123" }, + { "EVISCERATED", "NAG" }, + { "The Mine to Hell", "InsanityBringer" }, + { "Sandcastley Sandcastling Sandcastles", "PinchySkree" }, // 50 + { "Dead", "Already Dead" }, + { "Broken Shit", "ZachBrowder" }, + { "Weapons Research Lab", "Vennobennu" }, + { "Winter in Summer", "TehRealSalt" }, + { "The UAC Ocean Base", "leodoom85" }, + { "Hot Water Music", "Protester" }, + { "Lambda Base", "floatRand" }, + { "inferno odyssey", "Anonymous" }, + { "Infested Installation", "Flipy" }, + { "The Duality", "NeuralStunner" }, // 60 + { "Municipal Well", "Flotilla" }, + { "Dropoff", "CharlieTheGnarly" }, + { "Dimensional Accelerator", "Untitled" }, + { "Urban Hell", "ChrisR91" }, + { "Electron", "floatRand" }, + { "Caco-lover", "everennui" }, + { "Brown Mesa", "Cheeki" }, + { "Bloody Hell", "Wivicer" }, + { "A Night at the Opera", "Temin_Dump" }, + { "An Online Virtual Reality Used By Hackers", "Shadow Hog" }, // 70 + { "BtFS", "Gageat" }, + { "The Runaround", "LogicalFallacy" }, + { "Attack From Within", "mumblemumble" } +}; + +SCRIPT "DUMP3_DISPLAY" ( int f1, int f2 ) +{ + int fuck = (f1*10)+f2; + SetHudSize(640,480,0); + SetFont("BigFont"); + HudMessage(s:DUMP3MapNames[fuck][0];HUDMSG_FADEINOUT,2,CR_WHITE,320.4,380.2,2.5,0.15,0.65); + SetHudSize(320,240,0); + SetFont("SmallFont"); + HudMessage(s:DUMP3MapNames[fuck][1];HUDMSG_FADEINOUT,3,CR_GOLD,160.4,200.0,2.5,0.15,0.65); +} diff --git a/swwmvoicepack.txt b/swwmvoicepack.txt index 83c9b04e7..e1d437f67 100644 --- a/swwmvoicepack.txt +++ b/swwmvoicepack.txt @@ -1,5 +1,5 @@ # (lines starting with this character are comments) -# if you want to make custom voice packs for SWWM GZ, you need to provide a +# if you want to make custom voice packs for the mod, you need to provide a # file like this in the root of the zip/pk3/whatever, wads are not supported # list the names of your voice types here and don't forget to define your voice # lines using a similar format to the base game's: @@ -13,3 +13,4 @@ # also don't forget to add a SWWM_VOICENAME_* language string for each voice # type so they have a "human-readable" name in the options menu default +legacy diff --git a/textures/chiptilb.png b/textures/chiptilb.png new file mode 100644 index 000000000..8818fa811 Binary files /dev/null and b/textures/chiptilb.png differ diff --git a/textures/chiptilc.png b/textures/chiptilc.png new file mode 100644 index 000000000..36481a538 Binary files /dev/null and b/textures/chiptilc.png differ diff --git a/textures/chiptilg.png b/textures/chiptilg.png new file mode 100644 index 000000000..318154d31 Binary files /dev/null and b/textures/chiptilg.png differ diff --git a/textures/chiptilm.png b/textures/chiptilm.png new file mode 100644 index 000000000..6aa034629 Binary files /dev/null and b/textures/chiptilm.png differ diff --git a/textures/chiptilr.png b/textures/chiptilr.png new file mode 100644 index 000000000..c9cd12868 Binary files /dev/null and b/textures/chiptilr.png differ diff --git a/textures/chiptilw.png b/textures/chiptilw.png new file mode 100644 index 000000000..0be309464 Binary files /dev/null and b/textures/chiptilw.png differ diff --git a/textures/chiptily.png b/textures/chiptily.png new file mode 100644 index 000000000..d9e54359b Binary files /dev/null and b/textures/chiptily.png differ diff --git a/tools/.gitignore b/tools/.gitignore index 1d7591001..fbc8514d7 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,4 +1,2 @@ -mkfontblock -mkfontsingle mkstartup mklang diff --git a/tools/build.sh b/tools/build.sh index 8e8bcb424..fcea83ecc 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -1,5 +1,3 @@ #!/bin/sh -gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic $(pkg-config --libs --cflags freetype2 libpng) -o mkfontblock mkfontblock.c -gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic $(pkg-config --libs --cflags freetype2 libpng) -o mkfontsingle mkfontsingle.c gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic -o mkstartup mkstartup.c gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic -o mklang mklang.c diff --git a/tools/mkfontblock.bugs b/tools/mkfontblock.bugs deleted file mode 100644 index 1093d68e0..000000000 --- a/tools/mkfontblock.bugs +++ /dev/null @@ -1,10 +0,0 @@ -- Damn thing breaks HARD with non-bitmap fonts, something wonky af with the - glyph offsets, will have to investigate further. -- Obviously this doesn't work well with proportional fonts, those would need a - different format where each glyph is a separate graphic with its own offsets - and stuff. -- Doesn't handle unicode blocks beyond the basic multilingual plane, might - actually be an issue with freetype itself, or the fonts I use, though I CAN - see that the glyphs are there if I use a character map program. -- Vertical shift has to be specified manually for some fonts that have some - sort of built-in offset, I have yet to figure a way to automate this. diff --git a/tools/mkfontblock.c b/tools/mkfontblock.c deleted file mode 100644 index 19f482eb1..000000000 --- a/tools/mkfontblock.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - mkfontblock.c : Make font pngs for gzdoom, in an ugly cheap way. - This code is a mess but I keep it here so people know how much I had - to suffer to get this done. - - Copyright (c) 2020-2021 Marisa Kirisame, UnSX Team - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -#include -#include -#include -#include -#include -#include FT_FREETYPE_H - -int writepng( const char *filename, uint8_t *fdata, int w, int h, int p ) -{ - if ( !filename ) return 0; - png_structp pngp; - png_infop infp; - FILE *pf; - if ( !(pf = fopen(filename,"wb")) ) return 0; - pngp = png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0); - if ( !pngp ) - { - fclose(pf); - return 0; - } - infp = png_create_info_struct(pngp); - if ( !infp ) - { - fclose(pf); - png_destroy_write_struct(&pngp,0); - return 0; - } - if ( setjmp(png_jmpbuf(pngp)) ) - { - png_destroy_write_struct(&pngp,&infp); - fclose(pf); - return 0; - } - png_init_io(pngp,pf); - png_set_IHDR(pngp,infp,w,h,8,PNG_COLOR_TYPE_GA, - PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_DEFAULT); - png_write_info(pngp,infp); - for ( int i=0; i= iw) || (y < 0) || (y >= ih) ) return; - uint32_t tpos = (x+y*iw)*2; - // add alpha - int alph = idata[tpos+1]; - alph += a; - if ( alph > 255 ) alph = 255; - idata[tpos+1] = alph; - // blend color - int col = idata[tpos]*(a-255); - col += v*a; - col /= 255; - idata[tpos] = col; -} - -uint8_t lerpg( float a ) -{ - return (uint8_t)(a*191+64); -} - -int draw_glyph( FT_Bitmap *bmp, uint8_t v, uint32_t px, uint32_t py, uint8_t ox, uint8_t oy ) -{ - int drawn = 0; - unsigned i, j; - for ( j=0; jrows; j++ ) - { - uint8_t rv = v; - // apply gradient, if any - if ( v == 255 ) - { - float a = (j+oy-upshift)/(float)h; - if ( (gradient&3) == 1 ) rv = lerpg(1.-a); - else if ( (gradient&3) == 2 ) rv = lerpg(a); - } - for ( i=0; iwidth; i++ ) - { - if ( bmp->pixel_mode == FT_PIXEL_MODE_GRAY ) - { - uint8_t a = bmp->buffer[i+j*bmp->pitch]; - if ( !drawn ) drawn = (a > 0); - putpixel(rv,a,px+ox+i,py+oy+j); - } - else if ( bmp->pixel_mode == FT_PIXEL_MODE_MONO ) - { - // thanks to https://stackoverflow.com/a/14905971 - unsigned p = bmp->pitch; - uint8_t *row = &bmp->buffer[p*j]; - uint8_t a = ((row[i>>3])&(128>>(i&7)))?255:0; - if ( !drawn ) drawn = (a > 0); - putpixel(rv,a,px+ox+i,py+oy+j); - } - } - } - return drawn; -} - -int main( int argc, char **argv ) -{ - if ( argc < 4 ) - { - fprintf(stderr,"usage: mkfontblock " - " [gradient type] [upshift]\n"); - return 1; - } - if ( FT_Init_FreeType(&ftlib) ) - return 2; - uint32_t block = 0; - sscanf(argv[2],"%d",&pxsiz); - sscanf(argv[3],"%dx%d",&w,&h); - sscanf(argv[4],"%x",&block); - if ( argc > 5 ) sscanf(argv[5],"%d",&gradient); - if ( argc > 6 ) sscanf(argv[6],"%d",&upshift); - if ( FT_New_Face(ftlib,argv[1],0,&fnt) ) - return 4; - if ( FT_Set_Pixel_Sizes(fnt,0,pxsiz) ) - return 8; - FT_Select_Charmap(fnt,FT_ENCODING_UNICODE); - iw = w*32; - ih = h*8; - idata = calloc(iw*ih,2); - int x = 0, y = 0; - int lastvalid = 0; - int validrow = 0; - for ( int i=0; i<256; i++ ) - { - FT_UInt glyph = FT_Get_Char_Index(fnt,block+i); - if ( !FT_Load_Glyph(fnt,glyph,FT_LOAD_DEFAULT) && glyph ) - { - FT_Render_Glyph(fnt->glyph,FT_RENDER_MODE_NORMAL); - int xx = x*w; - int yy = y*h-upshift; - int valid; - if ( gradient&4 ) - { - // draw outline first - draw_glyph(&fnt->glyph->bitmap,0,xx,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - valid = draw_glyph(&fnt->glyph->bitmap,255,xx+1,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - } - else - { - // draw drop shadow first - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - valid = draw_glyph(&fnt->glyph->bitmap,255,xx,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - } - if ( !validrow ) validrow = valid; - } - x++; - if ( x >= 32 ) - { - if ( validrow ) lastvalid = y+1; - validrow = 0; - x = 0; - y++; - } - } - // trim excess height - ih = h*lastvalid; - if ( ih > 0 ) - { - char fname[256]; - snprintf(fname,256,"%04X.png",block); - writepng(fname,idata,iw,ih,iw*2); - } - free(idata); - FT_Done_Face(fnt); - FT_Done_FreeType(ftlib); - return 0; -} diff --git a/tools/mkfontsingle.c b/tools/mkfontsingle.c deleted file mode 100644 index 868543d2c..000000000 --- a/tools/mkfontsingle.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - mkfontsingle.c : Make font pngs for gzdoom, in an ugly cheap way. - This code is a mess but I keep it here so people know how much I had - to suffer to get this done. - - Copyright (c) 2020-2021 Marisa Kirisame, UnSX Team - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -#include -#include -#include -#include -#include -#include FT_FREETYPE_H - -int writepng( const char *filename, uint8_t *fdata, int w, int h, int p ) -{ - if ( !filename ) return 0; - png_structp pngp; - png_infop infp; - FILE *pf; - if ( !(pf = fopen(filename,"wb")) ) return 0; - pngp = png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0); - if ( !pngp ) - { - fclose(pf); - return 0; - } - infp = png_create_info_struct(pngp); - if ( !infp ) - { - fclose(pf); - png_destroy_write_struct(&pngp,0); - return 0; - } - if ( setjmp(png_jmpbuf(pngp)) ) - { - png_destroy_write_struct(&pngp,&infp); - fclose(pf); - return 0; - } - png_init_io(pngp,pf); - png_set_IHDR(pngp,infp,w,h,8,PNG_COLOR_TYPE_GA, - PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_DEFAULT); - png_write_info(pngp,infp); - for ( int i=0; i= iw) || (y < 0) || (y >= ih) ) return; - uint32_t tpos = (x+y*iw)*2; - // add alpha - int alph = idata[tpos+1]; - alph += a; - if ( alph > 255 ) alph = 255; - idata[tpos+1] = alph; - // blend color - int col = idata[tpos]*(a-255); - col += v*a; - col /= 255; - idata[tpos] = col; -} - -uint8_t lerpg( float a ) -{ - return (uint8_t)(a*191+64); -} - -int draw_glyph( FT_Bitmap *bmp, uint8_t v, uint32_t px, uint32_t py, uint8_t ox, uint8_t oy ) -{ - int drawn = 0; - unsigned i, j; - for ( j=0; jrows; j++ ) - { - uint8_t rv = v; - // apply gradient, if any - if ( v == 255 ) - { - float a = (j+oy-upshift)/(float)h; - if ( (gradient&3) == 1 ) rv = lerpg(1.-a); - else if ( (gradient&3) == 2 ) rv = lerpg(a); - } - for ( i=0; iwidth; i++ ) - { - if ( bmp->pixel_mode == FT_PIXEL_MODE_GRAY ) - { - uint8_t a = bmp->buffer[i+j*bmp->pitch]; - if ( !drawn ) drawn = (a > 0); - putpixel(rv,a,px+ox+i,py+oy+j); - } - else if ( bmp->pixel_mode == FT_PIXEL_MODE_MONO ) - { - // thanks to https://stackoverflow.com/a/14905971 - unsigned p = bmp->pitch; - uint8_t *row = &bmp->buffer[p*j]; - uint8_t a = ((row[i>>3])&(128>>(i&7)))?255:0; - if ( !drawn ) drawn = (a > 0); - putpixel(rv,a,px+ox+i,py+oy+j); - } - } - } - return drawn; -} - -int main( int argc, char **argv ) -{ - if ( argc < 4 ) - { - fprintf(stderr,"usage: mkfontsingle " - " [gradient type] [upshift]\n"); - return 1; - } - if ( FT_Init_FreeType(&ftlib) ) - return 2; - uint32_t range[2] = {0x0000,0x00FF}; - sscanf(argv[2],"%d",&pxsiz); - sscanf(argv[3],"%dx%d",&w,&h); - sscanf(argv[4],"%x-%x",&range[0],&range[1]); - if ( argc > 5 ) sscanf(argv[5],"%d",&gradient); - if ( argc > 6 ) sscanf(argv[6],"%d",&upshift); - if ( FT_New_Face(ftlib,argv[1],0,&fnt) ) - return 4; - if ( FT_Set_Pixel_Sizes(fnt,0,pxsiz) ) - return 8; - FT_Select_Charmap(fnt,FT_ENCODING_UNICODE); - iw = w; - ih = h; - idata = calloc(iw*ih,2); - for ( uint32_t i=range[0]; i<=range[1]; i++ ) - { - FT_UInt glyph = FT_Get_Char_Index(fnt,i); - if ( !FT_Load_Glyph(fnt,glyph,FT_LOAD_DEFAULT) && glyph ) - { - FT_Render_Glyph(fnt->glyph,FT_RENDER_MODE_NORMAL); - int xx = 0; - int yy = -upshift; - int valid; - if ( gradient&4 ) - { - // draw outline first - draw_glyph(&fnt->glyph->bitmap,0,xx,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - draw_glyph(&fnt->glyph->bitmap,0,xx+2,yy+2,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - valid = draw_glyph(&fnt->glyph->bitmap,255,xx+1,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - } - else - { - // draw drop shadow first - draw_glyph(&fnt->glyph->bitmap,0,xx+1,yy+1,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - valid = draw_glyph(&fnt->glyph->bitmap,255,xx,yy,fnt->glyph->bitmap_left,pxsiz-fnt->glyph->bitmap_top); - } - if ( valid ) - { - char fname[256]; - snprintf(fname,256,"%04X.png",i); - writepng(fname,idata,iw,ih,iw*2); - } - memset(idata,0,iw*ih*2); - } - } - free(idata); - FT_Done_Face(fnt); - FT_Done_FreeType(ftlib); - return 0; -} diff --git a/tools/mklang.c b/tools/mklang.c index 59b11054e..078951883 100644 --- a/tools/mklang.c +++ b/tools/mklang.c @@ -3,7 +3,7 @@ This code is a mess and it's full of hacks, but that's to be expected when it's all really just for personal use. - Copyright (c) 2020-2021 Marisa Kirisame, UnSX Team + Copyright (c) 2020-2022 Marisa Kirisame, UnSX Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/tools/mkpk3.sh b/tools/mkpk3.sh index bdabc7ec4..16ba41247 100755 --- a/tools/mkpk3.sh +++ b/tools/mkpk3.sh @@ -1,5 +1,5 @@ #!/bin/sh -WORKDIR=$(readlink -f $0 | sed 's/\(swwmgz_m\)\(.*\)/\1/') +WORKDIR=$(dirname $(dirname $(readlink -f $0))) pushd "$WORKDIR" 7z a -tzip -mx=9 -x@tools/excl.lst -up0q0r2x2y2z1w2 ../swwmgz${1}_m.pk3 . popd diff --git a/tools/mkpk7.sh b/tools/mkpk7.sh index 013a29a83..80afcca4f 100755 --- a/tools/mkpk7.sh +++ b/tools/mkpk7.sh @@ -1,5 +1,5 @@ #!/bin/sh -WORKDIR=$(readlink -f $0 | sed 's/\(swwmgz_m\)\(.*\)/\1/') +WORKDIR=$(dirname $(dirname $(readlink -f $0))) pushd "$WORKDIR" 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -x@tools/excl.lst -up0q0r2x2y2z1w2 ../swwmgz${1}_m.pk7 . popd diff --git a/tools/oldblockfonts.tar.xz b/tools/oldblockfonts.tar.xz deleted file mode 100644 index 1ba989bc7..000000000 Binary files a/tools/oldblockfonts.tar.xz and /dev/null differ diff --git a/zmapinfo.txt b/zmapinfo.txt index 1443edbaa..f15674efd 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -34,7 +34,6 @@ GameInfo MessageBoxClass = "SWWMMessageBox" HelpMenuClass = "SWWMHelpMenu" MenuDelegateClass = "SWWMMenuDelegate" - PauseSign = "graphics/swwmpause.png" BorderFlat = "graphics/bord_flat.png" Border = 2, 0, "graphics/bord_tr.png", "graphics/bord_t.png", "graphics/bord_tl.png", "graphics/bord_r.png", "graphics/bord_l.png", "graphics/bord_br.png", "graphics/bord_b.png", "graphics/bord_bl.png" ForceTextInMenus = true @@ -59,13 +58,13 @@ GameInfo "Hellblazer", "Quadravol", "Sparkster", - "BlackfireIgniter", + "ModernSparkster", "SilverBullet", - "EMPCarbine", + "MisterRifle", "CandyGun", "RayKhom", "Ynykron", - "GrandLance", + "RafanKos", // gestures and items with gesture states "SWWMGesture", "SWWMRedCardGesture", @@ -77,6 +76,7 @@ GameInfo "SWWMRedSkullGesture", "SWWMBlueSkullGesture", "SWWMYellowSkullGesture", + "SWWMPurpleSkullGesture", "SWWMGreenKeyGesture", "SWWMBlueKeyGesture", "SWWMYellowKeyGesture", @@ -88,41 +88,72 @@ GameInfo "FrispyCornGesture", "SayaBeanGesture", "MothPlushyGesture", - "AA12ModelGesture", - "CactusHegeGesture", - "TastyHoagieGesture", - "IbukiMilkGesture", - "BRCAlbumGesture", "DemoPlushGesture", - "ManarokouGesture", - "LithiumNovelGesture", "KirinCummiesGesture", "MilkBreadsGesture", "KirinMangaGesture", - "KirinPlushGesture", - "PsykkonovexxGesture" - // really damn big textures + "KirinPlushGesture" + // preload intro and menu textures PrecacheTextures = "graphics/SWWMGZLogo.png", "graphics/SWWMGZLogo_Layer1.png", "graphics/SWWMGZLogo_Layer2.png", "graphics/SWWMGZLogo_Layer3.png", "graphics/SWWMGZLogo_Layer4.png", "graphics/SWWMGZLogo_Layer5.png", - "graphics/SWWMGZLogo_Layer6.png" + "graphics/SWWMGZLogo_Layer6.png", + "graphics/M_SWWM.png", + "graphics/M_SWWM_Layer1.png", + "graphics/M_SWWM_Layer2.png", + "graphics/M_SWWM_Layer3.png", + "graphics/M_SWWM_Layer4.png", + "graphics/M_SWWM_Layer5.png", + "graphics/M_SWWM_Layer6.png", + "graphics/M_DEMOCHAN.png", + "graphics/NewLogo.png", + "graphics/NewLogo_Grad.png", + "graphics/NewLogo_Layer1.png", + "graphics/NewLogo_Layer2.png", + "graphics/NewLogo_Layer3.png", + "graphics/NewLogo_Letter0.png", + "graphics/NewLogo_Letter1.png", + "graphics/NewLogo_Letter2.png", + "graphics/NewLogo_Letter3.png", + "graphics/NewLogo_Letter4.png", + "graphics/NewLogo_Letter5.png", + "graphics/NewLogo_Letter6.png", + "graphics/NewLogo_Letter7.png", + "graphics/NewLogo_Letter8.png", + "graphics/NewLogo_Letter9.png", + "graphics/NewLogo_Letter10.png", + "graphics/NewLogo_Letter11.png", + "graphics/NewLogo_Letter12.png", + "graphics/NewLogo_Letter13.png", + "graphics/M_DEMOLITIONIST.png", + "graphics/M_DEMOCHAN_BIOSPARK.png", + "graphics/M_DEMOCHAN_CANDYGUN.png", + "graphics/M_DEMOCHAN_DEEPIMPACT.png", + "graphics/M_DEMOCHAN_EVISCERATOR.png", + "graphics/M_DEMOCHAN_EXPLOGUN.png", + "graphics/M_DEMOCHAN_HELLBLAZER.png", + "graphics/M_DEMOCHAN_PUSHER.png", + "graphics/M_DEMOCHAN_SILVERBULLET.png", + "graphics/M_DEMOCHAN_SPREADGUN.png", + "graphics/M_DEMOCHAN_WALLBUSTER.png", + "graphics/M_DEMOCHAN_YNYKRON.png", + "graphics/M_DEMOCHAN_DAB.png", + "graphics/M_DEMOCHAN_DOUBLEV.png", + "graphics/M_DEMOCHAN_HEALTH.png", + "graphics/M_DEMOCHAN_LOVE.png", + "graphics/M_DEMOCHAN_RAGEKIT.png", + "graphics/M_DEMOCHAN_SANDWICH.png", + "graphics/M_DEMOCHAN_SHELLS.png", + "graphics/M_DEMOCHAN_SKULL.png", + "graphics/M_DEMOCHAN_THONK.png", + "graphics/M_DEMOCHAN_THUMBUP.png" } ClearSkills -Skill chill -{ - AutoUseHealth - DamageFactor = 0.5 - EasyBossBrain - SlowMonsters - SpawnFilter = baby - ACSReturn = 0 - Name = "$SWWM_SKCHILL" -} Skill easy { DamageFactor = 0.75 @@ -174,7 +205,7 @@ Skill lunatic MustConfirm = "$SWWM_SKLUNATICCONFIRM" } -Map TITLEMAP "SWWM GZ Title Map" +Map TITLEMAP "Title Map" { Music = "" EventHandlers = "SWWMTitleStuff" diff --git a/zscript.txt b/zscript.txt index 5590fdefd..60baef3fb 100644 --- a/zscript.txt +++ b/zscript.txt @@ -1,8 +1,8 @@ version "4.7.1" /* - SWWM GZ Main Codebase - (C)2020-2021 Marisa Kirisame, UnSX Team + DEMOLITIONIST Main Codebase + (C)2020-2022 Marisa Kirisame, UnSX Team This copyright and the attached LICENSE.code file apply to all files included from here, with the exception of any third party libraries */ @@ -20,7 +20,6 @@ version "4.7.1" #include "zscript/swwm_handler.zsc" #include "zscript/swwm_statichandler.zsc" #include "zscript/swwm_thinkers.zsc" -#include "zscript/swwm_thinkers_hud.zsc" #include "zscript/swwm_thinkers_player.zsc" #include "zscript/swwm_player.zsc" #include "zscript/swwm_player_fx.zsc" @@ -60,8 +59,22 @@ version "4.7.1" // hud #include "zscript/hud/swwm_hud.zsc" #include "zscript/hud/swwm_hudextra.zsc" +#include "zscript/hud/swwm_hudobjects.zsc" // kbase #include "zscript/kbase/swwm_kbase.zsc" +#include "zscript/kbase/swwm_kbase_priv.zsc" +#include "zscript/kbase/swwm_kbase_tab.zsc" +#include "zscript/kbase/swwm_kbase_list.zsc" +#include "zscript/kbase/swwm_kbase_textbox.zsc" +#include "zscript/kbase/swwm_kbasetab_mission.zsc" +#include "zscript/kbase/swwm_kbasetab_stats.zsc" +#include "zscript/kbase/swwm_kbasetab_inventory.zsc" +#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_chat.zsc" +#include "zscript/kbase/swwm_kbasetab_help.zsc" +#include "zscript/kbase/swwm_kbasetab_secret.zsc" // items #include "zscript/items/swwm_baseitem.zsc" #include "zscript/items/swwm_basehealth.zsc" @@ -122,28 +135,15 @@ version "4.7.1" #include "zscript/dlc1/swwm_heavymahsheengun_fx.zsc" #include "zscript/dlc1/swwm_notashotgun.zsc" #include "zscript/dlc1/swwm_notashotgun_fx.zsc" -#include "zscript/dlc1/swwm_blackfire.zsc" -#include "zscript/dlc1/swwm_blackfire_fx.zsc" -#include "zscript/dlc1/swwm_veryveryfrightening.zsc" -#include "zscript/dlc1/swwm_veryveryfrightening_fx.zsc" +#include "zscript/dlc1/swwm_blueballs.zsc" +#include "zscript/dlc1/swwm_blueballs_fx.zsc" +#include "zscript/dlc1/swwm_mister.zsc" +#include "zscript/dlc1/swwm_mister_fx.zsc" #include "zscript/dlc1/swwm_thiccbolts.zsc" #include "zscript/dlc1/swwm_thiccbolts_fx.zsc" -#include "zscript/dlc1/swwm_hugeassrailgun.zsc" -#include "zscript/dlc1/swwm_hugeassrailgun_fx.zsc" -// DLC2 - Weapon Set 2 -#include "zscript/dlc2/swwm_ammoitems_dlc2.zsc" -#include "zscript/dlc2/swwm_fisto.zsc" -#include "zscript/dlc2/swwm_fisto_fx.zsc" -#include "zscript/dlc2/swwm_blueballs.zsc" -#include "zscript/dlc2/swwm_blueballs_fx.zsc" -#include "zscript/dlc2/swwm_mister.zsc" -#include "zscript/dlc2/swwm_mister_fx.zsc" -#include "zscript/dlc2/swwm_ultimate.zsc" -#include "zscript/dlc2/swwm_ultimate_fx.zsc" -// DLC3 - Game Set -#include "zscript/dlc3/swwm_tetris.zsc" -#include "zscript/dlc3/swwm_pong.zsc" -#include "zscript/dlc3/swwm_snake.zsc" -#include "zscript/dlc3/swwm_demoland.zsc" -#include "zscript/dlc3/swwm_demoshmup.zsc" -#include "zscript/dlc3/swwm_demoquest.zsc" +#include "zscript/dlc1/swwm_ultimate.zsc" +#include "zscript/dlc1/swwm_ultimate_fx.zsc" +// DLC2 - Game Set +#include "zscript/dlc2/swwm_demoland.zsc" +#include "zscript/dlc2/swwm_demoshmup.zsc" +#include "zscript/dlc2/swwm_demoquest.zsc" diff --git a/zscript/compat/swwm_compat.zsc b/zscript/compat/swwm_compat.zsc index 306a7a92f..6c59109a3 100644 --- a/zscript/compat/swwm_compat.zsc +++ b/zscript/compat/swwm_compat.zsc @@ -197,6 +197,17 @@ Class SWWMLevelCompatibility : LevelPostProcessor // unfortunately the line special wrangling has to be done one tic after map load // because fuck absolutely everything about how ACS works break; + // DUMP 3 HUBMAP + case '7E77AA43AF7ACDBC52171E9EE2BF98D0': + // swap all the calls to script 12 with calls to 'DUMP3_DISPLAY' + // to fix the bigfont being too large + for ( int i=0; i 5) && !swwm_nomapmsg && !swwm_oldcheat ) + let s = SWWMStats.Find(players[consoleplayer]); + if ( (i > 5) && !swwm_nomapmsg && (!s || !s.oldcheat) ) { let m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_ZNVSNAME"),StringTable.Localize("$SWWM_ZNVNAME"),"Znv"); m.seqname = "ZNVTXT"; @@ -447,9 +447,8 @@ extend Class SWWMHandler m.enddelay = 90; m.pausedelay = 40; StatusBar.AttachMessage(m,-1232); - CVar.FindCVar('swwm_oldcheat').SetBool(true); + SendNetworkEvent("swwmsetoldcheat",consoleplayer); } - SWWMUtility.MarkAchievement('swwm_achievement_cheat',players[consoleplayer]); if ( SWWMUtility.CheatsDisabled(consoleplayer) ) { kfail = true; @@ -519,19 +518,18 @@ extend Class SWWMHandler double shine = clamp((klinger-(gametic+e.fractic+40))/20.,0.,1.); int col = (kcode>4)?0:(kfail)?2:1; int tlen = chstr.CodePointCount(); - if ( !kfnt ) kfnt = Font.GetFont('TewiShadedOutline'); - int width = (kfnt.StringWidth(chstr)+2*(tlen-1))*2; + int width = (bigfont.StringWidth(chstr)+6*(tlen-1)); int xx = int((ss.x-width)/2.); - int yy = int((ss.y-kfnt.GetHeight())/2.); + int yy = int((ss.y-bigfont.GetHeight())/2.); rss = (kcode>4)?gametic:klinger; for ( int i=0, pos=0; i lastcombat+100)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?2:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls + else if ( (!lastcombat || (gametic > lastcombat+180)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls lastcombat = AddOneliner("gethit",1,15); } highesttic = gametic; @@ -180,7 +180,7 @@ extend Class SWWMHandler { if ( e.Thing.IsFriend(src) ) lastcombat = AddOneliner("friendkill",1,5); - else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?2:5) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls + else if ( (!lastcombat || (gametic > lastcombat+120)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls lastcombat = AddOneliner("scorekill",1,15); } } @@ -189,34 +189,34 @@ extend Class SWWMHandler if ( e.Thing.IsHostile(src) && (e.Thing.bISMONSTER || e.Thing.player) ) { if ( (e.Thing.bBOSS||e.Thing.FindInventory("BossMarker")) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) ) - SWWMUtility.AchievementProgressInc('swwm_progress_bossdash',1,src.player); - if ( e.DamageType == 'Push' ) - SWWMUtility.AchievementProgressInc('swwm_progress_sneeze',1,src.player); + SWWMUtility.AchievementProgressInc("bossdash",1,src.player); + if ( (e.Inflictor is 'DeepImpact') && (e.DamageType == 'Push') ) + SWWMUtility.AchievementProgressInc("sneeze",1,src.player); else if ( e.DamageType == 'Buttslam' ) - SWWMUtility.AchievementProgressInc('swwm_progress_butts',1,src.player); + SWWMUtility.AchievementProgressInc("butts",1,src.player); else if ( e.DamageType == 'Jump' ) - SWWMUtility.AchievementProgressInc('swwm_progress_stomp',1,src.player); + SWWMUtility.AchievementProgressInc("stomp",1,src.player); else if ( e.DamageType == 'GroundPound' ) - SWWMUtility.AchievementProgressInc('swwm_progress_thicc',1,src.player); + SWWMUtility.AchievementProgressInc("thicc",1,src.player); else if ( (e.DamageType == 'Love') && !(e.Thing is 'WolfensteinSS') && (e.Thing.Species != 'WolfensteinSS') ) - SWWMUtility.AchievementProgressInc('swwm_progress_love',1,src.player); + SWWMUtility.AchievementProgressInc("love",1,src.player); Inventory buff = e.Inflictor?e.Inflictor.FindInventory('ParriedBuff'):null; if ( buff ) { - SWWMUtility.AchievementProgressInc('swwm_progress_reflect',1,src.player); + SWWMUtility.AchievementProgressInc("reflect",1,src.player); if ( (e.Thing is 'Cyberdemon') && (e.Inflictor is 'Rocket') && (buff.tracer == e.Thing) ) - SWWMUtility.MarkAchievement('swwm_achievement_cybully',src.player); + SWWMUtility.MarkAchievement("cybully",src.player); } if ( (e.Inflictor is 'PusherWeapon') || (e.Inflictor is 'PusherProjectile') ) - SWWMUtility.AchievementProgressInc('swwm_progress_tender',1,src.player); + SWWMUtility.AchievementProgressInc("tender",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); + SWWMUtility.MarkAchievement("shame",src.player); + SWWMUtility.AchievementProgressInc("mega",1,src.player); if ( src.player.Health == 1 ) { onehpspree[pnum]++; - SWWMUtility.AchievementProgress('swwm_progress_onehp',onehpspree[pnum],src.player); + SWWMUtility.AchievementProgress("onehp",onehpspree[pnum],src.player); } // tasty treats if ( swwm_demoslayer ) @@ -277,79 +277,39 @@ extend Class SWWMHandler if ( e.DamageType == 'Push' ) { score += 500; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xstr[ofs] = StringTable.Localize("$SWWM_SHAMEFUL"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_SHAMEFUL")); } else if ( e.DamageType == 'Buttslam' ) { score += 300; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xstr[ofs] = StringTable.Localize("$SWWM_BUTTSLAM"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_BUTTSLAM")); } else if ( e.DamageType == 'Love' ) { score += 600; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xtcolor[ofs] = Font.FindFontColor('BlushPink'); - scr.xstr[ofs] = StringTable.Localize(((e.Thing is 'WolfensteinSS')||(e.Thing.Species=='WolfensteinSS'))?"$SWWM_LOVED_ALT":"$SWWM_LOVED"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize(((e.Thing is 'WolfensteinSS')||(e.Thing.Species=='WolfensteinSS'))?"$SWWM_LOVED_ALT":"$SWWM_LOVED"),0,Font.FindFontColor('BlushPink')); } else if ( e.Inflictor is 'FroggyChair' ) { score += 1440; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xtcolor[ofs] = Font.CR_GREEN; - scr.xstr[ofs] = StringTable.Localize("$SWWM_FROGGED"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_FROGGED"),0,Font.CR_GREEN); } Inventory pb; if ( e.Inflictor && (pb = e.Inflictor.FindInventory('ParriedBuff')) ) { score += 200; if ( pb.special1&1 ) score += 200; - if ( scr ) - { - scr.xscore[ofs] = 0; - if ( pb.special1&1 ) scr.xstr[ofs] = StringTable.Localize("$SWWM_PPARRY"); - else scr.xstr[ofs] = StringTable.Localize("$SWWM_PARRY"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize((pb.special1&1)?"$SWWM_PPARRY":"$SWWM_PARRY")); } if ( (e.Damage >= e.Thing.GetSpawnHealth()*2) || (((e.Thing.Health <= e.Thing.GetGibHealth()) || (src.bEXTREMEDEATH) || (e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.DamageType == 'Extreme')) && !src.bNOEXTREMEDEATH && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH)) ) { score *= 2; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xstr[ofs] = StringTable.Localize("$SWWM_OVERKILL"); - scr.xcnt = ++ofs; - } - SWWMUtility.AchievementProgressInc('swwm_progress_gib',1,src.player); + if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_OVERKILL")); + SWWMUtility.AchievementProgressInc("gib",1,src.player); } score = int(score*(1.+.5*min(multilevel[pnum],16))); if ( (multilevel[pnum] > 0) && scr ) - { - if ( scr ) - { - scr.xscore[ofs] = (multilevel[pnum]>=16)?int.max:(multilevel[pnum]+1); - scr.xstr[ofs] = StringTable.Localize("$SWWM_MULTIKILL"); - scr.xcnt = ++ofs; - } - } + scr.AppendXString(StringTable.Localize("$SWWM_MULTIKILL"),(multilevel[pnum]>=16)?int.max:(multilevel[pnum]+1)); spreecount[pnum]++; if ( s && (spreecount[pnum] > s.skill) && !tookdamage[pnum] ) s.skill = spreecount[pnum]; @@ -360,21 +320,12 @@ extend Class SWWMHandler if ( spreecount[pnum] > 10 ) spreebonus = int(10*((spreecount[pnum]/10.)**.25)); score += 100+spreebonus; if ( (spreecount[pnum] > 0) && scr ) - { - scr.xscore[ofs] = spreecount[pnum]; - scr.xstr[ofs] = StringTable.Localize("$SWWM_SPREEKILL"); - scr.xcnt = ++ofs; - } + scr.AppendXString(StringTable.Localize("$SWWM_SPREEKILL"),spreecount[pnum]); } if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) { score += 2000; - if ( scr ) - { - scr.xscore[ofs] = 0; - scr.xstr[ofs] = StringTable.Localize("$SWWM_BOSSKILL"); - scr.xcnt = ++ofs; - } + if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_BOSSKILL")); } SWWMCredits.Give(src.player,score); if ( scr ) scr.score = score; // update final score @@ -384,33 +335,32 @@ extend Class SWWMHandler SWWMCredits.Give(src.player,1000); Console.Printf(StringTable.Localize("$SWWM_LASTMONSTER"),src.player.GetUserName(),1000); SWWMScoreObj.Spawn(1000,src.Vec3Offset(0,0,src.Height/2)); - SWWMUtility.AchievementProgressInc('swwm_progress_allkills',1,src.player); + SWWMUtility.AchievementProgressInc("allkills",1,src.player); } } override void WorldThingDamaged( WorldEvent e ) { - if ( profiling ) curms = MSTime(); + if ( profiling ) ProfileTick(); if ( e.Damage > 0 ) DoDamageHandling(e); if ( e.DamageSource && (e.DamageSource != e.Thing) ) DoCombatHit(e); if ( (e.Thing.Health > 0) || e.Thing.bKilled || e.Thing.bCorpse ) { - if ( profiling ) worldthingdamaged_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDAMAGED); return; } DoGibThing(e); - // romero hax - if ( (e.Thing is 'BossBrain') && (e.DamageType == 'Telefrag') ) - e.DamageSource.DamageMobj(null,null,Actor.TELEFRAG_DAMAGE,'EndLevel'); - // voodoo doll telefragging barrel hax (eviternity death exits) - if ( (e.Thing is 'ExplosiveBarrel') && (e.DamageType == 'Telefrag') && e.DamageSource.player && (e.DamageSource.player.mo != e.DamageSource) ) + // death exit hax + // could be telefragging Romero, or a voodoo doll telefragging a barrel (death exits in Eviternity) + if ( (e.DamageType == 'Telefrag') && e.DamageSource && e.DamageSource.player + && ((e.Thing is 'BossBrain') || ((e.Thing is 'ExplosiveBarrel') && (e.DamageSource.player.mo != e.DamageSource))) ) e.DamageSource.DamageMobj(null,null,Actor.TELEFRAG_DAMAGE,'EndLevel'); if ( !e.Thing.player && !e.Thing.bIsMonster && !e.Thing.bCountKill && !(e.Thing is 'ScriptedMarine') ) { - if ( profiling ) worldthingdamaged_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDAMAGED); return; } DoKillScoring(e); - if ( profiling ) worldthingdamaged_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDAMAGED); } } diff --git a/zscript/handler/swwm_handler_debugrender.zsc b/zscript/handler/swwm_handler_debugrender.zsc index 8a4f4a4c2..dea8db9d5 100644 --- a/zscript/handler/swwm_handler_debugrender.zsc +++ b/zscript/handler/swwm_handler_debugrender.zsc @@ -3,7 +3,6 @@ extend Class SWWMHandler { ui SWWMProjectionData projdata; - transient ui Font dbgfont; private ui void DrawWorldLine( RenderEvent e, Vector3 apos, Vector3 bpos, Color col ) { @@ -97,8 +96,7 @@ extend Class SWWMHandler Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); String tag = a.player?a.player.GetUserName():a.GetTag(); if ( tag == a.GetClassName() ) SWWMUtility.BeautifyClassName(tag); - if ( !dbgfont ) dbgfont = Font.GetFont('TewiShadedOutline'); - Screen.DrawText(dbgfont,Font.CR_RED,vpos.x-dbgfont.StringWidth(tag)/2,vpos.y-NewSmallFont.GetHeight()/2,tag); + Screen.DrawText(NewSmallFont,Font.CR_RED,vpos.x-NewSmallFont.StringWidth(tag)/2,vpos.y-NewSmallFont.GetHeight()/2,tag); } private ui void DrawDebug( RenderEvent e ) diff --git a/zscript/handler/swwm_handler_oneliners.zsc b/zscript/handler/swwm_handler_oneliners.zsc index c68d0d980..76e50f36c 100644 --- a/zscript/handler/swwm_handler_oneliners.zsc +++ b/zscript/handler/swwm_handler_oneliners.zsc @@ -8,7 +8,7 @@ Class LastLine extend Class SWWMHandler { - transient String oneliner, onelinersnd; + transient String oneliner, onelinersnd, onelinertype; transient int onelinertic, onelinerspan, onelinerlevel; transient Array lastlines; @@ -22,12 +22,29 @@ extend Class SWWMHandler String voicetype = CVar.FindCVar('swwm_voicetype').GetString(); // suppress non-rage comments when ragekit is active, only screaming allowed if ( players[consoleplayer].mo.FindInventory("RagekitPower") && (type != "ragekit") ) return 0; - int whichline; + // check first if it's a multiple option line type String testme = String.Format("SWWM_SUBS_%s_N%s",voicetype.MakeUpper(),type.MakeUpper()); String locme = StringTable.Localize(testme,false); - int countem; - if ( testme == locme ) countem = 0; - else countem = locme.ToInt(); + if ( testme == locme ) + { + // it might be a single option line type + testme = String.Format("SWWM_SUBS_%s_%s",voicetype.MakeUpper(),type.MakeUpper()); + locme = StringTable.Localize(testme,false); + if ( testme == locme ) return 0; // nope, the voicepack doesn't have it + hnd.oneliner = String.Format("$SWWM_SUBS_%s_%s",voicetype.MakeUpper(),type.MakeUpper()); + hnd.onelinersnd = String.Format("voice/%s/%s",voicetype,type); + hnd.onelinertic = gametic+delay; + hnd.onelinertype = type; + hnd.onelinerspan = int(S_GetLength(hnd.onelinersnd)*GameTicRate); + if ( hnd.onelinerspan == 0 ) + { + if ( developer >= 2 ) Console.Printf("No sound for voice line '%s'",type); + hnd.onelinerspan = 35; + } + hnd.onelinerlevel = level; + return hnd.onelinertic+hnd.onelinerspan; + } + int countem = locme.ToInt(); if ( countem == 0 ) return 0; // voicepack doesn't have this // check last line so we don't repeat int last = 0, ent; @@ -38,6 +55,7 @@ extend Class SWWMHandler ent = i; break; } + int whichline; if ( countem == 1 ) whichline = 1; else if ( last > 0 ) { @@ -57,17 +75,38 @@ extend Class SWWMHandler hnd.onelinersnd = String.Format("voice/%s/%s%d",voicetype,type,whichline); hnd.onelinertic = gametic+delay; hnd.onelinerspan = int(S_GetLength(hnd.onelinersnd)*GameTicRate); + hnd.onelinertype = type; + if ( hnd.onelinerspan == 0 ) + { + if ( developer >= 2 ) Console.Printf("No sound for voice line '%s%d'",type,whichline); + hnd.onelinerspan = 35; + } hnd.onelinerlevel = level; return hnd.onelinertic+hnd.onelinerspan; } + static void CancelOneliner( String type ) + { + let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + if ( !hnd ) return; + if ( (hnd.onelinertype != type) || (hnd.onelinertic < gametic) ) return; + hnd.onelinertic = 0; + hnd.onelinerspan = 0; + } + private void OnelinerTick() { if ( !onelinertic || (onelinertic >= gametic) ) return; if ( players[consoleplayer].health > 0 ) { if ( onelinerlevel > swwm_mutevoice ) + { + int loudlv = swwm_voiceamp; players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICE,CHANF_DEFAULT,1.,ATTN_NONE); + if ( loudlv > 1 ) players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICEAUX,CHANF_DEFAULT,1.,ATTN_NONE); + if ( loudlv > 2 ) players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICEAUX2,CHANF_DEFAULT,1.,ATTN_NONE); + if ( loudlv > 3 ) players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICEAUX3,CHANF_DEFAULT,1.,ATTN_NONE); + } SendNetworkEvent("swwmremoteliner."..onelinersnd,consoleplayer,onelinerlevel); } onelinertic = 0; diff --git a/zscript/handler/swwm_handler_process.zsc b/zscript/handler/swwm_handler_process.zsc index d856fa84e..57f34d3a6 100644 --- a/zscript/handler/swwm_handler_process.zsc +++ b/zscript/handler/swwm_handler_process.zsc @@ -27,7 +27,7 @@ extend Class SWWMHandler { if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') ) return; - double maxval = players[consoleplayer].mo.FindInventory("Omnisight")?2.:1.; + double maxval = level.allmap?2.:1.; double val = swwm_mm_zoom; if ( val >= 1. ) val = min(maxval,val+.5); else val = min(1.,val+.25); @@ -153,7 +153,13 @@ extend Class SWWMHandler if ( swwm_notrack ) { int n = trackers_cnt; - while ( trackers ) trackers.Destroy(); // wow that's simple, all in one line + while ( trackers ) + { + let next = trackers.next; + trackers.Destroy(); // wow that's simple, all in one line + trackers = next; + } + trackers_cnt = 0; Console.Printf("%d trackers removed.",n); } else @@ -213,7 +219,7 @@ extend Class SWWMHandler return; } // dump the values of all mod RNGs (might help someday to track down what desyncs) - String msg = String.Format("\cxSWWM GZ RNG dump for player %d (\c-%s\cx):\c-",consoleplayer,players[consoleplayer].GetUserName()); + String msg = String.Format("\cxRNG dump for player %d (\c-%s\cx):\c-",consoleplayer,players[consoleplayer].GetUserName()); msg.AppendFormat("\n\n\cfPlay RNG (will cause desyncs if mismatched):\c-\n"); msg.AppendFormat("\nBlood: %08x",Random2[Blood]()); msg.AppendFormat("\nBoolet: %08x",Random2[Boolet]()); @@ -273,6 +279,36 @@ extend Class SWWMHandler Console.Printf(msg); return; } + else if ( e.Name ~== "swwmdebugdlglines" ) + { + if ( multiplayer && (e.player != Net_Arbitrator) ) + { + if ( e.player == consoleplayer ) + Console.Printf("Only the net arbitrator can call this event."); + return; + } + // checks that ALL dialogue text fits in 3 lines + String alldlg_pack = "SWWM_SAYAPHOBOS1:SWWM_SAYAPHOBOS2:SWWM_SAYAPHOBOS3:SWWM_SAYAPHOBOS4:SWWM_SAYADEIMOS1:SWWM_SAYADEIMOS2:SWWM_SAYADEIMOS3:SWWM_SAYADEIMOS4:SWWM_SAYADIS1:SWWM_SAYADIS2:SWWM_SAYADIS3:SWWM_SAYADIS4:SWWM_SAYATHY1:SWWM_SAYATHY2:SWWM_SAYATHY3:SWWM_SAYATHY4:SWWM_CYTHOSIGIL1:SWWM_CYTHOSIGIL2:SWWM_CYTHOSIGIL3:SWWM_CYTHOSIGIL4:SWWM_SAYADIMPLE1:SWWM_SAYADIMPLE2:SWWM_SAYADIMPLE3:SWWM_SAYADIMPLE4:SWWM_SAYADIMPLE5:SWWM_SAYACIRCLE1:SWWM_SAYACIRCLE2:SWWM_SAYACIRCLE3:SWWM_SAYACIRCLE4:SWWM_SAYACIRCLE5:SWWM_SAYAGOTCHA1:SWWM_SAYAGOTCHA2:SWWM_SAYAGOTCHA3:SWWM_SAYAGOTCHA4:SWWM_SAYAGOTCHA5:SWWM_SAYAGOTCHAEND1:SWWM_SAYAGOTCHAEND2:SWWM_SAYAGOTCHAEND3:SWWM_SAYAGOTCHAEND4:SWWM_SAYAGOTCHAEND5:SWWM_SAYAIOS1:SWWM_SAYAIOS2:SWWM_SAYAIOS3:SWWM_SAYAIOS4:SWWM_SAYAIOS5:SWWM_SAYARAMPANCY1:SWWM_SAYARAMPANCY2:SWWM_SAYARAMPANCY3:SWWM_SAYARAMPANCY4:SWWM_CYTHONERVE1:SWWM_CYTHONERVE2:SWWM_CYTHONERVE3:SWWM_CYTHONERVE4:SWWM_CYTHONERVE5:SWWM_SAYAEVIA1:SWWM_SAYAEVIA2:SWWM_SAYAEVIA3:SWWM_SAYAEVIA4:SWWM_SAYAEVIB1:SWWM_SAYAEVIB2:SWWM_SAYAMAW1:SWWM_SAYAMAW2:SWWM_SAYAMAW3:SWWM_SAYAMAW4:SWWM_SAYAMAW5:SWWM_SAYAMASTERS1:SWWM_SAYAMASTERS2:SWWM_SAYAMASTERS3:SWWM_SAYAMASTERS4:SWWM_SAYAMASTERS5:SWWM_SAYADSPARIL1:SWWM_SAYADSPARIL2:SWWM_SAYADSPARIL3:SWWM_SAYADSPARIL4:SWWM_SAYADSPARIL5:SWWM_SAYAHEADS1:SWWM_SAYAHEADS2:SWWM_SAYAHEADS3:SWWM_SAYAHEADS4:SWWM_SAYAHEADS5:SWWM_SAYAHEADS6:SWWM_SAYABULLS1:SWWM_SAYABULLS2:SWWM_SAYABULLS3:SWWM_SAYABULLS4:SWWM_SAYABULLS5:SWWM_SAYAGREETA1:SWWM_SAYAGREETA2:SWWM_SAYAGREETA3:SWWM_SAYAGREETB1:SWWM_SAYAGREETC1:SWWM_SAYAGREETD1:SWWM_SAYAGREETE1:SWWM_SAYAGREETF1:SWWM_SAYABLOODA1:SWWM_SAYABLOODA2:SWWM_SAYABLOODB1:SWWM_SAYABLOODC1:SWWM_SAYABLOODD1:SWWM_SAYAHYPO1:SWWM_SAYAHYPO2:SWWM_SAYAHYPO3:SWWM_SAYAHYPO4:SWWM_KIRINWORSHIPA1:SWWM_KIRINWORSHIPB1:SWWM_KIRINWORSHIPC1:SWWM_KIRINWORSHIPD1:SWWM_KIRINWORSHIPD2:SWWM_SAYAGAMEA1:SWWM_SAYAGAMEA2:SWWM_SAYAGAMEB1:SWWM_SAYAGAMEC1:SWWM_SAYAMASTERSA1:SWWM_SAYAMASTERSA2:SWWM_SAYAMASTERSB1:SWWM_SAYAMASTERSC1:SWWM_SAYAMASTERSD1:SWWM_SAYAMASTERSE1:SWWM_SAYAMASTERSF1:SWWM_SAYAFIGHTER1:SWWM_SAYAFIGHTER2:SWWM_SAYACLERICA1:SWWM_SAYACLERICA2:SWWM_SAYACLERICB1:SWWM_SAYACLERICC1:SWWM_SAYACLERICC2:SWWM_SAYAMAGE1:SWWM_SAYAMAGE2:SWWM_SAYAMAGE3:SWWM_SAYAMAGE4:SWWM_SAYAKORAXA1:SWWM_SAYAKORAXB1:SWWM_SAYAKORAXC1:SWWM_SAYAKORAXD1:SWWM_SAYAKORAXE1:SWWM_SAYABLIGHTA1:SWWM_SAYABLIGHTB1:SWWM_SAYABLIGHTC1:SWWM_SAYABLIGHTC2:SWWM_SAYACONSTABLEA1:SWWM_SAYACONSTABLEA2:SWWM_SAYACONSTABLEB1:SWWM_SAYACONSTABLEC1:SWWM_SAYACONSTABLED1:SWWM_SAYANAVEA1:SWWM_SAYANAVEA2:SWWM_SAYANAVEB1:SWWM_SAYANAVEC1:SWWM_SAYANAVED1:SWWM_SAYANAVEE1:SWWM_SAYANAVEF1:SWWM_SAYADEATHKINGS1:SWWM_KIRINPUZZLEA1:SWWM_KIRINPUZZLEA2:SWWM_KIRINPUZZLEB1:SWWM_KIRINPUZZLEC1:SWWM_KIRINPUZZLEC2:SWWM_KIRINPUZZLED1:SWWM_KIRINPUZZLED2:SWWM_KIRINPUZZLEE1:SWWM_KIRINPUZZLEE2:SWWM_KIRINPUZZLEF1:SWWM_KIRINPUZZLEF2:SWWM_KIRINPUZZLEF3:SWWM_KIRINPUZZLEG1:SWWM_KIRINPUZZLEH1:SWWM_KIRINPUZZLEI1:SWWM_KIRINPUZZLEI2:SWWM_KIRINPUZZLEJ1:SWWM_KIRINPUZZLEJ2:SWWM_KIRINPUZZLEK1:SWWM_KIRINPUZZLEL1:SWWM_KIRINPUZZLEM1:SWWM_KIRINPUZZLEN1:SWWM_KIRINPUZZLEO1:SWWM_KIRINPUZZLEP1:SWWM_KIRINPUZZLEQ1:SWWM_KIRINPUZZLER1:SWWM_KIRINPUZZLER2:SWWM_KIRINPUZZLER3:SWWM_KIRINPUZZLES1:SWWM_KIRINPUZZLET1:SWWM_KIRINPUZZLEU1:SWWM_ZNVTXT1:SWWM_ZNVTXT2:SWWM_ZNVTXT3:SWWM_ZNVTXT4:SWWM_ZNVTXT5"; + Array alldlg; + alldlg_pack.Split(alldlg,":"); + for ( int i=0; i 3 ) Console.Printf("\cg%s exceeds line limit (%d > 3)\c-",alldlg[i],l.Count()); + else + { + if ( !e.Args[0] ) + { + l.Destroy(); + continue; + } + Console.Printf("\cd%s is within line limit (%d <= 3)\c-",alldlg[i],l.Count()); + } + for ( int j=0; j %s",l.StringAt(j)); + l.Destroy(); + } + return; + } else if ( e.Name ~== "swwmprofilehandler" ) { if ( multiplayer && (e.player != Net_Arbitrator) ) @@ -283,15 +319,13 @@ extend Class SWWMHandler } bprofiletics = profiletics = (e.Args[0]<=0)?10:e.Args[0]; profiling = true; - worldtick_ms = 0; - worldthingspawned_ms = 0; - worldthingdestroyed_ms = 0; - worldthingdied_ms = 0; - worldthingdamaged_ms = 0; - worldthingrevived_ms = 0; - checkreplacement_ms = 0; - checkreplacee_ms = 0; - Console.Printf("Gathering data for %d tic(s)...",bprofiletics); + for ( int i=0; i<8; i++ ) + { + prof_ms[i] = 0; + prof_avg[i] = 0; + prof_calls[i] = 0; + } + Console.Printf("Gathering data for %d tic%s...",bprofiletics,(bprofiletics>1)?"s":""); return; } if ( e.IsManual ) return; @@ -306,20 +340,26 @@ extend Class SWWMHandler // drop the swapweapon if we own it first if ( swwm_swapweapons && (item is 'SWWMWeapon') && (sw = SWWMWeapon(def).HasSwapWeapon(players[e.Args[0]].mo)) ) { + // special case, otherwise candy gun won't drop itself + if ( sw is 'CandyGun' ) CandyGun(sw).swapdrop = true; bool swapto = (sw == players[e.Args[0]].ReadyWeapon) || (sw.SisterWeapon && (sw.Sisterweapon == players[e.Args[0]].ReadyWeapon)); int ngun = sw.Amount; - double ang = -15*(ngun-1); - for ( int i=0; i 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[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[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 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]]); @@ -513,7 +456,7 @@ extend Class SWWMHandler { t.result = (players[e.Args[0]].PendingWeapon==Weapon(i)); // dual wield gun support - if ( (i is 'ExplodiumGun') && (players[e.Args[0]].PendingWeapon==Weapon(i).SisterWeapon) ) + if ( (i is 'SWWMWeapon') && (players[e.Args[0]].PendingWeapon==Weapon(i).SisterWeapon) ) t.result = true; } else t.result = rslt; @@ -593,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 ) @@ -654,6 +595,11 @@ extend Class SWWMHandler s.realpuzzlecnt = e.Args[2]; } } + else if ( e.Name ~== "swwmsetoldcheat" ) + { + let s = SWWMStats.Find(players[e.Args[0]]); + if ( s ) s.oldcheat = true; + } // cheats go here else CheatEvent(e); } @@ -683,5 +629,4 @@ extend Class SWWMHandler } return false; } - } diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index 09ecb89db..a35e88814 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -3,6 +3,7 @@ extend Class SWWMHandler { bool nugflip; // h/a nugget flip-flop spawn counter + bool equinoxhack; // hackaround for UseInventory private Class GetDRLAReplacee( Class a ) { @@ -269,18 +270,18 @@ extend Class SWWMHandler override void CheckReplacee( ReplacedEvent e ) { - if ( profiling ) curms = MSTime(); + if ( profiling ) ProfileTick(); if ( e.Replacement is 'DSparilHax' ) e.Replacee = 'Sorcerer2'; // drla stuff, needed so boss deaths work if ( !hasdrlamonsters ) { - if ( profiling ) checkreplacee_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEE); return; } let rep = GetDRLAReplacee(e.Replacement); if ( rep ) e.Replacee = rep; - if ( profiling ) checkreplacee_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEE); } private Class GetDRLAReplacement( Class a ) @@ -548,11 +549,11 @@ extend Class SWWMHandler override void CheckReplacement( ReplaceEvent e ) { - if ( profiling ) curms = MSTime(); + if ( profiling ) ProfileTick(); // respect final replacements if ( e.IsFinal ) { - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; } // DRLA Monsters stuff @@ -563,7 +564,7 @@ extend Class SWWMHandler { e.Replacement = rep; e.IsFinal = true; - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; } } @@ -575,7 +576,7 @@ extend Class SWWMHandler { if ( SWWMUtility.CheckDehackery(e.Replacee) ) { - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; } e.Replacement = 'SWWMHangingKeen'; @@ -584,16 +585,16 @@ extend Class SWWMHandler { if ( SWWMUtility.CheckDehackery(e.Replacee) ) { - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; } e.Replacement = 'SWWMBossBrain'; } else if ( (e.Replacee is 'RedCard') && !(e.Replacee is 'ChexRedCard') ) { - if ( level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043" ) + if ( !equinoxhack && (level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043") ) { - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; // don't replace red key in Equinox MAP13 } e.Replacement = 'SWWMRedCard'; @@ -705,12 +706,12 @@ extend Class SWWMHandler else if ( e.Replacee is 'ArtiTeleport' ) e.Replacement = 'SafetyTether'; else { - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; } // this last part is kind of ugly, but it works // guarantees that OUR replacements are all final e.IsFinal = true; - if ( profiling ) checkreplacement_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); } } diff --git a/zscript/handler/swwm_handler_vanillaboss.zsc b/zscript/handler/swwm_handler_vanillaboss.zsc index 9f3037f37..596b2ac56 100644 --- a/zscript/handler/swwm_handler_vanillaboss.zsc +++ b/zscript/handler/swwm_handler_vanillaboss.zsc @@ -410,6 +410,28 @@ extend Class SWWMHandler if ( (!bossactors[i].target || !bossactors[i].CheckSight(bossactors[i].target,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY)) && (!bossviewactor || (bossviewactor && !bossviewactor.target)) ) continue; initialized = true; + // oneliners + if ( bossmap == MAP_DMAP30 ) + { + highesttic = gametic; + lastcombat = AddOneliner("romero",1,200); + } + else if ( bossmap == MAP_HE3M8 ) + { + highesttic = gametic; + if ( bosstag = "$BT_DSPARIL2" ) lastcombat = AddOneliner("dsparilb",1,100); + else lastcombat = AddOneliner("dsparila",1,80); + } + else if ( bossmap == MAP_HMAP40 ) + { + highesttic = gametic; + lastcombat = AddOneliner("korax",1,40); + } + else if ( (bossmap == MAP_EVMAP30) && bossviewactor ) + { + highesttic = gametic; + lastcombat = AddOneliner("archangelus",1,300); + } break; } } @@ -477,15 +499,13 @@ extend Class SWWMHandler Screen.DrawTexture(bbar_d,false,vpos.x,vpos.y,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha,DTA_WindowRight,dw); Screen.DrawTexture(bbar_r,false,vpos.x,vpos.y,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha,DTA_WindowRight,rw); } - Font barfnt = bar.LangFont(bar.mTewiFont); - Font dmgfnt = bar.mTewiFont.mFont; if ( (cummdamage > 0) && (gametic < lastcummtic+150) ) { double calph = clamp(((lastcummtic+150)-gametic)/50.,0.,1.); string dnum = String.Format("%d",cummdamage); - Screen.DrawText(dmgfnt,Font.CR_RED,vpos.x+300-dmgfnt.StringWidth(dnum),vpos.y-(dmgfnt.GetHeight()+2),dnum,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); + Screen.DrawText(smallfont,Font.CR_RED,vpos.x+300-smallfont.StringWidth(dnum),vpos.y-(smallfont.GetHeight()+2),dnum,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); } - Screen.DrawText(barfnt,Font.CR_WHITE,vpos.x,vpos.y-(barfnt.GetHeight()+2),StringTable.Localize(swwm_funtags?(bosstag.."_FUN"):bosstag),DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha); + Screen.DrawText(smallfont,Font.CR_WHITE,vpos.x,vpos.y-(smallfont.GetHeight()+2),StringTable.Localize(swwm_funtags?(bosstag.."_FUN"):bosstag),DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha); } // can't use this until I actually figure out how to make those walls damageable diff --git a/zscript/handler/swwm_handler_worldload.zsc b/zscript/handler/swwm_handler_worldload.zsc index 2b28564c0..6eca72a1c 100644 --- a/zscript/handler/swwm_handler_worldload.zsc +++ b/zscript/handler/swwm_handler_worldload.zsc @@ -95,7 +95,7 @@ extend Class SWWMHandler else if ( level.levelnum == 32 ) s.nazicleanup |= 2; } if ( s.nazicleanup == 3 ) - SWWMUtility.MarkAchievement('swwm_achievement_trash',s.myplayer); + SWWMUtility.MarkAchievement("trash",s.myplayer); } // reset score on dead players (death exit™) for ( int i=0; i 0) && !(level.clusterflags&LevelLocals.CLUSTER_HUB) ) { @@ -131,31 +134,31 @@ extend Class SWWMHandler } if ( collected ) break; } - if ( !collected ) SWWMUtility.MarkAchievement('swwm_achievement_cliffyb',players[consoleplayer]); + if ( !collected ) SWWMUtility.MarkAchievement("cliffyb",players[consoleplayer]); } // these can't be done on hexen if ( gameinfo.GameType&GAME_Hexen ) return; // beat the par time? if ( level.partime && (Thinker.Tics2Seconds(level.maptime) <= level.partime) ) - SWWMUtility.AchievementProgressInc('swwm_progress_par',1,players[consoleplayer]); + SWWMUtility.AchievementProgressInc("par",1,players[consoleplayer]); // blaze it? if ( Thinker.Tics2Seconds(level.maptime) == 260 ) - SWWMUtility.MarkAchievement('swwm_achievement_blaze',players[consoleplayer]); + SWWMUtility.MarkAchievement("blaze",players[consoleplayer]); // one standing? if ( (level.total_monsters-level.killed_monsters) == 1 ) - SWWMUtility.MarkAchievement('swwm_achievement_onestanding',players[consoleplayer]); + SWWMUtility.MarkAchievement("onestanding",players[consoleplayer]); // nice? if ( players[consoleplayer].Health == 69 ) - SWWMUtility.MarkAchievement('swwm_achievement_nice',players[consoleplayer]); + SWWMUtility.MarkAchievement("nice",players[consoleplayer]); // peaceful/untouchable? if ( !dealtdamage[consoleplayer] ) - SWWMUtility.MarkAchievement('swwm_achievement_peace',players[consoleplayer]); + SWWMUtility.MarkAchievement("peace",players[consoleplayer]); if ( !reallytookdamage[consoleplayer] ) - SWWMUtility.MarkAchievement('swwm_achievement_untouchable',players[consoleplayer]); + SWWMUtility.MarkAchievement("untouchable",players[consoleplayer]); // in a hurry? if ( ((level.total_monsters > 0) || (level.total_items > 0) || (level.total_secrets > 0)) && (level.killed_monsters == 0) && (level.found_items == 0) && (level.found_secrets == 0) ) - SWWMUtility.MarkAchievement('swwm_achievement_hurry',players[consoleplayer]); + SWWMUtility.MarkAchievement("hurry",players[consoleplayer]); } private void SetupLockdefsCache( SWWMCachedLockInfo cli ) @@ -237,6 +240,11 @@ extend Class SWWMHandler if ( (level.GetChecksum() ~== "F286BABF0D152259CD6B996E8920CA70") || (level.GetChecksum() ~== "A52BD2038CF814101AAB7D9C78F9ACE2") ) level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DVACATION_UNFUCK')); + // DUMP 2 and 3 hackaround for the "X maps to go" text being actually readable + else if ( level.GetChecksum() ~== "BC2878CDB82712598A2196807D099C40" ) + level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DUMP2_HUB')); + else if ( level.GetChecksum() ~== "7E77AA43AF7ACDBC52171E9EE2BF98D0" ) + level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DUMP3_HUB')); // rampancy boss brain fix (repeatedly triggering "map clear") let ti = ThinkerIterator.Create("Actor"); Actor a, brain; @@ -297,8 +305,10 @@ extend Class SWWMHandler let a = SWWMTeleportLine(Actor.Spawn("SWWMTeleportLine")); a.tline = l; } - if ( !SWWMUtility.IsExitLine(l) ) - continue; + bool isexit; + int exittype; + [isexit, exittype] = SWWMUtility.IsExitLine(l); + if ( !isexit ) continue; if ( skipme.Find(l) < skipme.Size() ) continue; skipme.Push(l); // look for connected lines @@ -362,7 +372,7 @@ extend Class SWWMHandler for ( int i=0; i= 1000) || e.Thing.FindInventory("BossMarker")) && (alreadygold.Find(e.Thing) == alreadygold.Size()) ) { // make sure we can't farm drops from revivable enemies @@ -142,7 +142,7 @@ extend Class SWWMHandler bool gotgibbed = (!e.Thing.bDONTGIB && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.DamageSource && e.DamageSource.bEXTREMEDEATH) || (e.DamageType == 'Extreme') || (e.Thing.Health < gibhealth)) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) && (!e.DamageSource || !e.DamageSource.bNOEXTREMEDEATH)); if ( !gotgibbed ) { - if ( profiling ) worldthingdied_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDIED); return; } if ( (e.Thing.GetClass() == "Demon") || (e.Thing.GetClass() == "Spectre") ) @@ -161,7 +161,7 @@ extend Class SWWMHandler ExtraGibDeaths.GibThis(e.Thing,"ArachXDeath"); else if ( e.Thing.GetClass() == "Fatso" ) ExtraGibDeaths.GibThis(e.Thing,"FatsoXDeath"); - if ( profiling ) worldthingdied_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDIED); } private void DoKeyTagFix( Actor a ) @@ -228,13 +228,13 @@ extend Class SWWMHandler override void WorldThingDestroyed( WorldEvent e ) { - if ( profiling ) curms = MSTime(); + if ( profiling ) ProfileTick(); // for gibber throttling if ( e.Thing is 'mkBloodDrop' ) blods_realcnt--; else if ( e.Thing is 'mkFlyingGib' ) meats_realcnt--; if ( !e.Thing.default.bSHOOTABLE && !e.Thing.default.bMISSILE && !(e.Thing is 'Inventory') && !SWWMUtility.IsBeamProj(e.Thing) ) { - if ( profiling ) worldthingdestroyed_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDESTROYED); return; } // remove from suckables @@ -245,18 +245,18 @@ extend Class SWWMHandler pos = beams.Find(e.Thing); if ( pos < beams.Size() ) beams.Delete(pos); - if ( profiling ) worldthingdestroyed_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGDESTROYED); } override void WorldThingSpawned( WorldEvent e ) { - if ( profiling ) curms = MSTime(); + if ( profiling ) ProfileTick(); // for gibber throttling if ( e.Thing is 'mkBloodDrop' ) blods_realcnt++; else if ( e.Thing is 'mkFlyingGib' ) meats_realcnt++; if ( !e.Thing || SuppressMultiItem(e) ) { - if ( profiling ) worldthingspawned_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGSPAWNED); return; } IWantDieSpawn(e); @@ -275,7 +275,7 @@ extend Class SWWMHandler p.SetStateLabel("Pickup"); } } - if ( swwm_doomfall && e.Thing.bISMONSTER ) + if ( swwm_doomfall && e.Thing.bISMONSTER && !e.Thing.bBOSS ) e.Thing.bFALLDAMAGE = true; if ( e.Thing is 'Key' ) { @@ -441,6 +441,6 @@ extend Class SWWMHandler trk.maxhealth = trk.lasthealth = e.Thing.Health; trk.intp.Reset(trk.lasthealth); } - if ( profiling ) worldthingspawned_ms += MSTime()-curms; + if ( profiling ) ProfileTock(PT_WORLDTHINGSPAWNED); } } diff --git a/zscript/handler/swwm_handler_worldtick.zsc b/zscript/handler/swwm_handler_worldtick.zsc index 6b36fea80..54785f37c 100644 --- a/zscript/handler/swwm_handler_worldtick.zsc +++ b/zscript/handler/swwm_handler_worldtick.zsc @@ -57,7 +57,7 @@ extend Class SWWMHandler allitems = true; Console.Printf(StringTable.Localize("$SWWM_LASTITEM"),players[i].GetUserName(),500); score += 490; - SWWMUtility.AchievementProgressInc('swwm_progress_allitems',1,players[i]); + SWWMUtility.AchievementProgressInc("allitems",1,players[i]); } SWWMCredits.Give(players[i],score); SWWMScoreObj.Spawn(score,players[i].mo.Vec3Offset(0,0,players[i].mo.Height/2)); @@ -97,7 +97,8 @@ extend Class SWWMHandler // add new entries if ( !cti ) cti = ThinkerIterator.Create("Actor"); else cti.Reinit(); - Actor a; + Actor a, keyactor = null; + bool bossfound = false; while ( a = Actor(cti.Next()) ) { if ( !a.player && !a.bISMONSTER ) continue; @@ -125,10 +126,12 @@ extend Class SWWMHandler combatactors.Push(a); combattics.Push(gametic); enteredcombat = true; + if ( a.bBOSS || a.FindInventory("BossMarker") ) + bossfound = true; } } // be smart, demo-chan, don't shout if you're invisible, or you'll make it worse - if ( enteredcombat && (!highesttic || (gametic > highesttic+700)) && !players[consoleplayer].mo.FindInventory("GhostPower") ) + if ( enteredcombat && ((bossfound && (!lastcombat || (gametic > lastcombat+240))) || (!bossfound && (!highesttic || (gametic > highesttic+700)))) && !players[consoleplayer].mo.FindInventory("GhostPower") ) lastcombat = AddOneliner("fightstart",1,10); } @@ -217,7 +220,78 @@ extend Class SWWMHandler if ( s.deaths > 0 ) return; } - SWWMUtility.MarkAchievement('swwm_achievement_wantdie',players[consoleplayer]); + SWWMUtility.MarkAchievement("wantdie",players[consoleplayer]); + } + + private void UpdateHUDObjects() + { + // score objects + SWWMScoreObj so = scorenums; + SWWMScoreObj soprev = null, sonext; + while ( so ) + { + sonext = so.next; + if ( so.Tick() ) + { + if ( soprev ) soprev.next = sonext; + else scorenums = sonext; + so.Destroy(); + scorenums_cnt--; + } + else soprev = so; + so = sonext; + } + so = damnums; + soprev = null; + while ( so ) + { + sonext = so.next; + if ( so.Tick() ) + { + if ( soprev ) soprev.next = sonext; + else damnums = sonext; + so.Destroy(); + scorenums_cnt--; + } + else soprev = so; + so = sonext; + } + // interest markers + SWWMInterest ip = intpoints; + SWWMInterest ipprev = null, ipnext; + while ( ip ) + { + ipnext = ip.next; + if ( ip.Tick() ) + { + if ( ipprev ) ipprev.next = ipnext; + else intpoints = ipnext; + ip.Destroy(); + intpoints_cnt--; + } + else ipprev = ip; + ip = ipnext; + } + // combat trackers + SWWMCombatTracker trk = trackers; + SWWMCombatTracker trkprev = null, trknext; + int dbar = swwm_damagetarget; + int mxdist = swwm_maxtargetdist; + while ( trk ) + { + trknext = trk.next; + trk.dbar = dbar; + trk.mxdist = mxdist; + if ( trk.Tick() ) + { + if ( trkprev ) trkprev.next = trknext; + else trackers = trknext; + trk.Destroy(); + trackers_cnt--; + } + else trkprev = trk; + trk = trknext; + } } // "simple" tracking (used by the minimap) @@ -235,7 +309,6 @@ extend Class SWWMHandler return; } // update trackers for anything around the player - bool thesight = players[consoleplayer].mo.FindInventory("Omnisight"); double viewdist = SWWMStatusBar.MAPVIEWDIST*swwm_mm_zoom; BlockThingsIterator bt = BlockThingsIterator.Create(players[consoleplayer].Camera,viewdist); while ( bt.Next() ) @@ -251,7 +324,7 @@ extend Class SWWMHandler continue; if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') ) continue; - if ( !thesight && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !(a.IsFriend(players[consoleplayer].mo) && !(a.player && (a.player.mo != a))) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !(a.IsFriend(players[consoleplayer].mo) && !(a.player && (a.player.mo != a))) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) continue; @@ -269,7 +342,7 @@ extend Class SWWMHandler Vector2 rv = a.pos.xy-players[consoleplayer].Camera.pos.xy; if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist ) continue; - if ( !thesight && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; SWWMSimpleTracker.Track(a); } @@ -281,7 +354,7 @@ extend Class SWWMHandler double rad = a.speed*cos(a.pitch); if ( max(abs(rv.x)-rad,abs(rv.y)-rad) > viewdist ) continue; - if ( !thesight && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; SWWMSimpleTracker.Track(a); } @@ -309,7 +382,7 @@ extend Class SWWMHandler continue; if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') ) continue; - if ( !thesight && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !a.IsFriend(players[consoleplayer].mo) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !a.IsFriend(players[consoleplayer].mo) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) continue; @@ -327,7 +400,7 @@ extend Class SWWMHandler Vector2 rv = a.pos.xy-relpos; if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist ) continue; - if ( !thesight && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; SWWMSimpleTracker.Track(a); } @@ -339,16 +412,17 @@ extend Class SWWMHandler double rad = a.speed*cos(a.pitch); if ( max(abs(rv.x)-rad,abs(rv.y)-rad) > viewdist ) continue; - if ( !thesight && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; SWWMSimpleTracker.Track(a); } } } SWWMSimpleTracker trk = strackers; + SWWMSimpleTracker prev = null, next; while ( trk ) { - SWWMSimpleTracker next = trk.next; + next = trk.next; // minimize lifespan of destroyed targets if ( !trk.target ) trk.lastupdate = min(trk.lastupdate,level.maptime); else if ( !trk.expired ) @@ -364,12 +438,12 @@ extend Class SWWMHandler // prune expired trackers if ( trk.lastupdate+140 < level.maptime ) { - if ( !trk.prev ) strackers = trk.next; - else trk.prev.next = trk.next; - if ( trk.next ) trk.next.prev = trk.prev; + if ( !prev ) strackers = trk.next; + else prev.next = trk.next; trk.Destroy(); strackers_cnt--; } + else prev = trk; trk = next; } } diff --git a/zscript/handler/swwm_statichandler_achievements.zsc b/zscript/handler/swwm_statichandler_achievements.zsc index f0fc8d018..1d62a9ba5 100644 --- a/zscript/handler/swwm_statichandler_achievements.zsc +++ b/zscript/handler/swwm_statichandler_achievements.zsc @@ -1,32 +1,63 @@ // achievement tracking +Class SWWMAchievementInfo +{ + int baseindex; // sorting order in the list + String basename; // base name for identifying achievement + TextureID icon; // our icon + int maxval; // maximum value (0: no progress) + bool hasformat; // achievement description text must be formatted to add maxval + bool bitfield; // progress is tracked as a bitfield + int state, val; // set by other scripts, used to avoid excessive dictionary lookups +} + extend Class SWWMStaticHandler { ui int lastachievementnotify; // prevent overlap - Array achievements; + Dictionary achievementstate, achievementprogress; + Array achievementinfo; // specific info on achievements - private ui bool CheckAchievement( SWWMAchievement a ) + private ui bool CheckAchievement( SWWMAchievementInfo a ) { - int val = a.state.GetInt(); + int val = achievementstate.At(a.basename).ToInt(); // manually check progress - if ( a.progress ) + if ( a.maxval ) { - int prog = a.progress.GetInt(); - // special cases - if ( val && (prog < a.maxval) ) + int prog = achievementprogress.At(a.basename).ToInt(); + // special case for bitfields + if ( a.bitfield ) { - a.state.SetInt(0); - val = 0; + int pb = 0; + for ( int i=0; i= a.maxval) ) + { + achievementstate.Insert(a.basename,"1"); + val = 1; + } } - else if ( !val && (prog >= a.maxval) ) + else { - a.state.SetInt(1); - val = 1; + if ( val && (prog < a.maxval) ) + { + achievementstate.Insert(a.basename,"0"); + val = 0; + } + else if ( !val && (prog >= a.maxval) ) + { + achievementstate.Insert(a.basename,"1"); + val = 1; + } } } if ( (val == 1) && (gametic > lastachievementnotify) ) { - a.state.SetInt(2); + achievementstate.Insert(a.basename,"2"); EventHandler.SendNetworkEvent("swwmachievement."..a.basename,consoleplayer); let notif = new("SWWMAchievementNotification").Init(a.basename,a.icon,a.hasformat?a.maxval:0); StatusBar.AttachMessage(notif,-3478); @@ -39,38 +70,296 @@ extend Class SWWMStaticHandler { // don't check constantly, and don't check during level transitions if ( unloading || (maptime < 105) || (maptime%35) ) return; - // first load - if ( achievements.Size() <= 0 ) SWWMUtility.LoadAchievements(achievements); bool alldone = true; int ev = -1; - for ( int i=0; i lastachievementnotify) ) { - achievements[ev].state.SetInt(2); - EventHandler.SendNetworkEvent("swwmachievement."..achievements[ev].basename,consoleplayer); - let notif = new("SWWMAchievementNotification").Init(achievements[ev].basename,achievements[ev].icon); + achievementstate.Insert("everything","2"); + EventHandler.SendNetworkEvent("swwmachievement."..achievementinfo[ev].basename,consoleplayer); + let notif = new("SWWMAchievementNotification").Init(achievementinfo[ev].basename,achievementinfo[ev].icon); StatusBar.AttachMessage(notif,-3478); lastachievementnotify = gametic+200; } } + + // parses achievements.lst file(s) + private void ParseAchievementList( out Array achievements ) + { + achievements.Clear(); + let lmp = Wads.FindLump("achievements.lst"); + if ( lmp == -1 ) ThrowAbortException("'achievements.lst' not found"); + String dat; + Array list, ln; + int bidx = 0; + while ( lmp != -1 ) + { + dat = Wads.ReadLump(lmp); + // fucking Windows + dat.Replace("\r",""); + list.Clear(); + dat.Split(list,"\n"); + for ( int i=0; i)(AllActorClasses[i]); + if ( !c || (c == 'SWWMCollectible') ) continue; + let def = GetDefaultByType(c); + // check that we can collect it in this IWAD + if ( !def.ValidGame() ) continue; + nc++; + } + ac.maxval = nc; + } + // bitfield + else if ( ac.maxval < -1 ) + { + ac.bitfield = true; + ac.maxval = abs(ac.maxval); + } + ac.hasformat = (ln[2]~=="yes"); + achievements.Push(ac); + bidx++; + } + lmp = Wads.FindLump("achievements.lst",lmp+1); + } + } + + // load all achievement state and progress + private void LoadAchievements() + { + String statestr = swwm_achievementstate; + String progstr = swwm_achievementprogress; + // invalid length? + if ( (statestr.length()%2) || (progstr.length()%2) ) + { + CreateAchievements(); + return; + } + // decode + static const int cypher[] = {0xAD,0xEA,0xDB,0xED}; + String nstr = ""; + for ( int i=0; i keys; + keys.Clear(); + statestr.Split(keys,","); + for ( int i=0; i= 2 ) Console.Printf("Deleting bogus achievement state %s = %s",key,di.Value()); + achievementstate.Remove(key); + } + } + di = DictionaryIterator.Create(achievementprogress); + while ( di.Next() ) + { + String key = di.Key(); + bool deleteme = true; + for ( int i=0; i= 2 ) Console.Printf("Deleting bogus achievement progress %s = %s",key,di.Value()); + achievementprogress.Remove(key); + } + } + for ( int i=0; i= 2 ) Console.Printf("Adding missing achievement state %s",achievementinfo[i].basename); + achievementstate.Insert(achievementinfo[i].basename,"0"); + } + if ( achievementinfo[i].maxval && (achievementprogress.At(achievementinfo[i].basename) == "") ) + { + if ( developer >= 2 ) Console.Printf("Adding missing achievement progress %s",achievementinfo[i].basename); + achievementprogress.Insert(achievementinfo[i].basename,"0"); + } + } + } + + // save all achievement state and progress + private void SaveAchievements() + { + String statestr = achievementstate.ToString(); + String progstr = achievementprogress.ToString(); + // trim unneeded json stuff + statestr.Replace("{",""); + statestr.Replace("}",""); + statestr.Replace("\"",""); + progstr.Replace("{",""); + progstr.Replace("}",""); + progstr.Replace("\"",""); + // cheap encode + static const int cypher[] = {0xAD,0xEA,0xDB,0xED}; + String nstr = ""; + for ( int i=0; i>4)+0x41; + nstr.AppendFormat("%c%c",b,c); + } + statestr = nstr; + nstr = ""; + for ( int i=0; i>4)+0x41; + nstr.AppendFormat("%c%c",b,c); + } + progstr = nstr; + let cv = CVar.FindCVar('swwm_achievementstate'); + cv.SetString(statestr); + cv = CVar.FindCVar('swwm_achievementprogress'); + cv.SetString(progstr); + } + + // blank achievement creation, used if loading fails + private void CreateAchievements() + { + achievementstate = Dictionary.Create(); + achievementprogress = Dictionary.Create(); + ParseAchievementList(achievementinfo); + for ( int i=0; i 1 ) nstr.AppendFormat(" (x%d)",rep); + l = SmallFont.BreakLines(nstr,(type==PRINT_LOW)?sz:361); + if ( type != PRINT_LOW ) ls = SmallFont.BreakLines(nstr,211); + } } Class SWWMStatusBar : BaseStatusBar { TextureID StatusTex, WeaponTex, ScoreTex[3], InventoryTex, ChatTex[6], HealthTex[6], FuelTex[2], DashTex, EnemyBTex, EnemyHTex[6], - GenericAmmoTex[3], MiniBox, AutoPage, PauseTex, bgtex; - HUDFont mTewiFont, mMiniwiFont, mMPlusFont, mk6x8Font; + GenericAmmoTex[3], MiniBox, AutoPage, bgtex; Array MainQueue, PickupQueue; @@ -25,18 +45,26 @@ Class SWWMStatusBar : BaseStatusBar SWWMHandler hnd; // shared stuff - Vector2 ss, hs; - Vector2 ssb, hsb; - Vector2 ssn, hsn; - Vector2 sss, hss; - Vector2 ssi, hsi; - Vector2 ssd, hsd; + double hs; + double hsb; + double hsn; + double hss; + double hsi; + double hsd; + Vector2 ss; + Vector2 ssb; + Vector2 ssn; + Vector2 sss; + Vector2 ssi; + Vector2 ssd; int margin; double FracTic; double FrameTime; int PrevFrame; int chatopen; bool camhidden; + int pausetime; + Vector2 pausepos, pausedir; // shared from renderunderlay, needed for proper interpolation of some things Vector3 viewpos, viewrot; @@ -53,12 +81,15 @@ Class SWWMStatusBar : BaseStatusBar String midstr; int midtic, midtype; + transient BrokenLines midl; + int midsz; bool koraxhack, mainframehack, bosshack; int puzzlecnt, realpuzzlecnt; SWWMWeaponTooltip ctip; + transient ThinkerIterator mi; // for map markers double minimapzoom, oldminimapzoom; // minimap constants const CLIPDIST = 800; // clip distance for minimap view, with rotation accounted @@ -77,19 +108,6 @@ Class SWWMStatusBar : BaseStatusBar Array teamactive; Array teamscore; - // if playing in Japanese, returns an alternate font of the same height - // Tewi -> MPlus - // Miniwi -> k6x8 - Font LangFont( HUDFont req ) - { - if ( language ~== "jp" ) - { - if ( req == mMiniwiFont ) return mk6x8Font.mFont; - return mMPlusFont.mFont; - } - return req.mFont; - } - override void FlushNotify() { // flush interpolators (useful since this virtual gets called @@ -154,6 +172,59 @@ Class SWWMStatusBar : BaseStatusBar AttachMessage(m,-1232); return true; } + else if ( msg.Left(25) ~== "swwmsilverbulleteasteregg" ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + let num = msg.Mid(25).ToInt(); + switch ( num ) + { + case 1: + default: + m.seqname = "SAYAWASTEA"; + m.seqcnt = 1; + m.delay = 5; + m.startdelay = 10; + m.enddelay = 25; + break; + case 2: + m.seqname = "SAYAWASTEB"; + m.seqcnt = 1; + m.delay = 10; + m.startdelay = 20; + m.enddelay = 30; + break; + case 3: + m.seqname = "SAYAWASTEC"; + m.seqcnt = 1; + m.delay = 30; + m.startdelay = 15; + m.enddelay = 25; + break; + case 4: + m.seqname = "SAYAWASTED"; + m.seqcnt = 2; + m.delay = 40; + m.startdelay = 10; + m.enddelay = 20; + break; + case 5: + m.seqname = "SAYAWASTEE"; + m.seqcnt = 1; + m.delay = 20; + m.startdelay = 10; + m.enddelay = 30; + break; + case 6: + m.seqname = "SAYAWASTEF"; + m.seqcnt = 1; + m.delay = 50; + m.startdelay = 20; + m.enddelay = 30; + break; + } + AttachMessage(m,-1232); + return true; + } // check for Korax lines, add them to chat (and reply to some of them) bool koraxline = false; if ( msg == StringTable.Localize("$TXT_ACS_MAP02_9_GREET") ) @@ -162,75 +233,81 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAGREETA"; - m.seqcnt = 3; - m.delay = 150; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGREETC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETD"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGREETE"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETF"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; + if ( !swwm_nomapmsg ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m.seqname = "SAYAGREETA"; + m.seqcnt = 3; + m.delay = 150; + AttachMessage(m,-1232); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m2.seqname = "SAYAGREETB"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYAGREETC"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m2.seqname = "SAYAGREETD"; + m2.seqcnt = 1; + m2.delay = 30; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYAGREETE"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m2.seqname = "SAYAGREETF"; + m2.seqcnt = 1; + m2.delay = 30; + m.nextmsg = m2; + m.nextdirect = true; + } } else if ( msg == StringTable.Localize("$TXT_ACS_MAP13_11_MYSER") ) { EventHandler.SendNetworkEvent("swwmkoraxline",1,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYABLOODA"; - m.seqcnt = 2; - m.delay = 220; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYABLOODB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYABLOODC"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYABLOODD"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; + if ( !swwm_nomapmsg ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m.seqname = "SAYABLOODA"; + m.seqcnt = 2; + m.delay = 220; + AttachMessage(m,-1232); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); + m2.seqname = "SAYABLOODB"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYABLOODC"; + m2.seqcnt = 1; + m2.delay = 30; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); + m2.seqname = "SAYABLOODD"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + } } else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_27_YOUHA") ) koraxline = true; @@ -238,24 +315,27 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAGAMEA"; - m.seqcnt = 2; - m.delay = 200; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAGAMEB"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGAMEC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; + if ( !swwm_nomapmsg ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m.seqname = "SAYAGAMEA"; + m.seqcnt = 2; + m.delay = 200; + AttachMessage(m,-1232); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); + m2.seqname = "SAYAGAMEB"; + m2.seqcnt = 1; + m2.delay = 30; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYAGAMEC"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + } } else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_8_WORSH") ) koraxline = true; @@ -263,33 +343,36 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINWORSHIPA"; - m.seqcnt = 1; - m.delay = 150; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINWORSHIPB"; - m2.seqcnt = 1; - m2.delay = 40; - m2.enddelay = 10; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "KIRINWORSHIPC"; - m2.seqcnt = 1; - m2.delay = 10; - m2.enddelay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINWORSHIPD"; - m2.seqcnt = 2; - m2.delay = 10; - m.nextmsg = m2; - m.nextdirect = true; + if ( !swwm_nomapmsg ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m.seqname = "KIRINWORSHIPA"; + m.seqcnt = 1; + m.delay = 150; + AttachMessage(m,-1232); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "KIRINWORSHIPB"; + m2.seqcnt = 1; + m2.delay = 40; + m2.enddelay = 10; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m2.seqname = "KIRINWORSHIPC"; + m2.seqcnt = 1; + m2.delay = 10; + m2.enddelay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "KIRINWORSHIPD"; + m2.seqcnt = 2; + m2.delay = 10; + m.nextmsg = m2; + m.nextdirect = true; + } } else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_12_AREYO") ) koraxline = true; @@ -297,46 +380,49 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer); koraxline = true; - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAMASTERSA"; - m.seqcnt = 2; - m.delay = 150; - m.enddelay = 60; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAMASTERSB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAMASTERSC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAMASTERSD"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAMASTERSE"; - m2.seqcnt = 1; - m2.delay = 40; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAMASTERSF"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; + if ( !swwm_nomapmsg ) + { + m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m.seqname = "SAYAMASTERSA"; + m.seqcnt = 2; + m.delay = 150; + m.enddelay = 60; + AttachMessage(m,-1232); + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); + m2.seqname = "SAYAMASTERSB"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYAMASTERSC"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); + m2.seqname = "SAYAMASTERSD"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); + m2.seqname = "SAYAMASTERSE"; + m2.seqcnt = 1; + m2.delay = 40; + m.nextmsg = m2; + m.nextdirect = true; + m = m2; + m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); + m2.seqname = "SAYAMASTERSF"; + m2.seqcnt = 1; + m2.delay = 20; + m.nextmsg = m2; + m.nextdirect = true; + } } if ( koraxline ) { @@ -412,7 +498,7 @@ Class SWWMStatusBar : BaseStatusBar { EventHandler.SendNetworkEvent("swwmstorepuzzlecnt",consoleplayer,puzzlecnt,realpuzzlecnt); int tpuz = SWWMUtility.IsDeathkings()?15:19; - if ( realpuzzlecnt >= tpuz ) SWWMUtility.MarkAchievement('swwm_achievement_puzzle',players[consoleplayer]); + if ( realpuzzlecnt >= tpuz ) SWWMUtility.MarkAchievement("puzzle",players[consoleplayer]); if ( !swwm_nomapmsg ) { switch ( puzzlecnt ) @@ -614,11 +700,6 @@ Class SWWMStatusBar : BaseStatusBar override bool ProcessNotify( EPrintLevel printlevel, String outline ) { - // this ignoring stuff has to be a thing until we can set printlevels directly - if ( outline.Left(21) == "SWWMHandler profiling" ) - return true; - if ( outline.left(18) == "\cxSWWM GZ RNG dump" ) - return true; if ( koraxhack ) { // treat as chat message @@ -636,17 +717,17 @@ Class SWWMStatusBar : BaseStatusBar // no need to attach name, these are done specifically for this printlevel = PRINT_CHAT; } + // append chat messages to full history + if ( (printlevel == PRINT_CHAT) || (printlevel == PRINT_TEAMCHAT) ) + EventHandler.SendNetworkEvent("swwmstoremessage."..outline.Left(outline.Length()-1),level.totaltime,printlevel,consoleplayer); + // ignore during intermission + if ( gamestate != GS_LEVEL ) return false; + if ( (printlevel < PRINT_LOW) || (printlevel > PRINT_TEAMCHAT) ) return true; // we couldn't care less about these let m = new("MsgLine"); m.str = outline.Left(outline.Length()-1); // strip newline m.type = printlevel; m.tic = level.totaltime; m.rep = 1; - // append chat messages to full history - if ( (printlevel == PRINT_CHAT) || (printlevel == PRINT_TEAMCHAT) ) - EventHandler.SendNetworkEvent("swwmstoremessage."..m.str,m.tic,m.type,consoleplayer); - // ignore during intermission - if ( gamestate != GS_LEVEL ) return false; - if ( (printlevel < PRINT_LOW) || (printlevel > PRINT_TEAMCHAT) ) return true; // we couldn't care less about these if ( printlevel == PRINT_LOW ) { // check if repeated @@ -658,6 +739,7 @@ Class SWWMStatusBar : BaseStatusBar PickupQueue.Delete(i); break; } + m.UpdateText(int(ss.x*.75)); PickupQueue.Push(m); } else @@ -671,6 +753,7 @@ Class SWWMStatusBar : BaseStatusBar MainQueue.Delete(i); break; } + m.UpdateText(); MainQueue.Push(m); } return true; @@ -862,6 +945,7 @@ Class SWWMStatusBar : BaseStatusBar override void Tick() { Super.Tick(); + pausetime = gametic; SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); int maxtargetnum = max(0,swwm_maxtargets); int maxscorenum = max(0,swwm_maxscorenums); @@ -896,8 +980,7 @@ Class SWWMStatusBar : BaseStatusBar // let weapons update their own interpolators if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) SWWMWeapon(CPlayer.ReadyWeapon).HudTick(); - bool thesight = CPlayer.mo.FindInventory("Omnisight"); - double desiredzoom = clamp(swwm_mm_zoom,.5,thesight?2.:1.); + double desiredzoom = clamp(swwm_mm_zoom,.5,level.allmap?2.:1.); if ( (minimapzoom != swwm_mm_zoom) || (oldminimapzoom != swwm_mm_zoom) ) { oldminimapzoom = minimapzoom; @@ -909,7 +992,7 @@ Class SWWMStatusBar : BaseStatusBar let cam = players[consoleplayer].camera; Vector3 viewvec = (cos(viewrot.x)*cos(viewrot.y),sin(viewrot.x)*cos(viewrot.y),sin(-viewrot.y)); int sz; - if ( thesight && swwm_pois ) + if ( level.allmap && swwm_pois ) { // update omnisight stuff if ( intpoints.Size() != hnd.intpoints_cnt ) @@ -946,7 +1029,7 @@ Class SWWMStatusBar : BaseStatusBar if ( trk.mytarget == CPlayer.mo ) continue; if ( trk.mytarget is 'PlayerGone' ) continue; // ignore "gone" players int mtime = 35; - if ( thesight && (trk.lasthealth > 0) ) mtime += 105; + if ( level.allmap && (trk.lasthealth > 0) ) mtime += 105; if ( level.maptime > trk.updated+mtime ) continue; // ignore trackers clearly outside of player view Vector3 tdir = level.Vec3Diff(viewpos,trk.pos); @@ -1022,7 +1105,7 @@ Class SWWMStatusBar : BaseStatusBar i = 0; for ( SWWMItemSense s=demo.itemsense; s; s=s.next ) { - if ( !thesight && (level.maptime > s.updated+35) ) continue; + if ( !level.allmap && (level.maptime > s.updated+35) ) continue; // ignore points clearly outside of player view Vector3 tdir = level.Vec3Diff(viewpos,s.pos); if ( viewvec dot tdir < 0 ) continue; @@ -1119,16 +1202,6 @@ Class SWWMStatusBar : BaseStatusBar override void Init() { Super.Init(); - // scaling is set to 640 pixels wide minimum - // and height set so it fits up to ultrawide (2.370:1 ~ 2.4:1) - // ultrawide is honestly an abomination, - // and these numbers should be proof enough of it - // none of the commercially available "21:9" screens even have - // that actual ratio in the first place, what the fuck man - // they dangle anywhere between 12:4, 43:18 and 64:27 - // fuck ultrawide, seriously - // get a 16:10 screen instead, it's the best aspect ratio - SetSize(0,640,266); StatusTex = TexMan.CheckForTexture("graphics/HUD/StatusBox.png",TexMan.Type_Any); DashTex = TexMan.CheckForTexture("graphics/HUD/DashBar.png",TexMan.Type_Any); FuelTex[0] = TexMan.CheckForTexture("graphics/HUD/FuelBar.png",TexMan.Type_Any); @@ -1162,13 +1235,8 @@ Class SWWMStatusBar : BaseStatusBar GenericAmmoTex[2] = TexMan.CheckForTexture("graphics/HUD/GenericAmmoBoxR.png",TexMan.Type_Any); MiniBox = TexMan.CheckForTexture("graphics/HUD/MinimapBox.png",TexMan.Type_Any); AutoPage = TexMan.CheckForTexture("AUTOPAGE",TexMan.Type_Autopage); - PauseTex = TexMan.CheckForTexture("graphics/swwmpause.png",TexMan.Type_Any); bgtex = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any); minimapzoom = oldminimapzoom = 1.; - mTewiFont = HUDFont.Create("TewiShaded"); - mMiniwiFont = HUDFont.Create("MiniwiShaded"); - mMPlusFont = HUDFont.Create("MPlusShaded"); - mk6x8Font = HUDFont.Create("k6x8Shaded"); HealthInter = DynamicValueInterpolator.Create(100,.1,1,100); ScoreInter = DynamicValueInterpolator.Create(0,.1,1,999999999); ScoreInter2 = DynamicValueInterpolator.Create(0,.1,1,999999999); @@ -1192,10 +1260,9 @@ Class SWWMStatusBar : BaseStatusBar SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); int cliptop = projdata.viewy, clipbottom = projdata.viewy+projdata.viewh, clipleft = projdata.viewx, clipright = projdata.viewx+projdata.vieww; - bool thesight = !!CPlayer.mo.FindInventory("Omnisight"); // points of interest String tag; - if ( thesight ) + if ( level.allmap ) { for ( int i=0; i= 1. ) continue; Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - Font fnt = LangFont(mMiniwiFont); - int mtime = thesight?70:35; + int mtime = level.allmap?70:35; double alph = clamp(((s.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); - alph *= clamp(1.5-1.5*(tdir.length()/(thesight?1200.:800.)),0.,1.); + alph *= clamp(1.5-1.5*(tdir.length()/(level.allmap?1200.:800.)),0.,1.); tag = s.tag; - Screen.DrawText(fnt,s.vipitem?Font.CR_PURPLE:s.scoreitem?Font.CR_GOLD:Font.CR_GREEN,(vpos.x-hsd.x*fnt.StringWidth(tag)/2.)/hsd.x,(vpos.y-hsd.y*fnt.GetHeight()/2.)/hsd.y,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(smallfont2,s.vipitem?Font.CR_PURPLE:s.scoreitem?Font.CR_GOLD:Font.CR_GREEN,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y-hsd*smallfont2.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); - Screen.DrawText(fnt,Font.CR_WHITE,(vpos.x-hsd.x*fnt.StringWidth(tag)/2.)/hsd.x,(vpos.y+hsd.y*fnt.GetHeight()/2.)/hsd.y,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*smallfont2.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); if ( s.item is 'SWWMRespawnTimer' ) { tag = String.Format(StringTable.Localize("$SWWM_TRESPAWN"),s.item.special2/GameTicRate); - Screen.DrawText(fnt,Font.CR_WHITE,(vpos.x-hsd.x*fnt.StringWidth(tag)/2.)/hsd.x,(vpos.y+hsd.y*fnt.GetHeight()*2)/hsd.y,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*smallfont2.GetHeight()*2)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } } } @@ -1286,18 +1351,22 @@ Class SWWMStatusBar : BaseStatusBar if ( StringTable.Localize("$SWWM_LEGPREFIX") == "R" ) tag = tag..StringTable.Localize("$SWWM_LEG"); else tag = StringTable.Localize("$SWWM_LEG")..tag; } - if ( targ.bBOSS ) tag = "\cx★\c- "..tag.." \cx★\c-"; + if ( targ.bBOSS ) + { + if ( swwm_bigtags ) tag = "\cx★\c- "..tag.." \cx★\c-"; + else tag = "\cx*\c- "..tag.." \cx*\c-"; // miniwi has no stars + } if ( targ.bFRIENDLY ) tag = "\cg♥\c- "..tag.." \cg♥\c-"; } int mtime = 35; - if ( thesight && (targ.lasthealth > 0) ) mtime += 105; + if ( level.allmap && (targ.lasthealth > 0) ) mtime += 105; double alph = clamp(((targ.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); Vector2 barsiz = TexMan.GetScaledSize(EnemyBTex); - barsiz.x *= hsb.x; - barsiz.y *= hsb.y; + barsiz.x *= hsb; + barsiz.y *= hsb; Vector2 barpos = vpos-(barsiz/2.); barpos.y -= 16.; - Font fnt = LangFont(swwm_bigtags?mTewiFont:mMiniwiFont); + Font fnt = swwm_bigtags?smallfont:smallfont2; int col = Font.CR_WHITE; if ( teamplay ) { @@ -1306,37 +1375,37 @@ Class SWWMStatusBar : BaseStatusBar if ( col == -1 ) col = Font.CR_WHITE; } if ( swwm_targettags || targ.myplayer && (tag != "") ) - Screen.DrawText(fnt,col,(barpos.x+barsiz.x/2.-(fnt.StringWidth(tag)*hsb.x)/2.)/hsb.x,(barpos.y-fnt.GetHeight()*hsb.y)/hsb.y,tag,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawTexture(EnemyBTex,false,barpos.x/hsb.x,barpos.y/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(fnt,col,(barpos.x+barsiz.x/2.-(fnt.StringWidth(tag)*hsb)/2.)/hsb,(barpos.y-fnt.GetHeight()*hsb)/hsb,tag,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyBTex,false,barpos.x/hsb,barpos.y/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); double ht = clamp(targ.intp.GetValue(),0,targ.maxhealth*100); double hw = (min(ht,targ.maxhealth)*50.)/targ.maxhealth; if ( targ.mytarget && (targ.mytarget.bInvulnerable || (targ.myplayer && (targ.myplayer.cheats&(CF_GODMODE|CF_GODMODE2))) || targ.mytarget.FindInventory("InvinciballPower")) ) { - Screen.DrawTexture(EnemyHTex[4],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[4],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } else { - Screen.DrawTexture(EnemyHTex[0],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[0],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); if ( ht > targ.maxhealth ) { hw = (min(ht-targ.maxhealth,targ.maxhealth)*50.)/targ.maxhealth; - Screen.DrawTexture(EnemyHTex[1],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[1],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } if ( ht > targ.maxhealth*2 ) { hw = (min(ht-targ.maxhealth*2,targ.maxhealth*3)*50.)/(targ.maxhealth*3); - Screen.DrawTexture(EnemyHTex[2],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[2],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } if ( ht > targ.maxhealth*5 ) { hw = (min(ht-targ.maxhealth*5,targ.maxhealth*5)*50.)/(targ.maxhealth*5); - Screen.DrawTexture(EnemyHTex[3],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[3],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } } if ( targ.mytarget && targ.mytarget.FindInventory("DivineSpriteEffect") ) { double falph = clamp((ht-targ.maxhealth*10)/(targ.maxhealth*60.),0.,1.); - Screen.DrawTexture(EnemyHTex[5],false,(barpos.x+2*hsb.x)/hsb.x,(barpos.y+2*hsb.y)/hsb.y,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(EnemyHTex[5],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); } } // floating kill scores and others @@ -1376,21 +1445,19 @@ Class SWWMStatusBar : BaseStatusBar fo.y = snum.initialspan-(snum.lifespan-fractic); isscore = true; } - Font fnt = mMiniwiFont.mFont; - Vector2 hs0 = isscore?hss:hsn; + double hs0 = isscore?hss:hsn; Vector2 ss0 = isscore?sss:ssn; - Screen.DrawText(fnt,snum.tcolor,(vpos.x-hs0.x*(fo.x+fnt.StringWidth(tag)/2.))/hs0.x,(vpos.y-hs0.y*(fo.y+(fnt.GetHeight()/2.)))/hs0.y,tag,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(smallfont2,snum.tcolor,(vpos.x-hs0*(fo.x+smallfont2.StringWidth(tag)/2.))/hs0,(vpos.y-hs0*(fo.y+(smallfont2.GetHeight()/2.)))/hs0,tag,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); // extra strings (if available) if ( !swwm_scorebonus ) continue; - fo.y += fnt.GetHeight(); - fnt = LangFont(mMiniwiFont); - for ( int i=0; i 0 ) tag.AppendFormat(" x%d",snum.xscore[i]); - Screen.DrawText(fnt,snum.xtcolor[i],(vpos.x-hss.x*(fo.x+fnt.StringWidth(tag)/2.))/hss.x,(vpos.y-hss.y*(fo.y+(fnt.GetHeight()/2.)))/hss.y,tag,DTA_VirtualWidthF,sss.x,DTA_VirtualHeightF,sss.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - fo.y += fnt.GetHeight(); + Screen.DrawText(smallfont2,snum.xtcolor[i],(vpos.x-hss*(fo.x+smallfont2.StringWidth(tag)/2.))/hss,(vpos.y-hss*(fo.y+(smallfont2.GetHeight()/2.)))/hss,tag,DTA_VirtualWidthF,sss.x,DTA_VirtualHeightF,sss.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + fo.y += smallfont2.GetHeight(); } } } @@ -1398,8 +1465,7 @@ Class SWWMStatusBar : BaseStatusBar override void DrawMyPos() { String str = String.Format("(%d,%d,%d)",CPlayer.mo.pos.X,CPlayer.mo.pos.Y,CPlayer.mo.pos.Z); - let fnt = LangFont(mMiniwiFont); - Screen.DrawText(fnt,Font.CR_GREEN,(ss.x-fnt.StringWidth(str))/2,4,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont2,Font.CR_GREEN,(ss.x-smallfont2.StringWidth(str))/2,4,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } override void DrawAutomapHUD( double ticFrac ) @@ -1711,13 +1777,13 @@ Class SWWMStatusBar : BaseStatusBar [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); if ( !visible ) continue; // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs.x; - rv2 *= (HALFMAPSIZE/zoomclip)*hs.x; + rv1 *= (HALFMAPSIZE/zoomclip)*hs; + rv2 *= (HALFMAPSIZE/zoomclip)*hs; // offset to minimap center rv1 += basepos; rv2 += basepos; // draw the line - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs.x*.25),mm_gridcolor); + Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),mm_gridcolor); } for ( int i=0; i zoomview ) + Vector2 mid = (rv1+rv2)/2.; + Vector2 siz = (abs(rv1.x-rv2.x),abs(rv1.y-rv2.y))/2.; + if ( (((siz.x+zoomview)-abs(mid.x)) <= 0) || (((siz.y+zoomview)-abs(mid.y)) <= 0) ) continue; // flip Y rv1.y *= -1; @@ -1827,8 +1895,8 @@ Class SWWMStatusBar : BaseStatusBar [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); if ( !visible ) continue; // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs.x; - rv2 *= (HALFMAPSIZE/zoomclip)*hs.x; + rv1 *= (HALFMAPSIZE/zoomclip)*hs; + rv2 *= (HALFMAPSIZE/zoomclip)*hs; // offset to minimap center rv1 += basepos; rv2 += basepos; @@ -1886,14 +1954,106 @@ Class SWWMStatusBar : BaseStatusBar if ( isportal ) { col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs.x*.25),col); + Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),col); } - else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs.x*.5),col); + else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.5),col); + } + } + private void DrawMapMarkers( Vector2 basepos ) + { + double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; + double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; + Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; + Sector csec = players[consoleplayer].Camera.CurSector; + if ( !mi ) mi = ThinkerIterator.Create("MapMarker",Thinker.STAT_MAPMARKER); + else mi.Reinit(); + MapMarker m; + while ( m = MapMarker(mi.Next()) ) + { + if ( m.bDORMANT ) continue; + if ( m.args[1] && !(m.CurSector.moreflags&Sector.SECMF_DRAWN) ) continue; + TextureID tx; + if ( m.picnum.IsValid() ) tx = m.picnum; + else tx = m.CurState.GetSpriteTexture(1); + Vector2 sz = TexMan.GetScaledSize(tx); + Vector2 scl; + // seems to match automap scaling somewhat + if ( m.Args[2] ) scl = (m.Scale/zoomlevel)*.15; + else scl = m.Scale*.5; + sz.x *= scl.x; + sz.y *= scl.y; + double radius = max(sz.x,sz.y); // naive, I know + if ( m.args[0] ) + { + // oh bother, this will be dicks + let ai = level.CreateActorIterator(m.args[0]); + Actor a; + while ( a = ai.Next() ) + { + Vector2 rv = a.pos.xy-cpos; + bool isportal = false; + if ( swwm_mm_portaloverlay ) + { + Sector sec = level.PointInSector(a.pos.xy); + if ( sec.portalgroup != csec.portalgroup ) + { + isportal = true; + // portal displacement + rv -= SWWMUtility.PortalDisplacement(csec,sec); + } + } + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) + continue; + // flip Y + rv.y *= -1; + // rotate by view + rv = Actor.RotateVector(rv,ViewRot.x-90); + // scale to minimap frame + rv *= (HALFMAPSIZE/zoomclip)*hs; + // offset to minimap center + rv += basepos; + // draw + int clipleft = int((basepos.x-HALFMAPSIZE)*hs); + int cliptop = int((basepos.y-HALFMAPSIZE)*hs); + int clipright = int(clipleft+HALFMAPSIZE*2*hs); + int clipbottom = int(cliptop+HALFMAPSIZE*2*hs); + Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_ClipLeft,clipleft,DTA_ClipTop,cliptop,DTA_ClipRight,clipright,DTA_ClipBottom,clipbottom); + } + ai.Destroy(); + continue; + } + Vector2 rv = m.pos.xy-cpos; + bool isportal = false; + if ( swwm_mm_portaloverlay ) + { + Sector sec = level.PointInSector(m.pos.xy); + if ( sec.portalgroup != csec.portalgroup ) + { + isportal = true; + // portal displacement + rv -= SWWMUtility.PortalDisplacement(csec,sec); + } + } + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) + continue; + // flip Y + rv.y *= -1; + // rotate by view + rv = Actor.RotateVector(rv,ViewRot.x-90); + // scale to minimap frame + rv *= (HALFMAPSIZE/zoomclip)*hs; + // offset to minimap center + rv += basepos; + // draw + int clipleft = int(basepos.x-HALFMAPSIZE*hs); + int cliptop = int(basepos.y-HALFMAPSIZE*hs); + int clipright = int(clipleft+HALFMAPSIZE*2*hs); + int clipbottom = int(cliptop+HALFMAPSIZE*2*hs); + Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_ClipLeft,clipleft,DTA_ClipTop,cliptop,DTA_ClipRight,clipright,DTA_ClipBottom,clipbottom); } } private void DrawMapThings( Vector2 basepos ) { - bool thesight = !!CPlayer.mo.FindInventory("Omnisight"); double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; @@ -1901,6 +2061,7 @@ Class SWWMStatusBar : BaseStatusBar for ( SWWMSimpleTracker t=hnd.strackers; t; t=t.next ) { if ( !swwm_mm_missiles && t.ismissile ) continue; + if ( level.allmap && (t.target is 'Key') ) continue; // don't draw keys over the actual markers they have Color col = mm_thingcolor; bool isitem = false; bool plainactor = false; @@ -1938,7 +2099,7 @@ Class SWWMStatusBar : BaseStatusBar plainactor = true; } int mtime = 35; - if ( thesight && !t.expired && t.target ) mtime += 105; + if ( level.allmap && !t.expired && t.target ) mtime += 105; Vector2 rv = pos-cpos; bool isportal = false; if ( swwm_mm_portaloverlay ) @@ -1953,7 +2114,7 @@ Class SWWMStatusBar : BaseStatusBar col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); } } - if ( min(abs(rv.x)-radius,abs(rv.y)-radius) > zoomview ) + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) continue; Vector2 tv[4]; int nidx; @@ -2002,14 +2163,14 @@ Class SWWMStatusBar : BaseStatusBar if ( visible ) { // scale to minimap frame - x0 *= (HALFMAPSIZE/zoomclip)*hs.x; - x1 *= (HALFMAPSIZE/zoomclip)*hs.x; + x0 *= (HALFMAPSIZE/zoomclip)*hs; + x1 *= (HALFMAPSIZE/zoomclip)*hs; // offset to minimap center x0 += basepos; x1 += basepos; // draw the line - if ( isportal ) Screen.DrawThickLine(int(x0.x),int(x0.y),int(x1.x),int(x1.y),max(1.,hs.x*.25),col,int(t.smoothalpha*255)); - else Screen.DrawThickLine(int(x0.x),int(x0.y),int(x1.x),int(x1.y),max(1.,hs.x*.5),col,int(t.smoothalpha*255)); + if ( isportal ) Screen.DrawThickLine(int(x0.x),int(x0.y),int(x1.x),int(x1.y),max(1.,hs*.25),col,int(t.smoothalpha*255)); + else Screen.DrawThickLine(int(x0.x),int(x0.y),int(x1.x),int(x1.y),max(1.,hs*.5),col,int(t.smoothalpha*255)); drawn = true; } } @@ -2047,7 +2208,7 @@ Class SWWMStatusBar : BaseStatusBar xx -= 6; } Screen.DrawTexture(ScoreTex[2],false,ss.x-(margin+xx),margin,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,ss.x-(margin+4+6*digits),margin+1,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,Font.CR_FIRE,ss.x-(margin+4+6*digits),margin+2,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); int yy = margin+19; // obviously, don't draw the minimap if the automap is open if ( !automapactive && swwm_mm_enable ) @@ -2056,20 +2217,21 @@ Class SWWMStatusBar : BaseStatusBar xx = int(ss.x-(margin+(HALFMAPSIZE+2)*2)); Screen.DrawTexture(MiniBox,false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); Vector2 basemappos = (xx+HALFMAPSIZE+2,yy+HALFMAPSIZE+2); - Screen.Dim(mm_backcolor,1.,int((basemappos.x-HALFMAPSIZE)*hs.x),int((basemappos.y-HALFMAPSIZE)*hs.x),int(HALFMAPSIZE*2*hs.x),int(HALFMAPSIZE*2*hs.x)); - if ( mm_drawautopage ) Screen.DrawTexture(AutoPage,false,xx+2,yy+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipRight,int((xx+2+HALFMAPSIZE*2)*hs.x),DTA_ClipBottom,int((yy+2+HALFMAPSIZE*2)*hs.x)); + Screen.Dim(mm_backcolor,1.,int((basemappos.x-HALFMAPSIZE)*hs),int((basemappos.y-HALFMAPSIZE)*hs),int(HALFMAPSIZE*2*hs),int(HALFMAPSIZE*2*hs)); + if ( mm_drawautopage ) Screen.DrawTexture(AutoPage,false,xx+2,yy+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipRight,int((xx+2+HALFMAPSIZE*2)*hs),DTA_ClipBottom,int((yy+2+HALFMAPSIZE*2)*hs)); // draw dat stuff - if ( swwm_mm_grid ) DrawMapGrid(basemappos*hs.x); - DrawMapLines(basemappos*hs.x); - DrawMapThings(basemappos*hs.x); + if ( swwm_mm_grid ) DrawMapGrid(basemappos*hs); + DrawMapLines(basemappos*hs); + DrawMapThings(basemappos*hs); + DrawMapMarkers(basemappos*hs); // finally, draw the player arrow Vector2 tv[3]; tv[0] = (0,-4); tv[1] = (-3,2); tv[2] = (3,2); if ( !swwm_mm_rotate ) for ( int i=0; i<3; i++ ) tv[i] = Actor.RotateVector(tv[i],90-ViewRot.x); - for ( int i=0; i<3; i++ ) tv[i] = (tv[i]+basemappos)*hs.x; - for ( int i=0; i<3; i++ ) Screen.DrawThickLine(int(tv[i].x),int(tv[i].y),int(tv[(i+1)%3].x),int(tv[(i+1)%3].y),max(1.,hs.x*.5),mm_yourcolor); + for ( int i=0; i<3; i++ ) tv[i] = (tv[i]+basemappos)*hs; + for ( int i=0; i<3; i++ ) Screen.DrawThickLine(int(tv[i].x),int(tv[i].y),int(tv[(i+1)%3].x),int(tv[(i+1)%3].y),max(1.,hs*.5),mm_yourcolor); yy += ((HALFMAPSIZE+2)*2)+3; } // draw stats and timer when automap is open @@ -2078,7 +2240,6 @@ Class SWWMStatusBar : BaseStatusBar { xx = int(ss.x-(margin+2)); String str; - Font fnt; if ( automapactive || (fstats > 1) ) { int label = am_showmaplabel; @@ -2087,44 +2248,42 @@ Class SWWMStatusBar : BaseStatusBar if ( iof != -1 ) ln.Truncate(iof); if ( !label || ((level.clusterflags&level.CLUSTER_HUB) && (label == 2)) ) str = ln; else str = String.Format("%s - %s",level.mapname.MakeUpper(),ln); - fnt = LangFont(mTewiFont); - Screen.DrawText(fnt,Font.CR_FIRE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont,Font.CR_FIRE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont.GetHeight(); } - fnt = LangFont(mMiniwiFont); if ( (level.total_monsters > 0) && am_showmonsters && !deathmatch ) { str = String.Format("\cxK \c-%d\cu/\c-%d",level.killed_monsters,level.total_monsters); - Screen.DrawText(fnt,(level.killed_monsters>=level.total_monsters)?Font.CR_GOLD:Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont2,(level.killed_monsters>=level.total_monsters)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont2.GetHeight(); } if ( (level.total_items > 0) && am_showitems && !deathmatch ) { str = String.Format("\cxI \c-%d\cu/\c-%d",level.found_items,level.total_items); - Screen.DrawText(fnt,(level.found_items>=level.total_items)?Font.CR_GOLD:Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont2,(level.found_items>=level.total_items)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont2.GetHeight(); } if ( (level.total_secrets > 0) && am_showsecrets && !deathmatch ) { str = String.Format("\cxS \c-%d\cu/\c-%d",level.found_secrets,level.total_secrets); - Screen.DrawText(fnt,(level.found_secrets>=level.total_secrets)?Font.CR_GOLD:Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont2,(level.found_secrets>=level.total_secrets)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont2.GetHeight(); } int sec; if ( am_showtime ) { sec = Thinker.Tics2Seconds(level.maptime); str = String.Format("\cxT \c-%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(fnt,((level.sucktime>0)&&(sec>=(level.sucktime*3600)))?Font.CR_RED:(sec<=level.partime)?Font.CR_GOLD:Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont2,((level.sucktime>0)&&(sec>=(level.sucktime*3600)))?Font.CR_RED:(sec<=level.partime)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont2.GetHeight(); } // don't show total time if it's equal to map time if ( am_showtotaltime && (level.totaltime != level.maptime) ) { sec = Thinker.Tics2Seconds(level.totaltime); str = String.Format("\cxTT \c-%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(fnt,Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont2,Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont2.GetHeight(); } yy += 3; } @@ -2134,7 +2293,6 @@ Class SWWMStatusBar : BaseStatusBar if ( playercount <= 1 ) return; xx = int(ss.x-(margin+2)); String str; - Font fnt = LangFont(mTewiFont); if ( teamplay ) { // draw team scores @@ -2142,8 +2300,8 @@ Class SWWMStatusBar : BaseStatusBar { if ( !teamactive[i] ) continue; str = String.Format("\cx%s \c-%d",Teams[i].mName,teamscore[i]); - Screen.DrawText(fnt,Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont,Font.CR_WHITE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont.GetHeight(); } } else @@ -2151,19 +2309,19 @@ Class SWWMStatusBar : BaseStatusBar // draw rank and spread like in UT if ( tiedscore ) str = String.Format("\cx%s \cg%d\cr/\cg%d\c-",StringTable.Localize("$SWWM_DMRANK"),rank,playercount); else str = String.Format("\cx%s \cj%d\cu/\cj%d\c-",StringTable.Localize("$SWWM_DMRANK"),rank,playercount); - Screen.DrawText(fnt,Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight(); + Screen.DrawText(smallfont,Font.CR_WHITE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont.GetHeight(); if ( lead > 0 ) str = String.Format("\cx%s \cj+%d\c-",StringTable.Localize("$SWWM_DMSPREAD"),lead); else str = String.Format("\cx%s \cj%d\c-",StringTable.Localize("$SWWM_DMSPREAD"),lead); - Screen.DrawText(fnt,Font.CR_WHITE,xx-fnt.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += fnt.GetHeight()+3; + Screen.DrawText(smallfont,Font.CR_WHITE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += smallfont.GetHeight()+3; // draw top 3 players for ( int i=0; i pc = klist[i].Species; - if ( !pc ) continue; - for ( int j=0; j= j ) i--; - } - } int maxcolc = (gameinfo.gametype&GAME_DOOMCHEX)?6:4; for ( int i=0; i 99999) && !forceamt ) nstr = "99999"; else nstr = String.Format("%d",i.Amount); - int len = mTewiFont.mFont.StringWidth(nstr); - Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,(xx+30)-len,(yy+30)-11,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + int len = smallfont.StringWidth(nstr); + Screen.DrawText(smallfont,Font.CR_FIRE,(xx+30)-len,(yy+30)-10,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); } return true; } @@ -2351,7 +2494,7 @@ Class SWWMStatusBar : BaseStatusBar Screen.DrawTexture(GenericAmmoTex[1],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } Screen.DrawTexture(GenericAmmoTex[0],false,xx-3,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,xx,yy,astr2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,Font.CR_FIRE,xx,yy+1,astr2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); yy += 14; } xx = ss.x-(margin+13); @@ -2364,11 +2507,11 @@ Class SWWMStatusBar : BaseStatusBar Screen.DrawTexture(GenericAmmoTex[1],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } Screen.DrawTexture(GenericAmmoTex[0],false,xx-3,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,xx,yy,astr1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,Font.CR_FIRE,xx,yy+1,astr1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } } Screen.DrawTexture(WeaponTex,false,ss.x-(margin+60),ss.y-(margin+28),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - double xx = ss.x-(margin+57), yy = ss.y-(margin+28); + double xx = ss.x-(margin+57), yy = ss.y-(margin+27); for ( int i=1; i<=10; i++ ) { int ncolor = Font.CR_WHITE; @@ -2402,7 +2545,7 @@ Class SWWMStatusBar : BaseStatusBar } if ( !hasammo ) ncolor = Font.CR_RED; } - Screen.DrawText(mTewiFont.mFont,ncolor,xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,ncolor,xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); xx += 12; if ( i == 5 ) { @@ -2464,17 +2607,16 @@ Class SWWMStatusBar : BaseStatusBar tst = "AAA"; SWWMUtility.ObscureText(tst,(gametic-trl)/3); trl--; - Screen.DrawText(mTewiFont.mFont,Font.CR_WHITE,margin+108,ss.y-(margin+15),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add); + Screen.DrawText(smallfont,Font.CR_WHITE,margin+108,ss.y-(margin+14),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add); } - Screen.DrawText(mTewiFont.mFont,hcolor,margin+108,ss.y-(margin+15),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph); + Screen.DrawText(smallfont,hcolor,margin+108,ss.y-(margin+14),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph); } - else Screen.DrawText(mTewiFont.mFont,hcolor,margin+108,ss.y-(margin+15),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else Screen.DrawText(smallfont,hcolor,margin+108,ss.y-(margin+14),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } private void DrawPickups() { - Font fnt = LangFont(mTewiFont); - int h = fnt.GetHeight(); + int h = smallfont.GetHeight(); // draw nametags below them double yy; double nalph = 0.; @@ -2485,10 +2627,10 @@ Class SWWMStatusBar : BaseStatusBar yy = ss.y-(margin+50); // shift up if boss healthbar is present if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(25*clamp(hnd.bossalpha*2.,0.,1.)); - int len = fnt.StringWidth(ntagstr); + int len = smallfont.StringWidth(ntagstr); double xx = (ss.x-len)/2.; - Screen.Dim("Black",.8*nalph,int((xx-6)*hs.x),int(yy*hs.y),int((len+12)*hs.x),int((h+4)*hs.y)); - Screen.DrawText(fnt,ntagcol,int(xx),yy+2,ntagstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,nalph); + Screen.Dim("Black",.8*nalph,int((xx-6)*hs),int(yy*hs),int((len+12)*hs),int((h+4)*hs)); + Screen.DrawText(smallfont,ntagcol,int(xx),yy+2,ntagstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,nalph); } if ( PickupQueue.Size() <= 0 ) return; // reverse order since they're drawn bottom to top @@ -2497,37 +2639,34 @@ Class SWWMStatusBar : BaseStatusBar // shift up if boss healthbar is present if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(25*clamp(hnd.bossalpha*2.,0.,1.)); // shift up again if nametag is present - if ( nalph > 0. ) yy -= int((fnt.GetHeight()+6)*clamp(nalph*2.,0.,1.)); + if ( nalph > 0. ) yy -= int((smallfont.GetHeight()+6)*clamp(nalph*2.,0.,1.)); for ( int i=PickupQueue.Size()-1; i>=mend; i-- ) { - String cstr = PickupQueue[i].str; - if ( PickupQueue[i].rep > 1 ) cstr.AppendFormat(" (x%d)",PickupQueue[i].rep); - double curtime = (PickupQueue[i].tic+35*swwm_pickduration)-(level.totaltime+fractic); + PickupQueue[i].UpdateText(int(ss.x*.75)); + double curtime = (PickupQueue[i].tic+GameTicRate*swwm_pickduration)-(level.totaltime+fractic); double alph = clamp(curtime/20.,0.,1.); - BrokenLines l = fnt.BreakLines(cstr,int(ss.x*.75)); + let l = PickupQueue[i].l; int maxlen = 0; for ( int j=0; j maxlen ) maxlen = len; } double xx = (ss.x-maxlen)/2.; - Screen.Dim("Black",.8*alph,int((xx-6)*hs.x),int((yy-h*(l.Count()-1))*hs.y),int((maxlen+12)*hs.x),int((h*l.Count()+4)*hs.y)); + Screen.Dim("Black",.8*alph,int((xx-6)*hs),int((yy-h*(l.Count()-1))*hs),int((maxlen+12)*hs),int((h*l.Count()+4)*hs)); for ( int j=l.Count()-1; j>=0; j-- ) { - int len = fnt.StringWidth(l.StringAt(j)); + int len = smallfont.StringWidth(l.StringAt(j)); xx = int((ss.x-len)/2.); - Screen.DrawText(fnt,msg0color,xx,yy+2,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(smallfont,msg0color,xx,yy+2,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); yy -= h; } - l.Destroy(); yy -= 6; } } private void DrawMessages( double boxalph = 1. ) { - Font fnt = LangFont(mTewiFont); double xx, yy; if ( midstr != "" ) { @@ -2536,22 +2675,25 @@ Class SWWMStatusBar : BaseStatusBar int col = (midtype&2)?msgmidcolor2:msgmidcolor; double curtime = (midtic+int(GameTicRate*con_midtime))-(level.totaltime+fractic); double alph = clamp(curtime/20.,0.,1.); - BrokenLines l = fnt.BreakLines(midstr,int(ss.x*ssp)); - int h = fnt.GetHeight(); + if ( !midl || (midsz != int(ss.x*ssp)) ) + { + if ( midl ) midl.Destroy(); + midl = SmallFont.BreakLines(midstr,int(ss.x*ssp)); + } + int h = smallfont.GetHeight(); int maxlen = 0; - for ( int i=0; i=gametic)?swwm_maxshownbig:swwm_maxshown)); @@ -2559,27 +2701,25 @@ Class SWWMStatusBar : BaseStatusBar yy = margin; bool smol = (ss.x<640); Screen.DrawTexture(ChatTex[smol?3:0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,boxalph); - yy++; + yy += 2; for ( int i=mstart; i 1 ) cstr.AppendFormat(" (x%d)",MainQueue[i].rep); + MainQueue[i].UpdateText(); + let l = smol?MainQueue[i].ls:MainQueue[i].l; double curtime = MainQueue[i].tic-(level.totaltime+fractic); if ( MainQueue[i].type < PRINT_CHAT ) curtime += GameTicRate*swwm_msgduration; else curtime += GameTicRate*swwm_chatduration; double alph = clamp(curtime/20.,0.,1.); - BrokenLines l = fnt.BreakLines(cstr,smol?211:361); for ( int j=0; j ss.x-4 ) { // draw trailing dots - Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,"...",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,"...",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); // shift back xx -= w-(ss.x-4); // draw trimmed - Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipLeft,int(26*hs.x)); + Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipLeft,int(26*hs)); } - else Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); return true; } @@ -2622,17 +2761,43 @@ Class SWWMStatusBar : BaseStatusBar Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(192,0,0,0),DTA_Alpha,.5); } else Screen.Dim("Black",.5,0,0,Screen.GetWidth(),Screen.GetHeight()); - Screen.DrawTexture(PauseTex,false,Screen.GetWidth()/2,Screen.GetHeight()/2,DTA_CleanNoMove,true,DTA_CenterOffset,true); + String str = StringTable.Localize("$SWWM_PAUSE"); + if ( gametic < pausetime+1000 ) + { + pausepos.x = Screen.GetWidth()/2; + pausepos.y = Screen.GetHeight()/2; + pausedir = (1,1); + } + else + { + pausepos.x += pausedir.x*CleanXFac; + pausepos.y += pausedir.y*CleanYFac; + if ( pausepos.x >= Screen.GetWidth()-((bigfont.StringWidth(str)+8)*CleanXFac/2) ) + pausedir.x = -1; + if ( pausepos.x < ((bigfont.StringWidth(str)+8)*CleanXFac/2) ) + pausedir.x = 1; + if ( pausepos.y >= Screen.GetHeight()-((bigfont.GetHeight()+8)*CleanYFac/2) ) + pausedir.y = -1; + if ( pausepos.y < ((bigfont.GetHeight()+8)*CleanYFac/2) ) + pausedir.y = 1; + } + double xx = pausepos.x-bigfont.StringWidth(str)*CleanXFac/2; + double yy = pausepos.y-bigfont.GetHeight()*CleanYFac/2; + int tlen = str.CodePointCount(); + for ( int i=0, pos=0; i level.maptime) ) { Screen.Dim("Red",clamp((demo.revivefail-(level.maptime+fractic))/60.,0.,.2),0,0,Screen.GetWidth(),Screen.GetHeight()); str = StringTable.Localize("$SWWM_REFAIL"); - fnt = LangFont(mTewiFont); - len = fnt.StringWidth(str); + len = smallfont.StringWidth(str); xx = int((ss.x-len)/2.); yy = ss.y-48; if ( ((demo.revivefail-level.maptime)%16) < 8 ) - Screen.DrawText(fnt,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(smallfont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } alph = clamp((deadtimer-60)/60.,0.,1.); String nam = CPlayer.GetUserName(); if ( nam == "Player" ) str = StringTable.Localize("$SWWM_URDED_GEN"); else str = String.Format(StringTable.Localize("$SWWM_URDED"),nam); - fnt = LangFont(mTewiFont); - len = fnt.StringWidth(str); + len = smallfont.StringWidth(str); xx = int((ss.x-len)/2.); - yy = (ss.y-fnt.GetHeight()*4)/2.; + yy = (ss.y-smallfont.GetHeight()*4)/2.; // shift down if scoreboard is shown if ( (deathmatch && sb_deathmatch_enable && (!teamplay || sb_teamdeathmatch_enable)) || (multiplayer && sb_cooperative_enable) ) - yy += ss.y/3.+fnt.GetHeight(); - Screen.DrawText(fnt,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + yy += ss.y/3.+smallfont.GetHeight(); + Screen.DrawText(smallfont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) { if ( sv_norespawn ) return (1.-dimalph); alph = clamp((deadtimer-90)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDEDMP")); - fnt = LangFont(mTewiFont); - len = fnt.StringWidth(str); + len = smallfont.StringWidth(str); xx = int((ss.x-len)/2.); yy = ss.y/2.; // shift down if scoreboard is shown if ( (deathmatch && sb_deathmatch_enable && (!teamplay || sb_teamdeathmatch_enable)) || (multiplayer && sb_cooperative_enable) ) yy += ss.y/3.; - Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); return (1.-dimalph); } alph = clamp((deadtimer-140)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDED2")); - fnt = LangFont(mTewiFont); - len = fnt.StringWidth(str); + len = smallfont.StringWidth(str); xx = int((ss.x-len)/2.); yy = ss.y/2.; - Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( goner || !swwm_revive ) return (1.-dimalph); alph = clamp((deadtimer-160)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDED3")); - fnt = LangFont(mTewiFont); - len = fnt.StringWidth(str); + len = smallfont.StringWidth(str); xx = int((ss.x-len)/2.); - yy = (ss.y+fnt.GetHeight()*2)/2.; - Screen.DrawText(fnt,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + yy = (ss.y+smallfont.GetHeight()*2)/2.; + Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); return (1.-dimalph); } return 1.; @@ -2731,31 +2890,20 @@ Class SWWMStatusBar : BaseStatusBar camhidden = true; else camhidden = false; BeginHUD(); - if ( swwm_hudscale <= 0 ) hs = GetHUDScale(); - else hs.x = swwm_hudscale; - hs.y = hs.x; - ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); + if ( swwm_hudscale ) hs = CleanXFac_1; + else hs = max(floor(Screen.GetWidth()/640.),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); margin = clamp(swwm_hudmargin,0,40); - if ( swwm_barscale <= 0 ) hsb = GetHUDScale(); - else hsb.x = swwm_barscale; - hsb.y = hsb.x; - ssb = (Screen.GetWidth()/hsb.x,Screen.GetHeight()/hsb.y); - if ( swwm_numscale <= 0 ) hsn = GetHUDScale(); - else hsn.x = swwm_numscale; - hsn.y = hsn.x; - ssn = (Screen.GetWidth()/hsn.x,Screen.GetHeight()/hsn.y); - if ( swwm_scrscale <= 0 ) hss = GetHUDScale(); - else hss.x = swwm_scrscale; - hss.y = hss.x; - sss = (Screen.GetWidth()/hss.x,Screen.GetHeight()/hss.y); - if ( swwm_poiscale <= 0 ) hsi = GetHUDScale(); - else hsi.x = swwm_poiscale; - hsi.y = hsi.x; - ssi = (Screen.GetWidth()/hsi.x,Screen.GetHeight()/hsi.y); - if ( swwm_detscale <= 0 ) hsd = GetHUDScale(); - else hsd.x = swwm_detscale; - hsd.y = hsd.x; - ssd = (Screen.GetWidth()/hsd.x,Screen.GetHeight()/hsd.y); + hsb = max(hs+swwm_barscalerel,1.); + hsn = max(hs+swwm_numscalerel,1.); + hss = max(hs+swwm_scrscalerel,1.); + hsi = max(hs+swwm_poiscalerel,1.); + hsd = max(hs+swwm_detscalerel,1.); + ssb = (Screen.GetWidth()/hsb,Screen.GetHeight()/hsb); + ssn = (Screen.GetWidth()/hsn,Screen.GetHeight()/hsn); + sss = (Screen.GetWidth()/hss,Screen.GetHeight()/hss); + ssi = (Screen.GetWidth()/hsi,Screen.GetHeight()/hsi); + ssd = (Screen.GetWidth()/hsd,Screen.GetHeight()/hsd); FracTic = TicFrac; if ( camhidden ) { diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index 48059c812..fc0686391 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -5,9 +5,9 @@ Class PayRespects : HUDMessageBase { Vector2 basepos; int lifespan, initialspan, starttic; - transient Font TewiFont; double scale; - Vector2 hs, ss; + double hs; + Vector2 ss; int seed, seed2; static PayRespects PressF() @@ -31,16 +31,14 @@ Class PayRespects : HUDMessageBase override void ScreenSizeChanged() { - hs = StatusBar.GetHUDScale()*scale; - hs.y = hs.x; - ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); + hs = CleanXFac*scale; + ss = (Screen.GetWidth(),Screen.GetHeight())/hs; } override void Draw( int bottom, int visibility ) { Vector2 realpos = (basepos.x*ss.x,basepos.y*ss.y); - if ( !TewiFont ) TewiFont = Font.GetFont('TewiShaded'); - Vector2 fo = (TewiFont.StringWidth("F")/2.,-TewiFont.GetHeight()); + Vector2 fo = (smallfont.StringWidth("F")/2.,-smallfont.GetHeight()); // F rise up int initspd = (128-seed); if ( (initspd >= 0) && (initspd < 32) ) initspd = 32; @@ -50,7 +48,7 @@ Class PayRespects : HUDMessageBase fo.x += (.15*initspd)*((initialspan-(lifespan-fractic))**.6); fo.y += ((initialspan-(lifespan-fractic))**1.6)-boostup*sin((90./initialspan)*(level.maptime+fractic-starttic)); double alph = clamp((lifespan+fractic)/double(initialspan),0.,1.); - Screen.DrawText(TewiFont,Font.CR_GREEN,realpos.x-fo.x,realpos.y-fo.y,"F",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(smallfont,Font.CR_GREEN,realpos.x-fo.x,realpos.y-fo.y,"F",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); } } @@ -58,13 +56,14 @@ Class PayRespects : HUDMessageBase Class SWWMOneLiner : HUDMessageBase { String whichline; + transient BrokenLines l; int lifespan, curtime; - transient Font TewiFont, MPlusFont; static SWWMOneLiner Make( String whichline, int lifespan ) { let l = new("SWWMOneLiner"); - l.whichline = whichline; + if ( StringTable.Localize(whichline) == "" ) l.whichline = ""; + else l.whichline = StringTable.Localize("$SWWM_LQUOTE")..StringTable.Localize(whichline)..StringTable.Localize("$SWWM_RQUOTE"); l.curtime = l.lifespan = lifespan; return l; } @@ -76,44 +75,41 @@ Class SWWMOneLiner : HUDMessageBase return (curtime<-20); } + override void ScreenSizeChanged() + { + if ( l ) l.Destroy(); + } + override void Draw( int bottom, int visibility ) { - if ( !TewiFont ) TewiFont = Font.GetFont('TewiShaded'); - if ( !MPlusFont ) MPlusFont = Font.GetFont('MPlusShaded'); int margin = swwm_hudmargin; - Vector2 hs; - if ( swwm_hudscale <= 0 ) hs = StatusBar.GetHUDScale(); - else hs.x = swwm_hudscale; - hs.y = hs.x; - Vector2 ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); - String loc = StringTable.Localize(whichline); - if ( loc.Length() <= 0 ) return; // don't draw empty strings - String locs = StringTable.Localize("$SWWM_LQUOTE")..loc..StringTable.Localize("$SWWM_RQUOTE"); - Font fnt = TewiFont; - if ( language ~== "jp" ) fnt = MPlusFont; + double hs; + if ( swwm_hudscale ) hs = CleanXFac_1; + else hs = max(floor(Screen.GetWidth()/640.),1.); + Vector2 ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + if ( whichline == "" ) return; // don't draw empty strings // split so it can fit - BrokenLines l = fnt.BreakLines(locs,int(ss.x*.5)); + if ( !l ) l = smallfont.BreakLines(whichline,int(ss.x*.5)); int maxlen = 0; for ( int i=0; i maxlen ) maxlen = len; } - int h = fnt.GetHeight(); + int h = smallfont.GetHeight(); int fh = h*l.Count(); double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; double fcurtime = curtime-fractic; double alph = clamp((fcurtime/20.)+1.,0.,1.); alph *= clamp((lifespan-fcurtime)/10.,0.,1.); - Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs.x)/2.),int(bottom-(margin+2+fh)*hs.y),int((maxlen+12)*hs.x),int((fh+4)*hs.y)); + Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs)/2.),int(bottom-(margin+2+fh)*hs),int((maxlen+12)*hs),int((fh+4)*hs)); int yy = margin+fh; for ( int i=0; i weapon ) { let def = GetDefaultByType(weapon); - icon = def.Icon; wpn = def.GetTag(); txt = StringTable.Localize(def.tooltip); - holdtics = 120; + holdtics = 150; fadeintics = 5; fadeouttics = 15; tics = -10; @@ -288,50 +265,34 @@ Class SWWMWeaponTooltip : HUDMessageBase override void Draw( int bottom, int visibility ) { if ( tics <= 0 ) return; - if ( !tewifont ) tewifont = Font.GetFont('TewiShaded'); - if ( !mplusfont ) mplusfont = Font.GetFont('MPlusShaded'); - if ( !miniwifont ) miniwifont = Font.GetFont('MiniwiShaded'); - if ( !k6x8font ) k6x8font = Font.GetFont('k6x8Shaded'); - let fnt = tewifont; - let fnt2 = miniwifont; - if ( language ~== "jp" ) - { - fnt = mplusfont; - fnt2 = k6x8font; - } - Vector2 hs; - if ( swwm_hudscale <= 0 ) hs = StatusBar.GetHUDScale(); - else hs.x = swwm_hudscale; - hs.y = hs.x; - Vector2 ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); + double hs; + if ( swwm_hudscale ) hs = CleanXFac_1; + else hs = max(floor(Screen.GetWidth()/640.),1.); + Vector2 ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; double ftics = tics+fractic; double alpha = (ftics w ) w = lw; } - int cw = int(ceil((max(max(w1,w2),w)+8)/6.))*6; - Screen.Dim("Black",.5*alpha,int((pos.x-(cw+4)/2)*hs.x),int((pos.y-(h+6))*hs.y),int((cw+4)*hs.x),int((8+h+4+fnt.GetHeight()+8+fnt2.GetHeight()*l.Count())*hs.y)); - Screen.DrawTexture(icon,false,pos.x,pos.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha,DTA_CenterBottomOffset,true); - pos.y += 4; - Screen.DrawText(fnt,Font.CR_FIRE,pos.x-w1/2,pos.y,wpn,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + int cw = int(ceil((max(w1,w)+8)/6.))*6; + int h = smallfont.GetHeight()+8+smallfont2.GetHeight()*l.Count(); + Vector2 pos = (int(ss.x/2),ss.y-(swwm_hudmargin+80+h)); + Screen.Dim("Black",.5*alpha,int((pos.x-(cw+4)/2)*hs),int((pos.y-2)*hs),int((cw+4)*hs),int((h+4)*hs)); + Screen.DrawText(smallfont,Font.CR_FIRE,pos.x-w1/2,pos.y,wpn,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); for ( int i=0; i seqcnt) ) return; EventHandler.SendNetworkEvent("swwmstoremessage."..chrname..": "..txt,level.totaltime,PRINT_CHAT,consoleplayer); @@ -403,16 +362,14 @@ Class SWWMDirectMessage : HUDMessageBase private void DrawText() { - if ( !fnt ) fnt = Font.GetFont('TewiShaded'); - if ( !jpfnt ) jpfnt = Font.GetFont('MPlusShaded'); if ( !l ) SetText(); int cur = charcnt; - Vector2 pos = origin+(47,2); + Vector2 pos = origin+(47,3); for ( int i=0; i 15 ) { - delay = 30; + delay = startdelay; seqnum++; } return false; @@ -571,10 +528,10 @@ Class SWWMDirectMessage : HUDMessageBase double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; if ( seqnum == 0 ) alph = (fadein+fractic)/15.; else if ( seqnum == (seqcnt+1) ) alph = 1.-(fadeout+fractic)/30.; - if ( swwm_hudscale <= 0 ) hs = StatusBar.GetHUDScale(); - else hs.x = swwm_hudscale; - hs.y = hs.x; - ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); + double hs; + if ( swwm_hudscale ) hs = CleanXFac_1; + else hs = max(floor(Screen.GetWidth()/640.),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); origin = (int(ss.x-270)/2,swwm_hudmargin+70); Screen.DrawTexture(MessageBox,false,origin.x,origin.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( (seqnum < 1) || (seqnum > seqcnt) ) return; @@ -601,7 +558,8 @@ Class SWWMDialogueTrigger : Actor { "swwmultdoom2map20dlg" }; - Console.MidPrint(null,dlglist[args[0]]); + if ( !swwm_nomapmsg ) + Console.MidPrint(null,dlglist[args[0]]); Destroy(); } override void Tick() {} diff --git a/zscript/swwm_thinkers_hud.zsc b/zscript/hud/swwm_hudobjects.zsc similarity index 77% rename from zscript/swwm_thinkers_hud.zsc rename to zscript/hud/swwm_hudobjects.zsc index ba21a87a8..0c1310db5 100644 --- a/zscript/swwm_thinkers_hud.zsc +++ b/zscript/hud/swwm_hudobjects.zsc @@ -1,32 +1,5 @@ -// thinkers related to the hud - -// "Full History" contains all messages since session start, nothing is flushed -// this can be accessed from a section of the knowledge base -Class SWWMFullHistory : Thinker -{ - Array msg; - - static clearscope SWWMFullHistory Get() - { - let fh = SWWMFullHistory(ThinkerIterator.Create("SWWMFullHistory",STAT_STATIC).Next()); - return fh; - } - - static void PushMessage( String str, int tic, int type ) - { - let fh = SWWMFullHistory(ThinkerIterator.Create("SWWMFullHistory",STAT_STATIC).Next()); - if ( !fh ) - { - fh = new("SWWMFullHistory"); - fh.ChangeStatNum(STAT_STATIC); - } - MsgLine m = new("MsgLine"); - m.str = str; - m.tic = tic; - m.type = type; - fh.msg.Push(m); - } -} +// hud-related storage objects +// (used to be thinkers, but this might be lighter on performance) Enum EScoreObjType { @@ -37,18 +10,17 @@ Enum EScoreObjType }; // floating scores -Class SWWMScoreObj : Thinker +Class SWWMScoreObj play { - int xcnt; - int xtcolor[6]; - int xscore[6]; - String xstr[6]; + Array xtcolor; + Array xscore; + Array xstr; int tcolor; int score; Vector3 pos; int lifespan, initialspan; int starttic, seed, seed2; - SWWMScoreObj prev, next; + SWWMScoreObj next; bool damnum; Actor acc; @@ -60,7 +32,6 @@ Class SWWMScoreObj : Thinker let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( !hnd ) return null; let o = new("SWWMScoreObj"); - o.ChangeStatNum(STAT_USER); o.score = score; o.pos = pos; o.lifespan = o.initialspan = 60; @@ -84,58 +55,33 @@ Class SWWMScoreObj : Thinker o.seed = Random[ScoreBits](); o.seed2 = Random[ScoreBits](); o.damnum = (type > ST_Score); - o.xcnt = 0; - for ( int i=0; i<6; i++ ) o.xtcolor[i] = swwm_numcolor_bonus; o.acc = acc; if ( o.damnum ) { o.next = hnd.damnums; - if ( hnd.damnums ) hnd.damnums.prev = o; hnd.damnums = o; hnd.damnums_cnt++; } else { o.next = hnd.scorenums; - if ( hnd.scorenums ) hnd.scorenums.prev = o; hnd.scorenums = o; hnd.scorenums_cnt++; } return o; } - override void OnDestroy() + void AppendXString( String xstr, int xscore = 0, int xtcolor = int.min ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) - { - if ( damnum ) - { - hnd.damnums_cnt--; - if ( !prev ) hnd.damnums = next; - } - else - { - hnd.scorenums_cnt--; - if ( !prev ) hnd.scorenums = next; - } - if ( !prev ) - { - if ( next ) next.prev = null; - } - else - { - prev.next = next; - if ( next ) next.prev = prev; - } - } - Super.OnDestroy(); + self.xscore.Push(xscore); + self.xstr.Push(xstr); + self.xtcolor.Push((xtcolor==int.min)?swwm_numcolor_bonus:xtcolor); } - override void Tick() + bool Tick() { lifespan--; - if ( lifespan <= 0 ) Destroy(); + return (lifespan <= 0); } } @@ -156,28 +102,27 @@ Class SWWMInterestMarker : MapMarker States { Spawn: - EIXT AB -1; + EIXT ABCD -1; Stop; } } -Class SWWMInterest : Thinker +Class SWWMInterest play { - int type; + int type, exittype; Key trackedkey; Line trackedline; Actor marker; Vector3 pos; - SWWMInterest prev, next; + SWWMInterest next; String keytag; - static SWWMInterest Spawn( Vector3 pos = (0,0,0), Key thekey = null, Line theline = null ) + static SWWMInterest Spawn( Vector3 pos = (0,0,0), Key thekey = null, Line theline = null, int theexit = 0 ) { let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( !hnd ) return null; if ( (!thekey && !theline) || (thekey && theline) ) return null; let i = new("SWWMInterest"); - i.ChangeStatNum(STAT_USER); i.trackedkey = thekey; i.trackedline = theline; if ( thekey ) @@ -193,13 +138,16 @@ Class SWWMInterest : Thinker } else i.marker.picnum = thekey.SpawnState.GetSpriteTexture(0); i.marker.target = thekey; + i.marker.scale = thekey.scale; + i.marker.bDORMANT = !level.allmap; } else if ( theline ) { i.type = INT_Exit; + i.exittype = theexit; i.marker = Actor.Spawn("SWWMInterestMarker",pos); - if ( theline.special == Exit_Secret ) - i.marker.SetState(i.marker.SpawnState+1); + i.marker.SetState(i.marker.SpawnState+theexit); + i.marker.bDORMANT = !level.allmap; } else { @@ -208,56 +156,36 @@ Class SWWMInterest : Thinker } i.pos = thekey?thekey.Vec3Offset(0,0,thekey.height/2):pos; i.next = hnd.intpoints; - if ( hnd.intpoints ) hnd.intpoints.prev = i; hnd.intpoints = i; hnd.intpoints_cnt++; return i; } - override void OnDestroy() - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) - { - hnd.intpoints_cnt--; - if ( !prev ) - { - hnd.intpoints = next; - if ( next ) next.prev = null; - } - else - { - prev.next = next; - if ( next ) next.prev = prev; - } - } - Super.OnDestroy(); - } - - override void Tick() + bool Tick() { // update if ( (type == INT_Key) && (!trackedkey || trackedkey.Owner) ) { marker.Destroy(); - Destroy(); + return true; } - else if ( trackedkey ) + if ( trackedkey ) { pos = trackedkey.Vec3Offset(0,0,trackedkey.height/2); marker.SetOrigin(pos,true); } + return false; } } -Class SWWMItemSense : Thinker +Class SWWMItemSense play { Actor item; String tag; int updated; bool scoreitem, vipitem; Demolitionist parent; - SWWMItemSense prev, next; + SWWMItemSense next; Vector3 pos; static SWWMItemSense Spawn( Demolitionist parent, Actor item ) @@ -272,7 +200,6 @@ Class SWWMItemSense : Thinker return s; } let i = new("SWWMItemSense"); - i.ChangeStatNum(STAT_USER); i.item = item; if ( item is 'SWWMRespawnTimer' ) { @@ -289,7 +216,6 @@ Class SWWMItemSense : Thinker i.UpdateTag(); i.pos = item.Vec3Offset(0,0,item.height); i.next = parent.itemsense; - if ( parent.itemsense ) parent.itemsense.prev = i; parent.itemsense = i; parent.itemsense_cnt++; return i; @@ -306,39 +232,16 @@ Class SWWMItemSense : Thinker else tag = i.GetTag(); } - override void OnDestroy() + bool Tick() { - if ( parent ) - { - parent.itemsense_cnt--; - if ( !prev ) - { - parent.itemsense = next; - if ( next ) next.prev = null; - } - else - { - prev.next = next; - if ( next ) next.prev = prev; - } - } - Super.OnDestroy(); - } - - override void Tick() - { - if ( !parent ) - { - Destroy(); - return; - } // expire - if ( level.maptime > updated+70 ) Destroy(); + if ( !parent || (level.maptime > updated+70) ) return true; + return false; } } // enemy combat tracker -Class SWWMCombatTracker : Thinker +Class SWWMCombatTracker play { Actor mytarget; String mytag; @@ -346,7 +249,7 @@ Class SWWMCombatTracker : Thinker DynamicValueInterpolator intp; Vector3 pos, prevpos, oldpos, oldprev; PlayerInfo myplayer; - SWWMCombatTracker prev, next; + SWWMCombatTracker next; bool legged, mutated; int tcnt; double height; @@ -366,7 +269,7 @@ Class SWWMCombatTracker : Thinker realtag = mytarget.GetClassName(); SWWMUtility.BeautifyClassName(realtag); } - mytag = mytarget.player?(mytarget.player.mo!=mytarget)?String.Format(StringTable.Localize("$FN_VOODOO"),mytarget.player.GetUserName()):mytarget.player.GetUserName():realtag; + mytag = mytarget.player?(mytarget.player.mo!=mytarget)?String.Format(StringTable.Localize("$FN_VOODOO"),mytarget.player.GetUserName()):mytarget.player.GetUserName():((mytarget is 'PlayerPawn')&&(!mytarget.player))?StringTable.Localize("$FN_VOODOO_NP"):realtag; } else mytag = ""; } @@ -385,7 +288,6 @@ Class SWWMCombatTracker : Thinker return t; } t = new("SWWMCombatTracker"); - t.ChangeStatNum(STAT_USER); t.mytarget = target; t.UpdateTag(); if ( target.player ) @@ -405,51 +307,13 @@ Class SWWMCombatTracker : Thinker t.next = hnd.trackers; t.bBOSS = target.bBOSS; t.bFRIENDLY = target.IsFriend(players[consoleplayer].mo); - if ( hnd.trackers ) - { - hnd.trackers.prev = t; - // propagate cvar values - t.mxdist = hnd.trackers.mxdist; - t.dbar = hnd.trackers.dbar; - } hnd.trackers = t; hnd.trackers_cnt++; return t; } - override void OnDestroy() + bool Tick() { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) - { - hnd.trackers_cnt--; - if ( !prev ) - { - hnd.trackers = next; - if ( next ) next.prev = null; - } - else - { - prev.next = next; - if ( next ) next.prev = prev; - } - } - Super.OnDestroy(); - } - - override void Tick() - { - // only the first tracker accesses the CVars, saves on perf - if ( !prev ) - { - dbar = swwm_damagetarget; - mxdist = swwm_maxtargetdist; - } - if ( next ) - { - next.dbar = dbar; - next.mxdist = mxdist; - } // is target gone or dead? if ( !mytarget || (mytarget.Health <= 0) ) { @@ -458,12 +322,12 @@ Class SWWMCombatTracker : Thinker lasthealth = 0; prevpos = pos; // prevent stuttering intp.Update(lasthealth); - if ( level.maptime > updated+35 ) Destroy(); - return; + if ( level.maptime > updated+35 ) return true; + return false; } // don't update dormant targets if ( mytarget.bDORMANT ) - return; + return false; // only update height/position while alive bool heightchanged = false; if ( height != mytarget.height ) heightchanged = true; @@ -501,8 +365,7 @@ Class SWWMCombatTracker : Thinker t.bUpdateMorph = true; t.unmorphedtag = t.mytag; t.mytag = String.Format("%s (%s)",mytag,t.unmorphedtag); - Destroy(); - return; + return true; } } } @@ -530,7 +393,7 @@ Class SWWMCombatTracker : Thinker mutated = true; Console.Printf(StringTable.Localize("$SWWM_LTFORM"),mytag); } - } + }// voodoo dolls don't show as friendly bFRIENDLY = mytarget.IsFriend(players[consoleplayer].mo); if ( mytarget.Health < lasthealth ) firsthit = true; lasthealth = mytarget.Health; @@ -539,9 +402,9 @@ Class SWWMCombatTracker : Thinker if ( dbar && !mytarget.player ) { if ( (dbar == 2) && (lasthealth >= maxhealth) ) - return; + return false; else if ( (dbar == 1) && !firsthit ) - return; + return false; } if ( (mytarget.bISMONSTER || mytarget.player) && !mytarget.bINVISIBLE && !mytarget.bCORPSE ) { @@ -564,11 +427,12 @@ Class SWWMCombatTracker : Thinker // special stuff, only if visible if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < (mxdist/4))) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; } + return false; } } // ultralight trackers for certain things -Class SWWMSimpleTracker : Thinker +Class SWWMSimpleTracker play { Actor target; double radius; @@ -588,7 +452,7 @@ Class SWWMSimpleTracker : Thinker bool isbeam; int lastupdate; ui double smoothalpha; // smoothened alpha, for ui - SWWMSimpleTracker prev, next; + SWWMSimpleTracker next; void Update() { @@ -664,11 +528,9 @@ Class SWWMSimpleTracker : Thinker return t; } t = new("SWWMSimpleTracker"); - t.ChangeStatNum(STAT_INFO); t.target = target; t.Update(); t.next = hnd.strackers; - if ( hnd.strackers ) hnd.strackers.prev = t; hnd.strackers = t; hnd.strackers_cnt++; return t; diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index 47c3a756e..b17023be9 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -162,7 +162,6 @@ Class SWWMRocketAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/ /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo';*/ return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerCrackshots'; } @@ -173,11 +172,6 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) - { - if ( Random[Replacements](0,1) ) return Random[Replacements](0,2)?'SparksterBAmmo2':'SparksterBAmmo3'; - return Random[Replacements](0,2)?'SparksterRAmmo2':'SparksterRAmmo3'; - }*/ /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return Random[Replacements](0,4)?'QuadravolAmmo2':'QuadravolAmmo3';*/ switch ( Random[Replacements](0,11) ) @@ -212,14 +206,13 @@ Class SWWMCellAmmoSmall : SWWMAmmoSpawner { if ( !Random[Replacements](0,3) ) { - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo';*/ /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt2';*/ if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets'; } - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('EMPCarbine')) ) return 'EMPCore';*/ + /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo';*/ if ( notondemand || SWWMUtility.ItemExists('SilverBullet') ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; } - /*if ( !Random[Replacements](0,4) && (notondemand || SWWMUtility.ItemExists('BlackfireIgniter')) ) return 'DarkCanister';*/ + /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/ return 'SparkUnit'; } } @@ -231,8 +224,6 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner { if ( !Random[Replacements](0,3) ) { - //if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('GrandLance')) && SWWMUtility.CheckNeedsItem('GrandAmmo',true) && !SWWMUtility.ItemExists('GrandAmmo',worldonly:true) && !SWWMUtility.ItemExists('GrandLance',worldonly:true) ) - // return 'GrandAmmo'; //if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) // return 'UltimateAmmo'; if ( (notondemand || SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) @@ -240,7 +231,6 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner } /*if ( Random[Replacements](0,1) ) { - if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('EMPCarbine')) ) return Random[Replacements](0,3)?'EMPCore2':'EMPCore'; if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return Random[Replacements](0,2)?'MisterRound5':'MisterAmmo'; if ( notondemand || SWWMUtility.ItemExists('RayKhom') ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; }*/ @@ -250,7 +240,11 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2'; } if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBullets3':'CandyGunAmmo'; - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('BlackfireIgniter')) ) return 'DarkCanister';*/ + /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) + { + if ( Random[Replacements](0,1) ) return Random[Replacements](0,2)?'SparksterBAmmo2':'SparksterBAmmo3'; + return Random[Replacements](0,2)?'SparksterRAmmo2':'SparksterRAmmo3'; + }*/ return Random[Replacements](0,3)?'SparkUnit':'SparkUnit2'; } } diff --git a/zscript/items/swwm_armor.zsc b/zscript/items/swwm_armor.zsc index 0bffc56ba..38da632f8 100644 --- a/zscript/items/swwm_armor.zsc +++ b/zscript/items/swwm_armor.zsc @@ -7,7 +7,7 @@ Class ArmorNugget : SWWMArmor Inventory.Amount 1; Inventory.MaxAmount 200; Inventory.InterHubAmount 200; - SWWMArmor.ArmorPriority 1; + SWWMArmor.ArmorPriority 3; SWWMArmor.GiverArmor "ArmorNuggetItem"; } @@ -29,7 +29,7 @@ Class ArmorNuggetItem : SWWMSpareArmor override void DoPickupSpecial( Actor toucher ) { Super.DoPickupSpecial(toucher); - SWWMUtility.AchievementProgressInc('swwm_progress_candy',1,toucher.player); + SWWMUtility.AchievementProgressInc("candy",1,toucher.player); } Default @@ -73,7 +73,7 @@ Class BlastSuit : SWWMArmor Inventory.MaxAmount 150; Inventory.InterHubAmount 150; Inventory.RestrictedTo "Demolitionist"; - SWWMArmor.ArmorPriority 2; + SWWMArmor.ArmorPriority 4; SWWMArmor.DrainMessage "$D_BLASTSUIT"; SWWMArmor.GiverArmor "BlastSuitItem"; } @@ -126,7 +126,7 @@ Class WarArmor : SWWMArmor Inventory.MaxAmount 250; Inventory.InterHubAmount 250; Inventory.RestrictedTo "Demolitionist"; - SWWMArmor.ArmorPriority 6; + SWWMArmor.ArmorPriority 5; SWWMArmor.DrainMessage "$D_WARARMOR"; SWWMArmor.GiverArmor "WarArmorItem"; } diff --git a/zscript/items/swwm_basearmor.zsc b/zscript/items/swwm_basearmor.zsc index e1d843187..2150c5d46 100644 --- a/zscript/items/swwm_basearmor.zsc +++ b/zscript/items/swwm_basearmor.zsc @@ -4,11 +4,17 @@ Class SWWMArmor : Armor abstract int priority; String drainmsg; Class parent; + private int SArmorFlags; Property ArmorPriority : priority; Property DrainMessage : drainmsg; Property GiverArmor : parent; + FlagDef NoHitFlash : SArmorFlags, 0; // doesn't flash when taking damage + FlagDef NoHitSound : SArmorFlags, 1; // doesn't play a sound when taking damage + FlagDef NoDrain : SArmorFlags, 2; // amount is not drained, will always reduce as long as amount is non-zero + // useful for powerup-given armors + Default { +INVENTORY.AUTOACTIVATE; @@ -39,22 +45,6 @@ Class SWWMArmor : Armor abstract } } if ( !found ) - { - // is first item plating or a collar? - if ( (other.Inv is 'AlmasteelPlating') || (other.Inv is 'SayaCollar') ) - { - // we're good - return; - } - // find first item with plating or collar after it - for ( Inventory i=other.Inv; i; i=i.Inv ) - { - if ( (i == self) || (!(i.Inv is 'AlmasteelPlating' ) && !(i.Inv is 'SayaCollar')) ) continue; - found = i; - break; - } - } - if ( !found ) { // check if first item in inventory is health or a sandwich if ( (other.Inv is 'SWWMHealth') || (other.Inv is 'GrilledCheeseSandwich') ) @@ -70,15 +60,6 @@ Class SWWMArmor : Armor abstract break; } } - if ( !found ) - { - // find last of either invinciball/ragekit/barrier power - for ( Inventory i=other.Inv; i; i=i.Inv ) - { - if ( !(i is 'InvinciballPower') && !(i is 'RagekitPower') && !(i is 'BarrierPower') ) continue; - found = i; - } - } if ( !found ) return; // place ourselves right after it Inventory saved = found.Inv; @@ -96,12 +77,12 @@ Class SWWMArmor : Armor abstract int saved; if ( (amount <= 0) || DamageTypeDefinition.IgnoreArmor(damageType) || (damage <= 0) ) return; - SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3); - Owner.A_StartSound("armor/hit",CHAN_DAMAGE,CHANF_OVERLAP,clamp(damage*.03,0.,1.),2.5); + if ( !bNOHITFLASH ) SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3); + if ( !bNOHITSOUND ) Owner.A_StartSound("armor/hit",CHAN_DAMAGE,CHANF_OVERLAP,clamp(damage*.03,0.,1.),2.5); saved = HandleDamage(damage,damageType,flags); int healed = max(0,saved-damage); saved = min(saved,damage); - if ( amount <= saved ) saved = amount; + if ( !bNODRAIN && (amount <= saved) ) saved = amount; newdamage -= saved; if ( healed > 0 ) Owner.GiveBody(healed); if ( (swwm_strictuntouchable == 1) && (saved > 0) && Owner.player ) @@ -109,12 +90,9 @@ Class SWWMArmor : Armor abstract let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; } - amount -= saved; + 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); diff --git a/zscript/items/swwm_basehealth.zsc b/zscript/items/swwm_basehealth.zsc index 12e3d94f8..70dbd9128 100644 --- a/zscript/items/swwm_basehealth.zsc +++ b/zscript/items/swwm_basehealth.zsc @@ -39,7 +39,7 @@ Class SWWMHealth : Inventory abstract // find last armor item, plating or collar for ( Inventory i=other.Inv; i; i=i.Inv ) { - if ( !(i is 'SWWMArmor') && !(i is 'AlmasteelPlating') && !(i is 'SayaCollar') ) continue; + if ( !(i is 'SWWMArmor') ) continue; found = i; } } @@ -59,15 +59,6 @@ Class SWWMHealth : Inventory abstract break; } } - if ( !found ) - { - // find last of either invinciball/ragekit/barrier power - for ( Inventory i=other.Inv; i; i=i.Inv ) - { - if ( !(i is 'InvinciballPower') && !(i is 'RagekitPower') && !(i is 'BarrierPower') ) continue; - found = i; - } - } if ( !found ) return; // place ourselves right after it Inventory saved = found.Inv; @@ -109,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)) ) { diff --git a/zscript/items/swwm_collectibles.zsc b/zscript/items/swwm_collectibles.zsc index 57dc57e00..27303b7d1 100644 --- a/zscript/items/swwm_collectibles.zsc +++ b/zscript/items/swwm_collectibles.zsc @@ -7,9 +7,11 @@ Class SWWMCollectible : Inventory abstract int avail; bool propagated; Class gesture; + String getline; Property Availability : avail; Property GestureWeapon : gesture; + Property GetLine : getline; // minimum gametype requirements enum EAvailability @@ -86,7 +88,7 @@ Class SWWMCollectible : Inventory abstract if ( !(i is 'SWWMCollectible') ) continue; cnc++; } - SWWMUtility.AchievementProgress('swwm_progress_allcoll',cnc,other.player); + SWWMUtility.AchievementProgress("allcoll",cnc,other.player); // we're only attaching to the other players if ( propagated ) return; // give credit @@ -123,6 +125,7 @@ Class GenericCube : SWWMCollectible Tag "$T_PERFECTLYGENERIC"; Inventory.PickupMessage "$T_PERFECTLYGENERIC"; SWWMCollectible.GestureWeapon "GenericCubeGesture"; + SWWMCollectible.GetLine "cubeget"; Stamina 1000; } } @@ -133,6 +136,7 @@ Class AkariProject : SWWMCollectible Tag "$T_AKARIPROJECT"; Inventory.PickupMessage "$T_AKARIPROJECT"; SWWMCollectible.GestureWeapon "AkariProjectGesture"; + SWWMCollectible.GetLine "akariget"; Stamina 2000; Radius 4; Height 22; @@ -145,6 +149,7 @@ Class LoveSignalsCD : SWWMCollectible Tag "$T_LOVESIGNALS"; Inventory.PickupMessage "$T_LOVESIGNALS"; SWWMCollectible.GestureWeapon "LoveSignalsCDGesture"; + SWWMCollectible.GetLine "signalsget"; Stamina 3000; Radius 4; Height 21; @@ -157,6 +162,7 @@ Class NutatcoBar : SWWMCollectible Tag "$T_NUTATCO"; Inventory.PickupMessage "$T_NUTATCO"; SWWMCollectible.GestureWeapon "NutatcoBarGesture"; + SWWMCollectible.GetLine "nutatcoget"; Stamina 200; Radius 3; Height 22; @@ -169,6 +175,7 @@ Class FrispyCorn : SWWMCollectible Tag "$T_FRISPYCORN"; Inventory.PickupMessage "$T_FRISPYCORN"; SWWMCollectible.GestureWeapon "FrispyCornGesture"; + SWWMCollectible.GetLine "frispyget"; Stamina 400; Radius 5; Height 23; @@ -183,6 +190,7 @@ Class SayaBean : SWWMCollectible Tag "$T_SAYABEAN"; Inventory.PickupMessage "$T_SAYABEAN"; SWWMCollectible.GestureWeapon "SayaBeanGesture"; + SWWMCollectible.GetLine "sayaget"; Stamina 5000; Radius 6; Height 23; @@ -212,6 +220,7 @@ Class MothPlushy : SWWMCollectible Tag "$T_MOTHPLUSH"; Inventory.PickupMessage "$T_MOTHPLUSH"; SWWMCollectible.GestureWeapon "MothPlushyGesture"; + SWWMCollectible.GetLine "mothget"; Stamina 7000; Radius 12; Height 32; @@ -226,6 +235,7 @@ Class DemoPlush : SWWMCollectible Inventory.PickupMessage "$T_DEMOPLUSH"; SWWMCollectible.Availability AVAIL_Heretic; SWWMCollectible.GestureWeapon "DemoPlushGesture"; + SWWMCollectible.GetLine "demoget"; Stamina 6000; Radius 12; Height 36; @@ -240,6 +250,7 @@ Class KirinCummies : SWWMCollectible Inventory.PickupMessage "$T_PEACH"; SWWMCollectible.Availability AVAIL_Hexen; SWWMCollectible.GestureWeapon "KirinCummiesGesture"; + SWWMCollectible.GetLine "peachget"; Stamina 300; Radius 3; Height 21; @@ -253,6 +264,7 @@ Class MilkBreads : SWWMCollectible Inventory.PickupMessage "$T_MILKBREAD"; SWWMCollectible.Availability AVAIL_Hexen; SWWMCollectible.GestureWeapon "MilkBreadsGesture"; + SWWMCollectible.GetLine "breadget"; Stamina 900; Radius 4; Height 21; @@ -266,6 +278,7 @@ Class KirinManga : SWWMCollectible Inventory.PickupMessage "$T_KIRINMANGA"; SWWMCollectible.Availability AVAIL_Hexen; SWWMCollectible.GestureWeapon "KirinMangaGesture"; + SWWMCollectible.GetLine "mangaget"; Stamina 1600; Radius 4; Height 22; @@ -279,6 +292,7 @@ Class KirinPlush : SWWMCollectible Inventory.PickupMessage "$T_KIRINPLUSH"; SWWMCollectible.Availability AVAIL_Hexen; SWWMCollectible.GestureWeapon "KirinPlushGesture"; + SWWMCollectible.GetLine "kiringet"; Stamina 8000; Radius 14; Height 37; diff --git a/zscript/items/swwm_collectibles_gesture.zsc b/zscript/items/swwm_collectibles_gesture.zsc index abea64311..fd2ba4165 100644 --- a/zscript/items/swwm_collectibles_gesture.zsc +++ b/zscript/items/swwm_collectibles_gesture.zsc @@ -106,7 +106,7 @@ Class SayaBeanGesture : SWWMItemGesture let s = Demolitionist(self).mystats; if ( !s ) return; s.plushuses++; - SWWMUtility.AchievementProgress('swwm_progress_plush',s.plushuses,player); + SWWMUtility.AchievementProgress("plush",s.plushuses,player); } override void MarkPrecacheSounds() { @@ -250,7 +250,7 @@ Class KirinPlushGesture : SWWMItemGesture let s = Demolitionist(self).mystats; if ( !s ) return; s.plushuses++; - SWWMUtility.AchievementProgress('swwm_progress_plush',s.plushuses,player); + SWWMUtility.AchievementProgress("plush",s.plushuses,player); } action void A_PetPlush() { @@ -269,44 +269,17 @@ Class KirinPlushGesture : SWWMItemGesture s.angle = FRandom[ExploS](0,360); s.pitch = FRandom[ExploS](-90,90); } - if ( GiveBody(10,100) ) + int givehp = (Health<=25)?25:(Health<=50)?15:(Health<=100)?10:5; + if ( GiveBody(givehp,200) ) { - SWWMScoreObj.Spawn(10,Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Height/2),ST_Health); + SWWMScoreObj.Spawn(givehp,Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Height/2),ST_Health); SWWMHandler.DoFlash(self,Color(32,224,128,255),10); } } - action void A_Giggle( bool high = false ) - { - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/%s",Demolitionist(self).myvoice.GetString(),high?"gigglehigh":"gigglelow"),CHAN_DEMOVOICE,CHANF_OVERLAP); - } action void A_KirinGiggle() { A_StartSound("kirin/giggle",CHAN_ITEMEXTRA,CHANF_OVERLAP); } - action void A_HugPlush( bool sigh = false ) - { - if ( sigh ) - { - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/hug",Demolitionist(self).myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - SWWMHandler.DoFlash(self,Color(64,255,128,128),10); - SWWMHandler.DoFlash(self,Color(32,255,128,128),80); - int numpt = Random[ExploS](6,9); - for ( int i=0; i 0) && ((s.GetTexture(0) == skyflatnum) || (s.damageamount > 0)) ) continue; - BlockThingsIterator bt = BlockThingsIterator.CreateFromPos(testpos.x,testpos.y,testpos.z,56,256,false); + BlockThingsIterator bt = BlockThingsIterator.CreateFromPos(testpos.x,testpos.y,testpos.z,60,256,false); while ( bt.Next() ) { if ( !bt.Thing ) continue; @@ -954,7 +954,19 @@ Class Chancebox : Actor if ( (candidates.Size() <= 0) || invoker.dud ) { // no candidates? just burst into treats - if ( Random[Chancebox](0,1) ) + if ( (scale.x > .5) && (Random[Chancebox](0,int(9*scale.x*scale.x)) < 3) ) + { + // spawn another smaller chancebox + // (chance increases for the inner box, up until a scale factor of 50% is reached) + let a = Spawn("Chancebox",pos+(0,0,3*scale.y)); + a.bDROPPED = false; + a.bNOGRAVITY = false; + a.vel.z = FRandom[Chancebox](2,4); + a.angle = angle; + a.scale *= scale.x-.125; + if ( target && (a.scale.x <= .5) ) SWWMUtility.MarkAchievement("matryoshka",target.player); + } + else if ( Random[Chancebox](0,1) ) { Class vipammodrop = null; if ( SWWMUtility.ItemExists("Ynykron") && Random[Chancebox](0,1) ) vipammodrop = "YnykronAmmo"; @@ -1109,14 +1121,14 @@ Class Chancebox : Actor } action void A_Confetti() { - A_StartSound("misc/tada",CHAN_ITEM); + A_StartSound("misc/tada",CHAN_ITEM,pitch:1./scale.x); double ang, pt; int numpt = Random[ExploS](100,120); for ( int i=0; i40,"BlowUp"); + return A_JumpIf(special1>int(40*scale.x),"BlowUp"); } Wait; BlowUp: XZW2 A 1 { - A_SetSize(12,3); + A_SetSize(default.radius*scale.x,2.5*scale.y); A_QuakeEx(2,2,2,9,0,500,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollIntensity:.2); - A_StartSound("chancebox/explode",CHAN_VOICE); + A_StartSound("chancebox/explode",CHAN_VOICE,pitch:1./scale.x); angle = specialf1; pitch = roll = 0; - let t = Spawn("ChanceboxTop",Vec3Offset(0,0,20)); + let t = Spawn("ChanceboxTop",Vec3Offset(0,0,20*scale.y)); t.angle = angle; - let s1 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12,0),angle+90),0))); + t.scale = scale; + let s1 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle+90),0))); s1.angle = angle+90; - let s2 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12,0),angle-90),0))); + s1.scale = scale; + let s2 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle-90),0))); s2.angle = angle-90; + s2.scale = scale; A_DropSomething(); } XZW2 BCDEFGHIJKLMNO 1; @@ -1312,6 +1330,7 @@ Class ChanceboxTop : Actor { Super.PostBeginPlay(); vel = (0,0,20); + A_SetSize(default.radius*scale.x,default.height*scale.y); } States { @@ -1347,6 +1366,7 @@ Class ChanceboxSide : Actor { Super.PostBeginPlay(); vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*20; + A_SetSize(default.radius*scale.x,default.height*scale.y); } States { diff --git a/zscript/items/swwm_health.zsc b/zscript/items/swwm_health.zsc index 60d01dcb4..30940f31f 100644 --- a/zscript/items/swwm_health.zsc +++ b/zscript/items/swwm_health.zsc @@ -74,7 +74,7 @@ Class HealthNuggetItem : SWWMHealth override void DoPickupSpecial( Actor toucher ) { Super.DoPickupSpecial(toucher); - SWWMUtility.AchievementProgressInc('swwm_progress_candy',1,toucher.player); + SWWMUtility.AchievementProgressInc("candy",1,toucher.player); } Default { @@ -179,7 +179,7 @@ Class RefresherItem : SWWMHealth } override void AutoUseExtra( bool recursive ) { - SWWMUtility.AchievementProgressInc('swwm_progress_refresh',1,Owner.player); + SWWMUtility.AchievementProgressInc("refresh",1,Owner.player); // regen effect doesn't stack if we autoactivated recursively if ( recursive ) return; let p = Powerup(Owner.FindInventory("RefresherRegen")); diff --git a/zscript/items/swwm_keys.zsc b/zscript/items/swwm_keys.zsc index 651a10f79..69bb086d3 100644 --- a/zscript/items/swwm_keys.zsc +++ b/zscript/items/swwm_keys.zsc @@ -10,49 +10,30 @@ Class SWWMKey : Key abstract Property GestureWeapon : gesture; - override void DoEffect() + override bool TryPickup( in out Actor toucher ) { - Super.DoEffect(); - if ( Icon.IsNull() ) - { - // fetch icon from parent (if it exists) - Class pc = Species; - if ( !pc ) return; - let p = GetDefaultByType(pc); - Icon = p.Icon; - } - } - - override void AttachToOwner( Actor other ) - { - Super.AttachToOwner(other); - // also attach the vanilla key that we replace, mainly for script compatibility + // attach the vanilla key that we replace + let rt = toucher; + if ( toucher.player ) rt = toucher.player.mo; Class pc = Species; - if ( pc ) + if ( pc && !rt.FindInventory(pc) ) { + if ( rt.player && !deathmatch && !propagated && CVar.GetCVar('swwm_collectanimkey',rt.player).GetBool() ) + SWWMGesture.SetSpecialGesture(rt.player.mo,gesture); let p = Inventory(Spawn(pc)); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).key_reentrant = true; // avoid infinite loop - p.AttachToOwner(Owner); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).key_reentrant = false; + SWWMHandler.KeyTagFix(p); + p.AttachToOwner(rt); } - } - - override bool Use( bool pickup ) - { - if ( Owner.player && !propagated && !deathmatch && (!pickup || CVar.GetCVar('swwm_collectanimkey',Owner.player).GetBool()) ) - SWWMGesture.SetSpecialGesture(Owner.player.mo,gesture); // clean up the flag propagated = false; - return false; + GoAwayAndDie(); + return true; } Default { +NOTDMATCH; +FLOATBOB; - +INVENTORY.AUTOACTIVATE; FloatBobStrength 0.25; } } diff --git a/zscript/items/swwm_powerups.zsc b/zscript/items/swwm_powerups.zsc index 152ad99c4..f3792503a 100644 --- a/zscript/items/swwm_powerups.zsc +++ b/zscript/items/swwm_powerups.zsc @@ -38,7 +38,7 @@ Class GrilledCheeseSandwich : Inventory } void DoTheThing( bool extrasafe = false ) { - SWWMUtility.AchievementProgressInc('swwm_progress_gcsandwich',1,Owner.player); + SWWMUtility.AchievementProgressInc("gcsandwich",1,Owner.player); SWWMHandler.DoFlash(Owner,Color(64,255,255,64),10); Owner.A_QuakeEx(9,9,9,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); Owner.GiveBody(1000,1000); @@ -183,11 +183,11 @@ Class GrilledCheeseSandwich : Inventory override void AttachToOwner( Actor other ) { Super.AttachToOwner(other); - // find last armor/health item or invuln/ragekit/barrier or the collar + // find last armor/health item Inventory found = null; for ( Inventory i=other.Inv; i; i=i.Inv ) { - if ( !(i is 'SWWMHealth') && !(i is 'SWWMArmor') && !(i is 'InvinciballPower') && !(i is 'RagekitPower') && !(i is 'BarrierPower') && !(i is 'AlmasteelPlating') && !(i is 'SayaCollar') ) continue; + if ( !(i is 'SWWMHealth') && !(i is 'SWWMArmor') ) continue; found = i; } if ( !found ) return; @@ -204,7 +204,7 @@ Class GrilledCheeseSandwich : Inventory override void PostTeleport( Vector3 destpos, double destangle, int flags ) { if ( !lastdropper ) return; - SWWMUtility.MarkAchievement('swwm_achievement_tele',lastdropper.player); + SWWMUtility.MarkAchievement("tele",lastdropper.player); } Default @@ -504,7 +504,7 @@ Class GhostArtifact : Inventory Demolitionist(Owner).lastbump *= 1.04; } else Owner.GiveInventory("GhostPower",1); - SWWMUtility.AchievementProgressInc('swwm_progress_ghost',1,Owner.player); + SWWMUtility.AchievementProgressInc("ghost",1,Owner.player); return true; } @@ -659,7 +659,7 @@ Class GravitySuppressor : Inventory Demolitionist(Owner).lastbump *= 1.04; } else Owner.GiveInventory("GravityPower",1); - SWWMUtility.AchievementProgressInc('swwm_progress_gravity',1,Owner.player); + SWWMUtility.AchievementProgressInc("gravity",1,Owner.player); return true; } override void PreTravelled() @@ -778,11 +778,35 @@ Class InvinciSnd : Actor } } +Class InvinciballArmor : SWWMArmor +{ + Default + { + +SWWMARMOR.NOHITSOUND; + +SWWMARMOR.NOHITFLASH; + +SWWMARMOR.NODRAIN; + SWWMArmor.ArmorPriority 9; + } + override int HandleDamage( int damage, Name damageType, int flags ) + { + if ( damageType == 'EndLevel' ) return 0; + if ( master ) InvinciballPower(master).DoHitFX(); + return damage; + } + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner.FindInventory('InvinciballPower') ) + Destroy(); + } +} + Class InvinciballPower : Powerup { Mixin SWWMShadedPowerup; Actor l, snd; + Inventory am; int lasteffect; transient int lastpulse; @@ -815,6 +839,14 @@ Class InvinciballPower : Powerup if ( !snd ) snd = Spawn("InvinciSnd",Owner.pos); snd.target = Owner; snd.master = self; + if ( am ) return; + am = Owner.FindInventory("InvinciballArmor"); + if ( !am ) + { + am = Inventory(Spawn("InvinciballArmor")); + am.AttachToOwner(Owner); + } + am.master = self; } override void EndEffect() @@ -828,47 +860,16 @@ Class InvinciballPower : Powerup if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_INVINCIBALL")); } - override void AttachToOwner( Actor other ) + void DoHitFX() { - Super.AttachToOwner(other); - // find first with health/armor, plating/collar, sandwich after it - Inventory found = null; - for ( Inventory i=other.Inv; i; i=i.Inv ) + if ( level.maptime > lasteffect+5 ) { - if ( !(i.Inv is 'SWWMHealth') && !(i.Inv is 'SWWMArmor') && !(i.Inv is 'GrilledCheeseSandwich') && !(i.Inv is 'AlmasteelPlating') && !(i.Inv is 'SayaCollar') ) continue; - found = i; - break; - } - if ( !found ) - { - // we're good - return; - } - // place ourselves right after it - Inventory saved = found.Inv; - found.Inv = self; - other.Inv = Inv; - Inv = saved; - } - - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) - { - if ( Owner.ApplyDamageFactor(damageType,damage) <= 0 ) - return; // this damage type is ignored, so don't flash - if ( damageType == 'EndLevel' ) - return; // don't trigger on endlevel damage - if ( damage > 0 ) - { - newdamage = 0; - if ( level.maptime > lasteffect+5 ) - { - SWWMHandler.DoFlash(Owner,Color(64,255,64,0),15); - Owner.A_StartSound("powerup/invinciballhit",CHAN_POWERUP,CHANF_OVERLAP); - lasteffect = level.maptime; - lastpulse = max(lastpulse,gametic+20); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= 1.05; - } + SWWMHandler.DoFlash(Owner,Color(64,255,64,0),15); + Owner.A_StartSound("powerup/invinciballhit",CHAN_POWERUP,CHANF_OVERLAP); + lasteffect = level.maptime; + lastpulse = max(lastpulse,gametic+20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.05; } } } @@ -910,7 +911,7 @@ Class FuckingInvinciball : Inventory Demolitionist(Owner).lastbump *= 1.1; } else Owner.GiveInventory("InvinciballPower",1); - SWWMUtility.AchievementProgressInc('swwm_progress_sunny',1,Owner.player); + SWWMUtility.AchievementProgressInc("sunny",1,Owner.player); return true; } override void PreTravelled() @@ -1030,11 +1031,34 @@ Class RageSnd : Actor } } +Class RagekitArmor : SWWMArmor +{ + Default + { + +SWWMARMOR.NOHITSOUND; + +SWWMARMOR.NOHITFLASH; + +SWWMARMOR.NODRAIN; + SWWMArmor.ArmorPriority 8; + } + override int HandleDamage( int damage, Name damageType, int flags ) + { + if ( damageType != 'EndLevel' ) return 0; + return int(damage*.75); + } + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner.FindInventory('RagekitPower') ) + Destroy(); + } +} + Class RagekitPower : Powerup { Mixin SWWMShadedPowerup; Actor l, snd; + Inventory am; int lasteffect; transient int lastpulse, lastrage; @@ -1088,11 +1112,18 @@ Class RagekitPower : Powerup SWWMScoreObj.Spawn(1,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); Owner.A_AlertMonsters(swwm_uncapalert?0:2000); if ( (Owner.player == players[consoleplayer]) && (gametic > lastrage) && (swwm_mutevoice < 2) ) - lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40; + lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+20; Owner.A_QuakeEx(2,2,2,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); lastpulse = max(lastpulse,gametic+10); Demolitionist(Owner).lastbump *= .995; } + if ( am ) return; + am = Owner.FindInventory("RagekitArmor"); + if ( !am ) + { + am = Inventory(Spawn("RagekitArmor")); + am.AttachToOwner(Owner); + } } override void EndEffect() @@ -1107,29 +1138,6 @@ Class RagekitPower : Powerup if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_RAGEKIT")); } - override void AttachToOwner( Actor other ) - { - Super.AttachToOwner(other); - // find first with health/armor, plating/collar, sandwich or barrier after it - Inventory found = null; - for ( Inventory i=other.Inv; i; i=i.Inv ) - { - if ( !(i.Inv is 'SWWMHealth') && !(i.Inv is 'SWWMArmor') && !(i.Inv is 'GrilledCheeseSandwich') && !(i.Inv is 'AlmasteelPlating') && !(i.Inv is 'SayaCollar') && !(i.Inv is 'BarrierPower') ) continue; - found = i; - break; - } - if ( !found ) - { - // we're good - return; - } - // place ourselves right after it - Inventory saved = found.Inv; - found.Inv = self; - other.Inv = Inv; - Inv = saved; - } - void DoHitFX() { if ( level.maptime <= lasteffect+5 ) return; @@ -1146,13 +1154,6 @@ Class RagekitPower : Powerup Demolitionist(Owner).lastbump *= .9; } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) - { - if ( damageType == 'EndLevel' ) - return; // don't trigger on endlevel damage - if ( damage > 0 ) newdamage = damage/4; - } - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) { if ( passive ) return; @@ -1186,7 +1187,7 @@ Class Ragekit : Inventory if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); if ( Owner.GiveBody(100,100) ) SWWMScoreObj.Spawn(100,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); - SWWMUtility.AchievementProgressInc('swwm_progress_rage',1,Owner.player); + SWWMUtility.AchievementProgressInc("rage",1,Owner.player); if ( !(Owner is 'Demolitionist') ) { SWWMHandler.DoFlash(Owner,Color(64,255,0,0),30); @@ -1265,64 +1266,42 @@ Class Omnisight : Inventory Mixin SWWMUseToPickup; Mixin SWWMRespawn; - override bool Use( bool pickup ) + override bool TryPickup( in out Actor toucher ) { if ( !level.allmap ) { - if ( Owner.player == players[consoleplayer] ) + Actor rt = toucher; + if ( toucher.player ) rt = toucher.player.mo; + if ( rt.player == players[consoleplayer] ) { - Owner.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP); + rt.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP); // automatically zoom out so the player can know how far this goes CVar.FindCVar('swwm_mm_zoom').SetFloat(2.); } - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= 1.1; + if ( rt is 'Demolitionist' ) + Demolitionist(rt).lastbump *= 1.1; level.allmap = true; - } - // activate all interest markers - let ti = ThinkerIterator.Create("SWWMInterestMarker",STAT_MAPMARKER); - Actor a; - while ( a = Actor(ti.Next()) ) a.bDORMANT = false; - // spread to all players - for ( int i=0; i 1.) ) - CVar.FindCVar('swwm_mm_zoom').SetFloat(1.); - Super.DetachFromOwner(); - } - override bool HandlePickup( Inventory item ) - { - if ( item.GetClass() == GetClass() ) - { - item.bPickupGood = true; - return true; - } - return false; - } - override bool ShouldSpawn() - { - if ( deathmatch ) return false; - return Super.ShouldSpawn(); + GoAwayAndDie(); + return true; } Default { @@ -1334,17 +1313,13 @@ Class Omnisight : Inventory Inventory.Icon "graphics/HUD/Icons/I_Omnisight.png"; Inventory.PickupSound "misc/p_pkup"; Inventory.PickupMessage "$I_OMNISIGHT"; - Inventory.MaxAmount 1; - Inventory.InterHubAmount 0; Inventory.RestrictedTo "Demolitionist"; Inventory.PickupFlash "SWWMPurplePickupFlash"; +INVENTORY.ALWAYSPICKUP; - +INVENTORY.AUTOACTIVATE; +COUNTITEM; +INVENTORY.BIGPOWERUP; - +INVENTORY.UNDROPPABLE; - +INVENTORY.UNTOSSABLE; +FLOATBOB; + +NOTDMATCH; FloatBobStrength 0.25; Radius 6; Height 26; @@ -1721,7 +1696,7 @@ Class CompanionLamp : Actor m.lamp = self; m.trail = m.pos; moff.Push(m); - SWWMUtility.AchievementProgressInc('swwm_progress_moth',1,parent.player); + SWWMUtility.AchievementProgressInc("moth",1,parent.player); } override void PostBeginPlay() { @@ -2101,11 +2076,35 @@ Class BarrierSnd : Actor } } +Class BarrierArmor : SWWMArmor +{ + Default + { + +SWWMARMOR.NOHITSOUND; + +SWWMARMOR.NOHITFLASH; + +SWWMARMOR.NODRAIN; + SWWMArmor.ArmorPriority 10; + } + override int HandleDamage( int damage, Name damageType, int flags ) + { + if ( (damageType == 'Fire') || (damageType == 'Ice') || (damageType == 'Slime') || (damageType == 'Electric') || (damageType == 'Plasma') || (damageType == 'Radiation') || (damageType == 'Wind') || (damageType == 'Water') || (damageType == 'Corroded') || (damageType == 'Lava') ) + return damage; + return 0; + } + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner.FindInventory('BarrierPower') ) + Destroy(); + } +} + Class BarrierPower : PowerIronFeet { Mixin SWWMShadedPowerup; Actor snd, l; + Inventory am; Default { @@ -2116,36 +2115,6 @@ Class BarrierPower : PowerIronFeet +INVENTORY.ADDITIVETIME; } - override void AttachToOwner( Actor other ) - { - Super.AttachToOwner(other); - // find first item with armor/health, plating/collar, sandwich, invincibility after it - Inventory found = null; - for ( Inventory i=other.Inv; i; i=i.Inv ) - { - if ( !(i.Inv is 'SWWMHealth') && !(i.Inv is 'SWWMArmor') && !(i.Inv is 'GrilledCheeseSandwich') && !(i.Inv is 'AlmasteelPlating') && !(i.Inv is 'SayaCollar') && !(i.Inv is 'InvinciballPower') ) continue; - found = i; - break; - } - if ( !found ) - { - // we're good - return; - } - // place ourselves right after it - Inventory saved = found.Inv; - found.Inv = self; - other.Inv = Inv; - Inv = saved; - } - - override void AbsorbDamage( int damage, Name damageType, out int newdamage ) - { - // negate elemental damage - if ( (damageType == 'Fire') || (damageType == 'Ice') || (damageType == 'Slime') || (damageType == 'Electric') || (damageType == 'Plasma') || (damageType == 'Radiation') || (damageType == 'Wind') || (damageType == 'Water') || (damageType == 'Corroded') || (damageType == 'Lava') ) - newdamage = 0; - } - override void InitEffect() { Super.InitEffect(); @@ -2174,6 +2143,15 @@ Class BarrierPower : PowerIronFeet if ( !snd ) snd = Spawn("BarrierSnd",Owner.pos); snd.target = Owner; snd.master = self; + if ( !am ) + { + am = Owner.FindInventory("BarrierArmor"); + if ( !am ) + { + am = Inventory(Spawn("BarrierArmor")); + am.AttachToOwner(Owner); + } + } // break ourselves if we're in an endlevel sector bool endlv = false; for ( int i=0; i tabs; - int curtab, oldtab; - // for scrolling - bool sub; - int sel0, sel1, sel2; - int ofs0, ofs1, ofs2; // usually equal to above, except when using mouse input - int drag; // when dragging with the mouse, which scroller to affect (1 = ofs0 and so on) - // mission - String missionstr; - Array missionbacklog; - // stats - SWWMStats stats; - Array statlist; - Array sorted_mstats; // sorted by killcount - Array filtered_lstats; // filtered if necessary + entry for current map - LevelStat curlstat; - Array achievements; // array created once, then sorted as needed - // inventory lists - Array invlist; - // lore stuff - SWWMLoreLibrary lorelib; - Array lorelist; - int oldloresiz; - // store stuff - Array > storelist; - Array storeunits; - // trading - SWWMTradeHistory tradelib; - Array playerlist; - // chat history instance - SWWMFullHistory fullhistory; - // chat history total line count (includes breaks) - int chatlines; + TextureID FancyBg, FrameTex, VSepTex, HSepTex; + // for resolution scaling and such + double hs; + Vector2 ss, ws, origin; // temporary bottom messages, such as "not enough money" String tmsg; int tmsgtic; + // money owned, for store + int muns1, muns2; + // other text + String clockstr, munstr; // menu keybind int ikey[2]; String mkey[2]; @@ -84,6 +52,7 @@ Class DemolitionistMenu : GenericMenu Array checklist; int lasttuid; SWWMHandler hnd; + SWWMStaticHandler shnd; // seeeeecret int kcode; // crimey clock stuff @@ -94,347 +63,157 @@ Class DemolitionistMenu : GenericMenu bool isrclick; // somehow Drawer can be called while closing prematurely, which is big bollocks bool isclosing; - // to save on calls - bool nrftl, eviternity, hexdd; - - // returns MPlus if we're playing in Japanese, otherwise returns the requested font - Font LangFont( Font req ) - { - if ( language ~== "jp" ) return (req==MiniwiFont)?k6x8Font:MPlusFont; - return req; - } + // the tabs + Array tabs; + int curtab; + int oldtab; // used for returning from help tab int GenTUID() { return lasttuid++; } + // tab functions + int FindTabType( Class t, bool nothidden = false ) + { + for ( int i=0; i=0; i-- ) + { + if ( tabs[i].bHidden ) continue; + return i; + } + return -1; + } + int GetNextTab() + { + int lst = GetLastTab(); + if ( lst == -1 ) return -1; + if ( curtab >= lst ) return GetFirstTab(); + for ( int i=curtab+1; i=0; i-- ) + { + if ( tabs[i].bHidden ) continue; + return i; + } + return -1; + } + + private void DoClose( bool PlaySound = false ) + { + isclosing = true; + if ( PlaySound ) MenuSound("menu/democlose"); + EventHandler.SendNetworkEvent("swwmclearalltransactions",consoleplayer); + for ( int i=0; i deftabs[] = { - int clus = level.cluster; - if ( clus == 11 ) nrftl = true; - eviternity = SWWMUtility.IsEviternity(); - if ( eviternity ) - { - // we have to do some heavy lifting here because episodes don't match clusters - if ( level.levelnum <= 5 ) clus = 1; - else if ( level.levelnum <= 10 ) clus = 2; - else if ( level.levelnum <= 15 ) clus = 3; - else if ( level.levelnum <= 20 ) clus = 4; - else if ( level.levelnum <= 25 ) clus = 5; - else if ( level.levelnum <= 30 ) clus = 6; - else if ( level.levelnum <= 31 ) clus = 7; - else if ( level.levelnum <= 32 ) clus = 8; - missionstr = String.Format("$SWWM_MISSION_EVITERNITY%d",clus); - } - // naive method to guess if this is sigil - else if ( (clus == 5) && (level.mapname.Left(2) == "E5") ) - missionstr = String.Format("$SWWM_MISSION_SIGIL"); - else missionstr = String.Format("$SWWM_MISSION_DOOM%d",clus); - int csiz = stats.clustervisit.Size(); - if ( (csiz > 0) && stats.secretdone[csiz-1] ) - { - String tmpstr = missionstr.."_SECRET"; - if ( !(StringTable.Localize(tmpstr) ~== tmpstr.Mid(1)) ) - missionstr = tmpstr; - } - // if we came from the doom 1 episodes, use the alt mission string for Doom 2 - bool fromdoomone = false; - for ( int i=0; i= 5) && (stats.clustervisit[i] != 25) ) continue; - fromdoomone = true; - break; - } - if ( !eviternity && (clus == 5) && fromdoomone ) - missionstr = "$SWWM_MISSION_DOOM5_FROMDOOM1"; - if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) - missionstr = "$SWWM_MISSION_NONE"; - bool firstskip = false; - for ( int i=csiz-1; i>=0; i-- ) - { - if ( (stats.clustervisit[i] == clus) && !firstskip ) - continue; - firstskip = true; - String xstr = String.Format(eviternity?"$SWWM_MISSION_EVITERNITY%d":"$SWWM_MISSION_DOOM%d",stats.clustervisit[i]); - if ( !eviternity && (stats.clustervisit[i] == 5) && fromdoomone ) - xstr = "$SWWM_MISSION_DOOM5_FROMDOOM1"; - if ( stats.secretdone[i] ) - { - String tmpstr = xstr.."_SECRET"; - if ( !(StringTable.Localize(tmpstr) ~== tmpstr.Mid(1)) ) - xstr = tmpstr; - } - if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) - continue; - missionbacklog.Push(xstr); - } - } - else if ( (gameinfo.gametype&GAME_Heretic) && SWWMUtility.IsKnownMap() ) + 'DemolitionistMissionTab', + 'DemolitionistStatsTab', + 'DemolitionistInventoryTab', + 'DemolitionistKeychainTab', + 'DemolitionistLibraryTab', + 'DemolitionistStoreTab', + 'DemolitionistChatTab', + 'DemolitionistHelpTab', + 'DemolitionistSecretTab' + }; + for ( int i=0; i=0; i-- ) - { - if ( (stats.clustervisit[i] == level.cluster) && !firstskip ) - continue; - firstskip = true; - String xstr = String.Format("$SWWM_MISSION_HERETIC%d",stats.clustervisit[i]); - if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) - continue; - missionbacklog.Push(xstr); - } + let ct = (Class)(AllClasses[i]); + if ( !ct || (ct.GetParentClass() != 'DemolitionistMenuTabCustom') ) continue; + tabs.Push(DemolitionistMenuTab(new(ct)).Init(self)); } - else if ( (gameinfo.gametype&GAME_Hexen) && SWWMUtility.IsKnownMap() ) + for ( int i=deftabs.Size()-2; i=0; i-- ) - { - if ( (stats.clustervisit[i] == level.cluster) && !firstskip ) - continue; - firstskip = true; - String xstr = String.Format("$SWWM_MISSION_%s%d",gstr,stats.clustervisit[i]); - if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) - continue; - missionbacklog.Push(xstr); - } + Class saved = shnd.menustate.At("LastTab"); + if ( saved ) curtab = FindTabType(saved,true); } - else missionstr = "$SWWM_MISSION_NONE"; - if ( gameinfo.gametype&GAME_Heretic ) + else { - // April 10th 2171, 17:34 JST - // Epoch: 6351554040 - c_year = 2171; - c_month = 3; - c_day = 9; - c_hour = 17; - c_minute = 34; - c_tz = "JST"; + shnd.menustate = Dictionary.Create(); + curtab = -1; } - else if ( gameinfo.gametype&GAME_Hexen ) - { - // May 25th 2171, 16:41 JST - // Epoch: 6355438860 - c_year = 2171; - c_month = 4; - c_day = 24; - c_hour = 16; - c_minute = 41; - c_tz = "JST"; - if ( hexdd ) - { - // deathkings happen the day after - c_day = 25; - c_hour = 10; - c_minute = 28; - } - } - else if ( eviternity ) - { - // June 10th 2150, 20:09 +09 - // (June 10th 2150, 20:09 JST) - // Epoch: 5694145740 - c_year = 2150; - c_month = 5; - c_day = 9; - c_hour = 20; - c_minute = 9; - c_tz = "+09"; - } - else // Doom - { - // June 6th 2148, 18:37 EDT - // (June 7th 2148, 07:37 JST) - // Epoch: 5630769420 - c_year = 2148; - c_month = 5; - c_day = 5; - c_hour = 18; - c_minute = 37; - c_tz = "EDT"; - if ( nrftl ) - { - // NRFTL just happens the next day after - c_day = 6; - c_hour = 15; - c_minute = 48; - } - } - if ( (missionstr != "$SWWM_MISSION_NONE") || (missionbacklog.Size() > 0) ) - tabs.Push(TAB_MISSION); - tabs.Push(TAB_STATS); - tabs.Push(TAB_INVENTORY); - if ( !deathmatch ) - { - tabs.Push(TAB_KEYS); - tabs.Push(TAB_LIBRARY); - } - if ( !deathmatch && (G_SkillPropertyInt(SKILLP_ACSReturn) < 4) ) tabs.Push(TAB_STORE); - for ( int i=0; i 0 ) - { - leap_year = (!(y%4) && ((y%100) || !(y%400))); - if ( addtime >= 86400 ) - { - addtime -= 86400; - d++; - int md = days_in_month[m]; - if ( leap_year && (m == 1) ) md++; - if ( d >= md ) - { - d = 0; - m++; - if ( m > 11 ) - { - m = 0; - y++; - } - } - } - else if ( addtime >= 3600 ) - { - addtime -= 3600; - h++; - if ( h > 23 ) - { - h = 0; - d++; - int md = days_in_month[m]; - if ( leap_year && (m == 1) ) md++; - if ( d >= md ) - { - d = 0; - m++; - if ( m > 11 ) - { - m = 0; - y++; - } - } - } - } - else if ( addtime >= 60 ) - { - addtime -= 60; - mn++; - if ( mn > 59 ) - { - mn = 0; - h++; - if ( h > 23 ) - { - h = 0; - d++; - int md = days_in_month[m]; - if ( leap_year && (m == 1) ) md++; - if ( d >= md ) - { - d = 0; - m++; - if ( m > 11 ) - { - m = 0; - y++; - } - } - } - } - } - else - { - // we finished counting - addtime = 0; - } - } - return String.Format("%04d-%02d-%02d %02d:%02d %s",y,m+1,d+1,h,mn,c_tz); + if ( curtab == -1 ) curtab = GetFirstTab(); + tabs[curtab].OnSelect(); } override bool MenuEvent( int mkey, bool fromcontroller ) { - Font fnt = LangFont(TewiFont); switch ( kcode ) { case 0: @@ -460,1868 +239,74 @@ Class DemolitionistMenu : GenericMenu case 10: if ( mkey == MKEY_ENTER ) { - MenuSound("misc/secret"); - if ( tabs[curtab] >= TAB_SECRET ) tabs.Delete(curtab); - tabs.Push(TAB_SECRET); - curtab = tabs.Size()-1; - sel0 = sel1 = sel2 = 0; - ofs0 = ofs1 = ofs2 = 0; - sub = false; + int secret = FindTabType('DemolitionistSecretTab'); + if ( curtab != secret ) + { + MenuSound("misc/secret"); + tabs[curtab].OnDeselect(); + curtab = secret; + tabs[curtab].OnSelect(); + } + } default: kcode = 0; break; } - int maxtab = multiplayer?TAB_CHAT:TAB_STORE; switch ( mkey ) { case MKEY_BACK: - MenuSound("menu/democlose"); - EventHandler.SendNetworkEvent("swwmclearalltransactions",consoleplayer); - Close(); - return true; - case MKEY_PAGEUP: - MenuSound("menu/demotab"); - if ( tabs[curtab] >= TAB_SECRET ) tabs.Delete(curtab); // hide this tab - if ( curtab <= 0 ) curtab = (tabs.Size()-1); - else curtab--; - CVar.FindCVar('swwm_lasttab').SetInt(tabs[curtab]); - sel0 = sel1 = sel2 = 0; - ofs0 = ofs1 = ofs2 = 0; - sub = false; - invlist.Clear(); - lorelist.Clear(); - storelist.Clear(); - storeunits.Clear(); - playerlist.Clear(); + DoClose(true); return true; case MKEY_PAGEDOWN: - MenuSound("menu/demotab"); - if ( tabs[curtab] >= TAB_SECRET ) tabs.Delete(curtab); // hide this tab - if ( curtab < (tabs.Size()-1) ) curtab++; - else curtab = 0; - CVar.FindCVar('swwm_lasttab').SetInt(tabs[curtab]); - sel0 = sel1 = sel2 = 0; - ofs0 = ofs1 = ofs2 = 0; - sub = false; - invlist.Clear(); - lorelist.Clear(); - storelist.Clear(); - storeunits.Clear(); - playerlist.Clear(); + int next = GetNextTab(); + if ( next != curtab ) + { + MenuSound("menu/demotab"); + tabs[curtab].OnDeselect(); + curtab = next; + tabs[curtab].OnSelect(); + } + return true; + case MKEY_PAGEUP: + int prev = GetPrevTab(); + if ( prev != curtab ) + { + MenuSound("menu/demotab"); + tabs[curtab].OnDeselect(); + curtab = prev; + tabs[curtab].OnSelect(); + } return true; case MKEY_DOWN: - if ( tabs[curtab] == TAB_HELP ) - { - String kstr; - if ( self.mkey[1] != "" ) kstr = self.mkey[0].."/"..self.mkey[1]; - else kstr = self.mkey[0]; - String str = String.Format(StringTable.Localize("$SWWM_HELPTXT"),kstr); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - if ( (l.Count() > 28) && (sel0 < l.Count()-28) ) - { - MenuSound("menu/demoscroll"); - sel0++; - } - l.Destroy(); - } - else if ( tabs[curtab] == TAB_MISSION ) - { - String str; - if ( sel1 == 0 ) str = StringTable.Localize(missionstr); - else str = StringTable.Localize(missionbacklog[sel1-1]); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - if ( (l.Count() > 28) && (sel0 < l.Count()-28) ) - { - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - } - l.Destroy(); - } - else if ( (tabs[curtab] == TAB_CHAT) && (StatusBar is 'SWWMStatusBar') && (sel0 > 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - } - else if ( (tabs[curtab] == TAB_LIBRARY) && (lorelist.Size() > 1) ) - { - if ( sub ) - { - String str = StringTable.Localize(lorelist[sel0].text); - int ofs = (language~=="jp")?212:132; - if ( lorelist.Size() > 26 ) ofs += 8; - BrokenLines l = fnt.BreakLines(str,635-ofs); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,626-ofs); - } - if ( (l.Count() > 28) && (sel2 < l.Count()-28) ) - { - MenuSound("menu/demoscroll"); - ofs2 = ++sel2; - } - l.Destroy(); - } - else - { - MenuSound("menu/demoscroll"); - if ( sel0 >= lorelist.Size()-1 ) ofs0 = sel0 = 0; - else - { - sel0++; - // update ofs so selection stays on-screen - int ofs = max(ofs0-26,0); - if ( sel0 < ofs ) ofs0 = sel0+26; - else if ( sel0 > ofs+26 ) ofs0 = sel0; - } - } - } - else if ( ((tabs[curtab] == TAB_INVENTORY) || (tabs[curtab] == TAB_KEYS)) && (invlist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - if ( sel0 >= invlist.Size() ) ofs0 = sel0 = 0; - } - else if ( ((tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1)) && (invlist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs1 = ++sel1; - if ( sel1 >= invlist.Size() ) ofs1 = sel1 = 0; - } - else if ( (tabs[curtab] == TAB_STORE) && (storelist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - if ( sel0 >= storelist.Size() ) ofs0 = sel0 = 0; - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( !sub && (playerlist.Size() > 1) ) - { - // scroll through player list - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - if ( sel0 >= playerlist.Size() ) ofs0 = sel0 = 0; - } - else if ( sub && (sel0 == -1) && (sel1 < tradelib.ent.Size()-28) ) - { - // scroll through trading history - MenuSound("menu/demoscroll"); - ofs1 = ++sel1; - } - } - else if ( tabs[curtab] == TAB_STATS ) - { - int cnt = 0, num = 22; - if ( sel1 == STAT_MAIN ) - cnt = statlist.Size(); - else if ( sel1 == STAT_KILLS ) - cnt = sorted_mstats.Size(); - else if ( sel1 == STAT_LEVEL ) - cnt = filtered_lstats.Size(); - else if ( sel1 == STAT_ACHIEVEMENT ) - { - cnt = achievements.Size(); - num = 7; - } - if ( (cnt > num) && (sel0 < cnt-num) ) - { - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - } - } + tabs[curtab].MenuInput(MK_DOWN); return true; case MKEY_UP: - if ( (tabs[curtab] == TAB_HELP) && (sel0 > 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - } - else if ( (tabs[curtab] == TAB_MISSION) && (sel0 > 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - } - else if ( (tabs[curtab] == TAB_CHAT) && FullHistory && (sel0 < FullHistory.msg.Size()-1) ) - { - MenuSound("menu/demoscroll"); - ofs0 = ++sel0; - } - else if ( (tabs[curtab] == TAB_LIBRARY) && (lorelist.Size() > 1) ) - { - if ( sub ) - { - if ( sel2 > 0 ) - { - MenuSound("menu/demoscroll"); - ofs2 = --sel2; - } - } - else - { - MenuSound("menu/demoscroll"); - if ( sel0 <= 0 ) ofs0 = sel0 = lorelist.Size()-1; - else - { - sel0--; - // update ofs so selection stays on-screen - int ofs = max(ofs0-26,0); - if ( sel0 < ofs ) ofs0 = sel0+26; - else if ( sel0 > ofs+26 ) ofs0 = sel0; - } - } - } - else if ( ((tabs[curtab] == TAB_INVENTORY) || (tabs[curtab] == TAB_KEYS)) && (invlist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - if ( sel0 < 0 ) ofs0 = sel0 = invlist.Size()-1; - } - else if ( ((tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1)) && (invlist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs1 = --sel1; - if ( sel1 < 0 ) ofs1 = sel1 = invlist.Size()-1; - } - else if ( (tabs[curtab] == TAB_STORE) && (storelist.Size() > 1) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - if ( sel0 < 0 ) ofs0 = sel0 = storelist.Size()-1; - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( !sub && (playerlist.Size() > 1) ) - { - // scroll through player list - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - if ( sel0 < 0 ) ofs0 = sel0 = playerlist.Size()-1; - } - else if ( sub && (sel0 == -1) && (sel1 > 0) ) - { - // scroll through trading history - MenuSound("menu/demoscroll"); - ofs1 = --sel1; - } - } - else if ( (tabs[curtab] == TAB_STATS) && (sel0 > 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = --sel0; - } - return true; - case MKEY_RIGHT: - if ( (tabs[curtab] == TAB_MISSION) && (missionbacklog.Size() > 0) ) - { - if ( sel1 < missionbacklog.Size() ) - { - sel0 = 0; - sel1++; - MenuSound("menu/demoscroll"); - } - } - else if ( ((tabs[curtab] == TAB_INVENTORY) || (tabs[curtab] == TAB_KEYS)) && (invlist.Size() > 21) ) - { - int oldsel = sel0; - ofs0 = sel0 += 22; - if ( sel0 >= invlist.Size() ) ofs0 = sel0 = invlist.Size()-1; - if ( sel0 != oldsel ) MenuSound("menu/demoscroll"); - } - else if ( ((tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1)) && (invlist.Size() > 21) ) - { - int oldsel = sel1; - ofs1 = sel1 += 22; - if ( sel1 >= invlist.Size() ) ofs1 = sel1 = invlist.Size()-1; - if ( sel1 != oldsel ) MenuSound("menu/demoscroll"); - } - else if ( (tabs[curtab] == TAB_STORE) && (storelist.Size() > 21) ) - { - int oldsel = sel0; - ofs0 = sel0 += 22; - if ( sel0 >= storelist.Size() ) ofs0 = sel0 = storelist.Size()-1; - if ( sel0 != oldsel ) MenuSound("menu/demoscroll"); - } - else if ( tabs[curtab] == TAB_LIBRARY ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 = 0; - sub = false; - ofs1 = ++sel1; - if ( sel1 > LORE_LORE ) ofs1 = sel1 = LORE_ITEM; - CVar.FindCVar('swwm_lastloretab').SetInt(sel1); - } - else if ( (tabs[curtab] == TAB_TRADING) && !sub && (playerlist.Size() > 21) ) // lol is this ever going to happen - { - int oldsel = sel0; - ofs0 = sel0 += 22; - if ( sel0 >= playerlist.Size() ) ofs0 = sel0 = playerlist.Size()-1; - if ( sel0 != oldsel ) MenuSound("menu/demoscroll"); - } - else if ( tabs[curtab] == TAB_STATS ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 = 0; - ofs1 = ++sel1; - if ( ofs1 > STAT_ACHIEVEMENT ) ofs1 = sel1 = STAT_MAIN; - CVar.FindCVar('swwm_laststattab').SetInt(sel1); - } + tabs[curtab].MenuInput(MK_UP); return true; case MKEY_LEFT: - if ( (tabs[curtab] == TAB_MISSION) && (missionbacklog.Size() > 0) ) - { - if ( sel1 > 0 ) - { - sel0 = 0; - sel1--; - MenuSound("menu/demoscroll"); - } - } - else if ( ((tabs[curtab] == TAB_INVENTORY) || (tabs[curtab] == TAB_KEYS)) && (invlist.Size() > 21) && (sel0-22 >= 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 -= 22; - } - else if ( ((tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1)) && (invlist.Size() > 21) && (sel1-22 >= 0) ) - { - MenuSound("menu/demoscroll"); - ofs1 = sel1 -= 22; - } - else if ( (tabs[curtab] == TAB_STORE) && (storelist.Size() > 21) && (sel0-22 >= 0) ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 -= 22; - } - else if ( tabs[curtab] == TAB_LIBRARY ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 = 0; - sub = false; - ofs1 = --sel1; - if ( sel1 < LORE_ITEM ) ofs1 = sel1 = LORE_LORE; - CVar.FindCVar('swwm_lastloretab').SetInt(sel1); - } - else if ( (tabs[curtab] == TAB_TRADING) && !sub && (playerlist.Size() > 21) && (sel0-22 >= 0) ) // lol is this ever going to happen - { - ofs0 = sel0 -= 22; - MenuSound("menu/demoscroll"); - } - else if ( tabs[curtab] == TAB_STATS ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 = 0; - ofs1 = --sel1; - if ( ofs1 < STAT_MAIN ) ofs1 = sel1 = STAT_ACHIEVEMENT; - CVar.FindCVar('swwm_laststattab').SetInt(sel1); - } + tabs[curtab].MenuInput(MK_LEFT); + return true; + case MKEY_RIGHT: + tabs[curtab].MenuInput(MK_RIGHT); return true; case MKEY_ENTER: - if ( (tabs[curtab] == TAB_INVENTORY) && (invlist.Size() > 0) && (sel0 < invlist.Size()) ) - { - // can't use this - if ( (invlist[sel0] is 'Ammo') || (invlist[sel0] is 'MagAmmo') || (invlist[sel0] is 'SWWMCollectible') - || (invlist[sel0] is 'HammerspaceEmbiggener') ) - return true; - let t = new("MenuTransaction"); - t.uid = GenTUID(); - t.type = MenuTransaction.TT_ITEMUSE; - t.result = false; - // don't check weapons, always assume check succeeded - if ( invlist[sel0] is 'Weapon' ) t.result = true; - checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmuseitem.%s",invlist[sel0].GetClassName()),consoleplayer,t.uid); - } - else if ( (tabs[curtab] == TAB_KEYS) && (invlist.Size() > 0) && (sel0 < invlist.Size()) ) - { - // can't use this - if ( !(invlist[sel0] is 'SWWMKey') && !(invlist[sel0] is 'SWWMCollectible') ) - return true; - let t = new("MenuTransaction"); - t.uid = GenTUID(); - t.type = MenuTransaction.TT_ITEMUSE; - t.result = true; // always true - checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmuseitem.%s",invlist[sel0].GetClassName()),consoleplayer,t.uid); - } - else if ( (tabs[curtab] == TAB_STORE) && (storelist.Size() > 0) && (sel0 < storelist.Size()) ) - { - let itm = GetDefaultByType(storelist[sel0]); - let amt = storeunits[sel0]; - int price = int(abs(itm.Stamina)*(1.+.75*(amt-1))); - let cur = players[consoleplayer].mo.FindInventory(storelist[sel0]); - if ( sub ) - { - if ( !cur ) return true; - if ( storelist[sel0] is 'Weapon' ) - { - let w = Weapon(itm); - // subtract price of given ammo, as we're only selling the weapon itself - if ( w.AmmoType1 && (w.AmmoGive1 > 0) ) - { - let am1 = GetDefaultByType(w.AmmoType1); - if ( am1.Stamina > 0 ) price -= int(am1.Stamina*(1.+.75*(w.AmmoGive1-1))); - } - // candygun is a special case for secondary ammo - if ( w.AmmoType2 && (w.AmmoGive2 > 0) && (storelist[sel0] is 'CandyGun') ) - { - let am2 = GetDefaultByType(w.AmmoType2); - if ( am2.Stamina > 0 ) price -= int(am2.Stamina*(1.+.75*(w.AmmoGive2-1))); - } - } - // sell at half price - if ( sub ) price /= 2; - EventHandler.SendNetworkEvent(String.Format("swwmstoretake.%s",storelist[sel0].GetClassName()),consoleplayer,price,amt); - MenuSound("menu/buyinv"); - return true; - } - if ( !SWWMCredits.CanTake(players[consoleplayer],price) ) - { - MenuSound("menu/noinvuse"); - tmsg = StringTable.Localize("$SWWM_STOREMUNS"); - tmsgtic = gametic+70; - return true; - } - int camt, max; - if ( cur ) - { - camt = cur.Amount; - max = cur.MaxAmount; - } - else - { - camt = 0; - max = itm.MaxAmount; - } - if ( camt >= max ) - { - MenuSound("menu/noinvuse"); - tmsg = StringTable.Localize("$SWWM_STOREFULL"); - tmsgtic = gametic+70; - return true; - } - EventHandler.SendNetworkEvent(String.Format("swwmstoregive.%s",storelist[sel0].GetClassName()),consoleplayer,price,amt); - MenuSound("menu/buyinv"); - } - else if ( tabs[curtab] == TAB_LIBRARY ) - { - if ( sub ) - { - MenuSound("menu/democlose"); - sub = false; - } - else if ( (lorelist.Size() > 0) && (sel0 < lorelist.Size()) ) - { - // mark as read - if ( !lorelist[sel0].read ) - EventHandler.SendNetworkEvent(String.Format("swwmmarkloreread.%s",lorelist[sel0].tag),consoleplayer); - MenuSound("menu/demosel"); - sub = true; - ofs2 = sel2 = 0; - } - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( !sub && (playerlist.Size() > 0) ) - { - // pick a player - MenuSound("menu/demosel"); - sub = true; - ofs1 = sel1 = 0; - } - else if ( sub && (sel0 != -1) && (invlist.Size() > 0) ) - { - // cannot trade these - if ( ((invlist[sel1].bUNDROPPABLE || invlist[sel1].bUNTOSSABLE) && !(invlist[sel1] is 'HammerspaceEmbiggener')) - || ((invlist[sel1] is 'CandyGunSpares') && !players[playerlist[sel0]].mo.FindInventory('CandyGun')) ) - { - MenuSound("menu/noinvuse"); - tmsg = StringTable.Localize("$SWWM_TRADEFAIL"); - tmsgtic = gametic+70; - return true; - } - // trade item - let t = new("MenuTransaction"); - t.uid = GenTUID(); - t.type = MenuTransaction.TT_ITEMSEND; - t.result = false; - checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmtrade.%s",invlist[sel1].GetClassName()),consoleplayer,playerlist[sel0],t.uid); - } - } + tabs[curtab].MenuInput(MK_ENTER); return true; case MKEY_CLEAR: - if ( (tabs[curtab] == TAB_INVENTORY) && (invlist.Size() > 0) ) - { - let t = new("MenuTransaction"); - t.uid = GenTUID(); - t.type = MenuTransaction.TT_ITEMDROP; - t.result = false; - checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmdropitem.%s",invlist[sel0].GetClassName()),consoleplayer,t.uid); - } - else if ( (tabs[curtab] == TAB_LIBRARY) && sub ) - { - MenuSound("menu/democlose"); - sub = false; - } - else if ( tabs[curtab] == TAB_STORE ) - { - sub = !sub; - MenuSound(sub?"menu/demosel":"menu/democlose"); - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( !sub ) - { - // open trading history - MenuSound("menu/demosel"); - sub = true; - ofs0 = sel0 = -1; - ofs1 = sel1 = 0; - } - else if ( sub ) - { - // go back - MenuSound("menu/democlose"); - sub = false; - ofs0 = sel0 = 0; - } - } + tabs[curtab].MenuInput(MK_BACK); return true; } return Super.MenuEvent(mkey,fromcontroller); } - private int rnd( double num ) - { - return int(num+((num<0)?-.5:.5)); - } - - override bool MouseEvent( int type, int mx, int my ) - { - bool res = Super.MouseEvent(type,mx,my); - Font fnt = LangFont(TewiFont); - String str; - double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/400.)),1.); - Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; - Vector2 origin = (ss.x-640,ss.y-400)/2.; - Vector2 mpos = (mx/hs,my/hs)-origin; - int xx, yy, len; - if ( type == MOUSE_Click ) - { - if ( (mpos.x < 0) || (mpos.x >= 641) || (mpos.y < 0) || (mpos.y >= 386) ) return res; // outside clickable area, ignore - else if ( mpos.y < 14 ) - { - if ( isrclick ) return res; - // check which tab we're clicking - static const string tabnames[] = - { - "$SWWM_MISSTAB", "$SWWM_STATTAB", "$SWWM_INVTAB", "$SWWM_KEYTAB", - "$SWWM_KBASETAB", "$SWWM_STORETAB", "$SWWM_TRADETAB", "$SWWM_CHATTAB", - "$SWWM_SECRETTAB", "$SWWM_HELPTAB" - }; - xx = 0; - for ( int i=0; i= xx) && (mpos.x < xx+len) ) - { - if ( curtab == i ) break; - MenuSound("menu/demotab"); - if ( tabs[curtab] >= TAB_SECRET ) - { - tabs.Delete(curtab); - if ( curtab < i ) i--; // account for shortening - } - curtab = i; - CVar.FindCVar('swwm_lasttab').SetInt(tabs[curtab]); - sel0 = sel1 = sel2 = 0; - ofs0 = ofs1 = ofs2 = 0; - sub = false; - invlist.Clear(); - lorelist.Clear(); - storelist.Clear(); - storeunits.Clear(); - playerlist.Clear(); - break; - } - xx += len; - } - } - else if ( tabs[curtab] == TAB_MISSION ) - { - // are we clicking where the scrollbar should be? - if ( mpos.x < 632 ) - { - int csiz = missionbacklog.Size(); - if ( csiz <= 0 ) return res; - if ( isrclick && (sel1 < csiz) ) - { - sel0 = 0; - sel1++; - MenuSound("menu/demoscroll"); - } - else if ( !isrclick && (sel1 > 0) ) - { - sel0 = 0; - sel1--; - MenuSound("menu/demoscroll"); - } - return res; - } - if ( !isrclick ) - { - String str; - if ( sel1 == 0 ) str = StringTable.Localize(missionstr); - else str = StringTable.Localize(missionbacklog[sel1-1]); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - drag = 1; - } - } - else if ( tabs[curtab] == TAB_INVENTORY ) - { - // check what item we clicked - if ( mpos.y < 377 ) - { - if ( invlist.Size() <= 0 ) return res; // clicked nothing - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) - str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag()); - else str = invlist[i].GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - int ofs = int(max(0,(ofs0/22)-(maxcol-1))*22); - xx = 9; - yy = 23; - int cols = 1; - for ( int i=ofs; i= xx) && (mpos.x < xx+longest) && (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel0 != i ) MenuSound("menu/demoscroll"); - sel0 = i; - ofs0 = (sel0/22)*22; - // drop on right click in inventory tab - if ( (tabs[curtab] == TAB_INVENTORY) && isrclick ) MenuEvent(MKEY_CLEAR,false); - else if ( !isrclick ) MenuEvent(MKEY_ENTER,false); - return res; - } - yy += 16; - if ( yy >= 370 ) - { - xx += longest+24; - yy = 23; - cols++; - if ( cols > maxcol ) break; - } - } - return res; - } - if ( !isrclick ) - { - // check that scrollbar is present - if ( invlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) - str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag()); - else str = invlist[i].GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - drag = 1; - } - } - else if ( (tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1) ) - { - // check what item we clicked - if ( mpos.y < 377 ) - { - if ( invlist.Size() <= 0 ) return res; // clicked nothing - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) - str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag()); - else str = invlist[i].GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - int ofs = int(max(0,(ofs1/22)-(maxcol-1))*22); - xx = 9; - yy = 23; - int cols = 1; - for ( int i=ofs; i= xx) && (mpos.x < xx+longest) && (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel1 != i ) MenuSound("menu/demoscroll"); - sel1 = i; - ofs1 = (sel1/22)*22; - // drop on right click in inventory tab - if ( (tabs[curtab] == TAB_INVENTORY) && isrclick ) MenuEvent(MKEY_CLEAR,false); - else if ( !isrclick ) MenuEvent(MKEY_ENTER,false); - return res; - } - yy += 16; - if ( yy >= 370 ) - { - xx += longest+24; - yy = 23; - cols++; - if ( cols > maxcol ) break; - } - } - return res; - } - if ( !isrclick ) - { - // check that scrollbar is present - if ( invlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) - str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag()); - else str = invlist[i].GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - drag = 1; - } - } - else if ( (tabs[curtab] == TAB_KEYS) && !isrclick ) - { - // check what item we clicked - if ( mpos.y < 377 ) - { - if ( invlist.Size() <= 0 ) return res; // clicked nothing - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - int ofs = int(max(0,(ofs0/22)-(maxcol-1))*22); - xx = 9; - yy = 23; - int cols = 1; - for ( int i=ofs; i= xx) && (mpos.x < xx+longest) && (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel0 != i ) MenuSound("menu/demoscroll"); - sel0 = i; - ofs0 = (sel0/22)*22; - // try to use it if it has any special behaviour - MenuEvent(MKEY_ENTER,false); - return res; - } - yy += 16; - if ( yy >= 370 ) - { - xx += longest+24; - yy = 23; - cols++; - if ( cols > maxcol ) break; - } - } - return res; - } - // check that scrollbar is present - if ( invlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - drag = 1; - } - else if ( tabs[curtab] == TAB_STORE ) - { - if ( isrclick ) - { - MenuEvent(MKEY_CLEAR,false); - return res; - } - // check what item we clicked - if ( mpos.y < 377 ) - { - if ( storelist.Size() <= 0 ) return res; // clicked nothing - xx = 9; - yy = 23; - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (storelist[i] is 'Ammo') ) str = String.Format("(%d/%d) %s",storeunits[i],amt,SWWMUtility.GetAmmoTagClass(storelist[i])); - else str = def.GetTag(); - } - else if ( (storeunits[i] > 1) || (storelist[i] is 'Ammo') ) str = String.Format("%dx %s",storeunits[i],SWWMUtility.GetAmmoTagClass(storelist[i])); - else str = def.GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+96); - totalcol = int(ceil(storelist.Size()/22.)); - // gotta check both the tag and the price for clicking - int ofs = int(max(0,(ofs0/22)-(maxcol-1))*22); - int cols = 1; - for ( int i=ofs; i= xx) && (mpos.x < xx+longest+80) && (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel0 != i ) MenuSound("menu/demoscroll"); - sel0 = i; - ofs0 = (sel0/22)*22; - MenuEvent(MKEY_ENTER,false); - return res; - } - yy += 16; - if ( yy >= 370 ) - { - xx += longest+96; - yy = 23; - cols++; - if ( cols > maxcol ) break; - } - } - return res; - } - // check that scrollbar is present - if ( storelist.Size() <= 0 ) return res; // definitely no scrollbar - xx = 9; - yy = 23; - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (storelist[i] is 'Ammo') ) str = String.Format("(%d/%d) %s",storeunits[i],amt,SWWMUtility.GetAmmoTagClass(storelist[i])); - else str = def.GetTag(); - } - else if ( storeunits[i] > 1 ) str = String.Format("%dx %s",storeunits[i],def.GetTag()); - else str = def.GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+96); - totalcol = int(ceil(storelist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - drag = 1; - } - else if ( (tabs[curtab] == TAB_LIBRARY) && !isrclick ) - { - double midp = (language~=="jp")?206:126; - if ( mpos.x < midp ) - { - if ( mpos.y < 28 ) - { - // switch category - if ( mpos.x < midp/2. ) MenuEvent(MKEY_LEFT,false); - else MenuEvent(MKEY_RIGHT,false); - } - else - { - // check what item we clicked - int xx = 3; - int yy = 32; - int ofs = max(0,ofs0-26); - for ( int i=ofs; i 370 ) break; - // check boundary - if ( (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel0 != i ) MenuSound("menu/demoscroll"); - if ( (sel0 != i) || !sub ) - { - sel0 = i; - sub = false; - MenuEvent(MKEY_Enter,false); - } - return res; - } - yy += 13; - } - } - } - else if ( mpos.x < midp+8 ) - { - // check that scrollbar is present - if ( lorelist.Size() <= 27 ) return res; // no scrollbar - // calculate offset - int szr = lorelist.Size()-27; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step ) step += 26; - if ( step != ofs0 ) MenuSound("menu/demoscroll"); - ofs0 = step; - drag = 1; - } - else if ( sub && (mpos.x >= 632) ) - { - // check that scrollbar is present - str = StringTable.Localize(lorelist[sel0].text); - int ofs = (language~=="jp")?212:132; - if ( lorelist.Size() > 26 ) ofs += 8; - BrokenLines l = fnt.BreakLines(str,635-ofs); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,626-ofs); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel2 ) MenuSound("menu/demoscroll"); - ofs2 = sel2 = step; - drag = 3; - } - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( isrclick ) - { - MenuEvent(MKEY_CLEAR,false); - return res; - } - if ( !sub ) - { - // check what item we clicked - if ( mpos.y < 377 ) - { - if ( playerlist.Size() <= 0 ) return res; // clicked nothing - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(playerlist.Size()/22.)); - int ofs = int(max(0,(ofs0/22)-(maxcol-1))*22); - xx = 9; - yy = 23; - int cols = 1; - for ( int i=ofs; i= xx) && (mpos.x < xx+len+1) && (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel0 != i ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = i; - MenuEvent(MKEY_Enter,false); - return res; - } - yy += 16; - if ( yy >= 370 ) - { - xx += longest+24; - yy = 23; - cols++; - if ( cols > maxcol ) break; - } - } - return res; - } - // check that scrollbar is present (will it ever be???) - if ( playerlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(playerlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - drag = 1; - } - else if ( sel0 == -1 ) - { - // are we clicking where the scrollbar should be? - if ( mpos.x < 632 ) return res; - if ( tradelib.ent.Size() <= 28 ) return res; // no scrollbar - // calculate offset - int szr = tradelib.ent.Size()-28; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - drag = 1; - } - } - else if ( (tabs[curtab] == TAB_CHAT) && !isrclick ) - { - // are we clicking where the scrollbar should be? - if ( mpos.x < 632 ) return res; - let bar = SWWMStatusBar(StatusBar); - if ( !FullHistory || (FullHistory.msg.Size() <= 1) ) return res; // no scrollbar - // calculate offset - int szr = FullHistory.msg.Size()-1; - int step = szr-clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - drag = 1; - } - else if ( (tabs[curtab] == TAB_HELP) && !isrclick ) - { - // are we clicking where the scrollbar should be? - String kstr; - if ( mkey[1] != "" ) kstr = mkey[0].."/"..mkey[1]; - else kstr = mkey[0]; - str = String.Format(StringTable.Localize("$SWWM_HELPTXT"),kstr); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - drag = 1; - } - else if ( (tabs[curtab] == TAB_STATS) && !isrclick ) - { - double midp = (language~=="jp")?206:126; - if ( mpos.x < midp ) - { - // check what item we clicked - int xx = 9; - int yy = 23; - for ( int i=0; i<=STAT_ACHIEVEMENT; i++ ) - { - // check boundary - if ( (mpos.y >= yy) && (mpos.y < yy+14) ) - { - if ( sel1 != i ) - { - MenuSound("menu/demoscroll"); - ofs0 = sel0 = 0; - sel1 = i; - CVar.FindCVar('swwm_laststattab').SetInt(sel1); - } - return res; - } - yy += 16; - } - return res; - } - // are we clicking where the scrollbar should be? - if ( mpos.x < 632 ) return res; - int cnt = 0, num = 22; - if ( sel1 == STAT_MAIN ) cnt = statlist.Size(); - else if ( sel1 == STAT_KILLS ) cnt = stats.mstats.Size(); - else if ( sel1 == STAT_LEVEL ) cnt = filtered_lstats.Size(); - else if ( sel1 == STAT_ACHIEVEMENT ) - { - cnt = achievements.Size(); - num = 7; - } - if ( cnt <= num ) return res; // no scrollbar - // calculate offset - int szr = cnt-num; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - drag = 1; - } - } - else if ( (type == MOUSE_Move) && drag ) // scroll dragging - { - if ( tabs[curtab] == TAB_MISSION ) - { - String str; - if ( sel1 == 0 ) str = StringTable.Localize(missionstr); - else str = StringTable.Localize(missionbacklog[sel1-1]); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - } - else if ( (tabs[curtab] == TAB_INVENTORY) || ((tabs[curtab] == TAB_TRADING) && sub && (sel0 != -1)) ) - { - // check that scrollbar is present - if ( invlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag()); - else str = invlist[i].GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - } - else if ( tabs[curtab] == TAB_KEYS ) - { - // check that scrollbar is present - if ( invlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - } - else if ( tabs[curtab] == TAB_STORE ) - { - // check that scrollbar is present - if ( storelist.Size() <= 0 ) return res; // definitely no scrollbar - xx = 9; - yy = 23; - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i 1) || (storelist[i] is 'Ammo') ) str = String.Format("(%d/%d) %s",storeunits[i],amt,SWWMUtility.GetAmmoTagClass(storelist[i])); - else str = def.GetTag(); - } - else if ( (storeunits[i] > 1) || (storelist[i] is 'Ammo') ) str = String.Format("%dx %s",storeunits[i],SWWMUtility.GetAmmoTagClass(storelist[i])); - else str = def.GetTag(); - len = fnt.StringWidth(str); - if ( len > longest ) longest = len; - } - maxcol = 622/(longest+96); - totalcol = int(ceil(storelist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - } - else if ( tabs[curtab] == TAB_LIBRARY ) - { - if ( drag == 1 ) - { - // check that scrollbar is present - if ( lorelist.Size() <= 27 ) return res; // no scrollbar - // calculate offset - int szr = lorelist.Size()-27; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step ) step += 26; - if ( step != ofs0 ) MenuSound("menu/demoscroll"); - ofs0 = step; - } - else if ( drag == 3 ) - { - // check that scrollbar is present - str = StringTable.Localize(lorelist[sel0].text); - int ofs = (language~=="jp")?212:132; - if ( lorelist.Size() > 26 ) ofs += 8; - BrokenLines l = fnt.BreakLines(str,635-ofs); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,626-ofs); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel2 ) MenuSound("menu/demoscroll"); - ofs2 = sel2 = step; - } - } - else if ( tabs[curtab] == TAB_TRADING ) - { - if ( !sub ) - { - // check that scrollbar is present (will it ever be???) - if ( playerlist.Size() <= 0 ) return res; // definitely no scrollbar - int longest = 0, len; - int maxcol, totalcol; - for ( int i=0; i longest ) longest = len; - } - maxcol = 622/(longest+24); - totalcol = int(ceil(invlist.Size()/22.)); - if ( maxcol >= totalcol ) return res; // no scrollbar - // calculate offset - int szr = totalcol-maxcol; - int step = clamp(rnd((mpos.x-5.)/(630./szr)),0,szr); - if ( step > 0 ) step += (maxcol-1); - if ( step != (ofs0/22) ) MenuSound("menu/demoscroll"); - ofs0 = step*22; - } - else if ( sel0 == -1 ) - { - if ( tradelib.ent.Size() <= 28 ) return res; // no scrollbar - // calculate offset - int szr = tradelib.ent.Size()-28; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - } - } - else if ( tabs[curtab] == TAB_CHAT ) - { - let bar = SWWMStatusBar(StatusBar); - if ( !FullHistory || (FullHistory.msg.Size() <= 1) ) return res; // no scrollbar - // calculate offset - int szr = FullHistory.msg.Size()-1; - int step = szr-clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - } - else if ( tabs[curtab] == TAB_HELP ) - { - int k1, k2; - [k1, k2] = bindings.GetKeysForCommand("openmenu SWWMKnowledgeBaseMenu"); - String kstr = bindings.NameKeys(k1,k2); - str = String.Format(StringTable.Localize("$SWWM_HELPTXT"),kstr); - BrokenLines l = fnt.BreakLines(str,629); - if ( l.Count() > 28 ) - { - l.Destroy(); - l = fnt.BreakLines(str,620); - } - else - { - l.Destroy(); - return res; // no scrollbar - } - // calculate offset - int szr = l.Count()-28; - l.Destroy(); - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - } - else if ( tabs[curtab] == TAB_STATS ) - { - int cnt = 0, num = 22; - if ( sel1 == STAT_MAIN ) cnt = statlist.Size(); - else if ( sel1 == STAT_KILLS ) cnt = stats.mstats.Size(); - else if ( sel1 == STAT_LEVEL ) cnt = filtered_lstats.Size(); - else if ( sel1 == STAT_ACHIEVEMENT ) - { - cnt = achievements.Size(); - num = 7; - } - if ( cnt <= num ) return res; // no scrollbar - // calculate offset - int szr = cnt-num; - int step = clamp(rnd((mpos.y-24.)/(353./szr)),0,szr); - if ( step != sel0 ) MenuSound("menu/demoscroll"); - ofs0 = sel0 = step; - } - } - else if ( type == MOUSE_Release ) drag = 0; // stop dragging any active scrolls - return res; - } - - private bool CmpInventory( Inventory a, Inventory b ) - { - int ta = 0, tb = 0; - if ( a is 'Weapon' ) ta = 2; - else if ( (a is 'BackpackItem') || (a is 'HammerspaceEmbiggener') ) ta = 3; - else if ( a is 'Ammo' ) ta = 4; - else if ( a is 'MagAmmo' ) ta = 5; - else if ( (a is 'PowerupGiver') || (a is 'AmmoFabricator') || a.bBIGPOWERUP ) ta = -3; - else if ( (a is 'Health') || (a is 'HealthPickup') || (a is 'SWWMHealth') ) ta = -2; - else if ( (a is 'Armor') || (a is 'SWWMSpareArmor') ) ta = -1; - else if ( a is 'PuzzleItem' ) ta = 1; - if ( b is 'Weapon' ) tb = 2; - else if ( (b is 'BackpackItem') || (b is 'HammerspaceEmbiggener') ) tb = 3; - else if ( b is 'Ammo' ) tb = 4; - else if ( b is 'MagAmmo' ) tb = 5; - else if ( (b is 'PowerupGiver') || (b is 'AmmoFabricator') || b.bBIGPOWERUP ) tb = -3; - else if ( (b is 'Health') || (b is 'HealthPickup') || (b is 'SWWMHealth') ) tb = -2; - else if ( (b is 'Armor') || (b is 'SWWMSpareArmor') ) tb = -1; - else if ( b is 'PuzzleItem' ) tb = 1; - if ( ta == tb ) - { - if ( a is 'Weapon' ) - { - bool dummy; - int slota, slotb; - [dummy, slota] = players[consoleplayer].weapons.LocateWeapon(Weapon(a).GetClass()); - if ( slota == 0 ) slota = 10; - [dummy, slotb] = players[consoleplayer].weapons.LocateWeapon(Weapon(b).GetClass()); - if ( slotb == 0 ) slotb = 10; - if ( slota == slotb ) - return (Weapon(a).SlotPriority <= Weapon(b).SlotPriority); - return slota > slotb; - } - else if ( a is 'Ammo' ) - { - Class usesa, usesb; - for ( int i=0; i)(AllActorClasses[i]); - if ( !w ) continue; - let def = GetDefaultByType(w); - if ( w is 'SWWMWeapon' ) - { - if ( SWWMWeapon(def).UsesAmmo(Ammo(a).GetClass()) ) - usesa = w; - if ( SWWMWeapon(def).UsesAmmo(Ammo(b).GetClass()) ) - usesb = w; - } - else - { - if ( (def.AmmoType1 == Ammo(a).GetClass()) || (def.AmmoType2 == Ammo(a).GetClass()) ) - usesa = w; - if ( (def.AmmoType1 == Ammo(b).GetClass()) || (def.AmmoType2 == Ammo(b).GetClass()) ) - usesb = w; - } - if ( usesa && usesb ) - break; - } - if ( usesa && usesb ) - { - bool dummy; - int slota, slotb; - [dummy, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); - if ( slota == 0 ) slota = 10; - [dummy, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); - if ( slotb == 0 ) slotb = 10; - if ( slota == slotb ) - { - // sort by unit value - int vala = abs(a.default.Stamina); - int valb = abs(b.default.Stamina); - if ( vala == valb ) - { - // sort alphabetically - return a.GetTag() > b.GetTag(); - } - return vala > valb; - } - return slota > slotb; - } - } - else if ( a is 'MagAmmo' ) - { - // oh boy this one gets complicated - Class pamoa, pamob; - pamoa = MagAmmo(a).ParentAmmo; - pamob = MagAmmo(b).ParentAmmo; - Class usesa, usesb; - for ( int i=0; i)(AllActorClasses[i]); - if ( !w ) continue; - let def = GetDefaultByType(w); - if ( w is 'SWWMWeapon' ) - { - if ( SWWMWeapon(def).UsesAmmo(pamoa) ) - usesa = w; - if ( SWWMWeapon(def).UsesAmmo(pamob) ) - usesb = w; - } - else - { - if ( (def.AmmoType1 == pamoa) || (def.AmmoType2 == pamoa) ) - usesa = w; - if ( (def.AmmoType1 == pamob) || (def.AmmoType2 == pamob) ) - usesb = w; - } - if ( usesa && usesb ) - break; - } - if ( usesa && usesb ) - { - bool dummy; - int slota, slotb; - [dummy, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); - if ( slota == 0 ) slota = 10; - [dummy, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); - if ( slotb == 0 ) slotb = 10; - if ( slota == slotb ) - { - // sort by unit value - int vala = GetDefaultByType(pamoa).Stamina; - int valb = GetDefaultByType(pamob).Stamina; - if ( vala == valb ) - { - // sort alphabetically - return a.GetTag() > b.GetTag(); - } - return vala > valb; - } - return slota > slotb; - } - } - else - { - // sort by unit value - int vala = abs(a.default.Stamina); - int valb = abs(b.default.Stamina); - if ( vala == valb ) - { - // sort alphabetically - return a.GetTag() > b.GetTag(); - } - return vala > valb; - } - } - return ta > tb; - } - - private bool CmpInventoryClass( Class a, Class b ) - { - int ta = 0, tb = 0; - let da = GetDefaultByType(a); - let db = GetDefaultByType(b); - if ( a is 'Weapon' ) ta = 4; - else if ( a is 'HammerspaceEmbiggener' ) ta = 3; - else if ( a is 'Ammo' ) ta = 2; - else if ( a is 'MagAmmo' ) ta = 1; - else if ( (a is 'PowerupGiver') || (a is 'AmmoFabricator') || da.bBIGPOWERUP ) ta = 5; - else if ( (a is 'Health') || (a is 'HealthPickup') || (a is 'SWWMHealth') ) ta = 7; - else if ( (a is 'Armor') || (a is 'SWWMSpareArmor') ) ta = 6; - if ( b is 'Weapon' ) tb = 4; - else if ( b is 'HammerspaceEmbiggener' ) tb = 3; - else if ( b is 'Ammo' ) tb = 2; - else if ( b is 'MagAmmo' ) ta = 1; - else if ( (b is 'PowerupGiver') || (b is 'AmmoFabricator') || db.bBIGPOWERUP ) tb = 5; - else if ( (b is 'Health') || (b is 'HealthPickup') || (b is 'SWWMHealth') ) tb = 7; - else if ( (b is 'Armor') || (b is 'SWWMSpareArmor') ) tb = 6; - if ( ta == tb ) - { - // sort by unit price - if ( abs(da.Stamina) == abs(db.Stamina) ) - { - // sort alphabetically - return da.GetTag() > db.GetTag(); - } - return abs(da.Stamina) > abs(db.Stamina); - } - return ta < tb; - } - - private int partition_inventory( Array a, int l, int h ) - { - Inventory pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpInventory(pv,a[j]) ) - { - i++; - Inventory tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - Inventory tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_inventory( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_inventory(a,l,h); - qsort_inventory(a,l,p-1); - qsort_inventory(a,p+1,h); - } - - private int partition_store( Array > a, Array b, int l, int h ) - { - Class pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpInventoryClass(pv,a[j]) ) - { - i++; - Class tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - int tmpi = b[j]; - b[j] = b[i]; - b[i] = tmpi; - } - } - Class tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - int tmpi = b[h]; - b[h] = b[i+1]; - b[i+1] = tmpi; - return i+1; - } - private void qsort_store( Array > a, Array b, int l, int h ) - { - if ( l >= h ) return; - int p = partition_store(a,b,l,h); - qsort_store(a,b,l,p-1); - qsort_store(a,b,p+1,h); - } - - private bool CmpMonsterKill( MonsterKill a, MonsterKill b ) - { - if ( a.kills == b.kills ) - { - // sort by name instead - String taga, tagb; - taga = GetDefaultByType(a.m).GetTag(); - tagb = GetDefaultByType(b.m).GetTag(); - // beautify if there's no tag - if ( taga == FallbackTag ) - { - taga = a.m.GetClassName(); - SWWMUtility.BeautifyClassName(taga); - } - if ( tagb == FallbackTag ) - { - tagb = a.m.GetClassName(); - SWWMUtility.BeautifyClassName(tagb); - } - return taga > tagb; - } - return a.kills < b.kills; - } - - private int partition_mstats( Array a, int l, int h ) - { - MonsterKill pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpMonsterKill(pv,a[j]) ) - { - i++; - MonsterKill tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - MonsterKill tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_mstats( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_mstats(a,l,h); - qsort_mstats(a,l,p-1); - qsort_mstats(a,p+1,h); - } - - private int partition_lore( Array a, int l, int h ) - { - SWWMLore pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( StringTable.Localize(pv.tag) > StringTable.Localize(a[j].tag) ) - { - i++; - SWWMLore tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMLore tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_lore( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_lore(a,l,h); - qsort_lore(a,l,p-1); - qsort_lore(a,p+1,h); - } - - private bool CmpCollectible( Inventory a, Inventory b ) - { - if ( a.Stamina == b.Stamina ) - { - // alphabetic - return a.GetTag() > b.GetTag(); - } - // descending value - return a.default.Stamina < b.default.Stamina; - } - - private int partition_collectible( Array a, int l, int h ) - { - Inventory pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpCollectible(pv,a[j]) ) - { - i++; - Inventory tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - Inventory tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_collectible( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_collectible(a,l,h); - qsort_collectible(a,l,p-1); - qsort_collectible(a,p+1,h); - } - - private bool CmpAchievement( SWWMAchievement a, SWWMAchievement b ) - { - bool adone = !!(a.state.GetInt()), bdone = !!(b.state.GetInt()); - double afactor = adone?1.:0., bfactor = bdone?1.:0.; - if ( a.progress ) - { - int cur = clamp(a.progress.GetInt(),0,a.maxval); - afactor = cur/double(a.maxval); - } - if ( b.progress ) - { - int cur = clamp(b.progress.GetInt(),0,b.maxval); - bfactor = cur/double(b.maxval); - } - // sort by base index - if ( adone && bdone ) return a.baseindex > b.baseindex; - if ( !adone && !bdone ) - { - // progress sort? - if ( afactor != bfactor ) - return afactor < bfactor; - // sort by base index - return a.baseindex > b.baseindex; - } - // state sort - return bdone; - } - - private int partition_achievements( Array a, int l, int h ) - { - SWWMAchievement pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpAchievement(pv,a[j]) ) - { - i++; - SWWMAchievement tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMAchievement tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_achievements( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_achievements(a,l,h); - qsort_achievements(a,l,p-1); - qsort_achievements(a,p+1,h); - } - override void Ticker() { Super.Ticker(); if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || isclosing ) { // ded (or force close) - EventHandler.SendNetworkEvent("swwmclearalltransactions",consoleplayer); - Close(); + DoClose(); return; } if ( swwm_menupause ) menuactive = Menu.On; @@ -2332,503 +317,65 @@ Class DemolitionistMenu : GenericMenu let bar = SWWMStatusBar(StatusBar); if ( bar ) bar.TickInterpolators(); } - if ( tabs[curtab] == TAB_INVENTORY ) + CheckTransactions(); + // update time string + clockstr = CrimeTime(); + // update money + [muns1, muns2] = SWWMCredits.Get(players[consoleplayer]); + munstr = "\cg¥\c-"; + if ( muns2 > 0 ) munstr.AppendFormat("%d",muns2); + munstr.AppendFormat("%09d",muns1); + if ( (tabs.Size() <= 0) || (curtab == -1) || !tabs[curtab] ) return; + tabs[curtab].Ticker(); + } + + override bool MouseEvent( int type, int mx, int my ) + { + bool res = Super.MouseEvent(type,mx,my); + Vector2 mpos = (mx/hs,my/hs)-origin; + if ( type == MOUSE_Click ) { - invlist.Clear(); - // alphabetically sorted inventory - for ( Inventory inv=players[consoleplayer].mo.Inv; inv; inv=inv.Inv ) + // outside clickable area + if ( (mpos.x < 0) || (mpos.x > ws.x) || (mpos.y < 0) || (mpos.y > ws.y-14) ) return res; + else if ( mpos.y < 14 ) { - if ( (inv.Amount <= 0) || !inv.SpawnState.ValidateSpriteFrame() || (inv is 'Key') || (inv is 'BasicArmor') || (inv is 'HexenArmor') || (inv is 'Powerup') || (inv is 'SWWMArmor') || (!(inv is 'Ammo') && !(inv is 'Weapon') && !inv.bINVBAR) && !(inv is 'HammerspaceEmbiggener') && !(inv is 'SWWMCollectible') && !(inv is 'MagAmmo') || (inv is 'SWWMCollectible') ) continue; - // no hidden weapons - if ( (inv is 'SWWMWeapon') && SWWMWeapon(inv).bHIDEINMENU ) continue; - String tag = inv.GetTag(); - bool greater = false; - for ( int i=0; i tag2 ) continue; - greater = true; - invlist.Insert(i,inv); - break; - } - if ( greater ) continue; - invlist.Push(inv); - } - // re-sort by category - qsort_inventory(invlist,0,invlist.Size()-1); - // crop selection - if ( sel0 >= invlist.Size() ) sel0 = max(0,invlist.Size()-1); - } - else if ( (tabs[curtab] == TAB_STATS) && (sel1 == STAT_KILLS) ) - { - sorted_mstats.Copy(stats.mstats); - qsort_mstats(sorted_mstats,0,sorted_mstats.Size()-1); - } - else if ( tabs[curtab] == TAB_KEYS ) - { - invlist.Clear(); - if ( !deathmatch ) - { - // keys sorted by their index - int n = Key.GetKeyTypeCount(); - for ( int i=0; i pc = invlist[i].Species; - if ( !pc ) continue; - for ( int j=0; j= xx) && (mpos.x < xx+len) ) { - if ( invlist[j].GetClass() != pc ) continue; - invlist.Delete(j); - j--; - if ( i >= j ) i--; - } - } - } - // collectibles, sorted by name - Array cols; - for ( Inventory inv=players[consoleplayer].mo.Inv; inv; inv=inv.Inv ) - { - if ( inv is 'SWWMCollectible' ) - cols.Push(inv); - } - qsort_collectible(cols,0,cols.Size()-1); - invlist.Append(cols); - // crop selection - if ( sel0 >= invlist.Size() ) sel0 = max(0,invlist.Size()-1); - } - else if ( tabs[curtab] == TAB_STORE ) - { - Class lastsel = null; - if ( storelist.Size() > 0 ) lastsel = storelist[sel0]; - storelist.Clear(); - storeunits.Clear(); - // price-sorted buyables/sellables - for ( int i=0; i)(AllActorClasses[i]); - if ( !type ) continue; - // no collectibles - if ( type is 'SWWMCollectible' ) continue; - // no barriers outside doom - if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) continue; - // no gravity/tether outside raven - if ( !(gameinfo.gametype&GAME_RAVEN) && ((type is 'GravitySuppressor') || (type is 'SafetyTether')) ) continue; - // can't sell candygun spares - if ( sub && (type is 'CandyGunSpares') ) continue; - let cur = players[consoleplayer].mo.FindInventory(type); - // skip items we don't own or are depleted if selling - if ( sub && (!cur || (cur.Amount <= 0)) ) continue; - else if ( !sub ) - { - // skip maxed items if buying - if ( cur && (cur.Amount >= cur.MaxAmount) ) continue; - // ignore ammo for weapons not owned if buying - bool notownedammo = false; - if ( type is 'Ammo' ) - { - notownedammo = true; - let amo = (Class)(type); - for ( Inventory inv=players[consoleplayer].mo.Inv; inv; inv=inv.inv ) - { - if ( !(inv is 'Weapon') ) continue; - if ( (Weapon(inv).AmmoType1 == amo) || (Weapon(inv).AmmoType2 == amo) ) - { - notownedammo = false; - break; - } - if ( (inv is 'SWWMWeapon') && SWWMWeapon(inv).UsesAmmo(amo) ) - { - notownedammo = false; - break; - } - } - } - if ( notownedammo ) continue; - } - let inv = GetDefaultByType(type); - // skip unimplemented weapons - if ( type is 'Weapon' ) - { - let ready = inv.FindState("Ready"); - if ( !ready || !ready.ValidateSpriteFrame() ) continue; - } - // ignore child ammos - if ( (type is 'Ammo') && (type.GetParentClass() != 'SWWMAmmo') ) continue; - if ( inv.Stamina == 0 ) continue; - // items with negative stamina can only be sold - if ( (inv.Stamina < 0) && !sub ) continue; - int amt = inv.Amount; - int price = int(abs(inv.Stamina)*(1.+.75*(amt-1))); - if ( type is 'Ammo' ) - { - int maxamt; - if ( sub ) maxamt = cur.Amount; // we can sell ALL our ammo - else maxamt = cur?(cur.MaxAmount-cur.Amount):inv.MaxAmount; - // get the largest affordable child pickup amount (that we need, or we can sell) - for ( int j=0; j)(AllActorClasses[j]); - if ( !type2 || (type2.GetParentClass() != type) ) continue; - let inv2 = GetDefaultByType(type2); - int cprice = int(abs(inv.Stamina)*(1.+.75*(inv2.Amount-1))); - if ( (inv2.Amount > amt) && (inv2.Amount <= maxamt) && (sub || SWWMCredits.CanTake(players[consoleplayer],cprice)) ) - { - price = cprice; - amt = inv2.Amount; - } - } - } - // nuggets can be bought/sold in bulk - else if ( type is 'HealthNuggetItem' ) - { - let inv2 = GetDefaultByType(SWWMHealth(inv).giveme); - int maxamt; - if ( sub ) maxamt = cur.Amount; - else - { - maxamt = (inv2.MaxAmount-players[consoleplayer].Health); - maxamt += cur?(cur.MaxAmount-cur.Amount):inv.MaxAmount; - } - for ( int j=5; j<=20; j+=5 ) - { - int cprice = int(inv.Stamina*(1.+.75*(j-1))); - if ( (j <= maxamt) && (sub || SWWMCredits.CanTake(players[consoleplayer],cprice)) ) - { - price = cprice; - amt = j; - } - } - } - else if ( type is 'ArmorNuggetItem' ) - { - let inv2 = GetDefaultByType(SWWMSpareArmor(inv).giveme); - let cur2 = players[consoleplayer].mo.FindInventory(SWWMSpareArmor(inv).giveme); - int maxamt; - if ( sub ) maxamt = cur.Amount; - else - { - maxamt = cur2?(cur2.MaxAmount-cur2.Amount):inv2.MaxAmount; - maxamt += cur?(cur.MaxAmount-cur.Amount):inv.MaxAmount; - } - for ( int j=5; j<=20; j+=5 ) - { - int cprice = int(inv.Stamina*(1.+.75*(j-1))); - if ( (j <= maxamt) && (sub || SWWMCredits.CanTake(players[consoleplayer],cprice)) ) - { - price = cprice; - amt = j; - } - } - } - // sort by unit price - bool greater = false; - for ( int j=0; j abs(inv2.Stamina) ) continue; - greater = true; - storelist.Insert(j,type); - storeunits.Insert(j,amt); - break; - } - if ( greater ) continue; - storelist.Push(type); - storeunits.Push(amt); - } - // re-sort by category - qsort_store(storelist,storeunits,0,storelist.Size()-1); - // shift back if the last selected item was removed - if ( lastsel && (storelist.Find(lastsel)) >= storelist.Size() ) - sel0 = max(0,sel0-1); - // crop selection - if ( sel0 >= storelist.Size() ) sel0 = max(0,storelist.Size()-1); - } - else if ( tabs[curtab] == TAB_LIBRARY ) - { - // remember last position/size - SWWMLore oldone = null; - int oldsiz = lorelist.Size(); - if ( lorelist.Size() > 0 ) oldone = lorelist[sel0]; - // lore lore lore - lorelist.Clear(); - for ( int i=0; i 0) && (idx < lorelist.Size()) ) - sel0 = idx; - // update ofs so selection stays on-screen - int ofs = max(ofs0-26,0); - if ( sel0 < ofs ) ofs0 = sel0+26; - else if ( sel0 > ofs+26 ) ofs0 = sel0; - } - // add "new entries" message - if ( lorelib.ent.Size() != oldloresiz ) - { - tmsg = StringTable.Localize("$SWWM_NEWLORE"); - tmsgtic = gametic+70; - } - oldloresiz = lorelib.ent.Size(); - } - else if ( tabs[curtab] == TAB_TRADING ) - { - // build player list - int oldnplayers = playerlist.Size(); - playerlist.Clear(); - for ( int i=0; i