Fun with dialogues.

This commit is contained in:
Mari the Deer 2021-09-14 18:40:22 +02:00
commit f6f2854bf6
96 changed files with 1565 additions and 161 deletions

View file

@ -1,5 +1,15 @@
This is just a bit of *"future planning"* for stuff that I ***might*** add later on.
## 1.1.x update *(A Needed Change)*:
Sometime after the 1.1 release, 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.2 update *(The Second Batch)*:
More weapons, because we need 'em.
@ -53,11 +63,6 @@ All the hard stuff *(some of these aren't guaranteed)*.
- **[Hexen]** Demolition Quest *(a JRPG, kinda like early FF / BoF)*
* **Mothgirl summon for Lämp easter egg**
- Layers of White *(Summon the White Lady)*
* **Demolitionist Menu Refactor:**
- Non 16:10 ratio support
- Smooth scrolling
- Much cleaner code
- Modular design
* **Replace all hitscan with *"light projectiles"***
* **Crouch sliding *(+ proper crouch dashing)***
* **Expand third person animations**

View file

@ -531,7 +531,7 @@ The most adorable and huggable plush doll of the cutest and sweetest emperor. Th
### Psykkonovexx (Hexen)
![](docimg/psykkonovexx.png)
One of the many instruments named after the Nine Kings of Kurenai. The Psykkonovexx could be described as something resembling an *"electric bagpipe"*, and it's a staple of modern Anarukon music composition.
One of the many instruments named after the Nine Kings of Kurenai. The Psykkonovexx could be described as something resembling an *"electric bagpipe"*, and is a staple of modern Anarukon music composition.
## The HUD
![](docimg/hudsample.png)

View file

@ -79,7 +79,7 @@ peace,0,no,nothexen
#pene,20,yes,any
#plasma,50,yes,any
plush,10,yes,any
puzzle,20,yes,hexen
puzzle,0,no,hexen
rage,20,yes,any
#rail,16,yes,any
reflect,20,yes,any

View file

@ -16,6 +16,7 @@ Most of the work here is original, but there are some notable exceptions:
* Dark Souls
* Dark Souls 2
* Dark Souls 3
- In addition, a whole lot of stock sounds and internet meme sounds have also been used.
- Some sprites and sounds are taken from (shareware) Wolfenstein 3D.
- This mod uses Gutamatics, by Gutawer. Big thanks.
- Title theme, "Traumatic State", by Teque (which a lot of people just know as "the AS-Golgotha music").

View file

@ -116,6 +116,7 @@ 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
// minimap settings
nosave bool swwm_mm_enable = true; // show a minimap below the score counter

View file

@ -7,5 +7,4 @@ 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_puzzle = 0;
nosave int swwm_progress_sneaky = 0;

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

View file

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 196 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 186 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 964 B

After

Width:  |  Height:  |  Size: 964 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 918 B

After

Width:  |  Height:  |  Size: 918 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 180 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 165 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 169 B

After

Width:  |  Height:  |  Size: 169 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 184 B

After

Width:  |  Height:  |  Size: 184 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 174 B

Before After
Before After

View file

@ -716,7 +716,217 @@ SWWM_DMSPREAD = "Spread:";
SWWM_PLACE1 = "1st";
SWWM_PLACE2 = "2nd";
SWWM_PLACE3 = "3rd";
// NOTE: do not localize these
// "Direct messages"
SWWM_INCOMINGMSG = "Incoming direct message from %s...";
// 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_CYTHONAME = "\cvArchduke Cytho Valathor\c-";
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!";
// 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.";
@ -799,7 +1009,7 @@ SWWM_NEWMISSION = "Mission briefing has been updated.";
SWWM_CHEEVO = "\cxAchievement unlocked: \cf%s\c-";
SWWM_CHEEVOREM = "\cx%s \cxunlocked an achievement: \cf%s\c-";
// intermission tips
SWWM_NINTERTIP = "140";
SWWM_NINTERTIP = "150";
SWWM_INTERTIP = "Tip #%d:";
SWWM_INTERTIP1 = "The Demolitionist is immune to drowning, poison and even fall damage (excluding instant kill pits).";
SWWM_INTERTIP2 = "The Explodium Gun's altfire has an explosive yield proportional to the bullets left in the mag.";
@ -941,6 +1151,16 @@ SWWM_INTERTIP137 = "The Mortal Rifle (\"Mister\" for short) was devised as a pot
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_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.";
SWWM_INTERTIP143 = "If you don't know how to use an item or weapon, remember that you can check the Demolitionist Menu at any time to look up information on it once you pick it up for the first time.";
SWWM_INTERTIP144 = "Remember to stay hydrated.";
SWWM_INTERTIP145 = "Most weapons are explosive, so try not to hurt yourself with them.";
SWWM_INTERTIP146 = "Writing these tips really puts a lot of strain on me.";
SWWM_INTERTIP147 = "Help! I am trapped in a tip factory!";
SWWM_INTERTIP148 = "The Devastation Sigil and the Ragekit can actually be combined. You know, if you want to kill Cyberdemons with a single punch. Really makes you feel like a certain caped bald man.";
SWWM_INTERTIP149 = "Always take breaks during long play sessions. You'll play better and bear less stress.";
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 = "13";
@ -961,7 +1181,7 @@ SWWM_FANART13 = "Marisa7.jpg";
SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness";
SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes";
SWWM_ACHIEVEMENT_ALLCOLL_TAG = "The Full Set";
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtain all collectibles in a single session";
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtain all collectibles in a single save";
SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Collector";
SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtain 100%% items in %d maps";
SWWM_ACHIEVEMENT_ALLKILLS_TAG = "Pest Control";
@ -1107,10 +1327,10 @@ SWWM_ACHIEVEMENT_PENE_TXT = "Strike through %d enemies in a row with a single Gr
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";
SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya plush %d times in the same session";
$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same session";
SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya plush %d times in the same save";
$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same save";
SWWM_ACHIEVEMENT_PUZZLE_TAG = "Even Kirin is Upset";
SWWM_ACHIEVEMENT_PUZZLE_TXT = "Solve %d fractions of \"puzzles\"";
SWWM_ACHIEVEMENT_PUZZLE_TXT = "Solve all fractions of \"puzzles\" in the same save";
SWWM_ACHIEVEMENT_RAGE_TAG = "No Talk me Angy";
SWWM_ACHIEVEMENT_RAGE_TXT = "Use %d Ragekits";
SWWM_ACHIEVEMENT_RAIL_TAG = "Railed Hard";

View file

@ -611,6 +611,39 @@ SWWM_LORETXT_CYRUS =
"\cfThere, I said it. Like, sure, the stuff he makes, cool and all, but GOOD LORD the guy pisses me off with his stupid videogamey nerdy crap. Not letting you go in fully armed and instead deciding to fucking YEET your shit all over the place for you to pick up? That's one thing. Deciding that after every mission you have to RETURN all the stuff you got, that's another, too. Dropping some cash every time you blow up baddies, that I can accept, though, helps cover the costs of everything.\c-\n"
"\n"
"\cfYou know, he may get on my nerves sometimes, but the guy was the first serious business partner I ever had, and damn, he's not that bad outside of all the nerditude he expels... I mean, to be honest, I'm also a big stinky nerd too, and you can quote me on that.\c-";
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"
"\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"
"One day, however, everything changed. A large number of incubi would report being \"creeped out\" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly his colleagues were finding so unreasonable. And that, is how he met \cfElena Yanikov XVI\c-, an \cfAnarukon\c- woman \"struck by the curse of eternal loneliness\", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first.\n"
"\n"
"Some time later, the archduke announced his retirement from sex work, having \"reformed\" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival \cfHouse Irishtanar\c- would crush their hometown in \"protest\". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre.\n"
"\n"
"Since then, he lives in Boston with his wife and their three children. His social media account's purpose has been shifted to communicating the news of what transpires in his home realm, sourced from the many contacts he's gathered over the years, as representative of the subjugated civilian population. Although the vast majority of Earth's population would not take him seriously, not until the \cfDemon Invasion\c- of 2148 began.\n"
"\n"
"Denouncing the \cfUAC\c-'s involvements, he posted about the events on \cfPhobos\c- and \cfDeimos\c- long before the UAC had made them public, and proclaimed that an invasion on Earth was imminent. Still few took him seriously, but one among them was his friend \cfSaya Miyamoto\c-, of \cfAkari Labs\c-. As investor in her company, he had already ensured beforehand that she would have the resources and manpower needed for the task he'd ask of her: Build a combat robot that can fight the invaders.\n"
"\n"
"And thus, through their collaboration, the \cfDemolitionist\c- was born.\n"
"\n"
"\cxSaya's Notes:\c-\n"
"\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome femboy demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c-\n"
"\n"
"\cfAnd yeah, surprise surprise... He's your dad (well, kinda). But you already knew that, didn't you?\c-\n"
"\n"
"\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my body (not that I would mind, kihihihi).\c-\n"
"\n"
"\cfPS: His name is pronounced \"Kaizo\", you kept saying it wrong every time. But don't worry, you're not the first.\c-";
SWWM_LORETAG_DECADEMECH = "Decade Mechanics";
SWWM_LORETAB_DECADEMECH = "Lore";
SWWM_LOREREL_DECADEMECH = "XAnimen;EngineTech;Nedoshiaan;Saya";
@ -673,7 +706,7 @@ SWWM_LORETXT_DEEPIMPACT =
"\cfI know you're hella strong, so you better not pull on it too hard. Wait, that sounds wrong... fuck. Forget I said that. Forget you read it, even.\c-";
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";
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"
@ -686,13 +719,13 @@ SWWM_LORETXT_DEMOLITIONIST =
"\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.\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"
"Each unit is equipped with various third-party components of note, such as the \cfJetBurst™ Impulsors\c- on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of \cfHammerspace™\c- containers, giving them quick access to a wide arsenal, the two being attached to the all-popular \cfSymnatek Magnetic Utility Belt\c-, or the powerful \cfCelestine Microfusion Battery\c-, courtesy of \cfTach-Engine Technology Institute\c-, which provides up to 80 days of autonomy for the unit, at full processing power of its \cfNekuratek IK-349 CPU\c-. More details on the full hardware specifications can be found at the Akari Labs website.\n"
"\n"
"The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n"
"\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on \cfHell\c-.\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n"
"\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"
@ -716,13 +749,13 @@ SWWM_LORETXT_DEMOLITIONIST2 =
"\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.\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"
"Each unit is equipped with various third-party components of note, such as the \cfJetBurst™ Impulsors\c- on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of \cfHammerspace™\c- containers, giving them quick access to a wide arsenal, the two being attached to the all-popular \cfSymnatek Magnetic Utility Belt\c-, or the powerful \cfCelestine Microfusion Battery\c-, courtesy of \cfTach-Engine Technology Institute\c-, which provides up to 80 days of autonomy for the unit, at full processing power of its \cfNekuratek IK-349 CPU\c-. More details on the full hardware specifications can be found at the Akari Labs website.\n"
"\n"
"The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n"
"\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on \cfHell\c-.\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n"
"\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"
@ -746,13 +779,13 @@ SWWM_LORETXT_DEMOLITIONIST3 =
"\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.\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"
"Each unit is equipped with various third-party components of note, such as the \cfJetBurst™ Impulsors\c- on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of \cfHammerspace™\c- containers, giving them quick access to a wide arsenal, the two being attached to the all-popular \cfSymnatek Magnetic Utility Belt\c-, or the powerful \cfCelestine Microfusion Battery\c-, courtesy of \cfTach-Engine Technology Institute\c-, which provides up to 80 days of autonomy for the unit, at full processing power of its \cfNekuratek IK-349 CPU\c-. More details on the full hardware specifications can be found at the Akari Labs website.\n"
"\n"
"The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n"
"\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on \cfHell\c-.\n"
"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n"
"\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"
@ -945,7 +978,7 @@ SWWM_LORETXT_DIVINESPRITE =
"\cfPS: Don't try to eat it.\c-";
SWWM_LORETAG_DOOMGUY = "Doom Marine";
SWWM_LORETAB_DOOMGUY = "People";
SWWM_LOREREL_DOOMGUY = "UAC;Hell;Saya;AkariLabs;Demolitionist";
SWWM_LOREREL_DOOMGUY = "UAC;Hell;Saya;AkariLabs;Demolitionist;Cytho";
SWWM_LORETXT_DOOMGUY =
"\cxFull Name:\c-\n"
"\cf CLASSIFIED\c-\n"
@ -965,7 +998,7 @@ SWWM_LORETXT_DOOMGUY =
"\cxSaya's Notes:\c-\n"
"\cfAlright, IMPORTANT THING: don't get close to this guy, don't say anything to him, do not interact. If you two come across each other, stand back and let him work, or he might just go and start shooting you too.\c-\n"
"\n"
"\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, but there was some mention of him liking rabbits? Cute bunnies?\c-\n"
"\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c-\n"
"\n"
"\cfWell, maybe then, if you pretend those horns of yours are some bun ears, he might not shoot you on sight, who knows...\c-";
SWWM_LORETXT_DOOMGUY2 =
@ -1031,7 +1064,7 @@ SWWM_LORETXT_EBARRIER =
"\cfLil' recommendation from Misa, this one. If it works as well as she says, you won't have much trouble dealing with all that slimy waste those UAC asshats keep leaking around (boy they sure don't care about the environment, huh). Or... well, I guess the firey flames of Hell won't toast your circuits either.\c-";
SWWM_LORETAG_ELLEN = "Yanikov, Elena XXI";
SWWM_LORETAB_ELLEN = "People";
SWWM_LOREREL_ELLEN = "Ibuki;Taro;Ashley;Saya;Anarukon;WhiteScar;Hell;Yui";
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"
@ -1637,7 +1670,7 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN =
"\cfGod just seeing it in action is enough to make me wet. Hell, more than that. 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.\c-";
SWWM_LORETAG_HELL = "Hell";
SWWM_LORETAB_HELL = "Lore";
SWWM_LOREREL_HELL = "Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion";
SWWM_LOREREL_HELL = "Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho";
SWWM_LORETXT_HELL =
"\cxName:\c-\n"
"\cf Hell\c-\n"
@ -3750,7 +3783,7 @@ SWWM_LORETXT_TARO =
"\cfThough, he's also serious af when he wants. And at times like that he basically becomes the Tsukkomi to my Boke. If you don't know what that means you can go look it up, Demo-chan.\c-";
SWWM_LORETAG_TASTYHOAGIE = "Hoagie";
SWWM_LORETAB_TASTYHOAGIE = "Item";
SWWM_LOREREL_TASTYHOAGIE = "Saya;Hell";
SWWM_LOREREL_TASTYHOAGIE = "Saya;Hell;Cytho";
SWWM_LORETXT_TASTYHOAGIE =
"\cxDesignation:\c-\n"
"\cf Hoagie\c-\n"
@ -3875,7 +3908,7 @@ SWWM_LORETXT_UAC3 =
"\cxSaya's Notes:\c-\n"
"\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the \"most important man in the world\", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c-\n"
"\n"
"\cfOh yeah, that little bit at the end of the \"other side's account\" on things? Yeah, you can thank my \"special source\" for that. Cytho-sama has a lot of contacts in Hell, that's for sure. He never told me about it, but I'm guessing he was someone important back in the day, before he came to Earth and \"reformed\". Oh well. Here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c-";
"\cfAnd so, here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c-";
SWWM_LORETAG_UNISSIX = "Unissix, Misa A.";
SWWM_LORETAB_UNISSIX = "People";
SWWM_LOREREL_UNISSIX = "Devanikna;Nedoshiaan;Zanaveth2;Zanaveth3;Nukuri;Saya;Yui;Taro;Ashley;Ellen;Sankaideriha";

View file

@ -199,6 +199,7 @@ 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_MMTITLE = "Minimap Settings";
SWWM_MM_ENABLE = "Show Minimap";
SWWM_MM_ROTATE = "Rotate Minimap";
@ -344,6 +345,7 @@ TOOLTIP_SWWM_ITEMGLOWS = "If enabled, items that are far away from the player wi
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_MM_ENABLE = "Displays a minimap under the score counter.";
TOOLTIP_SWWM_MM_ROTATE = "Rotates the minimap view.";
TOOLTIP_SWWM_MM_GRID = "Shows a 128x128 grid on the minimap.";

View file

@ -603,6 +603,222 @@ SWWM_PLACE3 = "3º";
SWWM_PLACE1_GENDER1 = "1ª";
SWWM_PLACE2_GENDER1 = "2ª";
SWWM_PLACE3_GENDER1 = "3ª";
// "Direct messages"
SWWM_INCOMINGMSG = "Mensaje directo entrante de %s...";
// 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_CYTHONAME = "\cvArchiduque Cytho Valathor\c-";
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!";
// 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";
@ -962,7 +1178,7 @@ SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito";
SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con el peluche de Saya %d veces en la misma partida";
$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida";
SWWM_ACHIEVEMENT_PUZZLE_TAG = "Hasta Kirin está Cabreado";
SWWM_ACHIEVEMENT_PUZZLE_TXT = "Resuelve %d partes de \"puzzles\"";
SWWM_ACHIEVEMENT_PUZZLE_TXT = "Resuelve todas las partes de \"puzzles\" en la misma partida";
SWWM_ACHIEVEMENT_RAGE_TAG = "No Hablo me Enfado";
SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %d Ragekits";
SWWM_ACHIEVEMENT_RAIL_TAG = "Metida de Través";

View file

@ -568,6 +568,36 @@ SWWM_LORETXT_CYRUS =
"\cfHala, ya lo he dicho. Es que sí, vale, lo que hace, mola y tal, pero MADRE DE DIOS es que el tío me saca de quicio con toda su mierda friki de videojuegos. ¿No dejarte ir por ahí con todo equipado, y en vez de eso CISCÁNDOLO TODO POR AHÍ para que lo recojas? Esa es una. Que después de cada misión decida quitarte TODO lo que pillaste, es otra cosa también. Pero, que nos suelte unas pelillas cada vez que revientes a algún maleante, eso puedo aceptarlo, que nos vale para cubrir los costes de todo.\c-\n"
"\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"
"\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"
"Un día, sin embargo, todo cambió. Un gran número de íncubos reportaría verse \"horrorizados\" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que sus colegas encontraban tan irrazonable. Y así fue como conoció a \cfElena Yanikov XVI\c-, una mujer Anarukon \"bajo la maldición de una eterna soltería\", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita.\n"
"\n"
"Un tiempo después, el archiduque anunció su retiro del trabajo sexual, habiéndose \"reformado\" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival \cfCasa Irishtanar\c- arrasaría su pueblo natal como \"protesta\". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre.\n"
"\n"
"Desde entonces, vive en Boston con su mujer y sus tres hijas. El propósito de su cuenta en redes sociales ha cambiado al de comunicar las noticias de aquello que transcurre en su mundo natal, contrastadas con los muchos contactos que ha acumulado durante años, como representante de la subyugada población civil. Aunque la gran mayoría de la población de la Tierra no lo tomaría en serio, no hasta que empezara la \cfInvasión Demoníaca\c- de 2148.\n"
"\n"
"Denunciando la intervención de la \cfUAC\c-, posteó sobre los eventos en \cfFobos\c- y \cfDeimos\c- mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga \cfSaya Miyamoto\c-, de \cfAkari Labs\c-. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combata que lucharía contra los invasores.\n"
"\n"
"Y así, a partir de su colaboración, nació la \cfDemolicionista\c-.\n"
"\n"
"\cxNotas de Saya:\c-\n"
"\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelete femboy demonio. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c-\n"
"\n"
"\cfY sí, sorpresa sorpresa... Es tu padre (bueno, algo así). Pero eso ya lo sabías, ¿verdad?\c-\n"
"\n"
"\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi propio cuerpo (aunque tampoco me importaría, jijijiji).\c-\n"
"\n"
"\cfPS: Su nombre se pronuncia \"Kaizo\", lo has dicho mal todo el rato. Pero no te preocupes, no eres la primera.\c-";
SWWM_LORETXT_DECADEMECH =
"\cxNombre:\c-\n"
"\cf Decade Mechanics\c-\n"
@ -635,13 +665,13 @@ SWWM_LORETXT_DEMOLITIONIST =
"\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.\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"
"Cada unidad está equipada con varios componentes de terceros, tal como los \cfImpulsores JetBurst™\c- a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores \cfHammerspace™\c-, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular \cfCinturón Útil Magnético de Symnatek\c-, o su potente \cfBatería de Microfusión Celestine\c-, cortesía del \cfInstituto Tecnológico Tach-Engine\c-, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su \cfCPU IK-349 de Nekuratek\c-. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.\n"
"\n"
"El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n"
"\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el \cfInfierno\c-.\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n"
"\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"
@ -665,13 +695,13 @@ SWWM_LORETXT_DEMOLITIONIST2 =
"\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.\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"
"Cada unidad está equipada con varios componentes de terceros, tal como los \cfImpulsores JetBurst™\c- a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores \cfHammerspace™\c-, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular \cfCinturón Útil Magnético de Symnatek\c-, o su potente \cfBatería de Microfusión Celestine\c-, cortesía del \cfInstituto Tecnológico Tach-Engine\c-, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su \cfCPU IK-349 de Nekuratek\c-. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.\n"
"\n"
"El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n"
"\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el \cfInfierno\c-.\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n"
"\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"
@ -695,13 +725,13 @@ SWWM_LORETXT_DEMOLITIONIST3 =
"\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.\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"
"Cada unidad está equipada con varios componentes de terceros, tal como los \cfImpulsores JetBurst™\c- a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores \cfHammerspace™\c-, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular \cfCinturón Útil Magnético de Symnatek\c-, o su potente \cfBatería de Microfusión Celestine\c-, cortesía del \cfInstituto Tecnológico Tach-Engine\c-, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su \cfCPU IK-349 de Nekuratek\c-. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.\n"
"\n"
"El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n"
"\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el \cfInfierno\c-.\n"
"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n"
"\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"
@ -900,7 +930,7 @@ SWWM_LORETXT_DOOMGUY =
"\cxNotas de Saya:\c-\n"
"\cfBien, COSA IMPORTANTE: no te acerques a este tío, no le digas nada, no te metas en medio. Si os cruzáis, quédate quieta y deja que trabaje, o si no puede que vaya y te pegue un tiro a ti también.\c-\n"
"\n"
"\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-\n"
"\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-\n"
"\n"
"\cfBueno, entonces, a lo mejor si haces como que esa cornamenta tuya son orejitas de conejo, puede que no te dispare, quien sabe...\c-";
SWWM_LORETXT_DOOMGUY2 =
@ -3582,7 +3612,7 @@ SWWM_LORETXT_UAC3 =
"\cxNotas de Saya:\c-\n"
"\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el \"hombre más importante del mundo\", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c-\n"
"\n"
"\cfOh ya, ¿la parte esa del final, de \"la historia del otro lado\"? Sí, puedes darle las gracias a mi \"fuente especial\". Cytho-sama tiene un monte de contactos en el Infierno, eso seguro. Nunca me ha hablado del tema, pero supongo que fue alguien importante hace tiempo, antes de venir a la Tierra y \"reformarse\". Oh bueno. 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-";
"\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"

View file

@ -198,6 +198,7 @@ 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_MMTITLE = "Opciones de Minimapa";
SWWM_MM_ENABLE = "Mostrar Minimapa";
SWWM_MM_ROTATE = "Rotar Minimapa";
@ -343,6 +344,7 @@ TOOLTIP_SWWM_ITEMGLOWS = "Al activar, los ítems que se encuentren lejos del jug
TOOLTIP_SWWM_NOMAGDROP = "Por defecto, la Demolicionista será un poco consciente con el medio ambiente y no dejará cargadores usados por ahí. Activa si prefieres la basura adicional.";
TOOLTIP_SWWM_AUTOUSEBARRIER = "Cuando esto está activado, el revestimiento elemental será usado automáticamente si es necesario al estar en suelos dañinos.";
TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Fuerza una opción específica de auto-uso de revestimiento para todos los jugadores, o respeta la opción de cada uno.";
TOOLTIP_SWWM_NOMAPMSG = "Activa mensajes especiales animados de personajes en ciertos mapas (usualmente vanilla).";
TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación.";
TOOLTIP_SWWM_MM_ROTATE = "Gira la vista del minimapa.";
TOOLTIP_SWWM_MM_GRID = "Muestra una cuadrícula de 128x128 en el minimapa.";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r17 \cu(Sun 12 Sep 22:41:47 CEST 2021)\c-";
SWWM_SHORTVER="\cw1.1pre r17 \cu(2021-09-12 22:41:47)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r18 \cu(Tue 14 Sep 18:40:22 CEST 2021)\c-";
SWWM_SHORTVER="\cw1.1pre r18 \cu(2021-09-14 18:40:22)\c-";

36
lore/default/cytho.txt Normal file
View file

@ -0,0 +1,36 @@
TAG
Valathor, Cytho
TAB
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-
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.
One day, however, everything changed. A large number of incubi would report being "creeped out" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly his colleagues were finding so unreasonable. And that, is how he met **Elena Yanikov XVI**, an **Anarukon** woman "struck by the curse of eternal loneliness", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first.
Some time later, the archduke announced his retirement from sex work, having "reformed" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival **House Irishtanar** would crush their hometown in "protest". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre.
Since then, he lives in Boston with his wife and their three children. His social media account's purpose has been shifted to communicating the news of what transpires in his home realm, sourced from the many contacts he's gathered over the years, as representative of the subjugated civilian population. Although the vast majority of Earth's population would not take him seriously, not until the **Demon Invasion** of 2148 began.
Denouncing the **UAC**'s involvements, he posted about the events on **Phobos** and **Deimos** long before the UAC had made them public, and proclaimed that an invasion on Earth was imminent. Still few took him seriously, but one among them was his friend **Saya Miyamoto**, of **Akari Labs**. As investor in her company, he had already ensured beforehand that she would have the resources and manpower needed for the task he'd ask of her: Build a combat robot that can fight the invaders.
And thus, through their collaboration, the **Demolitionist** was born.
\cxSaya's Notes:\c-
\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome femboy demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c-
\cfAnd yeah, surprise surprise... He's your dad (well, kinda). But you already knew that, didn't you?\c-
\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my body (not that I would mind, kihihihi).\c-
\cfPS: His name is pronounced "Kaizo", you kept saying it wrong every time. But don't worry, you're not the first.\c-

View file

@ -3,7 +3,7 @@ Demolitionist
TAB
People
REL
AkariLabs;Ibuki;Saya;Zanaveth2;Hell;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion
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-
@ -16,13 +16,13 @@ TXT
\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 **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.
Each unit is equipped with various third-party components of note, such as the **JetBurst™ Impulsors** on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of **Hammerspace™** containers, giving them quick access to a wide arsenal, the two being attached to the all-popular **Symnatek Magnetic Utility Belt**, or the powerful **Celestine Microfusion Battery**, courtesy of **Tach-Engine Technology Institute**, which provides up to 80 days of autonomy for the unit, at full processing power of its **Nekuratek IK-349 CPU**. More details on the full hardware specifications can be found at the Akari Labs website.
The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on **Hell**.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell.
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.
@ -46,13 +46,13 @@ TXT
\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 **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.
Each unit is equipped with various third-party components of note, such as the **JetBurst™ Impulsors** on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of **Hammerspace™** containers, giving them quick access to a wide arsenal, the two being attached to the all-popular **Symnatek Magnetic Utility Belt**, or the powerful **Celestine Microfusion Battery**, courtesy of **Tach-Engine Technology Institute**, which provides up to 80 days of autonomy for the unit, at full processing power of its **Nekuratek IK-349 CPU**. More details on the full hardware specifications can be found at the Akari Labs website.
The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on **Hell**.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell.
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.
@ -76,13 +76,13 @@ TXT
\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 **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.
Each unit is equipped with various third-party components of note, such as the **JetBurst™ Impulsors** on their backs, allowing them to perform rapid mid-air boosts and dashes, a pair of **Hammerspace™** containers, giving them quick access to a wide arsenal, the two being attached to the all-popular **Symnatek Magnetic Utility Belt**, or the powerful **Celestine Microfusion Battery**, courtesy of **Tach-Engine Technology Institute**, which provides up to 80 days of autonomy for the unit, at full processing power of its **Nekuratek IK-349 CPU**. More details on the full hardware specifications can be found at the Akari Labs website.
The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on **Hell**.
The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell.
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.

View file

@ -3,7 +3,7 @@ Doom Marine
TAB
People
REL
UAC;Hell;Saya;AkariLabs;Demolitionist
UAC;Hell;Saya;AkariLabs;Demolitionist;Cytho
TXT
\cxFull Name:\c-
\cf CLASSIFIED\c-
@ -23,7 +23,7 @@ At the moment of this article's writing, the marine has been tasked with fightin
\cxSaya's Notes:\c-
\cfAlright, IMPORTANT THING: don't get close to this guy, don't say anything to him, do not interact. If you two come across each other, stand back and let him work, or he might just go and start shooting you too.\c-
\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, but there was some mention of him liking rabbits? Cute bunnies?\c-
\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c-
\cfWell, maybe then, if you pretend those horns of yours are some bun ears, he might not shoot you on sight, who knows...\c-
TXT

View file

@ -3,7 +3,7 @@ Yanikov, Elena XXI
TAB
People
REL
Ibuki;Taro;Ashley;Saya;Anarukon;WhiteScar;Hell;Yui
Ibuki;Taro;Ashley;Saya;Anarukon;WhiteScar;Hell;Yui;Cytho
TXT
\cxFull Name:\c-
\cf Elena "Ellen" Yanikov XXI\c-

View file

@ -3,7 +3,7 @@ Hell
TAB
Lore
REL
Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion
Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho
TXT
\cxName:\c-
\cf Hell\c-

View file

@ -3,7 +3,7 @@ Hoagie
TAB
Item
REL
Saya;Hell
Saya;Hell;Cytho
TXT
\cxDesignation:\c-
\cf Hoagie\c-

View file

@ -107,4 +107,4 @@ What little information could be recovered from the other side of all this, that
\cxSaya's Notes:\c-
\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the "most important man in the world", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c-
\cfOh yeah, that little bit at the end of the "other side's account" on things? Yeah, you can thank my "special source" for that. Cytho-sama has a lot of contacts in Hell, that's for sure. He never told me about it, but I'm guessing he was someone important back in the day, before he came to Earth and "reformed". Oh well. Here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c-
\cfAnd so, here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c-

30
lore/es/cytho.txt Normal file
View file

@ -0,0 +1,30 @@
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-
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.
Un día, sin embargo, todo cambió. Un gran número de íncubos reportaría verse "horrorizados" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que sus colegas encontraban tan irrazonable. Y así fue como conoció a **Elena Yanikov XVI**, una mujer Anarukon "bajo la maldición de una eterna soltería", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita.
Un tiempo después, el archiduque anunció su retiro del trabajo sexual, habiéndose "reformado" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival **Casa Irishtanar** arrasaría su pueblo natal como "protesta". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre.
Desde entonces, vive en Boston con su mujer y sus tres hijas. El propósito de su cuenta en redes sociales ha cambiado al de comunicar las noticias de aquello que transcurre en su mundo natal, contrastadas con los muchos contactos que ha acumulado durante años, como representante de la subyugada población civil. Aunque la gran mayoría de la población de la Tierra no lo tomaría en serio, no hasta que empezara la **Invasión Demoníaca** de 2148.
Denunciando la intervención de la **UAC**, posteó sobre los eventos en **Fobos** y **Deimos** mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga **Saya Miyamoto**, de **Akari Labs**. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combata que lucharía contra los invasores.
Y así, a partir de su colaboración, nació la **Demolicionista**.
\cxNotas de Saya:\c-
\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelete femboy demonio. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c-
\cfY sí, sorpresa sorpresa... Es tu padre (bueno, algo así). Pero eso ya lo sabías, ¿verdad?\c-
\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi propio cuerpo (aunque tampoco me importaría, jijijiji).\c-
\cfPS: Su nombre se pronuncia "Kaizo", lo has dicho mal todo el rato. Pero no te preocupes, no eres la primera.\c-

View file

@ -12,13 +12,13 @@ TXT
\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 **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**.
Cada unidad está equipada con varios componentes de terceros, tal como los **Impulsores JetBurst™** a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores **Hammerspace™**, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular **Cinturón Útil Magnético de Symnatek**, o su potente **Batería de Microfusión Celestine**, cortesía del **Instituto Tecnológico Tach-Engine**, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su **CPU IK-349 de Nekuratek**. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.
El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el **Infierno**.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno.
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.
@ -42,13 +42,13 @@ TXT
\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 **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**.
Cada unidad está equipada con varios componentes de terceros, tal como los **Impulsores JetBurst™** a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores **Hammerspace™**, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular **Cinturón Útil Magnético de Symnatek**, o su potente **Batería de Microfusión Celestine**, cortesía del **Instituto Tecnológico Tach-Engine**, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su **CPU IK-349 de Nekuratek**. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.
El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el **Infierno**.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno.
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.
@ -72,13 +72,13 @@ TXT
\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 **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**.
Cada unidad está equipada con varios componentes de terceros, tal como los **Impulsores JetBurst™** a sus espaldas, permitiéndoles realizar rápidos impulsos en el aire y evasiones, un par de contenedores **Hammerspace™**, permitiendo el acceso a un vasto arsenal, los dos acoplados al tan popular **Cinturón Útil Magnético de Symnatek**, o su potente **Batería de Microfusión Celestine**, cortesía del **Instituto Tecnológico Tach-Engine**, que provee a la unidad de hasta 80 días de autonomía, al máximo de la capacidad de procesado de su **CPU IK-349 de Nekuratek**. Hay más detalles sobre las especificaciones completas de hardware disponibles en la página web de Akari Labs.
El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el **Infierno**.
La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno.
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.

View file

@ -19,7 +19,7 @@ En el momento de escribir este artículo, el marine ha sido encargado de combati
\cxNotas de Saya:\c-
\cfBien, COSA IMPORTANTE: no te acerques a este tío, no le digas nada, no te metas en medio. Si os cruzáis, quédate quieta y deja que trabaje, o si no puede que vaya y te pegue un tiro a ti también.\c-
\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-
\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-
\cfBueno, entonces, a lo mejor si haces como que esa cornamenta tuya son orejitas de conejo, puede que no te dispare, quien sabe...\c-
TXT

View file

@ -101,4 +101,4 @@ De la poca información que se pudo recuperar del otro lado de todo esto, del pr
\cxNotas de Saya:\c-
\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el "hombre más importante del mundo", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c-
\cfOh ya, ¿la parte esa del final, de "la historia del otro lado"? Sí, puedes darle las gracias a mi "fuente especial". Cytho-sama tiene un monte de contactos en el Infierno, eso seguro. Nunca me ha hablado del tema, pero supongo que fue alguien importante hace tiempo, antes de venir a la Tierra y "reformarse". Oh bueno. 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-
\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-

View file

@ -116,6 +116,7 @@ OptionMenu "SWWMOptionMenu"
Option "$SWWM_SCORENUMS", "swwm_scorenums", "YesNo"
Option "$SWWM_SCOREBONUS", "swwm_scorebonus", "YesNo"
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"

View file

@ -181,6 +181,7 @@ DamageType EndLevel
DoomEdNums
{
// these are placed by a level postprocessor on Kinsie's Test Map, so we don't need 16-bit numbers
// Doom collectibles
4206900 = GenericCube
4206901 = AkariProject
4206902 = LoveSignalsCD
@ -193,16 +194,18 @@ DoomEdNums
4206909 = TastyHoagie
4206910 = IbukiMilk
4206911 = BRCAlbum
// Heretic
// Heretic collectibles
4206912 = DemoPlush
4206913 = Manarokou
4206914 = LithiumNovel
// Hexen
// Hexen collectibles
4206915 = KirinCummies
4206916 = MilkBreads
4206917 = KirinManga
4206918 = KirinPlush
4206919 = Psykkonovexx
// ... and the chancebox
4206920 = Chancebox
// these are also pp stuff
4206990 = SWWMGuard
4206991 = SWWMHans

View file

@ -39,6 +39,7 @@ version "4.6"
#include "zscript/handler/swwm_handler_queues.zsc"
#include "zscript/handler/swwm_handler_replacements.zsc"
#include "zscript/handler/swwm_handler_shaders.zsc"
#include "zscript/handler/swwm_handler_uitick.zsc"
#include "zscript/handler/swwm_handler_vanillaboss.zsc"
#include "zscript/handler/swwm_handler_worldload.zsc"
#include "zscript/handler/swwm_handler_worldthings.zsc"

View file

@ -238,6 +238,19 @@ Class SWWMLevelCompatibility : LevelPostProcessor
SetThingEdNum(i,4206991); // hans grosse
}
break;
// Doom 2 Redux MAP20
case 'C9FFFD855FCF9BD6BC3ABCCA5DC2240A':
// move boss brain so the player telefrags it (lets the mod know this is a death exit)
SetThingXY(497,3296,-96);
AddThing(2035,(3360,-96,0),315); // put a barrel in the hole that was left
break;
// Doom 2 Redux MAP31
case '4A8EAAB2B29CB438ED6EE972D3EEE951':
// contribute to Aximal's illusion by putting a single WolfSS facing away from the player start
// we can re-use thing 0, which is a shotgunner corpse
SetThingEdNum(0,4206992);
SetThingAngle(0,0);
break;
// Kinsie's Test Map
case '0EADB2F82732A968B8513E4DC6138439':
case 'D70250F93C6B6072DA39D9672B37F236':
@ -245,6 +258,9 @@ Class SWWMLevelCompatibility : LevelPostProcessor
// add collectibles
for ( int i=0; i<20; i++ )
AddThing(4206900+i,(1472+64*i,640,0));
// add some chance boxes
for ( int i=0; i<3; i++ )
AddThing(4206920,(3616,1824-64*i,0),180);
break;
}
switch ( checksum )

View file

@ -21,11 +21,6 @@ Class SMW05Ammo : SWWMAmmo
FloatBobStrength 0.25;
Accuracy 20;
}
override void ModifyDropAmount( int dropamount )
{
Super.ModifyDropAmount(dropamount);
Amount = Random[ShellDrop](1,clamp(dropamount,1,3));
}
States
{
Spawn:
@ -94,16 +89,11 @@ Class SheenAmmo : SWWMAmmo
Inventory.MaxAmount 600;
Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 1200;
Ammo.DropAmount 10;
Ammo.DropAmount 3;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 35;
}
override void ModifyDropAmount( int dropamount )
{
Super.ModifyDropAmount(dropamount);
Amount = Random[ShellDrop](1,clamp(dropamount,1,3));
}
States
{
Spawn:

View file

@ -76,6 +76,7 @@ extend Class SWWMHandler
if ( !w || (w == 'SWWMWeapon') ) continue;
let def = GetDefaultByType(w);
if ( def.bCHEATNOTWEAPON ) continue;
if ( w is 'Ynykron' ) continue; // traditionally not given, it's a separate cheat
let ow = players[e.Args[0]].mo.FindInventory(w);
if ( ow && (ow.Amount >= ow.MaxAmount) ) continue;
if ( ow ) ow.Amount = ow.MaxAmount;
@ -148,7 +149,7 @@ extend Class SWWMHandler
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("misc/ammo_pkup",CHAN_VOICE,CHANF_UI);
}
players[e.Args[0]].mo.GiveInventory("HammerspaceEmbiggener",8,true);
players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true);
for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv )
{
if ( !(i is 'Ammo') ) continue;
@ -179,8 +180,27 @@ extend Class SWWMHandler
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("fabricator/use",CHAN_VOICE,CHANF_UI);
}
players[e.Args[0]].mo.CheatGive("all",0);
players[e.Args[0]].health = players[e.Args[0]].mo.health = 1000;
players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true);
for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv )
{
if ( !(i is 'Ammo') ) continue;
i.Amount = i.MaxAmount;
}
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
let w = (Class<SWWMWeapon>)(AllActorClasses[i]);
if ( !w || (w == 'SWWMWeapon') ) continue;
let def = GetDefaultByType(w);
if ( def.bCHEATNOTWEAPON ) continue;
if ( w is 'Ynykron' ) continue; // traditionally not given, it's a separate cheat
let ow = players[e.Args[0]].mo.FindInventory(w);
if ( ow && (ow.Amount >= ow.MaxAmount) ) continue;
if ( ow ) ow.Amount = ow.MaxAmount;
else players[e.Args[0]].mo.GiveInventory(w,def.MaxAmount);
}
players[e.Args[0]].mo.CheatGive("armor",0);
players[e.Args[0]].mo.CheatGive("artifacts",0);
}
else if ( e.Name ~== "swwmflagcheat" )
{
@ -417,9 +437,15 @@ extend Class SWWMHandler
if ( kstr != cht[i].Left(kstr.length()) ) continue;
matchany = true;
if ( kstr != cht[i] ) continue;
if ( (i > 5) && !swwm_oldcheat )
if ( (i > 5) && !swwm_nomapmsg && !swwm_oldcheat )
{
let m = new("SWWMSecretZanavethMessage").Init();
let m = new("SWWMDirectMessage").Init("\chZanaveth\c-","\chZanaveth Nekuraku III\c-","Znv");
m.seqname = "ZNVTXT";
m.seqcnt = 5;
m.znvspecial = true;
m.delay = 80;
m.enddelay = 90;
m.pausedelay = 40;
StatusBar.AttachMessage(m,-1232);
CVar.FindCVar('swwm_oldcheat').SetBool(true);
}
@ -458,7 +484,7 @@ extend Class SWWMHandler
else
{
kcode++;
if ( kcode > 4 ) return true; // eat keypresses from this point
if ( kcode >= 4 ) return true; // eat keypresses from this point
}
}
return false;

View file

@ -1,5 +1,11 @@
// oneliner handling
Class LastLine
{
String type;
int lineno;
}
extend Class SWWMHandler
{
transient String oneliner, onelinersnd;

View file

@ -623,6 +623,15 @@ extend Class SWWMHandler
if ( e.Args[0] != consoleplayer ) return;
checklist.Clear();
}
else if ( e.Name ~== "swwmstorepuzzlecnt" )
{
let s = SWWMStats.Find(players[e.Args[0]]);
if ( s )
{
s.puzzlecnt = e.Args[1];
s.realpuzzlecnt = e.Args[2];
}
}
// cheats go here
else CheatEvent(e);
}

View file

@ -0,0 +1,361 @@
// misc. UI Tick stuff
extend Class SWWMHandler
{
ui bool didstartmsg;
bool doextramsg;
ui bool didextramsg;
private ui void MapstartUITick()
{
if ( !didextramsg && doextramsg )
{
if ( !swwm_nomapmsg )
{
// angry about phase two
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAEVIB";
msg.seqcnt = 2;
msg.delay = 20;
StatusBar.AttachMessage(msg,-1232);
}
didextramsg = true;
}
if ( didstartmsg ) return;
if ( swwm_nomapmsg )
{
didstartmsg = true;
return;
}
int whichboss = WhichVanillaBossMap();
if ( bossmap == MAP_DE1M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAPHOBOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE2M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADEIMOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE3M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADIS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE4M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYATHY";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DMAP07 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADIMPLE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DMAP30 )
{
// rampancy check
bool rampancy = false;
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
if ( AllActorClasses[i].GetClassName() != "Robot_BossBrain" ) continue;
rampancy = true;
break;
}
if ( rampancy )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYARAMPANCY";
msg.seqcnt = 4;
msg.delay = 250;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAIOS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_DLVL08 )
{
let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHONERVE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_EVMAP30 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAEVIA";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HE1M8_HE4M8 )
{
if ( level.mapname ~== "E1M8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMAW";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAHEADS";
msg.seqcnt = 6;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_HE2M8_HE5M8 )
{
if ( level.mapname ~== "E2M8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMASTERS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYABULLS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_HE3M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADSPARIL";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP38 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYACLERICA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYACLERICB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYACLERICC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( bossmap == MAP_HMAP36 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAFIGHTER";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP37 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMAGE";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP12 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAHYPO";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP40 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAKORAXA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYAKORAXB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYAKORAXC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYAKORAXD";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYAKORAXE";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( (bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55) && (level.mapname ~== "MAP48") )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYACONSTABLEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYACONSTABLEB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYACONSTABLEC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYACONSTABLED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( bossmap == MAP_HMAP60 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADEATHKINGS";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_NONE ) // gotta get checksums here
{
String csum = level.GetChecksum();
// SIGIL E5M8
if ( (csum ~== "3D72FD17F36D2D43FD9A21E6E57EE357")
|| (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA")
|| (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") )
{
let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHOSIGIL";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
// Deathkings
// Blight
else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYABLIGHTA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYABLIGHTB";
msg2.seqcnt = 1;
msg2.delay = 5;
msg2.enddelay = 15;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYABLIGHTC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
// Nave
else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYANAVEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYANAVEB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYANAVEC";
msg2.seqcnt = 1;
msg2.delay = 5;
msg2.enddelay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYANAVED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYANAVEE";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYANAVEF";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
}
didstartmsg = true;
}
}

View file

@ -43,7 +43,7 @@ extend Class SWWMHandler
MAP_EVMAP30 // eviternity
};
private int WhichVanillaBossMap()
private clearscope int WhichVanillaBossMap() const
{
String mapsum = level.GetChecksum();
if ( (mapsum ~== "94500F4B006B316FE03AC46865AEABF8")
@ -319,6 +319,7 @@ extend Class SWWMHandler
if ( trk ) trk.bBOSS = true;
bosstag = "$BT_ARCHANGELUS";
e.Thing.GiveInventory('EndgameBossMarker',1);
doextramsg = true;
}
}
}

View file

@ -1,5 +1,22 @@
// WorldLoaded/WorldUnloaded events
Class RampancyLogonDummy : Actor
{
States
{
Spawn:
TNT1 A 7;
TNT1 AAAAAAAAAAAAAAAA 1
{
for ( int i=0; i<16; i++ )
A_Log("Remote login failed.");
}
TNT1 A 7;
TNT1 A 1 A_Log("\cgWARNING:\cj 256 failed remote login attempts have been reported in the last second.\c-");
Stop;
}
}
extend Class SWWMHandler
{
// list contains a sector that belongs to each portal group
@ -215,6 +232,24 @@ extend Class SWWMHandler
if ( (level.GetChecksum() ~== "F286BABF0D152259CD6B996E8920CA70")
|| (level.GetChecksum() ~== "A52BD2038CF814101AAB7D9C78F9ACE2") )
level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DVACATION_UNFUCK'));
// rampancy boss brain fix (repeatedly triggering "map clear")
let ti = ThinkerIterator.Create("Actor");
Actor a, brain;
bool haseye = false;
while ( a = Actor(ti.Next()) )
{
if ( a.GetClassName() == "Robot_BossEye" )
haseye = true;
if ( a.GetClassName() == "Robot_BossBrain" )
brain = a;
}
if ( haseye && brain )
{
brain.bCOUNTKILL = true;
level.total_monsters++;
// while we're at it
Actor.Spawn("RampancyLogonDummy");
}
// setup cached lockdefs data
let cli = SWWMCachedLockInfo.GetInstance();
if ( cli.ent.Size() == 0 ) SetupLockdefsCache(cli);
@ -327,7 +362,7 @@ extend Class SWWMHandler
// spawn loot
if ( !deathmatch ) Chancebox.SpawnChanceboxes();
// list map keys
let ti = ThinkerIterator.Create("Key");
ti = ThinkerIterator.Create("Key");
Key k;
while ( k = Key(ti.Next()) )
{

View file

@ -56,7 +56,8 @@ Class SWWMStatusBar : BaseStatusBar
String midstr;
int midtic, midtype;
bool koraxhack;
bool koraxhack, mainframehack;
int puzzlecnt, realpuzzlecnt;
double minimapzoom, oldminimapzoom;
// minimap constants
@ -118,6 +119,7 @@ Class SWWMStatusBar : BaseStatusBar
override bool ProcessMidPrint( Font fnt, String msg, bool bold )
{
SWWMDirectMessage m, m2;
// 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") )
@ -126,11 +128,75 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer);
koraxline = true;
m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m.seqname = "SAYAGREETA";
m.seqcnt = 3;
m.delay = 120;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "SAYAGREETB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "SAYAGREETC";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "SAYAGREETD";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "SAYAGREETE";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","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("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m.seqname = "SAYABLOODA";
m.seqcnt = 2;
m.delay = 120;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "SAYABLOODB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "SAYABLOODC";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","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;
@ -138,6 +204,24 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer);
koraxline = true;
m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m.seqname = "SAYAGAMEA";
m.seqcnt = 2;
m.delay = 120;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "SAYAGAMEB";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","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;
@ -145,6 +229,33 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer);
koraxline = true;
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINWORSHIPA";
m.seqcnt = 1;
m.delay = 120;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","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("\cxKirin\c-","\cxKirin Xanai\c-","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("\cgSaya\c-","\cgSaya Miyamoto\c-","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;
@ -152,6 +263,46 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer);
koraxline = true;
m = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m.seqname = "SAYAMASTERSA";
m.seqcnt = 2;
m.delay = 120;
m.enddelay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "SAYAMASTERSB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "SAYAMASTERSC";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "SAYAMASTERSD";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "SAYAMASTERSE";
m2.seqcnt = 1;
m2.delay = 40;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "SAYAMASTERSF";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
}
if ( koraxline )
{
@ -160,28 +311,247 @@ Class SWWMStatusBar : BaseStatusBar
koraxhack = false;
return true;
}
bool ispuzzle = false;
let s = SWWMStats.Find(players[consoleplayer]);
if ( s )
{
puzzlecnt = s.puzzlecnt;
realpuzzlecnt = s.realpuzzlecnt;
}
// check for puzzle solving lines (oh god why), and increment the achievement
if ( (msg == StringTable.Localize("$TXT_ACS_MAP04_9_ONEHA"))
if ( ((level.mapname ~== "MAP04") || (level.mapname ~== "MAP05"))
&& ((msg == StringTable.Localize("$TXT_ACS_MAP04_9_ONEHA"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP04_11_ONETH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP05_6_ONETH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP08_6_ONESI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP05_6_ONETH"))) )
{
if ( puzzlecnt >= 4 ) puzzlecnt = 0;
puzzlecnt++;
realpuzzlecnt++;
ispuzzle = true;
}
else if ( ((level.mapname ~== "MAP08") || (level.mapname ~== "MAP09") || (level.mapname ~== "MAP10"))
&& ((msg == StringTable.Localize("$TXT_ACS_MAP08_6_ONESI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP09_6_ONESI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP10_6_ONESI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP28_6_ONENI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP10_6_ONESI"))) )
{
if ( (puzzlecnt < 4) || (puzzlecnt >= 10) ) puzzlecnt = 4;
puzzlecnt++;
realpuzzlecnt++;
ispuzzle = true;
}
else if ( ((level.mapname ~== "MAP28") || (level.mapname ~== "MAP30") || (level.mapname ~== "MAP34"))
&& ((msg == StringTable.Localize("$TXT_ACS_MAP28_6_ONENI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP30_6_ONENI"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP34_1_ONENI"))
// deathkings
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_1_THREE"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP34_1_ONENI"))) )
{
if ( (puzzlecnt < 10) || (puzzlecnt >= 19) ) puzzlecnt = 10;
puzzlecnt++;
realpuzzlecnt++;
ispuzzle = true;
}
// deathkings
else if ( ((level.mapname ~== "MAP44") || (level.mapname ~== "MAP46"))
&& ((msg == StringTable.Localize("$TXT_ACS_MAP44_1_THREE"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_2_TWOMO"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_3_ONEMO"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_4_THEPU"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_10_ONETH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP44_11_TWOTH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP46_8_ONEFO"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP51_8_ONETH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP46_8_ONEFO"))) )
{
if ( (puzzlecnt < 19) || (puzzlecnt >= 30) ) puzzlecnt = 19;
puzzlecnt++;
realpuzzlecnt++;
ispuzzle = true;
}
else if ( (level.mapname ~== "MAP51")
&& ((msg == StringTable.Localize("$TXT_ACS_MAP51_8_ONETH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP51_9_TWOTH"))
|| (msg == StringTable.Localize("$TXT_ACS_MAP51_10_THECR")) )
SWWMUtility.AchievementProgressInc('swwm_progress_puzzle',1,players[consoleplayer]);
|| (msg == StringTable.Localize("$TXT_ACS_MAP51_10_THECR"))) )
{
if ( (puzzlecnt < 30) || (puzzlecnt >= 34) ) puzzlecnt = 30;
puzzlecnt++;
realpuzzlecnt++;
ispuzzle = true;
}
if ( ispuzzle )
{
EventHandler.SendNetworkEvent("swwmstorepuzzlecnt",consoleplayer,puzzlecnt,realpuzzlecnt);
int tpuz = SWWMUtility.IsDeathkings()?15:19;
if ( realpuzzlecnt >= tpuz ) SWWMUtility.MarkAchievement('swwm_achievement_puzzle',players[consoleplayer]);
if ( !swwm_nomapmsg )
{
switch ( puzzlecnt )
{
case 1:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEA";
m.seqcnt = 2;
m.delay = 90;
AttachMessage(m,-1232);
break;
case 2:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEB";
m.seqcnt = 1;
m.delay = 80;
AttachMessage(m,-1232);
break;
case 3:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEC";
m.seqcnt = 2;
m.delay = 70;
AttachMessage(m,-1232);
break;
case 5:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLED";
m.seqcnt = 2;
m.delay = 70;
AttachMessage(m,-1232);
break;
case 8:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEE";
m.seqcnt = 2;
m.delay = 60;
AttachMessage(m,-1232);
break;
case 11:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEF";
m.seqcnt = 3;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLEG";
m2.seqcnt = 1;
m.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "KIRINPUZZLEH";
m2.seqcnt = 1;
m.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLEI";
m2.seqcnt = 2;
m.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
break;
case 20:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEJ";
m.seqcnt = 2;
m.delay = 80;
AttachMessage(m,-1232);
break;
case 30:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLEK";
m.seqcnt = 1;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "KIRINPUZZLEL";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "KIRINPUZZLEM";
m2.seqcnt = 1;
m2.delay = 10;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLEN";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "KIRINPUZZLEO";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLEP";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
m2.seqname = "KIRINPUZZLEQ";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
break;
case 31:
m = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m.seqname = "KIRINPUZZLER";
m.seqcnt = 3;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLES";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
m2.seqname = "KIRINPUZZLET";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
m2.seqname = "KIRINPUZZLEU";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
break;
}
}
}
// rampancy fun stuff
bool mainframeline = false;
if ( (msg == StringTable.Localize("$AISPAWN_TEXT1"))
|| (msg == StringTable.Localize("$AISPAWN_TEXT2"))
|| (msg == StringTable.Localize("$AISEE_TEXT"))
|| (msg == StringTable.Localize("$AIACTIVE_TEXT1"))
|| (msg == StringTable.Localize("$AIACTIVE_TEXT2"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT1"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT2"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT3"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT4"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT5"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT6"))
|| (msg == StringTable.Localize("$AIPAIN_TEXT7")) )
mainframeline = true;
if ( mainframeline )
{
mainframehack = true;
Console.Printf(msg);
mainframehack = false;
return true;
}
if ( !fnt || (fnt == smallfont) )
{
midstr = msg;
@ -212,6 +582,12 @@ Class SWWMStatusBar : BaseStatusBar
printlevel = PRINT_CHAT;
outline = "\cmKorax\c-: "..outline;
}
if ( mainframehack )
{
// same here, hi yholl
printlevel = PRINT_CHAT;
outline = "\cmAI Mainframe\c-: "..outline;
}
let m = new("MsgLine");
m.str = outline.Left(outline.Length()-1); // strip newline
m.type = printlevel;
@ -1686,7 +2062,8 @@ Class SWWMStatusBar : BaseStatusBar
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();
}
if ( am_showtotaltime )
// 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);

View file

@ -114,12 +114,6 @@ Class SWWMOneLiner : HUDMessageBase
}
}
Class LastLine
{
String type;
int lineno;
}
// Screen flashes from DT
Class GenericFlash : HUDMessageBase
{
@ -251,39 +245,47 @@ Class SWWMSewerCount : HUDMessageBase
}
}
// Secret dialogue
Class SWWMSecretZanavethMessage : HUDMessageBase
// Used sparingly for some events
Class SWWMDirectMessage : HUDMessageBase
{
TextureID MessageBox, BG, Avatar, Blink[2], Talk[5], Noiz[4];
transient Font fnt;
transient Font fnt, jpfnt;
transient BrokenLines l;
int seqnum, delay, charcnt, blinktics, talktics, talkframe;
String seqname, chrname, chrfullname;
bool znvspecial; // seqnum 2 string replacement
int seqnum, seqcnt, delay, charcnt, blinktics, talktics, talkframe;
int enddelay, pausedelay;
int rss;
int fadein, fadeout;
Vector2 ss, hs, origin;
SWWMDirectMessage nextmsg; // for chaining messages together from different characters
bool nextdirect; // skips directly to next message without delays or fades
private int GetRandom()
{
return (rss = (rss<<1)*35447+(rss/87));
}
SWWMSecretZanavethMessage Init()
virtual SWWMDirectMessage Init( String chrn, String chrfn, String texn )
{
MessageBox = TexMan.CheckForTexture("graphics/HUD/ZnvMessageBox.png",TexMan.Type_Any);
BG = TexMan.CheckForTexture("graphics/HUD/ZnvAvatarBG.png",TexMan.Type_Any);
Avatar = TexMan.CheckForTexture("graphics/HUD/ZnvAvatar.png",TexMan.Type_Any);
MessageBox = TexMan.CheckForTexture("graphics/HUD/DM/DirectMessageBox.png",TexMan.Type_Any);
BG = TexMan.CheckForTexture("graphics/HUD/DM/"..texn.."AvatarBG.png",TexMan.Type_Any);
Avatar = TexMan.CheckForTexture("graphics/HUD/DM/"..texn.."Avatar.png",TexMan.Type_Any);
for ( int i=0; i<2; i++ )
Blink[i] = TexMan.CheckForTexture("graphics/HUD/ZnvAvatarBlink"..i..".png",TexMan.Type_Any);
Blink[i] = TexMan.CheckForTexture("graphics/HUD/DM/"..texn.."AvatarBlink"..i..".png",TexMan.Type_Any);
for ( int i=0; i<5; i++ )
Talk[i] = TexMan.CheckForTexture("graphics/HUD/ZnvAvatarTalk"..i..".png",TexMan.Type_Any);
Talk[i] = TexMan.CheckForTexture("graphics/HUD/DM/"..texn.."AvatarTalk"..i..".png",TexMan.Type_Any);
for ( int i=0; i<4; i++ )
Noiz[i] = TexMan.CheckForTexture("graphics/HUD/ZnvStatic"..i..".png",TexMan.Type_Any);
Noiz[i] = TexMan.CheckForTexture("graphics/HUD/DM/DirectMessageStatic"..i..".png",TexMan.Type_Any);
chrname = chrn;
chrfullname = chrfn;
seqnum = -1;
delay = 80;
charcnt = 0;
blinktics = 30;
talktics = 0;
talkframe = -1;
enddelay = 40;
pausedelay = 30;
rss = 1232;
return self;
}
@ -291,20 +293,20 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
private void SetText()
{
String txt;
if ( seqnum == 2 )
if ( (seqnum == 2) && znvspecial )
{
// replace with number of years since 2010
int nyears = SystemTime.Format("%Y",SystemTime.Now()).ToInt()-2010;
txt = String.Format(StringTable.Localize("$SWWM_ZNVTXT"..seqnum),nyears);
txt = String.Format(StringTable.Localize("$SWWM_"..seqname..seqnum),nyears);
}
else txt = StringTable.Localize("$SWWM_ZNVTXT"..seqnum);
else txt = StringTable.Localize("$SWWM_"..seqname..seqnum);
l = fnt.BreakLines(txt,220);
// append to the player's chat log
let bar = SWWMStatusBar(StatusBar);
if ( bar )
{
let l = new("MsgLine");
l.str = "\chZanaveth\c-: "..txt;
l.str = chrname..": "..txt;
l.tic = level.totaltime;
l.rep = 1;
l.type = PRINT_CHAT;
@ -315,6 +317,7 @@ Class SWWMSecretZanavethMessage : 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);
@ -322,7 +325,7 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
{
if ( cur <= 0 ) break;
String part = l.StringAt(i).Left(cur);
Screen.DrawText(fnt,Font.CR_WHITE,pos.x,pos.y,part,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawText((language~=="jp")?jpfnt:fnt,Font.CR_WHITE,pos.x,pos.y,part,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
pos.y += 13;
cur -= l.StringAt(i).Length();
}
@ -343,7 +346,7 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
}
Screen.DrawTexture(BG,false,origin.x+2,origin.y+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(Avatar,false,origin.x+2,origin.y+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( (seqnum > 0) && (seqnum < 6) )
if ( (seqnum > 0) && (seqnum < (seqcnt+1)) )
{
if ( blinkframe >= 0 ) Screen.DrawTexture(Blink[blinkframe],false,origin.x+2,origin.y+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( talkframe >= 0 ) Screen.DrawTexture(Talk[talkframe],false,origin.x+2,origin.y+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
@ -382,7 +385,7 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
{
seqnum++;
charcnt = 0;
if ( seqnum > 5 ) S_StartSound("misc/chat",CHAN_VOICE,CHANF_UI,1.,0.);
if ( (seqnum > seqcnt) && !nextdirect ) S_StartSound("misc/chat",CHAN_VOICE,CHANF_UI,1.,0.);
else SetText();
return;
}
@ -406,7 +409,11 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
int idx = punctuation.IndexOf(ch);
if ( idx >= 0 ) delay += (idx*2)+1;
charcnt++;
if ( charcnt >= TotalLength() ) delay += (seqnum==5)?90:40;
// utf-8 skipping (naive but works, as we don't have to EXPECT invalid sequences in the input)
if ( ch.ByteAt(0)&0xE0 == 0xC0 ) charcnt++;
else if ( ch.ByteAt(0)&0xF0 == 0xE0 ) charcnt += 2;
else if ( ch.ByteAt(0)&0xF8 == 0xF0 ) charcnt += 3;
if ( charcnt >= TotalLength() ) delay += (seqnum==seqcnt)?enddelay:pausedelay;
}
override bool Tick()
@ -416,6 +423,7 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
delay--;
if ( delay <= 0 )
{
Console.Printf(StringTable.Localize("$SWWM_INCOMINGMSG"),chrfullname);
S_StartSound("misc/chat",CHAN_VOICE,CHANF_UI,1.,0.);
seqnum++;
}
@ -433,7 +441,11 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
talktics--;
}
else talkframe = -1;
if ( seqnum > 6 ) return true;
if ( seqnum > (seqcnt+1) )
{
if ( nextmsg ) StatusBar.AttachMessage(nextmsg,-1232);
return true;
}
if ( seqnum == 0 )
{
fadein++;
@ -444,8 +456,14 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
}
return false;
}
if ( seqnum == 6 )
if ( seqnum == (seqcnt+1) )
{
if ( nextmsg && nextdirect )
{
nextmsg.seqnum = 1;
StatusBar.AttachMessage(nextmsg,-1232);
return true;
}
fadeout++;
if ( fadeout > 30 ) seqnum++;
return false;
@ -461,17 +479,17 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
override void Draw( int bottom, int visibility )
{
if ( (seqnum < 0) || (seqnum > 6) ) return;
if ( (seqnum < 0) || (seqnum > (seqcnt+1)) ) return;
double alph = 1.;
if ( seqnum == 0 ) alph = fadein/15.;
else if ( seqnum == 6 ) alph = 1.-fadeout/30.;
else if ( seqnum == (seqcnt+1) ) alph = 1.-fadeout/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);
origin = (int(ss.x-270)/2,swwm_hudmargin+60);
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 > 5) ) return;
if ( (seqnum < 1) || (seqnum > seqcnt) ) return;
DrawAvatar();
DrawText();
}

View file

@ -18,7 +18,7 @@ Class RedShell : SWWMAmmo
Inventory.MaxAmount 30;
Ammo.BackpackAmount 2;
Ammo.BackpackMaxAmount 80;
Ammo.DropAmount 2;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
@ -73,7 +73,7 @@ Class GreenShell : SWWMAmmo
Inventory.MaxAmount 25;
Ammo.BackpackAmount 2;
Ammo.BackpackMaxAmount 60;
Ammo.DropAmount 2;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
@ -609,11 +609,6 @@ Class HellblazerCrackshots : SWWMAmmo
Height 22;
Accuracy 75;
}
override void ModifyDropAmount( int dropamount )
{
Ammo.ModifyDropAmount(dropamount);
Amount = min(Amount,2);
}
States
{
Spawn:
@ -671,11 +666,6 @@ Class HellblazerRavagers : SWWMAmmo
Height 22;
Accuracy 80;
}
override void ModifyDropAmount( int dropamount )
{
Ammo.ModifyDropAmount(dropamount);
Amount = min(Amount,1);
}
States
{
Spawn:
@ -722,11 +712,6 @@ Class HellblazerWarheads : SWWMAmmo
Height 22;
Accuracy 85;
}
override void ModifyDropAmount( int dropamount )
{
Ammo.ModifyDropAmount(dropamount);
Amount = min(Amount,1);
}
States
{
Spawn:
@ -777,11 +762,6 @@ Class SparkUnit : SWWMAmmo
Height 22;
Accuracy 70;
}
override void ModifyDropAmount( int dropamount )
{
Ammo.ModifyDropAmount(dropamount);
Amount = min(Amount,1);
}
States
{
Spawn:

View file

@ -190,6 +190,9 @@ Class SayaBean : SWWMCollectible
}
Class MothPlushy : SWWMCollectible
{
bool activated; // she knows where you are
bool present; // she's here (TBD 1.4)
Default
{
Tag "$T_MOTHPLUSH";

View file

@ -613,7 +613,7 @@ Class mkFlyingGib : Actor
A_Bleed();
A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP);
// oops we got squished
if ( floorz >= ceilingz ) ExplodeMissile(null,null);
if ( floorz+height >= ceilingz ) ExplodeMissile(null,null);
}
Goto Spawn;
Death:

View file

@ -236,10 +236,10 @@ Class LoveHeart : Actor
double fl, cl;
if ( BlockingLine.sidedef[1] )
{
fl = min(BlockingLine.frontsector.floorplane.ZAtPoint(pos.xy),BlockingLine.backsector.floorplane.ZAtPoint(pos.xy));
cl = max(BlockingLine.frontsector.ceilingplane.ZAtPoint(pos.xy),BlockingLine.backsector.ceilingplane.ZAtPoint(pos.xy));
if ( max(floorz,pos.z) < fl ) LinePart = 0;
else if ( min(ceilingz,pos.z+height) > cl ) LinePart = 2;
fl = max(BlockingLine.frontsector.floorplane.ZAtPoint(pos.xy),BlockingLine.backsector.floorplane.ZAtPoint(pos.xy));
cl = min(BlockingLine.frontsector.ceilingplane.ZAtPoint(pos.xy),BlockingLine.backsector.ceilingplane.ZAtPoint(pos.xy));
if ( max(floorz,pos.z) < fl ) LinePart = 2;
else if ( min(ceilingz,pos.z+height) > cl ) LinePart = 0;
else LinePart = 1;
}
else
@ -313,6 +313,7 @@ Class LoveHeart : Actor
{
if ( Hit3DFloor )
{
// TODO connected textures for upper/lower
if ( Hit3DFloor.flags&F3DFloor.FF_UPPERTEXTURE ) HitLine.sidedef[LineSide].SetTexture(0,replacewith);
else if ( Hit3DFloor.flags&F3DFloor.FF_LOWERTEXTURE ) HitLine.sidedef[LineSide].SetTexture(2,replacewith);
else Hit3DFloor.master.sidedef[0].SetTexture(1,replacewith);

View file

@ -131,6 +131,7 @@ Class SWWMHandler : EventHandler
FlashUITick();
VanillaBossUITick();
CheatUITick();
MapstartUITick();
}
override void WorldLinePreActivated( WorldEvent e )

View file

@ -34,9 +34,7 @@ Class SWWMMonster : Actor abstract
if ( whomst is 'Inventory' ) whomst = Inventory(whomst).Owner;
if ( whomst )
{
if ( whomst.bMISSILE || (flags&DMG_INFLICTOR_IS_PUFF) )
guesspos = level.Vec3Diff(pos,whomst.pos);
else guesspos = level.Vec3Diff(pos,whomst.Vec3Offset(0,0,whomst.Height/2));
guesspos = level.Vec3Diff(pos,whomst.Vec3Offset(0,0,whomst.Height/2));
guesspos.x = clamp(guesspos.x,-radius,radius);
guesspos.y = clamp(guesspos.y,-radius,radius);
guesspos.z = clamp(guesspos.z,0,height);
@ -325,7 +323,6 @@ Class SWWMBossBrain : BossBrain
else if ( (a.Health > 0) && (a.bBossSpawned || a.bCOUNTKILL) )
a.DamageMobj(self,self,a.Health,'EndMii',DMG_FORCED|DMG_THRUSTLESS);
}
}
Default

View file

@ -536,6 +536,7 @@ Class Demolitionist : PlayerPawn
{
if ( d.Hit3DFloor )
{
// TODO connected textures for upper/lower
if ( d.Hit3DFloor.flags&F3DFloor.FF_UPPERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(0,replacewith);
else if ( d.Hit3DFloor.flags&F3DFloor.FF_LOWERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(2,replacewith);
else d.Hit3DFloor.master.sidedef[0].SetTexture(1,replacewith);

View file

@ -45,8 +45,10 @@ Class SWWMStats : Thinker
int plushuses;
// for pistol start info (to avoid it within hubs)
int lastcluster;
// for trash removal chievement
// for trash removal achievement
int nazicleanup;
// stored for hexen
int puzzlecnt, realpuzzlecnt;
bool GotWeapon( Class<Weapon> which )
{

View file

@ -1538,11 +1538,11 @@ Class SWWMUtility
// shorthand for some of these checks (these are generally used by the mission briefing system)
static bool IsKnownMap()
{
if ( (gameinfo.gametype&GAME_DOOM) && (IsKnownCustomWAD() || CheckMD5List("vanilladoom.list")) )
if ( (gameinfo.gametype&GAME_DOOM) && (IsKnownCustomWAD() || CheckMD5List("vanilladoom.lst")) )
return true;
if ( (gameinfo.gametype&GAME_HERETIC) && CheckMD5List("vanillaheretic.list") )
if ( (gameinfo.gametype&GAME_HERETIC) && CheckMD5List("vanillaheretic.lst") )
return true;
if ( (gameinfo.gametype&GAME_HEXEN) && CheckMD5List("vanillahexen.list") )
if ( (gameinfo.gametype&GAME_HEXEN) && CheckMD5List("vanillahexen.lst") )
return true;
return false;
}
@ -1600,7 +1600,7 @@ Class SWWMUtility
static bool CheckMD5List( String fname )
{
String csum = level.GetChecksum();
let lmp = Wads.FindLump(fname);
let lmp = Wads.CheckNumForFullName(fname);
if ( lmp == -1 ) return false;
String dat = Wads.ReadLump(lmp);
// fucking Windows