diff --git a/ExtendedLore.md b/ExtendedLore.md index ac8640b4b..2d6456995 100644 --- a/ExtendedLore.md +++ b/ExtendedLore.md @@ -256,8 +256,8 @@ although people around her remark that her BO is "kind of nice actually". She has an older brother, Taro, and a younger sister, Yui. Thanks to the immortal blood of her mother, her aging "froze" at the age of 25, and -absolutely hates the fact no longer growing means she's stuck being 5'5" and -having a cup size of A. +absolutely hates the fact no longer growing means she's stuck being 5 feet and +having a cup size of B. Among other hobbies, Saya really enjoys writing. Her first foray into manga, "My Maid is a Sex Robot", became successful enough to get an anime adaptation. diff --git a/README.md b/README.md index 1cdcaace2..4f53f84f0 100644 --- a/README.md +++ b/README.md @@ -75,21 +75,21 @@ happened. A pimped up jackhammer. Primary fire drills at whatever you're facing. -Secondary fire pulls the drill head back all the way in, then on button release +Secondary fire pulls the drill bit back all the way in, then on button release pushes it back out with immense force. This will pretty much pierce a hole -through anything, plus there's a random chance you'll lose grip on the weapon -and it'll go flying until it hits something. +through anything, but if you miss there's a chance you'll lose grip on the +weapon and it'll go flying until it hits something. ### Deep Impact (slot 1), replaces Fist, Staff, Hexen starting weapons The signature SWWM melee weapon, an Impact Hammer on steroids. Primary fire is your usual compressed air push, you can use it to deflect -projectiles, push away enemies, or help yourself jump higher. +projectiles or push away enemies that block your path. -Secondary fire is now hold-to-charge. The device compresses air as hard as it -can, then releases a massive airblast at Mach 3 that will tear apart everything -on its way. +Secondary fire is a charged shot. The device compresses air as hard as it can, +then releases a massive airblast at Mach 3 that will tear apart everything on +its way. Reload pumps up more compressed air, for use by the primary fire. Note that after using secondary fire you will always be without any air for primary. diff --git a/credits.txt b/credits.txt index e892df77f..ba044a773 100644 --- a/credits.txt +++ b/credits.txt @@ -7,6 +7,7 @@ Most of the work here is original, but there are some notable exceptions: * Unreal * Unreal Tournament * Unreal Tournament 2004 + * Unreal Tournament 3 * Deus Ex * Thief * System Shock 2 diff --git a/decaldef.txt b/decaldef.txt index cb973274d..6e4989d37 100644 --- a/decaldef.txt +++ b/decaldef.txt @@ -60,8 +60,8 @@ decal ImpactMark shade "00 00 00" randomflipx randomflipy - x-scale 0.5 - y-scale 0.5 + x-scale 0.3 + y-scale 0.3 } decal RipBlast diff --git a/graphics/HUD/PusherBar.png b/graphics/HUD/PusherBar.png new file mode 100644 index 000000000..a586148e6 Binary files /dev/null and b/graphics/HUD/PusherBar.png differ diff --git a/graphics/HUD/PusherDisplay.png b/graphics/HUD/PusherDisplay.png new file mode 100644 index 000000000..468aa29cc Binary files /dev/null and b/graphics/HUD/PusherDisplay.png differ diff --git a/language.txt b/language.txt index 86bbe1fac..c89b93097 100644 --- a/language.txt +++ b/language.txt @@ -139,27 +139,49 @@ SWWM_TRADECONTROLS0 = "Enter: Select | "; SWWM_TRADECONTROLS1 = "Enter: Send | Backspace: Return | "; // mission entries SWWM_MISSION_DOOM = -"Welcome to your first mission, Demolitionist. Since I have very little confidence in those UAC idiots, I have decided to send you up ahead to assist on the fight against the demon invaders that came to Earth, thanks to their very wonderful and very reliable teleportation experiments backfiring, which is something absolutely no one saw coming, oh no, definitely not. It's not like that hasn't happened like... several times now? The UAC's \"problem solver\" may not be able to do much, so yeah, better send you in to make a REAL difference here. If Samuel Hayden didn't have me blocked I'd be sending him all sorts of trash right now. Oh I'd love to see his reaction to this... \n" +"Welcome to your first mission, Demolitionist. I'll be very direct here, the situation is very fucked. Things don't look good at all. Those fucking UAC idiots have done their worst and now we're paying for it. FUCK... THE... UAC... Seriously. If Samuel Hayden didn't have me blocked I'd be sending him all sorts of shit right now, you can't even begin to imagine HOW fucking pissed I am...\n" "\n" -"Anyway, let's get to the point here. Your main objective is to eliminate all hostile forces in the region. There's going to be a hell a of a lot of fighting up ahead, but I know you can do it, that's why I built you. Do this job well and maybe you'll be rewarded when you come back home, who knows. No, Ibuki won't hug you again, I promise, your chassis will be safe. Your reward will actually be something else, but I won't tell you more details, I want it to be a surprise.\n" +"It all happened so fast that... we didn't really have much time to prepare for it. Half of Earth got entirely taken over now. It's all mostly just the western countries, with the epicenter on Union States territory, where you'll be deployed. What pisses me off the most is that they didn't even stop at just going for us, no, they hit the Lunar capital too. It could have been our chance to contact the Nukuri and ask for help, but now we're on our own. We... have to do our best to fight these damn things, all by ourselves. That's where you come in.\n" "\n" -"By the way, we haven't been able to provide you with all the available equipment, it would've been very expensive. Instead, be on the lookout for strategically placed supplies along the way (hopefully the demons haven't stolen all of it yet). If that sounds too videogamey, you can eat my pants, I wasn't the one who made that decision. Whatever.\n" +"It is your mission to put an end to this, there are people out there fighting, we don't know how many, who still haven't been evacuated. It's Hell on Earth thanks to the amazing and great UAC shoving their stinky-ass fingers into what they shouldn't. Do they even know... How many of my friends I've lost... all the thousands, tens of thousands or even more, that just... couldn't make it. WW3 was nothing compared to this. It's just... ugh... And the fucker has the BALLS to just go and act like everything's fine and will be fixed soon. I want to punch that smart-ass robot... damn it.\n" +"\n" +"*sigh*\n" +"\n" +"Enough grieving... it's all about the mission now. I know there's still hope. Me and a couple others have joined up to make this happen, you're going to save those people. It'll be hard, I know, but you can do it, that's why I built you. If there's even a chance that you'll succeed, I want to tell you that I will personally reward you, Demo-chan. I'm not going to give you any details, I want it to be a surprise.\n" +"\n" +"We haven't been able to provide you with all the available equipment, there was no time for that. Instead, be on the lookout for strategically placed supplies along the way (hopefully the demons won't touch the stuff). I know that sounds kind of videogamey, and if I hear you complain you can eat my pants, I wasn't the one who made that decision. Whatever.\n" +"\n" +"You are our last hope, so fight, Demo-chan, fight for those you want to protect, for all of us... Make those bastards pay.\n" "\n" "Saya out."; SWWM_MISSION_HERETIC = -"Welcome to your second mission, Demolitionist. This one will be quite different, as you may see. While scouring the multiverse with our new portal technology we came across this cool little place called Parthoris. It's got elves 'n magic stuff, very fantasy-like setting, I dig it. Anyway I hope the ride wasn't too bumpy, crossing between universes and all.\n" +"Welcome to your second mission, Demolitionist. While things have calmed down over here, we've been able to resume our work on the Akari Project. You know, the important one I've wanted to work on all my life. So far it's been a success, and you'll be the first to take part in the exploration of other worlds. We've scoured the multiverse for all sorts of interesting places, and this one in particular caught our eye. It is called Parthoris, it's a realm of magic and elves and stuff, I dig it. Anyway, I hope the ride wasn't too bumpy, we haven't fine-tuned that yet.\n" "\n" -"Here's what's up: We have information that there is some sort of ongoing conflict between a bunch of elves and some crazy cult that took over. Your objective is to neutralize this cult, preferably also taking out its leader, some sort of wizard dude. They call him D'Sparil and he's part of a triad of big baddies called the \"Serpent Riders\", because they ride those beasts I guess? Guy's tall, wears red robes, and talks backwards, can't miss him. I'm sure that when you get back you'll want to transfer over to your maidbot body again, so I'll be working on a couple extensions there to make things more... \"fun\", if you catch my drift. Oh, I'm in the mood for some eggplant right now, yes...\n" +"Here's the situation: This place was divided in seven kingdoms, and all was good™ until some evildoer wizard of sorts popped up and brainwashed everyone. The only ones who resisted were the elves, the Sidhe (how do you even pronounce that). I don't like where this is going already, and I would hate to see a repeat of what we went through, so you're here to put a stop to it.\n" "\n" -"So... uh... once again, I'm sorry that we couldn't give you all your stuff. I'm taking the blame this time, I think I screwed something up with the deployment and it got scattered all over the place. It's possible that the locals may have also moved stuff around so... good luck finding it all.\n" +"Your objective is a man called D'Sparil. He's a member of a triad of crazy-ass evil sorcerers called the \"Serpent Riders\". Guy's tall, wears red robes, and talks backwards, can't miss him. He commands armies of undead and shit, nothing you can't deal with, I'm sure. First of all, you'll need to make contact with the Sidhe survivors, see if you can gather any more information on where to go and what to do. Maybe once it's all over we can probably form an alliance or something, and hopefully they won't be pissed that we use wooden furniture.\n" +"\n" +"I'm sure, that once you come back you'll want to transfer over to your maidbot body again, so I'll be working on a couple \"extensions\" there to make things more... \"fun\", if you catch my drift. Oh, I'm in the mood for some eggplant right now, yes...\n" +"\n" +"So... uh... horniness aside, I'm sorry that we couldn't give you all your stuff. I'm taking the blame this time, I think I screwed something up with the deployment and it got scattered all over the place. It's possible that the locals may have moved it around so... good luck finding it all.\n" +"\n" +"Go get 'em, Demo-chan. Kick some wizard ass.\n" "\n" "Saya out."; SWWM_MISSION_HEXEN = -"Welcome to your third mission, Demolitionist. We're sending you into another world, but this is actually related to your previous mission. First of all, yes I fucked up again, I'm sorry, really. All your stuff got lost... again, my bad. On top of that there was some sort of mixup with the ammo supplies and instead we got these weird \"Fabricator\" things from that nerdo. They do provide ammo, at least.\n" +"Welcome to your... ah screw this.\n" "\n" -"So yeah, you're now in the land of Cronos, more of that cool dark fantasy stuff around. It seems that some old pal of that wizard dude from last time is being a stinky ass here, and we need that sorted out before we can start studying this place in more detail. So there you go, beat the crap outta him! As a reward, we can do some more of \"that\". Just you, me, maybe Ibuki and Maidbot too... and I wonder... if Kirin-kun also... hnnn... and then... *heavy breathing*\n" +"Heya, Demo-chan. It's time for another adventure! Remember that wizard you beat up last time? We've tracked down the next big baddie buddy of his, and you're gonna kick his ass too, oh yeah.\n" "\n" -"OK, wow... phew. Saya, focus. No hornyposting on mission statements. Anyway, more details about your target. Evil dragonish-looking dude, deep voice, and also a Serpent Rider, though I can't even begin to understand how he'd ride one. Maybe he's the one that receives the riding... u... ggdfgfhfhdfh... ok, pls no, BAD mental image, UGH. I think I'm going to need to spend a couple more hours drowning in Ibuki's tiddies to get this out of my head...\n" +"Welcome to Cronos. This place used to be nice, until that guy came in stomping around with his armies. Like the wizard dude, this fucker even got some of the locals on their side. Your target is called Korax, like the raven, huh, y'know, \"Corvus Corax\"... ah, forget it.\n" +"\n" +"So the thing is, I'd like you to step in and take him out. Do NOT listen to anything he says, as I bet he'll probably try to get to you too. He's big, ugly, and doesn't look much like the type who'd be capable of riding a serpent, so maybe... he's the one who gets a riding... oh wait no, that doesn't sound very... UGH... baaaaad mental image, holy fuck. Where are Ibuki's tiddies when you need 'em, they're the best at making me forget about everything.\n" +"\n" +"I know you'll want a nice reward for this so, here's what I have in mind. How about some more of \"that\" we did last time, hm? You, me, maybe Ibuki and Maidbot too... and I wonder... if Kirin-kun also... hnnn... and then... *heavy breathing*\n" +"\n" +"OK, wow... phew. Saya, focus. No hornyposting on mission statments, not again. Anyway, bad-ish news??? We got a mixup on the ammo stuff and instead we got these weirdass \"Fabricator\" things from that nerdo. They do provide ammo, at least. As usual, your equipment will be strategically placed here and there, since we couldn't just... send you in with ALL of it at once, again. I don't know why nerdo boy insists on doing things like this. Does he really want everything to be so... ugh... videogamey?\n" +"\n" +"Well, whatever. Go, Demo-chan, show 'em what you got!\n" "\n" "Saya out."; SWWM_MISSION_NONE = "(no mission briefing available)"; @@ -168,9 +190,9 @@ SWWM_LORETAG_AKARILABS = "Akari Labs"; SWWM_LORETXT_AKARILABS = "Name: Akari Labs\n" "Classification: Scientific Research Laboratory, Robotics Factory, Adoption Service\n" -"Location: Japan\n" +"Location: Kasukabe, Saitama Prefecture, Japan\n" "\n" -"Summary: Akari Labs was founded in 2010 by Saya and Taro Miyamoto. While initially just a small robot workshop, they quickly grew over time, covering more diverse fields in the process. One of the labs' most popular products are the Maidbots, life-like humanoid assistant bots that can be freely adopted by any household. The labs are also famous for the creation of Ibuki, the \"Red Oni\", a WW3 veteran supersoldier, now turned supermodel, and in recent years, her successor, the Demolitionist.\n" +"Summary: Akari Labs, the Fountain of Innovation, was founded in 2010 by Saya and Taro Miyamoto. While initially just a small robot workshop, they quickly grew over time, covering more diverse fields in the process. One of the labs' most popular products are the Maidbots, life-like humanoid assistant bots that can be freely adopted by any household: \"from energetic, workaholic maids that do their job without asking questions, to tender, motherly maids who take special care of you and encourage you to improve your lifestyle\". The labs are also famous for the creation of Ibuki, the \"Red Oni\", a WW3 veteran supersoldier, now turned supermodel, and in recent years, her successor, the Demolitionist.\n" "\n" "Addendum: Akari Labs was one of the sponsors of the 2020 Tokyo Olympic Games. Saya's personal Maidbot singing the national anthem was one of the major highlights of the event."; SWWM_LORETAG_BELT = "Utility Belt"; @@ -181,6 +203,26 @@ SWWM_LORETXT_BELT = "Summary: A simple magnetic belt, adaptable to any waist size by detaching/attaching segments. Its magnetic force is enough to keep any objects tightly attached no matter the force of impact the user faces.\n" "\n" "Addendum: This belt should allow you easy access to your Hammerspace containers and keychain, along with making it easier to reload certain weapons."; +SWWM_LORETAG_BIGSHOT = "Mr. BIG SHOT"; +SWWM_LORETXT_BIGSHOT = +"Full Name: John \"Bigshot\" Gunns" +"Nationality: American\n" +"Date Of Birth: 2110-11-12\n" +"\n" +"Summary: A man shrouded in mystery. Claims to be the \"son of Benellus, God of Shotguns\". He is one of the main financial backers of Blackmann Arms and has commissioned several unique weapons from them, most kept private. From his fortress in Nevada he frequently broadcasts himself talking about a coming \"apocalyptic event\" that he's been preparing for.\n" +"\n" +"Saya's Note: So, basically, just some crazy, I get it. But see, one of the designs from this guy was made public, and I couldn't help it but try getting my hands on that thing. I just want to see what it's like for you to handle that ballbusting hunk of metal. I've even given you enhancements to more efficiently utilize it. Any time you're using it I'll be watching, so you better give me something fun to eat popcorn with."; +SWWM_LORETAG_BLACKMANN = "Blackmann Arms"; +SWWM_LORETXT_BLACKMANN = +"Name: Blackmann Arms Ltd.\n" +"Classification: Arms Designer and Manufacturer\n" +"Location: Cologne, Germany\n" +"\n" +"Summary: Founded in 1924 by Daniel Ischer as \"Schwarzmann Exotischwaffen\", an \"exotic weapons\" workshop in Cologne. Their slogan is \"if you can imagine it, we can build it\". Rose to fame when the family escaped to America in 1933. After settling in, the shop \"americanized\" itself under the current brand of \"Blackmann Arms\", and quickly rose to fame designing all sorts of ingenious weaponry for the allied forces. During WW3 they moved back to Germany, where they've stayed to this day. The company is currently run by Hermann E. Ischer, great-great-grandson of the original founder, who has made it a personal goal that as long as any commissioned weapon can hold more than one bullet, it must have a built-in function for shooting everything as quickly as possible.\n" +"\n" +"Addendum: A big part of the company's funding comes from Mr. BIG SHOT Industries, which according to reports by Hermann himself, regularly commissions all sorts of ludicrous shotgun designs that no sane man would thing of using. Out of all these strictly private commissions, one sole weapon was eventually made public, the \"Wallbuster\", a 25-barrel revolving shotgun.\n" +"\n" +"Saya's Note: I think I cracked the code here... if the company's name references what I think it does... Oh come on. Did the founder seriously intend people to think of his dick whenever they looked at the massive guns he made? Gross."; SWWM_LORETAG_BLASTSUIT = "Blast Suit"; SWWM_LORETXT_BLASTSUIT = "Designation: Blast Suit\n" @@ -195,12 +237,30 @@ SWWM_LORETXT_BLASTSUIT = "Durability: Can absorb a total of 200 units of damage before breaking.\n" "\n" "Addendum: The blast suit can be worn under other armor."; +SWWM_LORETAG_CANDYGUN = "Candy Gun"; +SWWM_LORETXT_CANDYGUN = +"Designation: \"Taste the Sweetness\" Candy Gun\n" +"Manufacturer: Munch Innovations\n" +"\n" +"Summary: Overcharged variant of the Explodium gun. Not only the bullets, but also parts of the weapon, are made of Explodium. Mixed with strawberry-flavoured hard caramel and pop rocks too, which for some reason results in a festival of fireworks.\n" +"\n" +"Primary Fire: Single shots of explosive sweetness. If the direct blast doesn't kill something, the additional crackles and pops might.\n" +"\n" +"Secondary Fire: Explosive reload. The yield is much more extreme so watch out for splash damage. Can only be performed if you have spare mags.\n" +"\n" +"Special: During the first moments of preparing an explosive reload, you can hold primary fire to keep the mag in and instead throw the whole gun as a grenade for even greater damage than just the mag. Can only be performed if you have at least one spare gun and mag.\n" +"\n" +"Reloading: Same as usual. Remember that you can keep one bullet in the chamber.\n" +"\n" +"Addendum: Due to the disposable nature of the Candy Gun, up to 4 additional spares can be held in your inventory.\n" +"\n" +"Saya's Note: I don't understand how mixing hard candy with explodium does this, but I still love every single second of it. Ahhh... makes me real nostalgic. How about we go watch some real fireworks after you're done saving the world?"; SWWM_LORETAG_COLLAR = "Lucky Collar"; SWWM_LORETXT_COLLAR = "Designation: Lucky Collar for Demolitionist\n" "Manufacturer: Saya Miyamoto\n" "\n" -"Summary: A very stylish fashion accessory that keeps you protected.\n" +"Summary: A very stylish fashion accessory, personally crafted by Saya, with much love and care, and infused with some borrowed magical energy that will keep the wearer protected.\n" "\n" "Protection:\n" " - 75% reduction to all damage when below 25% health.\n" @@ -208,7 +268,7 @@ SWWM_LORETXT_COLLAR = "\n" "Addendum: The collar cannot break no matter how much damage you receive.\n" "\n" -"Saya's Note: I made one for Ibuki too. Looks super cute on both of you tbh."; +"Saya's Note: I made one for Ibuki too. Looks super cute on both of you tbh. I swear this isn't some BDSM thing. Also holy fuck if Yui's big tiddy goth gf can do some magic."; SWWM_LORETAG_CRONOS = "Cronos"; SWWM_LORETXT_CRONOS = "Designation: Cronos\n" @@ -223,12 +283,22 @@ SWWM_LORETAG_CYRUS = "Cyrus Enterprises"; SWWM_LORETXT_CYRUS = "Designation: Cyrus Enterprises\n" "Classification: Tech Startup?\n" +"Location: Kopo Island, Kereshnovka, Russia\n" "\n" "Summary: A small company run by one Reubens C. Karnanaiahmani, son of royalty and ambassador of the Qurensniv people on Earth. Does everything all by himself, has a habit of giving things very nerdy names.\n" "\n" -"Addendum: Is a big stinky nerd.\n" +"Addendum: Apart from delving in advanced technology, Reubens is also a ten times Ko-Ron-Jai champion (Qurensniv martial arts), and a renowned sharpshooter, capable of splitting a single matchstick in half from 1km away, with deadly precision.\n" "\n" -"Saya's Note: That exactly, I've said everything. Sure the stuff he makes is cool and all, sometimes, but good LORD the guy pisses me off with that attitude of his, guh..."; +"Saya's Note: He's also a big stinky nerd. That exactly, I've said everything. Sure the stuff he makes is cool and all, sometimes, but good LORD the guy pisses me off with that attitude of his, guh..."; +SWWM_LORETAG_DECADEMECH = "Decade Mechanics"; +SWWM_LORETXT_DECADEMECH = +"Name: Decade Mechanics\n" +"Classification: Military Research Facility???\n" +"Location: Sunkaeze (X'Animen outer rim)\n" +"\n" +"Summary: Ever since humanity was made aware of the gateway in Sedna connecting the two solar systems, many expeditions have been made to learn more of the worlds in X'Animen (name given by the governing bodies within). One major discovery that not even the natives were aware of, was that of a ruined research facility in the wasteland planet of Sunkaeze, belonging to a defunct company named \"Decade Mechanics\", run by the long-dead mechanical demigod Maester Mekes. Research material, blueprints and even finished, still functioning products have been found within, giving a general idea of what this facility was specialized in. Various groups have successfully recreated items entirely off their original blueprints, some of which have been commercial successes in the military field.\n" +"\n" +"Addendum: The ruins are also said to be haunted. Many lives have been lost exploring them, either due to accidents or unidentified \"hostile spectral creatures\" some have taken to call \"angels of death\"."; SWWM_LORETAG_DEEPIMPACT = "Deep Impact"; SWWM_LORETXT_DEEPIMPACT = "Designation: \"Deep Impact\" Airblaster\n" @@ -250,17 +320,17 @@ SWWM_LORETXT_DEMOLITIONIST = "Nationality: Japanese\n" "Date Of Birth: 2148-01-20\n" "\n" -"Summary: The Demolitionist is a refinement of the former Red Oni supersoldier program, an AI-controlled combat unit capable of efficiently utilizing any weaponry at its disposition. Its AI core is built on the same technology as Akari Labs' maidbots, the Nekuronbot AI framework, provided as a gift of friendship between Saya and Zanaveth II, the current head of Nekuratek. Thanks to this technology, the Demolitionist is barely indistinguishable from a real person in its behaviour and emotional response, which makes interaction with civilians more comforting.\n" +"Summary: The Demolitionist is a refinement of the former Red Oni supersoldier program, an AI-controlled combat unit capable of efficiently utilizing any weaponry at its disposition. Its AI core is built on the same technology as Akari Labs' maidbots, the Nekuronbot AI framework, provided as a gift of friendship between Saya and Zanaveth II, the current head of Nekuratek. Thanks to this technology, the Demolitionist is barely indistinguishable from a real person in its behaviour and emotional response, which makes interaction with civilians more comforting. The first unit 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.\n" "\n" -"Addendum: The first unit (that's you) 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.\n" +"Addendum: Many more details are known about the first Demolitionist thanks to a Q&A session livestreamed by Saya Miyamoto. The unit's full name is \"Demo Miyamoto\", as given by Saya herself. They identify as non-binary, and remark that along with they/them, she/her pronouns are also acceptable. Personality-wise, they can be described as \"quite chatty\", fond of joking around and trying to put a smile on people's faces, but also very serious and determined in their desire to protect those in need.\n" "\n" -"Saya's Note: Stop reading about yourself and get back to work."; +"Saya's Note: Have you finished reading about yourself? Yes, Demo-chan, I know you are reading this. OooOOOooOo, spooky isn't it? Get back to work, you silly robutt."; SWWM_LORETAG_DISPLAY = "CuteEmotion Display"; SWWM_LORETXT_DISPLAY = "Designation: CuteEmotion Display\n" "Manufacturer: Akari Labs\n" "\n" -"Summary: One-sided display designed for use on robots. Located on the head region it can be used to convey simple facial expressions from a small library, giving a much more natural and empathetic image.\n" +"Summary: One-sided display designed for use on robots. Located on the head region it can be used to convey simple readable facial expressions selected from an user-configurable library of images that can be associated with any sort of emotion the AI may want to convey, whether it's happy or sad, excited or bored, calm or angered... The possibilities are endless.\n" "\n" "Saya's Note: This makes you super cute and huggable (sorry once again for that one time Ibuki crushed you with a hug, btw, I seriously thought your chassis could handle it, but she really is hella strong)."; SWWM_LORETAG_DOOMGUY = "Doomguy"; @@ -270,11 +340,38 @@ SWWM_LORETXT_DOOMGUY = "Nationality: American\n" "Date Of Birth: [CLASSIFIED]\n" "\n" -"Summary: The Doom Marine (a.k.a. \"Doomguy\" is the lone survivor of the demonic invasions on the UAC bases of Phobos and Deimos. Due to his impressive track record he is appointed as the organization's \"problem solver\". At the moment of writing this, he has been tasked with fighting the demon invaders on Earth.\n" +"Summary: The Doom Marine (a.k.a. \"Doomguy\") is the lone survivor of the demonic invasions on the UAC bases of Phobos and Deimos, and is seen as kind of a legendary figure by many. Due to his impressive track record he has also been appointed as the organization's \"problem solver\". At the moment of writing this, he has been tasked with fighting the demon invaders on Earth.\n" "\n" "Addendum: You have been ordered to not interact with this man, if you encounter him, please stand back and let him work.\n" "\n" -"Saya's Note: Sorry about the lack of info here, those UAC goons really keep it well-guarded. Hell, I've even heard there's ANOTHER guy like this one, but he's like, ten times more hardcore? Some kinda ancient alien warrior or something, according to the leaks I saw (very little info here too, yeah)."; +"Saya's Note: Sorry about the lack of info here, those UAC goons really keep it well-guarded. At least I heard he likes bunnies, so if the worst happens just pretend to be one and he might not shoot you on sight. Oh and also I've heard there's ANOTHER guy like this one, but he's like, ten times more hardcore? Some kinda ancient alien warrior or something, according to the leaks I saw (very little info here too, yeah). The guy's not all too happy to work for the UAC, so I wonder if... maybe..."; +SWWM_LORETAG_ENGINETECH = "Tach-Engine"; +SWWM_LORETXT_ENGINETECH = +"Name: Tach-Engine Technology Institute\n" +"Classification: Technology Conglomerate\n" +"Location: Perth, Scotland\n" +"\n" +"Summary: Founded in 2014 by J.A. Tachmek-Smith, by then the \"richest man in the world\". Ever since its inception, the man has spent his fortune in research and development of many innovations for the \"betterment of mankind\". Fusion energy, improvements in waste recycling, cleaner air, etc. , though much of the knowledge exchanged couldn't be put to use due to the restrictions imposed by the UN after World War 3. Tach-Engine Technologies is currently the second largest tech company on Earth, much to the displeasure of the UAC, who previously held that position, however its undying founder has claimed that he has no intent on \"swiping the crown off those people\", in reference to current industry titan [NAME REMOVED].\n" +"\n" +"Addendum: The company had also collaborated multiple times with its Nukuri counterpart, Nekuratek. In 2045, they were given access to Nekuratek's research material from an exploration of the ruined Decade Mechanics facility in Sunkaeze. Shortly after this, he announced the opening a new subdivision dedicated to reproducing the works of the defunct company, thus marking Tach-Engine's entry into the arms race.\n" +"\n" +"Saya's Note: It's always neat to meet other immortals, especially if they're THOUSANDS of years old, wow. By the way, I had to remove the name of those people so I wouldn't get my butt sued clean off. You can't even imagine what they're like. The UAC is nothing compared to them."; +SWWM_LORETAG_EVISCERATOR = "Eviscerator"; +SWWM_LORETXT_EVISCERATOR = +"Designation: \"Eviscerator\" High Load Flak Cannon\n" +"Manufacturer: Mr. BIG SHOT Industries\n" +"\n" +"Summary: Beastly portable artillery, turns fleshy targets into fine red mist in mere instants. Quite deadly for both its targets and also users not familiar with its operation.\n" +"\n" +"Primary Fire: Detonates the shell directly, spreading hot steaming metal in front of the user.\n" +"\n" +"Secondary Fire: Lobs the shell as a grenade, it will detonate on impact with any surface or object and release its payload in the direction it was facing when shot.\n" +"\n" +"Reloading: Since the weapon reloads automatically and its internal ammo box has been linked to your Hammerspace Container, the reload button instead functions as a toggle for two spread modes on the primary fire.\n" +"\n" +"Addendum: The metal fragments shot by this weapon will ricochet all over the place, which makes it very effective for shooting around corners.\n" +"\n" +"Saya's Note: Why is there an \"owo\" face scribbled on every shell? Who did this? I want answers!"; SWWM_LORETAG_EXPLODIUMGUN = "Explodium Gun"; SWWM_LORETXT_EXPLODIUMGUN = "Designation: Explodium Gun\n" @@ -288,139 +385,9 @@ SWWM_LORETXT_EXPLODIUMGUN = "\n" "Reloading: Normal reload, nothing will explode here.\n" "\n" -"Addendum: Thanks to a deal between Akari Labs and Munch Innovations, you have been provided with a practically limitless supply of ammunition for this weapon, so feel free to waste away."; -SWWM_LORETAG_FORX = "Forx Aeronautics"; -SWWM_LORETXT_FORX = -"Name: Forx Aeronautics\n" -"Classification: Propulsion Engine Manufacturer\n" -"Location: United Kingdom\n" +"Addendum: Thanks to a deal between Akari Labs and Munch Innovations, you have been provided with a practically limitless supply of ammunition for this weapon, so feel free to waste away." "\n" -"Summary: Founded by Harold Forx in 2029, this company is credited with singlehandedly rescuing the UK from its long fall into economic ruin after Brexit. Forx Aeronautics is the #1 supplier of propulsion engines for all types of aircraft, be it commercial jet planes, or even spaceships. The only exception being the UAC, who prefer their own in-house technology. Forx has also adapted his patented jet propulsion systems for other uses, such as in the \"JetBurst Impulsor\", one of the first tuly portable jetpacks, or the \"Rapid Jet Compensator\", a recoil dampening system for high caliber firearms that permits their use outside of heavy, unwieldy power armor.\n" -"\n" -"Saya's Note: Hey did you hear the story about that one time he tried to mow down an orphanage and the guy who ran it smacked him so fucking hard he did a complete 180 and ran away crying? I've seen the archived footage like a dozen times and I always lose my shit with that asshole's face when he comes out."; -SWWM_LORETAG_HAMMERSPACE = "Hammerspace"; -SWWM_LORETXT_HAMMERSPACE = -"Designation: Pocket Hammerspace Container\n" -"Manufacturer: Cyrus Enterprises\n" -"\n" -"Summary: These devices provide the carrier with access to a dedicated off-world storage space, with practically instant deposit and withdraw times.\n" -"\n" -"Addendum: Use of Hammerspace containment for storing living beings is not allowed and will immediately void your warranty.\n" -"\n" -"Saya's Note: This sounds like something out of a videogame, it's cool, sure, but did that stinky nerd really have to be a stinky nerd and call it \"Hammerspace\"?"; -SWWM_LORETAG_HELL = "Hell"; -SWWM_LORETXT_HELL = -"Designation: Hell\n" -"Classification: Nether realm\n" -"\n" -"Summary: A vast world separate from our own, inhabited by creatures that could only be described as \"demons\". This Hell was first discovered through the various interdimensional travel experiments done by Imanaki Corp back in the early 21st century, although the UAC has put a lot of effort into hiding this fact and claiming to be the first to do so instead. Their response to the UAC walking right in and attempting to steal their precious resources has been that of total annihilation. Starting from the first incidents on Mars and its moons, and now a full-fledged invasion of Earth, there is not much hope left for mankind. Unless we do something about it, that is.\n" -"\n" -"Saya's Note: Who would've thunk Hell is real, huh? And of course the UAC has to be the one to start this whole mess entirely out of stinking greed.\n"; -SWWM_LORETAG_IBUKI = "Miyamoto, Ibuki"; -SWWM_LORETXT_IBUKI = -"Full Name: Ibuki Miyamoto\n" -"Codename: Red Oni\n" -"Nationality: Japanese\n" -"Date of Birth: 2074-09-09\n" -"\n" -"Summary: Ibuki is the result of the Red Oni supersoldier program at Akari Labs, commissioned by the US government. Her purpose was to turn the tides on the losing World War 3 that began due to a very badly received tweet from the President of the United States, an event reminiscent of the incident with Iran that the late Donald Trump had started. In a mere three years she was ready, thanks to an accelerated growth process. She's been enhanced to be effectively bulletproof, always standing strong under any circumstance, capable of handling extreme heat and cold, and trained for handling all kinds of weaponry. Much is also said about her personality, or her questionable physical traits such as the ludicrously impractical bust size, all of this which must clearly have been intentionally done by her creator and self-appointed \"mother\", Saya Miyamoto. After the end of the war she's gone through several jobs, crowning in her current one as a world-famous nude model and vlogger.\n" -"\n" -"Addendum: In a way, the Demolitionist project could be said to be a more economic alternative to the Red Oni program. Robots are easy to manufacture en-masse, after all.\n" -"\n" -"Saya's Note: Why does everyone keep bringing that up? What's the problem with me liking giga-tiddies? Like, seriously... Come on, don't kinkshame me, geez."; -SWWM_LORETAG_LOCKE = "Dr. Locke"; -SWWM_LORETXT_LOCKE = -"Full Name: Janus Locke Hoodth\n" -"Nationality: Qurensniv\n" -"Date of Birth: 1980-07-30\n" -"\n" -"Summary: A man who changed entirely after the loss of his older brother in 1987, in an oil rig explosion near the town of Kereshnovka. Nowadays he's pretty much just a mad scientist shut-in who sometimes creates \"toys\" that are hilariously deadly. In 2049 he attempted to \"take over the world\", an event that backfired so hilariously he completely disappeared from the public eye afterwards.\n" -"\n" -"Saya's Note: Guy's a total nut, but these \"toys\" are very reliable weapons for you. Just be careful when using them, shit could backfire catastrophically at any moment, who knows..."; -SWWM_LORETAG_MUNCH = "Munch Innovations"; -SWWM_LORETXT_MUNCH = -"Full Name: Munch Innovations\n" -"Classification: Arms Manufacturer\n" -"Location: Texas\n" -"\n" -"Summary: The Munch Innovations name applies to everything created by a very reclusive man, originating from a livetweeted \"invent as many guns as I can in one week\" challenge. Although most of them were quickly discarded, some of the weapons earned enough attention from various industry giants to enter mass production, the only requirement from the man was to be credited as the original creator.\n" -"\n" -"Addendum: Not much else is known about the man behind this mysterious company other than his name, \"Parker Munch\".\n" -"\n" -"Saya's Note: Why does this guy's name sound so familiar..."; -SWWM_LORETAG_PARTHORIS = "Parthoris"; -SWWM_LORETXT_PARTHORIS = -"Designation: Parthoris\n" -"Classification: Alternate world\n" -"\n" -"Summary: One of the other worlds we've discovered during the initial interportal experiments. This land is divided in seven major nations we don't yet know the name of, and appears to be stuck in some sort of a medieval-ish fantasy type setting, although some of our explorers have reported sights of unusually complex technology in a certain location we haven't been able to approach. As of now there is some hostility in the area what with a bunch of evildoers having taken over by force.\n" -"\n" -"Addendum: You are our ambassador here, so I hope you make a good impression."; -SWWM_LORETAG_PROPULSOR = "JetBurst Impulsor"; -SWWM_LORETXT_PROPULSOR = -"Designation: Forx JetBurst Impulsor\n" -"Manufacturer: Forx Aeronautics\n" -"\n" -"Summary: A portable, efficient jetpack unit. Allows the user to perform short \"boosts\" in mid air, can also be used for rapid dashing and dodging. It is recommended to wear protective clothing to prevent damage from extended use (this is not necessary if you are a robot).\n" -"\n" -"Addendum: Its fuel supply will regenerate over time when not in use."; -SWWM_LORETAG_SAYA = "Miyamoto, Saya"; -SWWM_LORETXT_SAYA = -"Full Name: Saya Miyamoto\n" -"Nationality: Japanese\n" -"Date Of Birth: 1993-03-20\n" -"\n" -"Summary: Saya was born in 1993 to Nana and Ryuji Miyamoto. She has two siblings: An older brother, Taro, and a younger sister, Yui. As a child she already showed interest in science and technology. At the very early age of 13 she graduated in Computer Science at MIT. Her first project was an autonomous house-cleaning robot, which would later evolve into the modern Maidbot. In 2018, due to the immortality inherited from her grandmother, Princess Kaguya Houraisan, she ceased aging. However, thanks to this she has been able to keep working on everything she ever wanted. To this day, there are hundreds of different projects under her name, this includes you, the Demolitionist.\n" -"\n" -"Addendum: Saya is often called \"Not-Tomoko\" around the net, due to similarities to the protagonist of a popular 21st century manga series. She is well known for being quite blunt when talking to people, and also for being exaggeratedly flirty around attractive women. Her favourite colour is red, favourite animal is the otter, and favourite dish is pepperoni pizza. She also enjoys drone metal. Likes baggy clothes, refuses to wear skirts, only pants. Uses Arch, favourite editor is vim, favourite programming language is haskell. Her top \"turn-ons\" are well-endowed women, maids, femboys and heterochromia. She doesn't use deodorant or cologne, although people around her remark that her BO is \"kind of nice actually\". Among other hobbies, Saya really enjoys writing. Her first foray into manga, \"My Maid is a Sex Robot\", became successful enough to get an anime adaptation.\n" -"\n" -"Saya's Note: I'm sure you enjoy reading all about me, but you have more important things to be doing, don't you think?"; -SWWM_LORETAG_SERPENTRIDERS = "Serpent Riders"; -SWWM_LORETXT_SERPENTRIDERS = -"Designation: Serpent Riders\n" -"Classification: Evil, definitely\n" -"Origin: Undetermined\n" -"\n" -"Summary: A triad of evildoers known all over these lands. All those who've dared to fight against them haven't been very lucky. D'Sparil claimed the land of Parthoris, his many armies of undead having taken over the land before our arrival. Then in the land of Cronos there's Korax, a black beast that taunts all those who challenge him. We haven't received much information on the third member, but this stuff will come eventually as we keep exploring these new worlds.\n" -"\n" -"Saya's Note: I'm sure you can wipe out all these idiots without any issue, they have no idea of how strong you are (or of what you are, now that I think of it, these worlds hardly seem to know much about our technology)."; -SWWM_LORETAG_UAC = "UAC"; -SWWM_LORETXT_UAC = -"Name: Union Aerospace Corporation\n" -"Classification: Military Conglomerate, Research Foundation\n" -"Location: United States, Mars, Jupiter\n" -"\n" -"Summary: Founded in 2015 by Thomas Kelliher, as a shell company of the Union Aerospace Armed Forces (UAAF). The UAC's rise to power began in 2025 with its famous Joint Mars Expeditions. Since the creation of \"Mars City\" and the various posts in Phobos and Deimos, the UAC has been effectively working outside of Earth law, which has caused endless controversy. Moreso after securing their position as the largest military body on Earth in the aftermath of World War 3. In recent years, their experiments in teleportation made the news after a critical failure resulted in an invasion from Hell itself, along with the disappearance of the entire moon of Deimos, and eventually resulted in the demons making their way towards Earth. Governments all across the world have their hands full trying to fend off the attackers, but despite the constant bombardment of his accounts on social media, current CEO Samuel Hayden has refused to give any explanation about this incident. The only information provided is that they \"have a man\" that can resolve this.\n" -"\n" -"Addendum: Many rumors surround this company. There are accusations of ritualistic practices, brainwashing, propaganda... Pretty much anything you could imagine. Don't get involved with them, especially now, after your creator decided to speak ill of the company.\n" -"\n" -"Saya's Note: Oh they TOTALLY deserve what happened to them, and I hope they get screwed even harder for this blunder. I'm glad I never invested in their shit. Little robot boy can eat my shorts, by the way. He ain't gonna r e s o l v e shit."; -SWWM_LORETAG_VOICEBOX = "Loudboi Voicebox"; -SWWM_LORETXT_VOICEBOX = -"Designation: Loudboi Voicebox\n" -"Manufacturer: Akari Labs\n" -"\n" -"Summary: A lightweight voice synthesizer for AI units. Easy to install and program. Comes with a built-in \"robotic\" filter for those who prefer that over an awkwardly \"too human\" sounding voice.\n" -"\n" -"Saya's Note: Ibuki is still amused that I programmed your voicebox to sound like her. It also cracks me up that you've even picked up all her little mannerisms because of it."; -SWWM_LORETAG_SIDHE = "Sidhe"; -SWWM_LORETXT_SIDHE = -"Designation: Sidhe\n" -"Location: Parthoris\n" -"\n" -"Summary: An elf species native to this world, they have a natural bond with magic and are known to be great fighters. As the story goes they however face persecution by other groups due to the opposition to the current ruler. Most of them have been killed in the war, only few remain. It is your mission to help them.\n" -"\n" -"Saya's Note: How do you exactly pronounce \"Sidhe\" anyway?"; -SWWM_LORETAG_HAMMERSPACEEMBIGGENER = "Hs. Embiggener"; -SWWM_LORETXT_HAMMERSPACEEMBIGGENER = -"Designation: Hammerspace Embiggener\n" -"Manufacturer: Cyrus Enterprises\n" -"\n" -"Summary: These unique keys allow you to increase the maximum storage space allocated on your Hammerspace Container. Multiple keys can be used but there's a maximum limit of eight expansions per customer.\n" -"\n" -"Addendum: You may find these tucked away in certain spots throughout your mission.\n" -"\n" -"Saya's Note: Is that even a real word?"; +"Saya's Note: This one's on my main, level three-eighty-seven... Eeeh? What do you mean you don't get that reference?\n"; SWWM_LORETAG_FABRICATOR = "Ammo Fabricator"; SWWM_LORETXT_FABRICATOR = "Designation: Universal Ammo Fabricator\n" @@ -430,7 +397,16 @@ SWWM_LORETXT_FABRICATOR = "\n" "Addendum: The highest tier is hard to come by, but it should have enough material for a full supply of all types of ammunition.\n" "\n" -"Saya's Note: The hell is this nonsense? Well at least it works, but it's also really dumb, and they even come in fucking tiers like something out of a gacha game? Fuck off."; +"Saya's Note: The hell is this nonsense? Well at least it works, but it's also really dumb, and they even come in fucking tiers like something out of a gacha game? That goddamn nerd... Is he actively trying to piss me off?"; +SWWM_LORETAG_FORX = "Forx Aeronautics"; +SWWM_LORETXT_FORX = +"Name: Forx Aeronautics\n" +"Classification: Propulsion Engine Manufacturer\n" +"Location: Kent, England\n" +"\n" +"Summary: Founded by Harold Forx in 2029, this company is credited with singlehandedly rescuing England from its long fall into economic ruin after Brexit and the Scottish independence. Forx Aeronautics is the #1 supplier of propulsion engines for all types of aircraft, be it commercial jet planes, or even spaceships. The only exception being the UAC, who prefer their own in-house technology. Forx has also adapted his patented jet propulsion systems for other uses, such as in the \"JetBurst Impulsor\", one of the first tuly portable jetpacks, or the \"Rapid Jet Compensator\", a recoil dampening system for high caliber firearms that permits their use outside of heavy, unwieldy power armor.\n" +"\n" +"Saya's Note: Hey did you hear the story about that one time he tried to mow down an orphanage and the guy who ran it smacked him so fucking hard he did a complete 180 and ran away crying? I've seen the archived footage like a dozen times and I always lose my shit with that asshole's face when he comes out."; SWWM_LORETAG_GHOSTARTIFACT = "Ghost Artifact"; SWWM_LORETXT_GHOSTARTIFACT = "Designation: Ghost Artifact\n" @@ -444,11 +420,31 @@ SWWM_LORETXT_GRAVITYSUPPRESSOR = "Designation: Gravity Suppresor\n" "Manufacturer: Cyrus Enterprises\n" "\n" -"Summary: Once attached and activated, this device negates the pull of gravity, allowing you to fly.\n" +"Summary: Once attached and activated, this device negates the pull of gravity, allowing you to fly. While in the air, your acceleration is greatly increased.\n" "\n" -"Addendum: Note that it will be harder to brake when dashing while this is active.\n" +"Addendum: Due to the lack of a proper gravitational pull, it might be more difficult to orient oneself when in the air, or perform sharp movements.\n" "\n" "Saya's Note: If it really is inverting gravity then why are you still following the trajectory of the planet you're on? Just a thought."; +SWWM_LORETAG_HAMMERSPACE = "Hammerspace"; +SWWM_LORETXT_HAMMERSPACE = +"Designation: Pocket Hammerspace Container\n" +"Manufacturer: Cyrus Enterprises\n" +"\n" +"Summary: These devices provide the carrier with access to a dedicated off-world storage space, with practically instant deposit and withdraw times. You have been provided with two separate spaces, one for your items and weapons, and one entirely dedicated to carried ammunition.\n" +"\n" +"Addendum: Use of Hammerspace containment for storing living beings is not allowed and will immediately void your warranty.\n" +"\n" +"Saya's Note: This sounds like something out of a videogame, it's cool, sure, but did that stinky nerd really have to be a stinky nerd and call it \"Hammerspace\"?"; +SWWM_LORETAG_HAMMERSPACEEMBIGGENER = "Hs. Embiggener"; +SWWM_LORETXT_HAMMERSPACEEMBIGGENER = +"Designation: Hammerspace Embiggener\n" +"Manufacturer: Cyrus Enterprises\n" +"\n" +"Summary: These unique keys allow you to increase the maximum storage space allocated on your Hammerspace Container. Multiple keys can be used but there's a maximum limit of eight expansions per customer.\n" +"\n" +"Addendum: By contract only your ammo supply space can be expanded.\n" +"\n" +"Saya's Note: Is that even a real word?"; SWWM_LORETAG_HEALTHGEOM = "Health Geodesics"; SWWM_LORETXT_HEALTHGEOM = "Designation: Health Geodesics\n" @@ -459,6 +455,53 @@ SWWM_LORETXT_HEALTHGEOM = "Addendum: The most common shapes for these are a tetrahedron and a cube, the former providing less healing potency than the latter.\n" "\n" "Saya's Note: I talked with the guy and you're allowed to use these, and any other things they have, so you're going to see them all over the place during your mission."; +SWWM_LORETAG_HELL = "Hell"; +SWWM_LORETXT_HELL = +"Designation: Hell\n" +"Classification: Nether realm\n" +"\n" +"Summary: A vast world separate from our own, inhabited by creatures that could only be described as \"demons\". This Hell was first discovered through the various interdimensional travel experiments done by Imanaki Corp back in the early 21st century, although the UAC has put a lot of effort into hiding this fact and claiming to be the first to do so instead. Their response to the UAC walking right in and attempting to steal their precious resources has been that of total annihilation. Starting from the first incidents on Mars and its moons, and now a full-fledged invasion of Earth, there is not much hope left for mankind. Unless we do something about it, that is.\n" +"\n" +"Addendum: Imanaki's documents mention that the \"Hell\" they've seen is but a small fragment of a much larger realm.\n" +"\n" +"Saya's Note: Who would've thunk Hell is real, huh? And of course the UAC has to be the one to start this whole mess entirely out of stinking greed.\n"; +SWWM_LORETAG_HELLBLAZER = "Hellblazer"; +SWWM_LORETXT_HELLBLAZER = +"Designation: Hellfire Cannon Mk3 (\"Hellblazer\")\n" +"Manufacturer: Imanaki Research Corporation\n" +"\n" +"Summary: Rocket Propelled Grenade launcher of simple design. Four types of ammunition are available, all of them powered by highly condensed Argent Energy. Standard grenades are pretty much what anyone would expect, Crackshots burst into a cluster of smaller grenades, Ravagers release hellish flames on a wide area, and last but not least, Warheads devastate everything in a large radius, including yourself if you don't keep your distance.\n" +"\n" +"Primary Fire: Shoots the loaded ammunition with its propulsion armed and ready.\n" +"\n" +"Secondary Fire: Lobs the loaded ammunition unarmed, as a bouncing grenade.\n" +"\n" +"Reloading: The reload button allows you to cycle between the four ammo types.\n" +"\n" +"Addendum: Only a limited number of these are in circulation since the fall of Imanaki Corp. The UAC has attempted to reproduce the weapon, with varying results."; +SWWM_LORETAG_IBUKI = "Miyamoto, Ibuki"; +SWWM_LORETXT_IBUKI = +"Full Name: Ibuki Miyamoto\n" +"Codename: Red Oni\n" +"Nationality: Japanese\n" +"Date of Birth: 2074-09-09\n" +"\n" +"Summary: Ibuki is the result of the Red Oni supersoldier program at Akari Labs, commissioned by the US government. Her purpose was to turn the tides on the losing World War 3 that began due to a very badly received tweet from the President of the United States, an event reminiscent of the incident with Iran that the late Donald Trump had started. In a mere three years she was ready, thanks to an accelerated growth process. She's been enhanced to be effectively bulletproof, always standing strong under any circumstance, capable of handling extreme heat and cold, and trained for handling all kinds of weaponry. Much is also said about her personality, or her questionable physical traits such as the ludicrously impractical bust size, all of this which must clearly have been intentionally done by her creator and self-appointed \"mother\", Saya Miyamoto. After the end of the war she's gone through several jobs, crowning in her current one as a world-famous nude model and vlogger.\n" +"\n" +"Addendum: In a way, the Demolitionist project could be said to be a more economic alternative to the Red Oni program. Robots are easy to manufacture en-masse, after all.\n" +"\n" +"Saya's Note: Why does everyone keep bringing that up? What's the problem with me liking giga-tiddies? Like, seriously... Come on, don't kinkshame me, geez."; +SWWM_LORETAG_IMANAKI = "Imanaki Corp"; +SWWM_LORETXT_IMANAKI = +"Name: Imanaki Research Corporation\n" +"Classification: [CLASSIFIED]\n" +"Location: Kereshnovka, Russia\n" +"\n" +"Summary: The name of a private research facility built in 2004 in the isolated town of Kereshnovka, in northern Siberia. Despite trying to keep all their work secret, a lot of information was leaked by anonymous sources. Imanaki specialized in interdimensional travel. Nothing is known about how this all started or where they got all the technology from, but they would regularly perform explorations of Hell, a great many years before the UAC. During the peak of the \"Ghoul hunt\" in the town, the facility was destroyed by invading forces from an unidentified origin. Their only target seemed to be that facility, as once the task was done, they returned to their homeworld.\n" +"\n" +"Addendum: There are rumors surrounding the UAC's similar forays into exploring and exploiting Hell, with the potential explanation that they have spied on the company back in their UAAF days while under contract providing armed defense to the facility.\n" +"\n" +"Saya's Note: Of course, the \"great and mighty\" UAC stole all their shit and claimed that research as their own. They really have no fucking shame."; SWWM_LORETAG_INVINCIBALL = "Invinciball"; SWWM_LORETXT_INVINCIBALL = "Designation: Total Safety Device aka \"Fucking Invinciball\"\n" @@ -466,7 +509,7 @@ SWWM_LORETXT_INVINCIBALL = "\n" "Summary: For a limited time, makes the user impervious to all harm that could come to them, even if self-inflicted.\n" "\n" -"Addendum: The device cannot protect against artifacts of Nedoshiaan.\n" +"Addendum: The device cannot protect against artifacts of Nedoshiaan, it is impossible.\n" "\n" "Saya's Note: Is that a fucking MGR reference??? Does he even know how old the first game is? That meme is like... deader than dead!"; SWWM_LORETAG_KEYCHAIN = "Keychain"; @@ -476,7 +519,7 @@ SWWM_LORETXT_KEYCHAIN = "\n" "Summary: A nice keychain for all your keys. Currently held keys can be checked in the Keychain tab.\n" "\n" -"Saya's Note: I put some cute things in there that you might like. There's one of the bomb emoji, another of that silly \"butt bots gonna bot\" sign that you found so funny, and also a little chibi of me, so you can remember me when I'm not around. Oh, and I also put the trans flag in there, you know, as a little memento of that Q&A stream we did. I really didn't expect you to give that kind of answer, but heh, it does make sense when I think about it, you are built to defend human rights after all."; +"Saya's Note: I put some cute things in there that you might like. There's one of the bomb emoji, another of that silly \"butt bots gonna bot\" sign that you found so funny, and also a little chibi of me, so I'll always be with you when you're out in the wild. Oh, and I also put the trans flag in there, you know, as a little memento of that Q&A stream we did. I really didn't expect you to give that kind of answer, but heh, it does make sense when I think about it, you are built to defend human rights after all. I'm so proud of you, Demo-chan..."; SWWM_LORETAG_KNOWLEDGEBASE = "Library"; SWWM_LORETXT_KNOWLEDGEBASE = "Designation: Demolitionist Library\n" @@ -496,7 +539,38 @@ SWWM_LORETXT_MOTHLAMP = "\n" "Addendum: Has a tendency to attract moths, though this can have some utility. The lamp is enchanted to make them hostile to nearby enemies, and when turned off they will immediately attack.\n" "\n" -"Saya's Note: You know, I wish this thing attracted a certain kind of moth I really like..."; +"Saya's Note: You know, I wish this thing attracted a certain kind of moth I really like... The lady laughed at me and said that \"maybe\". I... really hope she's right... but at the same time I think I might regret this?"; +SWWM_LORETAG_LOCKE = "Dr. Locke"; +SWWM_LORETXT_LOCKE = +"Full Name: Janus Locke Hoodth\n" +"Nationality: Qurensniv\n" +"Date of Birth: 1980-07-30\n" +"\n" +"Summary: Younger brother of Häzel Hoodth, the \"mad doctor\" of Kereshnovka known for his inhuman experiments in order to search for the \"essence of immortality\". The young man changed entirely after Häzel's death in 1987, in an oil rig explosion near the town. While trying to follow on his brother's steps, on the side he also runs \"Dr. Locke's Wonderful Toys\" in order to earn some cash, although not many people really buy said toys, since they are hilariously deadly. In 2049 he attempted to \"take over the world\", an event that backfired so hilariously he completely disappeared from the public eye afterwards.\n" +"\n" +"Saya's Note: Guy's a total nut, but these \"toys\" are very reliable weapons for you. Just be careful when using them, shit could backfire catastrophically at any moment, who knows..."; +SWWM_LORETAG_LOOTBOX = "Lucky Chancebox"; +SWWM_LORETXT_LOOTBOX = +"Designation: Lucky Chance Box\n" +"Manufacturer: Nukritas 1xx\n" +"Excitement: Guaranteed\n" +"\n" +"Summary: Can't afford something but still want it? Then how about you get yourself one of these bad boys? Every single instance of this box is guaranteed to drop something worth more than what you've invested, so your money won't go to waste.\n" +"\n" +"Addendum: These boxes come in several tiers, increasing the chances to get even cooler stuff. Be on the lookout for the LEGENDARY GOLDEN CHANCEBOX, as it may give you absolutely wondrous rewards!\n" +"\n" +"Saya's Note: Why did I let them write their own entries? Also what the fuck is this gacha bullshit?"; +SWWM_LORETAG_MUNCH = "Munch Innovations"; +SWWM_LORETXT_MUNCH = +"Full Name: Munch Innovations\n" +"Classification: Arms Manufacturer\n" +"Location: Texas\n" +"\n" +"Summary: The Munch Innovations name applies to everything created by a very reclusive man, originating from a livetweeted \"invent as many guns as I can in one week\" challenge. Although most of them were quickly discarded, some of the weapons earned enough attention from various industry giants to enter mass production, the only requirement from the man was to be credited as the original creator.\n" +"\n" +"Addendum: Not much else is known about the man other than his name, \"Parker Munch\".\n" +"\n" +"Saya's Note: Why does this guy's name sound so familiar..."; SWWM_LORETAG_NUGGET = "Health/Armor Nuggets"; SWWM_LORETXT_NUGGET = "Designation: Health/Armor Nuggets\n" @@ -512,19 +586,47 @@ SWWM_LORETXT_OMNISIGHT = "Designation: Omnisight Mapping Unit\n" "Manufacturer: Akari Labs\n" "\n" -"Summary: Demolitionist-compatible devices containing mapping data for the current area. Provide both a general outline for your automap and also information on certain key points for your targetting array, such as the location of access keys, contraptions you can interact with, and also the nearest exits.\n" +"Summary: Demolitionist-compatible devices containing mapping data for the current area. Provide both a general outline for your automap and also additional information for your targetting array, such as the location of access keys and the nearest exits.\n" "\n" "Saya's Note: People have died filling in the data for these, so you better pay some respects whenever you find one."; +SWWM_LORETAG_PARTHORIS = "Parthoris"; +SWWM_LORETXT_PARTHORIS = +"Designation: Parthoris\n" +"Classification: Alternate world\n" +"\n" +"Summary: One of the other worlds we've discovered during the initial interportal experiments. This land is divided in seven major nations we don't yet know the name of, and appears to be stuck in some sort of a medieval-ish fantasy type setting, although some of our explorers have reported sights of unusually complex technology in a certain location we haven't been able to approach. As of now there is some hostility in the area what with a bunch of evildoers having taken over by force.\n" +"\n" +"Saya's Note: You are our ambassador here, so I hope you make a good impression. BTW I'm really curious about this \"Lair of Malumax\" they mentioned that's got hi-tech stuff. Quite out of place for this kind of setting."; +SWWM_LORETAG_PROPULSOR = "JetBurst Impulsor"; +SWWM_LORETXT_PROPULSOR = +"Designation: Forx JetBurst Impulsor\n" +"Manufacturer: Forx Aeronautics\n" +"\n" +"Summary: A portable, efficient jetpack unit. Allows the user to perform short \"boosts\" in mid air, can also be used for rapid dashing and dodging. It is recommended to wear protective clothing to prevent damage from extended use (this is not necessary if you are a robot).\n" +"\n" +"Addendum: Its fuel supply will regenerate over time when not in use.\n" +"\n" +"Saya's Note: Ibuki used to carry one of these too, but you won't be able to do all that crazy flying, you're a bit too heavy for all that. I wish I had used lighter materials to build you, then I could've had you sit on my lap during that Q&A session..."; +SWWM_LORETAG_PUSHERWEAPON = "Pusher"; +SWWM_LORETXT_PUSHERWEAPON = +"Designation: \"Pusher\" Microfusion Rotary Hammer\n" +"Manufacturer: Tach-Engine Technologies\n" +"\n" +"Summary: A somewhat portable rotary hammer meant for construction work. Contains an internal microfusion battery with an expected lifespan of 10,000 years.\n" +"\n" +"Primary Fire: Normal operation, aim the drill bit at whatever you need to break and hold the trigger.\n" +"\n" +"Secondary Fire: For those cases where you find some real tough material that's hard to break. Twist the secondary trigger until the drill bit has receded to what you feel is the adequate distance, then tap the trigger for it to strike at the target with full force. WARNING: Inadequate grip strength during this operation may cause the device to slip off, always keep the area clear to prevent collateral damages."; SWWM_LORETAG_RAGEKIT = "Ragekit"; SWWM_LORETXT_RAGEKIT = "Designation: Ragekit\n" "Manufacturer: Akari Labs\n" "\n" -"Summary: Experimental strengthening device for Demolitionists, doubles movement speed, quarters damage taken, and octuples any melee damage dealt. Adapted from technology obtained from the ruins of the Decade Mechanics facility.\n" +"Summary: Experimental strengthening device for Demolitionists. Doubles movement speed, quarters damage taken, and octuples any melee damage dealt. Adapted from technology obtained from the ruins of the Decade Mechanics facility.\n" "\n" -"Addendum: While the device is active, your voicebox will emit several screaming sounds.\n" +"Addendum: While the device is active, you may experience some discomfort, and the desire to scream.\n" "\n" -"Saya's Note: The screaming is an unintended side effect that I haven't had the time to fix. Big sorry. That's why this is classified as experimental."; +"Saya's Note: The screaming is an unintended side effect that I haven't had the time to fix. Big sorry. That's why this is classified as experimental. I know you're worried about it, but trust me, it'll be fine. You'll still be my cute Demo-chan even if you constantly drop F-bombs."; SWWM_LORETAG_REFRESHER = "Refresher"; SWWM_LORETXT_REFRESHER = "Designation: Refresher\n" @@ -541,155 +643,39 @@ SWWM_LORETXT_GCSANDWICH = "\n" "Summary: This specific tasty sandwich has been masterfully crafted by the co-founder of the University of Nos-Kora to give absolutely anyone the most wonderful boost in health. It also provides them with all the protection they could ever want.\n" "\n" -"Addendum: Can activate automatically to prevent the death of the user.\n" +"Addendum: Can activate automatically to prevent the death of the user, this is always effective.\n" "\n" -"Saya's Note: I swear to god, something's wrong with the world. Why the hell does this sandwich do what it does? This is stupid."; -SWWM_LORETAG_WARARMOR = "War Armor"; -SWWM_LORETXT_WARARMOR = -"Designation: War Armor\n" -"Manufacturer: Unissix Crafts, commissioned by Zanaveth III\n" +"Saya's Note: I swear to god, something's wrong with the world. Why the hell does this sandwich do what it does? This is stupid... Agh, those Nos-Kora crazies just won't stop making nonsensical nonsense that makes no sense."; +SWWM_LORETAG_SAYA = "Miyamoto, Saya"; +SWWM_LORETXT_SAYA = +"Full Name: Saya Miyamoto\n" +"Nationality: Japanese\n" +"Date Of Birth: 1993-03-20\n" "\n" -"Summary: Very robust, durable plate armor. Made of the finest almasteel in Devanikna. Originally commissioned for the third entry in Zanaveth's Instant Action arena events.\n" +"Summary: Born in 1993 in to Nana and Ryuji Miyamoto. Has two siblings: An older brother, Taro (1985), and a younger sister, Yui (2009). As a child she already showed interest in science and technology. At the very early age of 13 she graduated in Computer Science at MIT. Her first project was an autonomous house-cleaning robot, which would later evolve into the modern Maidbot. In 2018, due to the immortality inherited from her grandmother, princess Kaguya Houraisan, she ceased aging. However, thanks to this she has been able to keep working on everything she ever wanted. To this day, there are hundreds of different projects under her name, this includes you, the Demolitionist.\n" "\n" -"Protection:\n" -" - 90% reduction to heat, cold, electricity, slime and other elemental types.\n" -" - 80% reduction to all other types of damage.\n" -" - Additional 70% reduction to explosions.\n" +"Addendum: Saya is often called \"Not-Tomoko\" around the net, due to similarities to the protagonist of a popular 21st century manga series. She is well known for being quite blunt when talking to people, and also for being exaggeratedly flirty around attractive women. Her favourite colour is red, favourite animal is the otter, and favourite dish is pepperoni pizza. She also enjoys drone metal. Likes baggy clothes, refuses to wear skirts, only pants. Uses Arch, favourite editor is vim, favourite programming language is haskell. Her top \"turn-ons\" are well-endowed women, maids, femboys and heterochromia. She doesn't use deodorant or cologne, although people around her remark that her BO is \"kind of nice actually\". Among other hobbies, Saya really enjoys writing. Her first foray into manga, \"My Maid is a Sex Robot\", became successful enough to get an anime adaptation.\n" "\n" -"Durability: Can absorb a total of 600 units of damage before breaking.\n" +"Saya's Note: I'm sure you enjoy reading all about me, Demo-chan, but you have more important things to be doing, isn't that right?"; +SWWM_LORETAG_SERPENTRIDERS = "Serpent Riders"; +SWWM_LORETXT_SERPENTRIDERS = +"Designation: Serpent Riders\n" +"Classification: Evil cult\n" +"Origin: Undetermined\n" "\n" -"Addendum: Worn over a blast suit, you're pretty much ready for anything that could be thrown at you."; -SWWM_LORETAG_BIGSHOT = "Mr. BIG SHOT"; -SWWM_LORETXT_BIGSHOT = -"Full Name: John \"Bigshot\" Gunns" -"Nationality: American\n" -"Date Of Birth: 2110-11-12\n" +"Summary: A triad of evil sorcerers known all over these lands. All those who've dared fight against them haven't been very lucky. D'Sparil claimed the land of Parthoris, his many armies of undead having taken over the land before our arrival. Then in the land of Cronos there's Korax, a dark beast that taunts all those who challenge him. We haven't received much information on the third member, but this information will come eventually as we keep exploring these new worlds.\n" "\n" -"Summary: A man shrouded in mystery. Claims to be the \"son of Benellus, God of Shotguns\". He is one of the main financial backers of Blackmann Arms and has commissioned several unique weapons from them, most kept private. From his fortress in Nevada he frequently broadcasts himself talking about a coming \"apocalyptic event\" that he's been preparing for.\n" +"Saya's Note: I'm sure you can wipe out all these idiots without any issue, they have no idea of how strong you are (or of what you are, now that I think of it, these worlds hardly seem to know much about our technology)."; +SWWM_LORETAG_SIDHE = "Sidhe"; +SWWM_LORETXT_SIDHE = +"Designation: Sidhe\n" +"Location: Parthoris\n" "\n" -"Saya's Note: So, basically, just some crazy, I get it. But see, one of the designs from this guy was made public, and I couldn't help it but try getting my hands on that thing. I just want to see what it's like for you to handle that ballbusting hunk of metal. I've even given you enhancements to more efficiently utilize it. Any time you're using it I'll be watching, so you better give me something fun to eat popcorn with."; -SWWM_LORETAG_BLACKMANN = "Blackmann Arms"; -SWWM_LORETXT_BLACKMANN = -"Name: Blackmann Arms Ltd.\n" -"Classification: Arms Designer and Manufacturer\n" -"Location: Germany\n" +"Summary: An elf species native to this world, they have a natural bond with magic and are known to be great fighters. As the story goes they however face persecution by other groups due to the opposition to the current ruler. Most of them have been killed in the war, only few remain. It is your mission to help them.\n" "\n" -"Summary: Founded in 1924 by Daniel Ischer as \"Schwarzmann Exotischwaffen\", an \"exotic weapons\" workshop in Cologne. Rose to fame when the family escaped to America in 1933. After settling in, the shop \"americanized\" itself under the current brand of \"Blackmann Arms\", and quickly rose to fame designing all sorts of ingenious weaponry for the allied forces. In current years, the company is run by Hermann E. Ischer, who has made it a personal objective that as long as any commissioned weapon can hold more than one bullet, it must have a built-in function for shooting everything as quickly as possible.\n" +"Addendum: It's possible that your horns might appear as \"pointy ears\" to the locals and you might be confused for a Sidhe. Use this to your advantage if necessary.\n" "\n" -"Addendum: A big part of the company's funding comes from Mr. BIG SHOT Industries, which according to reports by Hermann himself, regularly commissions all sorts of ludicrous shotgun designs that no sane man would thing of using. Out of all these strictly private commissions, one sole weapon was eventually made public, the \"Wallbuster\", a 25-barrel revolving shotgun.\n" -"\n" -"Saya's Note: I think I cracked the code here... if the company's name references what I think it does... Oh come on. Did the founder seriously intend people to think of his dick whenever they looked at the massive guns he made? Gross."; -SWWM_LORETAG_DECADEMECH = "Decade Mechanics"; -SWWM_LORETXT_DECADEMECH = -"Name: Decade Mechanics\n" -"Classification: Military Research Facility???\n" -"Location: Sunkaeze (X'Animen outer rim)\n" -"\n" -"Summary: Ever since humanity was made aware of the gateway in Sedna connecting the two solar systems, many expeditions have been made to learn more of the worlds in X'Animen (name given by the governing bodies within). One major discovery that not even the natives were aware of, was that of a ruined research facility in the wasteland planet of Sunkaeze, belonging to a defunct company named \"Decade Mechanics\". Research material, blueprints and even finished, still functioning products have been found within, giving a general idea of the company's specialties. Various groups have successfully recreated items entirely off their original blueprints, some of which have been commercial successes in the military field.\n" -"\n" -"Addendum: The facility is said to be haunted. Many lives have been lost exploring the ruins, either due to accidents or unidentified \"hostile creatures\"."; -SWWM_LORETAG_ENGINETECH = "Tach-Engine"; -SWWM_LORETXT_ENGINETECH = -"Name: Tach-Engine Technology Institute\n" -"Classification: Technology Conglomerate\n" -"Location: Scotland\n" -"\n" -"Summary: Founded in 2014 by J.A. Tachmek-Smith, by then the \"richest man in the world\". Ever since its inception, the man has spent his fortune in research and development of many innovations for the \"betterment of mankind\". Fusion energy, improvements in waste recycling, cleaner air, etc. Tach-Engine Technologies is currently the second largest tech company on Earth, and the founder has claimed that he has no intent on \"swiping the crown off those people\", in reference to current industry titan [NAME REMOVED]. The company has also collaborated multiple times with its Nukuri counterpart, Nekuratek, though much of the knowledge exchanged couldn't be put to use due to the restrictions imposed by the UN after World War 3.\n" -"\n" -"Addendum: Thanks to his contact with Nekuratek, the CEO obtained access to the data retrieved from the exploration of the Decade Mechanics ruins. Shortly after this, he announced the opening a new subdivision dedicated to reproducing the works of Decade Mechanics, thus marking the company's entry into the arms race.\n" -"\n" -"Saya's Note: I had to remove the name of those people so I wouldn't get my butt sued clean off. You can't even imagine what they're like. The UAC is nothing compared to them."; -SWWM_LORETAG_IMANAKI = "Imanaki Corp"; -SWWM_LORETXT_IMANAKI = -"Name: Imanaki Research Corporation\n" -"Classification: [CLASSIFIED]\n" -"Location: Russia\n" -"\n" -"Summary: The name of a private research facility built in 2004 in the isolated town of Kereshnovka, in northern Siberia. Despite trying to keep all their work secret, a lot of information was leaked by anonymous sources. Imanaki specialized in interdimensional travel. Nothing is known about how this all started or where they got all the technology from, but they would regularly perform explorations of Hell, a great many years before the UAC. During the peak of the \"Ghoul hunt\" in the town, the facility was destroyed by invading forces from an unidentified origin. Their only target seemed to be that facility, as once the task was done, they returned to their homeworld.\n" -"\n" -"Addendum: There are rumors surrounding the UAC's similar forays into exploring and exploiting Hell, with the potential explanation that they have spied on the company back in their UAAF days while under contract providing armed defense to the facility.\n" -"\n" -"Saya's Note: Of course, the \"great and mighty\" UAC stole all their shit and claimed that research as their own. They really have no fucking shame."; -SWWM_LORETAG_SYMNATEK = "Symnatek"; -SWWM_LORETXT_SYMNATEK = -"Name: Symnatek\n" -"Classification: Industrial Equipment Manufacturer\n" -"Location: Australia\n" -"\n" -"Summary: \"Building a better world for a better future, since 2040\". The largest producer of industrial equipment in its home country. While the main body dedicates itself to industry and construction, the child company of Itamex provides the military with all sorts of basic supplies." -"\n" -"Addendum: Symnatek is large enough to fend off the almost-global domination of Mixom, makin Australia one of the few countries where they have any real competition.\n" -"\n" -"Saya's Note: In this time and age, even fucking tool makers contribute to the military. Huh? What do you mean \"the pot calling the kettle black\"? Oh sure, just because of Ibuki that makes me one of them. Whatever."; -SWWM_LORETAG_UNISSIX = "Unissix, Misa A."; -SWWM_LORETXT_UNISSIX = -"Full Name: Misa Azadeku Unissix aka \"Unissix Bokurou Azadeku\"\n" -"Nationality: Devanikan\n" -"Date Of Birth: 1992-02-29\n" -"\n" -"Summary: Misa is the lead weapon and armor designer of the entire Unissix family. Starting at a very early age, her fascination with weponry has always been quite noticeable. Despite a strong fighting spirit, she lacks the physical prowess required to be a warrior, so she's dedicated herself entirely to her craft.\n" -"\n" -"Addendum: Rose to fame on Earth during a visit from Zanaveth II, her wife, who leads Nekuratek, a massive tech giant in the Nukuri homeworld.\n" -"\n" -"Saya's Note: I remember having some chats with her. She's got good taste, and her wife is hot af. I'm still pissy that we haven't been in contact much thanks to those American idiots causing the Nukuri to leave."; -SWWM_LORETAG_CANDYGUN = "Candy Gun"; -SWWM_LORETXT_CANDYGUN = -"Designation: \"Taste the Sweetness\" Candy Gun\n" -"Manufacturer: Munch Innovations\n" -"\n" -"Summary: Overcharged variant of the Explodium gun. Not only the bullets, but also parts of the weapon, are made of Explodium. Mixed with strawberry-flavoured hard caramel too, which for some reason results in a festival of fireworks.\n" -"\n" -"Primary Fire: Single shots of explosive sweetness.\n" -"\n" -"Secondary Fire: Explosive reload. The yield is much more extreme so watch out for splash damage. Can only be performed if you have spare mags.\n" -"\n" -"Special: During the first moments of preparing an explosive reload, you can hold primary fire to keep the mag in and instead throw the whole gun as a grenade for even greater damage than just the mag. Can only be performed if you have spare guns.\n" -"\n" -"Reloading: Same as usual. Remember that you can keep one bullet in the chamber.\n" -"\n" -"Addendum: Due to the disposable nature of the Candy Gun, up to 4 additional spares can be held in your inventory.\n" -"\n" -"Saya's Note: I don't understand how mixing hard candy with explodium makes these fancy fireworks, but I still love every single second of it."; -SWWM_LORETAG_EVISCERATOR = "Eviscerator"; -SWWM_LORETXT_EVISCERATOR = -"Designation: \"Eviscerator\" High Load Flak Cannon\n" -"Manufacturer: Mr. BIG SHOT Industries\n" -"\n" -"Summary: Beastly portable artillery, turns fleshy targets into fine red mist in mere instants.\n" -"\n" -"Primary Fire: Detonates the shell directly, spreading hot steaming metal in front of the user.\n" -"\n" -"Secondary Fire: Lobs the shell as a grenade, it will detonate on impact with any surface or object and release its payload in the direction it was facing when shot.\n" -"\n" -"Reloading: Since the weapon reloads automatically and its internal ammo box has been linked to your Hammerspace Container, the reload button instead functions as a toggle for different spread modes on the primary fire.\n" -"\n" -"Addendum: The metal fragments shot by this weapon will ricochet all over the place, which makes it very effective for shooting around corners.\n" -"\n" -"Saya's Note: Why is there an \"owo\" face scribbled on every shell? Who did this? I want answers!"; -SWWM_LORETAG_HELLBLAZER = "Hellblazer"; -SWWM_LORETXT_HELLBLAZER = -"Designation: Hellfire Cannon Mk3 (\"Hellblazer\")\n" -"Manufacturer: Imanaki Research Corporation\n" -"\n" -"Summary: Rocket Propelled Grenade launcher of simple design. Four types of ammunition are available, all of them powered by highly condensed Argent Energy. Standard grenades are pretty much what anyone would expect, Crackshots burst into a cluster of smaller grenades, Ravagers release hellish flames on a wide area, and last but not least, Warheads devastate everything in a large radius, including yourself if you don't keep your distance.\n" -"\n" -"Primary Fire: Shoots the loaded ammunition with its propulsion armed and ready.\n" -"\n" -"Secondary Fire: Lobs the loaded ammunition unarmed, as a bouncing grenade.\n" -"\n" -"Reloading: The reload button allows you to cycle between the four ammo types.\n" -"\n" -"Addendum: Only a limited number of these are in circulation since the fall of Imanaki Corp."; -SWWM_LORETAG_PUSHERWEAPON = "Pusher"; -SWWM_LORETXT_PUSHERWEAPON = -"Designation: \"Pusher\" Microfusion Rotary Hammer\n" -"Manufacturer: Tach-Engine Technologies\n" -"\n" -"Summary: A somewhat portable rotary hammer meant for construction work. Contains an internal microfusion battery with an expected lifespan of 10,000 years.\n" -"\n" -"Primary Fire: Normal operation, aim the drill bit at whatever you need to break and hold the trigger.\n" -"\n" -"Secondary Fire: For those cases where you find some real tough material that's hard to break. Twist the secondary trigger until the drill bit has receded to what you feel is the adequate distance, then release for it to strike at the target with full force. WARNING: Inadequate grip strength during this operation may cause the device to slip off, always keep the area clear to prevent collateral damages."; +"Saya's Note: How do you exactly pronounce \"Sidhe\" anyway? Also, do they get angry if you use things made of wood? I MUST KNOW!"; SWWM_LORETAG_SILVERBULLET = "Silver Bullet JET"; SWWM_LORETXT_SILVERBULLET = "Designation: Silver Bullet JET\n" @@ -721,7 +707,9 @@ SWWM_LORETXT_SPARKSTER = "\n" "Reload: Reloads, obviously.\n" "\n" -"Addendum: If the secondary beam comes in contact with an energy blob it will be detonated with increased damage and range."; +"Addendum: If the secondary beam comes in contact with an energy blob it will be detonated with increased damage and range.\n" +"\n" +"Saya's Note: This thing's rusty af but still works somehow. Good tech, wow."; SWWM_LORETAG_SPREADGUN = "Spreadgun"; SWWM_LORETXT_SPREADGUN = "Designation: \"Rhino Stopper\" Spreadgun\n" @@ -735,7 +723,50 @@ SWWM_LORETXT_SPREADGUN = "\n" "Reloading: Unloads the current shell and loads a new one. If the loaded shell was not spent it will be added back to its ammo pool if there's enough space, otherwise it'll be dropped on the ground.\n" "\n" -"Addendum: While simple in its operation, the constant manual reloading tends to become tiresome quickly for some users. A semi-automatic recoil operated variant of the Spreadgun is currently being tested and may be ready for the public in a couple years, there are still some issues to solve such as frequent jamming."; +"Addendum: While simple in its operation, the constant manual reloading tends to become tiresome quickly for some users. A semi-automatic recoil operated variant of the Spreadgun is currently being tested and may be ready for the public in a couple years, there are still some issues to solve such as frequent jamming.\n" +"\n" +"Saya's Note: Shit looks impractical AF, especially that reload method. How the fuck no one has made a hole through their own palm pushing the barrel back in is beyond me."; +SWWM_LORETAG_SYMNATEK = "Symnatek"; +SWWM_LORETXT_SYMNATEK = +"Name: Symnatek\n" +"Classification: Industrial Equipment Manufacturer\n" +"Location: Brisbane, Australia\n" +"\n" +"Summary: \"Building a better world for a better future, since 2040\". The largest producer of industrial equipment in its home country. While the main body dedicates itself to industry and construction, the child company of Itamex provides the military with all sorts of basic supplies." +"\n" +"Addendum: Symnatek is large enough to fend off the almost-global domination of Mixom, makin Australia one of the few countries where they have any real competition.\n" +"\n" +"Saya's Note: In this time and age, even fucking tool makers contribute to the military. Huh? What do you mean \"the pot calling the kettle black\"? Oh sure, just because of Ibuki that makes me one of them. Whatever."; +SWWM_LORETAG_UAC = "UAC"; +SWWM_LORETXT_UAC = +"Name: Union Aerospace Corporation\n" +"Classification: Military Conglomerate, Research Foundation\n" +"Location: Union States, Mars and Jupiter\n" +"\n" +"Summary: Founded in 2015 by Thomas Kelliher, as a shell company of the Union Aerospace Armed Forces (UAAF). The UAC's rise to power began in 2025 with its famous Joint Mars Expeditions. Since the creation of \"Mars City\" and the various posts in Phobos and Deimos, the UAC has been effectively working outside of Earth law, which has caused endless controversy. Moreso after securing their position as the largest military body on Earth in the aftermath of World War 3. In recent years, their experiments in teleportation made the news after a critical failure resulted in an invasion from Hell itself, along with the disappearance of the entire moon of Deimos, and eventually resulted in the demons making their way towards Earth. Governments all across the world have their hands full trying to fend off the attackers, but despite the constant bombardment of his accounts on social media, current CEO Samuel Hayden has refused to give any explanation about this incident. The only information provided is that they \"have a man\" that can resolve this.\n" +"\n" +"Addendum: Many rumors surround this company. There are accusations of ritualistic practices, brainwashing, propaganda... Pretty much anything you could imagine. Don't get involved with them, especially now, after your creator decided to speak ill of the company.\n" +"\n" +"Saya's Note: Oh they TOTALLY deserve what happened to them, and I hope they get screwed even harder for this blunder. I'm glad I never invested in their shit. Little robot boy can eat my shorts, by the way. He ain't gonna r e s o l v e shit."; +SWWM_LORETAG_UNISSIX = "Unissix, Misa A."; +SWWM_LORETXT_UNISSIX = +"Full Name: Misa Azadeku Unissix aka \"Unissix Bokurou Azadeku\"\n" +"Nationality: Devanikan\n" +"Date Of Birth: 1992-02-29\n" +"\n" +"Summary: Misa is the lead weapon and armor designer of the entire Unissix family. Starting at a very early age, her fascination with weponry has always been quite noticeable. Despite a strong fighting spirit, she lacks the physical prowess required to be a warrior, so she's dedicated herself entirely to her craft.\n" +"\n" +"Addendum: Rose to fame on Earth during a visit from Zanaveth II, her wife, who leads Nekuratek, a massive tech giant in the Nukuri homeworld.\n" +"\n" +"Saya's Note: I remember having some chats with her. She's got good taste, and her wife is hot af (and really smart, I mean she made the AI you're built on). I'm still pissy that we haven't been in contact much thanks to those American idiots causing the Nukuri to leave. I can send messages sometimes through the embassy in the Lunar Capital, but those damn bunnies always make it hard."; +SWWM_LORETAG_VOICEBOX = "Loudboi Voicebox"; +SWWM_LORETXT_VOICEBOX = +"Designation: Loudboi Voicebox\n" +"Manufacturer: Akari Labs\n" +"\n" +"Summary: A lightweight voice synthesizer for AI units. Easy to install and program, perfect for those building on a budget. Comes with a built-in \"robotic\" filter for those who prefer that over an awkwardly \"too human\" sounding voice.\n" +"\n" +"Saya's Note: Ibuki is still amused that I programmed your voicebox to sound like her. It also cracks me up that you've even picked up all her little mannerisms because of it."; SWWM_LORETAG_WALLBUSTER = "Wallbuster"; SWWM_LORETXT_WALLBUSTER = "Designation: "Wallbuster" Heavy Armor Breaching Shotgun\n" @@ -747,11 +778,28 @@ SWWM_LORETXT_WALLBUSTER = "\n" "Secondary Fire: Shoots the 5-barrel group at the top.\n" "\n" -"Tertiary Fire: Shoots all barrels.\n" +"Tertiary Fire: Shoots all barrels. With some types of ammunition it is possible to breach reinforced steel doors up to 40cm in thickness.\n" "\n" "Reloading: Reloading is performed by pulling the side lever, which allows detaching each individual 5-barrel group. For reloading on the go, a magnetic belt or some other mechanism is recommended. Speed loaders are available for purchase from the Blackmann Arms website, or from authorized distributors.\n" "\n" -"Addendum: The Demolitionist is equipped with a programmable rapid reload routine in order to make the whole process fast and easy."; +"Addendum: The Demolitionist is equipped with a programmable rapid reload routine in order to make the whole process fast and easy.\n" +"\n" +"Saya's Note: Y'know... that name makes me think of grandma. I mean, if you change the first letter... Oh, do you hear those drums and that guitar? 'cause I sure do..."; +SWWM_LORETAG_WARARMOR = "War Armor"; +SWWM_LORETXT_WARARMOR = +"Designation: War Armor\n" +"Manufacturer: Unissix Crafts, commissioned by Zanaveth III\n" +"\n" +"Summary: Very robust, durable plate armor. Made of the finest almasteel in Devanikna. Originally commissioned for the third entry in Zanaveth's Instant Action arena events.\n" +"\n" +"Protection:\n" +" - 90% reduction to heat, cold, electricity, slime and other elemental types.\n" +" - 80% reduction to all other types of damage.\n" +" - Additional 70% reduction to explosions.\n" +"\n" +"Durability: Can absorb a total of 600 units of damage before breaking.\n" +"\n" +"Addendum: Worn over a blast suit, you're pretty much ready for anything that could be thrown at you."; SWWM_LORETAG_YNYKRON = "Ynykron Artifact"; SWWM_LORETXT_YNYKRON = "Designation: Ynykron Artifact (\"Death Cannon\")\n" @@ -766,17 +814,6 @@ SWWM_LORETXT_YNYKRON = "Reloading: If there's any ongoing charge process, it will be cancelled and no ammunition will be used, but the weapon will have to vent for a while. Otherwise, loads a new crystal.\n" "\n" "Addendum: Only the one original instance of this weapon should exist, but replicas have begun to surface thanks to reverse engineering efforts. Still, use of this weapon is considered illegal without proper authorization. Luckily for you, you are authorized to use it against the invading forces."; -SWWM_LORETAG_LOOTBOX = "Lucky Chancebox"; -SWWM_LORETXT_LOOTBOX = -"Designation: Lucky Chance Box\n" -"Manufacturer: Nukritas 1xx\n" -"Excitement: Guaranteed\n" -"\n" -"Summary: Can't afford cool stuff but still want it? Then how about you get yourself one of these bad boys? Every single instance of this box is guaranteed to drop something you definitely need, your money won't go to waste.\n" -"\n" -"Addendum: These boxes come in several tiers, increasing the chances to get even cooler stuff.\n" -"\n" -"Saya's Note: Why did I let them write their own entries? Also what the fuck is this gacha bullshit?"; /* GAME STUFF */ // tags, pickups T_PUSHER = "Pusher"; @@ -931,7 +968,7 @@ FN_SPECTRE = "Fuzzy"; FN_LOST = "Skully"; FN_CACO = "Caco"; FN_HELL = "Brownie"; -FN_BARON = "Mr. Grah"; +FN_BARON = "Mr. Gruh"; FN_ARACH = "Babby"; FN_PAIN = "Ass Pain"; FN_REVEN = "AAAAAAAAA"; diff --git a/menudef.txt b/menudef.txt index 0c1ee3435..25b702428 100644 --- a/menudef.txt +++ b/menudef.txt @@ -66,6 +66,7 @@ OptionMenu "SWWMCreditsMenu" StaticText "Unreal", "White" StaticText "Unreal Tournament", "White" StaticText "Unreal Tournament 2004", "White" + StaticText "Unreal Tournament 3", "White" StaticText " " StaticText "Ion Storm", "Gold" StaticText "Deus Ex", "White" @@ -129,4 +130,4 @@ AddOptionMenu "OptionsMenu" StaticText " " Submenu "$SWWM_MTITLE", "SWWMOptionMenu" Submenu "$SWWM_MCREDS", "SWWMCreditsMenu" -} \ No newline at end of file +} diff --git a/modeldef.pusher b/modeldef.pusher index 32adae185..b7ca22e7d 100644 --- a/modeldef.pusher +++ b/modeldef.pusher @@ -1,3 +1,17 @@ +Model "PusherProjectile" +{ + Path "models" + + Model 0 "PusherPickup_d.3d" + Skin 0 "Pusher.png" + Scale 0.15 0.15 0.15 + ZOffset 5 + USEACTORPITCH + USEACTORROLL + + FrameIndex XZW1 A 0 0 +} + Model "PusherWeapon" { Path "models" @@ -11,3 +25,127 @@ Model "PusherWeapon" FrameIndex XZW1 A 0 0 } + +Model "PusherWeapon" +{ + Path "models" + + Model 1 "Pusher1st_d.3d" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Pusher.png" + + AngleOffset -90 + Scale -0.005 0.0025 0.005 + Offset 2 0 1 + + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + // DeselectEnd / Select + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + // FireStart + FrameIndex XZW2 M 1 13 + // Fire + FrameIndex XZW2 N 1 14 + FrameIndex XZW2 O 1 15 + FrameIndex XZW2 P 1 16 + FrameIndex XZW2 Q 1 17 + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + // FireEnd + FrameIndex XZW2 T 1 21 + // AltFire + FrameIndex XZW2 U 1 23 + FrameIndex XZW2 V 1 24 + FrameIndex XZW2 W 1 25 + FrameIndex XZW2 X 1 26 + FrameIndex XZW2 Y 1 27 + FrameIndex XZW2 Z 1 28 + FrameIndex XZW3 A 1 29 + FrameIndex XZW3 B 1 30 + FrameIndex XZW3 C 1 31 + FrameIndex XZW3 D 1 32 + FrameIndex XZW3 E 1 33 + FrameIndex XZW3 F 1 34 + FrameIndex XZW3 G 1 35 + FrameIndex XZW3 H 1 36 + // AltFireRelease + FrameIndex XZW5 R 1 37 // oops, forgot this frame + FrameIndex XZW3 I 1 38 + FrameIndex XZW3 J 1 39 + FrameIndex XZW3 K 1 40 + FrameIndex XZW3 L 1 41 + FrameIndex XZW3 M 1 42 + FrameIndex XZW3 N 1 43 + FrameIndex XZW3 O 1 44 + FrameIndex XZW3 P 1 45 + // AltFireMiss + SurfaceSkin 1 3 "" + FrameIndex XZW3 Q 1 47 + FrameIndex XZW3 R 1 48 + FrameIndex XZW3 S 1 49 + FrameIndex XZW3 T 1 50 + FrameIndex XZW3 U 1 51 + FrameIndex XZW3 V 1 52 + FrameIndex XZW3 W 1 53 + SurfaceSkin 1 3 "Pusher.png" + // Idle + FrameIndex XZW3 X 1 55 + FrameIndex XZW3 Y 1 56 + FrameIndex XZW3 Z 1 57 + FrameIndex XZW4 A 1 58 + FrameIndex XZW4 B 1 59 + FrameIndex XZW4 C 1 60 + FrameIndex XZW4 D 1 61 + FrameIndex XZW4 E 1 62 + FrameIndex XZW4 F 1 63 + FrameIndex XZW4 G 1 64 + FrameIndex XZW4 H 1 65 + FrameIndex XZW4 I 1 66 + FrameIndex XZW4 J 1 67 + FrameIndex XZW4 K 1 68 + FrameIndex XZW4 L 1 69 + FrameIndex XZW4 M 1 70 + FrameIndex XZW4 N 1 71 + FrameIndex XZW4 O 1 72 + FrameIndex XZW4 P 1 73 + FrameIndex XZW4 Q 1 74 + FrameIndex XZW4 R 1 75 + FrameIndex XZW4 S 1 76 + FrameIndex XZW4 T 1 77 + FrameIndex XZW4 U 1 78 + FrameIndex XZW4 V 1 79 + FrameIndex XZW4 W 1 80 + FrameIndex XZW4 X 1 81 + FrameIndex XZW4 Y 1 82 + FrameIndex XZW4 Z 1 83 + // Melee + FrameIndex XZW5 A 1 85 + FrameIndex XZW5 B 1 86 + FrameIndex XZW5 C 1 87 + FrameIndex XZW5 D 1 88 + FrameIndex XZW5 E 1 89 + FrameIndex XZW5 F 1 90 + FrameIndex XZW5 G 1 91 + FrameIndex XZW5 H 1 92 + FrameIndex XZW5 I 1 93 + FrameIndex XZW5 J 1 94 + FrameIndex XZW5 K 1 95 + FrameIndex XZW5 L 1 96 + FrameIndex XZW5 M 1 97 + FrameIndex XZW5 N 1 98 + FrameIndex XZW5 O 1 99 + FrameIndex XZW5 P 1 100 + FrameIndex XZW5 Q 1 101 +} diff --git a/models/ModelNotes.txt b/models/ModelNotes.txt index 93b3cf018..aa43051c4 100644 --- a/models/ModelNotes.txt +++ b/models/ModelNotes.txt @@ -13,21 +13,21 @@ X candygun tertiary Deep Impact: -* down/select -* fire anim -* altfire anim -* pump -* "check out gun" idle anim -* melee bash +X down/select +X fire anim +X altfire anim +X pump +X "check out gun" idle anim +X melee bash Pusher: -- down/select -- fire anim -- altfire anim -- altfire slip -- "check out gun" idle anim -- melee bash +X down/select +X fire anim +X altfire anim +X altfire slip +X "check out gun" idle anim +X melee bash Spreadgun: diff --git a/models/Pusher1st.blend b/models/Pusher1st.blend new file mode 100644 index 000000000..56daad1ab Binary files /dev/null and b/models/Pusher1st.blend differ diff --git a/models/Pusher1st_a.3d b/models/Pusher1st_a.3d new file mode 100644 index 000000000..3822d3648 Binary files /dev/null and b/models/Pusher1st_a.3d differ diff --git a/models/Pusher1st_d.3d b/models/Pusher1st_d.3d new file mode 100644 index 000000000..57c1243c5 Binary files /dev/null and b/models/Pusher1st_d.3d differ diff --git a/sndinfo.txt b/sndinfo.txt index 53ecc3cc1..e280beee4 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -384,6 +384,41 @@ explodium/throwmag sounds/explodiumgun/expl_throwmag.ogg $limit explodium/hit 32 $limit explodium/maghit 32 +pusher/select sounds/pusher/push_select.ogg +pusher/deselect sounds/pusher/push_deselect.ogg +pusher/motor sounds/pusher/push_motor.ogg +pusher/motorend sounds/pusher/push_motorend.ogg +pusher/start sounds/pusher/push_start.ogg +pusher/drill sounds/pusher/push_drill.ogg +pusher/hit1 sounds/pusher/push_hitw1.ogg +pusher/hit2 sounds/pusher/push_hitw2.ogg +pusher/hit3 sounds/pusher/push_hitw3.ogg +$random pusher/hit { pusher/hit1 pusher/hit2 pusher/hit3 } +$limit pusher/hit 32 +pusher/meat1 sounds/pusher/push_hitf1.ogg +pusher/meat2 sounds/pusher/push_hitf2.ogg +pusher/meat3 sounds/pusher/push_hitf3.ogg +$random pusher/meat { pusher/meat1 pusher/meat2 pusher/meat3 } +$limit pusher/meat 32 +pusher/end sounds/pusher/push_end.ogg +pusher/checkout sounds/pusher/push_idle.ogg +pusher/pullback sounds/pusher/push_altcharge.ogg +pusher/altfire1 sounds/pusher/push_altfire1.ogg +pusher/altfire2 sounds/pusher/push_altfire2.ogg +$random pusher/altfire { pusher/altfire1 pusher/altfire2 } +pusher/miss sounds/pusher/push_miss.ogg +pusher/althit1 sounds/pusher/push_slam1.ogg +pusher/althit2 sounds/pusher/push_slam2.ogg +$random pusher/althit { pusher/althit1 pusher/althit2 } +pusher/altmeat1 sounds/pusher/push_slamf1.ogg +pusher/altmeat2 sounds/pusher/push_slamf2.ogg +$random pusher/altmeat { pusher/altmeat1 pusher/altmeat2 } +pusher/fly sounds/pusher/push_fly.ogg +pusher/bounce1 sounds/pusher/push_bounce1.ogg +pusher/bounce2 sounds/pusher/push_bounce2.ogg +pusher/bounce3 sounds/pusher/push_bounce3.ogg +$random pusher/bounce { pusher/bounce1 pusher/bounce2 pusher/bounce3 } + candygun/fire1 sounds/candygun/candy_fire1.ogg candygun/fire2 sounds/candygun/candy_fire2.ogg candygun/fire3 sounds/candygun/candy_fire3.ogg diff --git a/sounds/pusher/push_altcharge.ogg b/sounds/pusher/push_altcharge.ogg new file mode 100644 index 000000000..7e3f1cc3f Binary files /dev/null and b/sounds/pusher/push_altcharge.ogg differ diff --git a/sounds/pusher/push_altfire1.ogg b/sounds/pusher/push_altfire1.ogg new file mode 100644 index 000000000..30afce51c Binary files /dev/null and b/sounds/pusher/push_altfire1.ogg differ diff --git a/sounds/pusher/push_altfire2.ogg b/sounds/pusher/push_altfire2.ogg new file mode 100644 index 000000000..430a4cfc7 Binary files /dev/null and b/sounds/pusher/push_altfire2.ogg differ diff --git a/sounds/pusher/push_bounce1.ogg b/sounds/pusher/push_bounce1.ogg new file mode 100644 index 000000000..b266cc757 Binary files /dev/null and b/sounds/pusher/push_bounce1.ogg differ diff --git a/sounds/pusher/push_bounce2.ogg b/sounds/pusher/push_bounce2.ogg new file mode 100644 index 000000000..7cf282164 Binary files /dev/null and b/sounds/pusher/push_bounce2.ogg differ diff --git a/sounds/pusher/push_bounce3.ogg b/sounds/pusher/push_bounce3.ogg new file mode 100644 index 000000000..93d01d3dc Binary files /dev/null and b/sounds/pusher/push_bounce3.ogg differ diff --git a/sounds/pusher/push_deselect.ogg b/sounds/pusher/push_deselect.ogg new file mode 100644 index 000000000..bf84991f7 Binary files /dev/null and b/sounds/pusher/push_deselect.ogg differ diff --git a/sounds/pusher/push_drill.ogg b/sounds/pusher/push_drill.ogg new file mode 100644 index 000000000..bb1758fc0 Binary files /dev/null and b/sounds/pusher/push_drill.ogg differ diff --git a/sounds/pusher/push_end.ogg b/sounds/pusher/push_end.ogg new file mode 100644 index 000000000..39e30b3d5 Binary files /dev/null and b/sounds/pusher/push_end.ogg differ diff --git a/sounds/pusher/push_fly.ogg b/sounds/pusher/push_fly.ogg new file mode 100644 index 000000000..77d08d4b0 Binary files /dev/null and b/sounds/pusher/push_fly.ogg differ diff --git a/sounds/pusher/push_hitf1.ogg b/sounds/pusher/push_hitf1.ogg new file mode 100644 index 000000000..a7b9e9db9 Binary files /dev/null and b/sounds/pusher/push_hitf1.ogg differ diff --git a/sounds/pusher/push_hitf2.ogg b/sounds/pusher/push_hitf2.ogg new file mode 100644 index 000000000..a6dd3beab Binary files /dev/null and b/sounds/pusher/push_hitf2.ogg differ diff --git a/sounds/pusher/push_hitf3.ogg b/sounds/pusher/push_hitf3.ogg new file mode 100644 index 000000000..3438a4caf Binary files /dev/null and b/sounds/pusher/push_hitf3.ogg differ diff --git a/sounds/pusher/push_hitw1.ogg b/sounds/pusher/push_hitw1.ogg new file mode 100644 index 000000000..ecbee7ab5 Binary files /dev/null and b/sounds/pusher/push_hitw1.ogg differ diff --git a/sounds/pusher/push_hitw2.ogg b/sounds/pusher/push_hitw2.ogg new file mode 100644 index 000000000..d6de68618 Binary files /dev/null and b/sounds/pusher/push_hitw2.ogg differ diff --git a/sounds/pusher/push_hitw3.ogg b/sounds/pusher/push_hitw3.ogg new file mode 100644 index 000000000..9acb4926a Binary files /dev/null and b/sounds/pusher/push_hitw3.ogg differ diff --git a/sounds/pusher/push_idle.ogg b/sounds/pusher/push_idle.ogg new file mode 100644 index 000000000..461bb2b18 Binary files /dev/null and b/sounds/pusher/push_idle.ogg differ diff --git a/sounds/pusher/push_miss.ogg b/sounds/pusher/push_miss.ogg new file mode 100644 index 000000000..25e6758c5 Binary files /dev/null and b/sounds/pusher/push_miss.ogg differ diff --git a/sounds/pusher/push_motor.ogg b/sounds/pusher/push_motor.ogg new file mode 100644 index 000000000..ef68825d3 Binary files /dev/null and b/sounds/pusher/push_motor.ogg differ diff --git a/sounds/pusher/push_motorend.ogg b/sounds/pusher/push_motorend.ogg new file mode 100644 index 000000000..6d001ead4 Binary files /dev/null and b/sounds/pusher/push_motorend.ogg differ diff --git a/sounds/pusher/push_select.ogg b/sounds/pusher/push_select.ogg new file mode 100644 index 000000000..5bd6045f3 Binary files /dev/null and b/sounds/pusher/push_select.ogg differ diff --git a/sounds/pusher/push_slam1.ogg b/sounds/pusher/push_slam1.ogg new file mode 100644 index 000000000..68d26c86d Binary files /dev/null and b/sounds/pusher/push_slam1.ogg differ diff --git a/sounds/pusher/push_slam2.ogg b/sounds/pusher/push_slam2.ogg new file mode 100644 index 000000000..1480a12b3 Binary files /dev/null and b/sounds/pusher/push_slam2.ogg differ diff --git a/sounds/pusher/push_slamf1.ogg b/sounds/pusher/push_slamf1.ogg new file mode 100644 index 000000000..63867dbf8 Binary files /dev/null and b/sounds/pusher/push_slamf1.ogg differ diff --git a/sounds/pusher/push_slamf2.ogg b/sounds/pusher/push_slamf2.ogg new file mode 100644 index 000000000..e3bd98b2e Binary files /dev/null and b/sounds/pusher/push_slamf2.ogg differ diff --git a/sounds/pusher/push_start.ogg b/sounds/pusher/push_start.ogg new file mode 100644 index 000000000..b9c7b5c29 Binary files /dev/null and b/sounds/pusher/push_start.ogg differ diff --git a/zscript/swwm_common.zsc b/zscript/swwm_common.zsc index 64c0e494a..2606dd081 100644 --- a/zscript/swwm_common.zsc +++ b/zscript/swwm_common.zsc @@ -48,8 +48,19 @@ Class SWWMStats : Thinker toptaken; double grounddist, airdist, fuelusage, topspeed; Array wstats; + Array > alreadygot; int favweapon; + bool GotWeapon( Class which ) + { + for ( int i=0; i which ) { for ( int i=0; i 0 ) - players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICE,CHANF_LOCAL,1.,ATTN_NONE); + players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICE,CHANF_DEFAULT,1.,ATTN_NONE); onelinertic = 0; onelinerspan = 0; } @@ -1608,7 +1619,7 @@ Class SWWMHandler : EventHandler DoKeyTagFix(e.Thing); SWWMInterest.Spawn(thekey:Key(e.Thing)); } - if ( e.Thing.bSHOOTABLE && !(e.Thing is 'LampMoth') && !(e.Thing is 'CompanionLamp') ) SWWMCombatTracker.Spawn(e.Thing); + if ( (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER) && !(e.Thing is 'LampMoth') && !(e.Thing is 'CompanionLamp') ) SWWMCombatTracker.Spawn(e.Thing); } override void PostUiTick() diff --git a/zscript/swwm_inventory.zsc b/zscript/swwm_inventory.zsc index 5d068b4ff..e34c12e1a 100644 --- a/zscript/swwm_inventory.zsc +++ b/zscript/swwm_inventory.zsc @@ -449,40 +449,36 @@ Class SWWMWeapon : Weapon abstract double slope = AimLineAttack(angle,DEFMELEERANGE,t,0.,ALF_CHECK3D); FLineTraceData d; LineTrace(angle,DEFMELEERANGE,slope,0,player.viewheight,data:d); - if ( d.HitType != TRACE_HitNone ) + if ( d.HitType == TRACE_HitActor ) { bool bloodless = true; - if ( d.HitType == TRACE_HitActor ) + double diff = deltaangle(self.angle,AngleTo(d.HitActor)); + self.angle += clamp(diff,-5.,5.); + SWWMHandler.DoKnockback(d.HitActor,d.HitDir+(0,0,.2),dmg*2000); + if ( CountInv("RagekitPower") ) { - double diff = deltaangle(self.angle,AngleTo(d.HitActor)); - self.angle += clamp(diff,-5.,5.); - SWWMHandler.DoKnockback(d.HitActor,d.HitDir+(0,0,.2),dmg*2000); - if ( CountInv("RagekitPower") ) - { - invoker.bEXTREMEDEATH = true; - invoker.bNOEXTREMEDEATH = false; - } - else - { - invoker.bEXTREMEDEATH = false; - invoker.bNOEXTREMEDEATH = true; - } - dmg = d.HitActor.DamageMobj(invoker,self,dmg,'Melee',DMG_USEANGLE|DMG_THRUSTLESS,atan2(d.HitDir.y,d.HitDir.x)); - invoker.bEXTREMEDEATH = invoker.default.bEXTREMEDEATH; - invoker.bNOEXTREMEDEATH = invoker.default.bEXTREMEDEATH; - if ( d.HitActor.player ) d.HitActor.A_QuakeEx(2,2,2,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25); - if ( !d.HitActor.bNOBLOOD ) - { - d.HitActor.TraceBleed(dmg,invoker); - d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); - } - else bloodless = false; + invoker.bEXTREMEDEATH = true; + invoker.bNOEXTREMEDEATH = false; } - else if ( d.HitType == TRACE_HitWall ) - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4); + else + { + invoker.bEXTREMEDEATH = false; + invoker.bNOEXTREMEDEATH = true; + } + d.HitActor.DaggerAlert(self); + dmg = d.HitActor.DamageMobj(invoker,self,dmg,'Melee',DMG_USEANGLE|DMG_THRUSTLESS,atan2(d.HitDir.y,d.HitDir.x)); + invoker.bEXTREMEDEATH = invoker.default.bEXTREMEDEATH; + invoker.bNOEXTREMEDEATH = invoker.default.bEXTREMEDEATH; + if ( d.HitActor.player ) d.HitActor.A_QuakeEx(2,2,2,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25); + if ( !d.HitActor.bNOBLOOD ) + { + d.HitActor.TraceBleed(dmg,invoker); + d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); + } + else bloodless = false; A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12); A_StartSound(bloodless?"demolitionist/punch":"demolitionist/punchf",CHAN_WEAPON,CHANF_OVERLAP); - A_AlertMonsters(); + A_AlertMonsters(300); return true; } return false; @@ -490,6 +486,17 @@ Class SWWMWeapon : Weapon abstract action void A_Melee( int dmg = 40 ) { for ( int i=0; i<16; i++ ) if ( TryMelee(angle+i*(45./16),dmg) || TryMelee(angle-i*(45./16),dmg) ) return; + // check for walls instead + FTranslatedLineTarget t; + double slope = AimLineAttack(angle,DEFMELEERANGE,t,0.,ALF_CHECK3D); + FLineTraceData d; + LineTrace(angle,DEFMELEERANGE,slope,TRF_THRUACTORS,player.viewheight,data:d); + if ( d.HitType == TRACE_HitNone ) return; + if ( d.HitType == TRACE_HitWall ) + d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4); + A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12); + A_StartSound("demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); + A_AlertMonsters(100); } override void PlayUpSound( Actor origin ) { diff --git a/zscript/swwm_jackhammer.zsc b/zscript/swwm_jackhammer.zsc index faacc3fbe..25a30176e 100644 --- a/zscript/swwm_jackhammer.zsc +++ b/zscript/swwm_jackhammer.zsc @@ -1,18 +1,315 @@ // Tach-Engine Technologies Microfusion Rotary Hammer aka "Pusher" (planned for unreleased Zanaveth Ultra Suite 2) // Slot 1, replaces Chainsaw, Gauntlets, Timon's Axe +Class PusherImpact : Actor +{ + Default + { + Radius 0.1; + Height 0; + +NOGRAVITY; + +NOCLIP; + +DONTSPLASH; + +NOTELEPORT; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_QuakeEx(2,2,2,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.3); + A_StartSound("pusher/hit",CHAN_VOICE); + A_SprayDecal("WallCrack",-20); + int numpt = Random[Pusher](5,10); + Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + for ( int i=0; i= (BlockingMobj.pos.x+BlockingMobj.radius) ) + HitNormal = (1,0,0); + else if ( (pos.y+radius) <= (BlockingMobj.pos.y-BlockingMobj.radius) ) + HitNormal = (0,-1,0); + else if ( (pos.y-radius) >= (BlockingMobj.pos.y+BlockingMobj.radius) ) + HitNormal = (0,1,0); + else if ( pos.z >= (BlockingMobj.pos.z+BlockingMobj.height) ) + HitNormal = (0,0,1); + else if ( (pos.z+height) <= BlockingMobj.pos.z ) + HitNormal = (0,0,-1); + } + // undo the bounce, we need to hook in our own + angle = oldangle; + pitch = oldpitch; + vel = oldvel; + // re-do the bounce with our formula + vel = .8*((vel dot HitNormal)*HitNormal*(-1.8+FRandom[Pusher](.0,.8))+vel); + A_StartSound("pusher/bounce",volume:.3); + A_AlertMonsters(300); + if ( vel.length() < 5 ) + { + special1 = 0; + ExplodeMissile(); + } + } + void A_BecomePickup() + { + if ( special1 ) + { + // stuff from direct hit + FLineTraceData d; + LineTrace(angle,40,pitch,0,5,data:d); + Vector3 HitNormal = -d.HitDir; + if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; + else HitNormal = d.HitSector.floorplane.Normal; + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; + else HitNormal = d.HitSector.ceilingplane.Normal; + } + else if ( d.HitType == TRACE_HitWall ) + { + HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) HitNormal *= -1; + } + let p = Spawn("BigPusherImpact",d.HitLocation+HitNormal*4); + p.angle = atan2(HitNormal.y,HitNormal.x); + p.pitch = asin(-HitNormal.z); + } + bNOGRAVITY = true; + bSPECIAL = true; + A_SetSize(20,16); + A_ChangeLinkFlags(0); + A_StopSound(CHAN_BODY); + } + override int DoSpecialDamage( Actor target, int damage, Name damagetype ) + { + if ( target == lasthit ) return damage; + lasthit = target; + if ( target.bNOBLOOD ) A_StartSound("pusher/althit",CHAN_WEAPON,CHANF_OVERLAP); + else A_StartSound("pusher/altmeat",CHAN_WEAPON,CHANF_OVERLAP); + target.A_QuakeEx(6,6,6,10,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.7); + SWWMHandler.DoKnockback(target,vel.unit(),85000); + return damage; + } + override void Touch( Actor toucher ) + { + if ( !toucher.player || !toucher.GiveInventory("PusherWeapon",1) ) return; + if ( toucher.CheckLocalView() ) + { + toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_NOPAUSE|CHANF_MAYBE_LOCAL); + let w = toucher.FindInventory("PusherWeapon"); + if ( w ) w.PrintPickupMessage(true,w.PickupMessage()); + } + else toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_MAYBE_LOCAL); + toucher.A_SelectWeapon("PusherWeapon"); + Destroy(); + } + States + { + Spawn: + XZW1 A 1 A_Reorient(); + Wait; + Bounce: + XZW1 A 0 A_HandleBounce(); + Goto Spawn; + Death: + XZW1 A -1 A_BecomePickup(); + Stop; + } +} + Class PusherWeapon : SWWMWeapon { - int chargelevel; + double chargelevel, vibe; - transient ui TextureID WeaponBox; - transient ui HUDFont mTewiFont; + transient ui TextureID WeaponBox, ChargeBar; + transient ui DynamicValueInterpolator ChargeInter; override void AttachToOwner( Actor other ) { Super.AttachToOwner(other); // additional lore - SWWMLoreLibrary.Add(other.player,"Locke"); + SWWMLoreLibrary.Add(other.player,"EngineTech"); + } + + override void DrawWeapon( double TicFrac, double bx, double by, Vector2 hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/PusherDisplay.png",TexMan.Type_Any); + if ( !ChargeBar ) ChargeBar = TexMan.CheckForTexture("graphics/HUD/PusherBar.png",TexMan.Type_Any); + Screen.DrawTexture(WeaponBox,false,bx-61,by-10,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + int chg = clamp(ChargeInter?ChargeInter.GetValue():int(chargelevel*100),0,100); + int cw = int(chg*56./100.); + Screen.DrawTexture(ChargeBar,false,bx-59,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRight,cw); + } + + override void HudTick() + { + if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(int(chargelevel*100),.5,1,50); + ChargeInter.Update(int(chargelevel*100)); } override bool ReportHUDAmmo() @@ -20,6 +317,210 @@ Class PusherWeapon : SWWMWeapon return true; } + action void A_PusherDrill() + { + invoker.chargelevel = clamp(invoker.chargelevel+FRandom[Pusher](-.1,.2),.3,1.); + A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); + A_WeaponOffset(FRandom[Pusher](-1,1)*2,32+FRandom[Pusher](-1,1)*2); + A_ZoomFactor(1.01,ZOOM_INSTANT); + A_ZoomFactor(1.); + A_Recoil(-1.); + Vector3 x, y, z; + [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3*z); + FLineTraceData d; + LineTrace(angle,60,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + if ( d.HitType != TRACE_HitNone ) + { + A_QuakeEx(3,3,3,7,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); + A_AlertMonsters(1200); + int dmg = int(3+invoker.chargelevel*2); + bool bloodless = false; + if ( d.HitType == TRACE_HitActor ) + { + double diff = deltaangle(self.angle,AngleTo(d.HitActor)); + self.angle += clamp(diff,-5.,5.); + SWWMHandler.DoKnockback(d.HitActor,d.HitDir,8500); + d.HitActor.A_QuakeEx(4,4,4,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.1); + dmg = d.HitActor.DamageMobj(invoker,self,dmg,'Tenderize',DMG_THRUSTLESS); + if ( d.HitActor.bNOBLOOD ) + { + let p = Spawn("PusherImpact",d.HitLocation-d.HitDir*4); + p.angle = atan2(-d.HitDir.y,-d.HitDir.x); + p.pitch = asin(d.HitDir.z); + } + else + { + d.HitActor.TraceBleed(dmg,invoker); + d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); + d.HitActor.A_StartSound("pusher/meat",CHAN_ITEMEXTRA,CHANF_OVERLAP); + } + } + else + { + Vector3 HitNormal = -d.HitDir; + if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; + else HitNormal = d.HitSector.floorplane.Normal; + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; + else HitNormal = d.HitSector.ceilingplane.Normal; + } + else if ( d.HitType == TRACE_HitWall ) + { + HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) HitNormal *= -1; + d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); + } + let p = Spawn("PusherImpact",d.HitLocation+HitNormal*4); + p.angle = atan2(HitNormal.y,HitNormal.x); + p.pitch = asin(-HitNormal.z); + } + } + int numpt = Random[Pusher](3,5); + for ( int i=0; i= .5 ) invoker.vibe = min(1.,invoker.vibe+.02); + Vector3 x, y, z; + [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3*z); + int numpt = Random[Pusher](3,5); + for ( int i=0; i .3) ) + player.SetPSprite(PSP_WEAPON,ResolveState("AltRelease")); + } + Default { Tag "$T_PUSHER"; @@ -36,5 +537,109 @@ Class PusherWeapon : SWWMWeapon Spawn: XZW1 A -1; Stop; + Select: + XZW2 G 2 A_FullRaise(); + XZW2 HIJKL 2; + Goto Ready; + Ready: + XZW2 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); + Wait; + Fire: + XZW2 A 2 + { + A_WeaponOffset(0,32); + invoker.chargelevel = .2; + A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOPING,pitch:1.5); + } + XZW2 M 2; + XZW2 N 0 A_StartSound("pusher/drill",CHAN_WEAPON,CHANF_LOOPING); + Hold: + XZW2 N 1 + { + A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); + A_Recoil(1.); + } + XZW2 O 1 A_PusherDrill(); + XZW2 P 1 + { + A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); + A_Recoil(1.); + } + XZW2 Q 1 A_PusherDrill(); + XZW2 R 1 + { + A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); + A_Recoil(1.); + } + XZW2 S 1 A_PusherDrill(); + XZW2 N 2 + { + if ( player.cmd.buttons&BT_ATTACK ) + return ResolveState("Hold"); + invoker.chargelevel *= .4; + A_Recoil(.5); + A_ClearRefire(); + A_WeaponOffset(0,32); + A_StopSound(CHAN_WEAPON); + A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); + return ResolveState(null); + } + XZW2 T 2 { invoker.chargelevel = 0.; } + Goto Ready; + Dummy: + TNT1 A 1 A_ChargeUp(); + Wait; + AltFire: + XZW2 A 2 + { + A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOPING,pitch:1.5); + A_StartSound("pusher/pullback",CHAN_WEAPON,CHANF_OVERLAP); + } + XZW2 UVW 2; + XZW2 X 0 A_BeginCharge(); + XZW2 XYZ 3; + XZW3 ABCDEFG 3; + XZW3 H 0 + { + A_QuakeEx(1,1,1,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); + A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); + } + XZW3 H 3; + Wait; + AltRelease: + #### # 1 A_PusherAlt(); + XZW5 R 2; + XZW3 IJKL 2; + XZW3 MNOP 3; + Goto Ready; + AltMiss: + XZW3 QRSTUVW 1; + TNT1 A -1 { RemoveInventory(invoker); } + Stop; + Reload: + Zoom: + XZW2 A 2 A_StartSound("pusher/checkout",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 XYZ 2; + XZW4 ABCDEFGHIJKLMNOPQR 2; + XZW4 STUVWXYZ 3; + Goto Ready; + User1: + XZW2 A 2 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 ABCD 2; + XZW5 EFGH 1; + XZW5 I 0 A_Melee(70); + XZW5 IJ 2; + XZW5 K 2 { invoker.PlayUpSound(self); } + XZW5 LM 2; + XZW5 NOPQ 3; + Goto Ready; + Deselect: + XZW2 B 2 A_StartSound("pusher/deselect",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 CDEF 2; + XZW2 F -1 A_FullLower(); + Stop; } } diff --git a/zscript/swwm_menu.zsc b/zscript/swwm_menu.zsc index 7218cef4c..112ed429e 100644 --- a/zscript/swwm_menu.zsc +++ b/zscript/swwm_menu.zsc @@ -137,7 +137,20 @@ Class SWWMKnowledgeBaseMenu : GenericMenu invlist.Clear(); return true; case MKEY_DOWN: - if ( (curtab == TAB_CHAT) && (StatusBar is 'SWWMStatusBar') && (sel0 > 0) ) + if ( curtab == TAB_MISSION ) + { + String str = StringTable.Localize("$SWWM_MISSION_NONE"); + if ( gameinfo.gametype&GAME_Doom ) str = StringTable.Localize("$SWWM_MISSION_DOOM"); + else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC"); + else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN"); + BrokenLines l = TewiFont.BreakLines(str,620); + if ( (l.Count() > 27) && (sel0 < l.Count()-28) ) + { + MenuSound("menu/demoscroll"); + sel0++; + } + } + else if ( (curtab == TAB_CHAT) && (StatusBar is 'SWWMStatusBar') && (sel0 > 0) ) { MenuSound("menu/demoscroll"); sel0--; @@ -165,7 +178,15 @@ Class SWWMKnowledgeBaseMenu : GenericMenu } return true; case MKEY_UP: - if ( (curtab == TAB_CHAT) && (StatusBar is 'SWWMStatusBar') && (sel0 < SWWMStatusBar(StatusBar).FullHistory.Size()-1) ) + if ( curtab == TAB_MISSION ) + { + if ( sel0 > 0 ) + { + MenuSound("menu/demoscroll"); + sel0--; + } + } + else if ( (curtab == TAB_CHAT) && (StatusBar is 'SWWMStatusBar') && (sel0 < SWWMStatusBar(StatusBar).FullHistory.Size()-1) ) { MenuSound("menu/demoscroll"); sel0++; @@ -624,14 +645,25 @@ Class SWWMKnowledgeBaseMenu : GenericMenu else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC"); else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN"); else str = StringTable.Localize("$SWWM_MISSION_NONE"); - BrokenLines l = TewiFont.BreakLines(str,628); + BrokenLines l = TewiFont.BreakLines(str,620); xx = 6; yy = 17; - for ( int i=0; i 379 ) break; Screen.DrawText(TewiFont,Font.CR_GREEN,origin.x+xx,origin.y+yy,l.StringAt(i),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); yy += 13; } + // scrollbar + if ( l.Count() > 27 ) + { + Screen.DrawTexture(WindowSeparator,false,origin.x+631,origin.y+14,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + xx = 634; + int szr = l.Count()-28; + yy = floor(ofs*(353./szr))+17; + Screen.DrawText(TewiFont,Font.CR_FIRE,origin.x+xx,origin.y+yy,"▮",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + } } else if ( curtab == TAB_STATS ) { diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index a0ec2b871..d72518719 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -844,7 +844,7 @@ Class Demolitionist : PlayerPawn // add lore if any SWWMLoreLibrary.Add(player,item.GetClassName()); if ( !mute ) mute = CVar.GetCVar('swwm_mutevoice',player); - if ( (item is 'Weapon') && CheckLocalView() && (mute.GetInt() < 2) ) + if ( (item is 'Weapon') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() && (mute.GetInt() < 2) ) SWWMHandler.AddOneliner("getweapon"); if ( (item is 'Key') && !key_reentrant ) {