Browse Source

Merged the latest Samsara test revision, other things

Ijon Tichy 7 years ago
parent
commit
554874afa9
69 changed files with 39272 additions and 843 deletions
  1. 1 0
      .gitignore
  2. BIN
      B.J. Blazkowicz.rar
  3. BIN
      Chex.rar
  4. BIN
      Corvus.rar
  5. BIN
      DUCK CANUCK.rar
  6. BIN
      Parias.rar
  7. BIN
      Pickup Sprites - Doomguy.rar
  8. BIN
      Security Officer.rar
  9. 107 0
      pk3/BJCHAT
  10. 125 0
      pk3/BOTINFO
  11. 81 0
      pk3/CHEXCHAT
  12. 97 0
      pk3/CORVCHAT
  13. 75 0
      pk3/DECALDEF
  14. 4 1
      pk3/DECORATE.dec
  15. 26 0
      pk3/DOOMCHAT
  16. 107 0
      pk3/DUKECHAT
  17. 103 0
      pk3/FONTDEFS
  18. 1952 0
      pk3/GLDEFS
  19. 93 0
      pk3/KEYCONF
  20. 120 0
      pk3/LANGUAGE
  21. 88 0
      pk3/MAPINFO
  22. 88 0
      pk3/PARSCHAT
  23. 2827 0
      pk3/SBARINFO
  24. 991 0
      pk3/SNDINFO
  25. 76 0
      pk3/SOCHAT
  26. 209 0
      pk3/TEXTCOLO
  27. 17 0
      pk3/UNUSEDCHAT
  28. BIN
      pk3/acs/samsara.o
  29. 6 5
      pk3/acs/samsaraDefs.h
  30. 793 3
      pk3/acs/samsara_tichy.c
  31. BIN
      pk3/acs/samsara_tichy.o
  32. 1094 0
      pk3/actors/CHEX
  33. 1063 0
      pk3/actors/DOOM
  34. 3633 0
      pk3/actors/DUKE
  35. 96 0
      pk3/actors/GAME_CHAOS
  36. 1910 0
      pk3/actors/GAME_CHEX
  37. 2285 0
      pk3/actors/GAME_DOOM
  38. 2496 0
      pk3/actors/GAME_HERETIC
  39. 2763 0
      pk3/actors/GAME_HEXEN
  40. 289 0
      pk3/actors/GAME_SKULLTAG
  41. 1270 0
      pk3/actors/GAME_STRIFE
  42. 623 0
      pk3/actors/GAME_TERRAINCOGNITA
  43. 2070 0
      pk3/actors/HERETIC
  44. 1127 0
      pk3/actors/HEXEN
  45. 515 0
      pk3/actors/KEYS
  46. 4281 0
      pk3/actors/MARATHON
  47. 1791 0
      pk3/actors/WEAPONS
  48. 1256 0
      pk3/actors/WOLFEN
  49. 1 1
      pk3/decorate/slot5.dec
  50. 1 1
      pk3/decorate/slot6.dec
  51. 1 1
      pk3/decorate/slot7.dec
  52. 45 0
      pk3/extra/ADMINTRIVIA
  53. 67 0
      pk3/extra/CREDITS
  54. BIN
      pk3/graphics/loserpic.png
  55. BIN
      pk3/graphics/winerpic.png
  56. BIN
      pk3/music/D_STLOSE
  57. BIN
      pk3/music/D_STWIN
  58. BIN
      pk3/resources-chex.wad
  59. BIN
      pk3/resources-doom.wad
  60. BIN
      pk3/resources-duke.wad
  61. BIN
      pk3/resources-heretic.wad
  62. BIN
      pk3/resources-hexen.wad
  63. BIN
      pk3/resources-hud.wad
  64. BIN
      pk3/resources-marathon.wad
  65. BIN
      pk3/resources-samsara.wad
  66. BIN
      pk3/resources-wolfen.wad
  67. 2608 0
      pk3/samsara.dec
  68. 0 831
      toConvert.c
  69. 1 0
      topic.txt

+ 1 - 0
.gitignore

@@ -1,2 +1,3 @@
 *.sw[op]
 *.pk3
+nocommit/*

BIN
B.J. Blazkowicz.rar


BIN
Chex.rar


BIN
Corvus.rar


BIN
DUCK CANUCK.rar


BIN
Parias.rar


BIN
Pickup Sprites - Doomguy.rar


BIN
Security Officer.rar


+ 107 - 0
pk3/BJCHAT

@@ -0,0 +1,107 @@
+[IntroStrings]
+"Agent Blazkowicz here. Beginning the operation."
+"Once more into the breach. Let's go."
+"Another group of fresh recruits. Let me show you how it's done."
+"The things I do for my country."
+"Obviously this mission calls for a professional."
+"Time to raise some hell, men."
+
+[FragStrings]
+"I only regret that you have but one life to give."
+"Didn't sign up for wetwork, but I'm not complaining."
+"Clean shot, clean kill."
+"Shame your fancy gun doesn't fire worth a damn."
+"One less hostile to account for."
+"I can't tell if you were trying to fight back or not."
+"They sure don't make solders here like they do back home."
+"No time for your excuses, I've got more work to do."
+"I don't know what game you're playing, but this is war."
+"You're not the biggest coward I've killed, but you're skirting the line."
+
+[KilledStrings]
+"You've officially done what the Reich couldn't."
+"Congratulations, you shoot better than a Nazi."
+"Reporting casualties. Ow."
+"Give a boy a weapon and he thinks he's a soldier."
+"You call that a kill? I've been tortured worse!"
+"You realize of course that this means war."
+"I've got a surplus GI beating put aside just for you."
+"Next time it'll be my foot versus your throat."
+"You should feel honored, getting to kill a real American hero."
+
+[RoamingStrings]
+"Unfamiliar territory. Better fan out and explore."
+"Nothing like pounding pavement. Now, where are those hostiles..."
+"Don't worry, I'm coming to get you. I just have to find you first."
+"Ugh, here comes the boring part. C'mon, show yourselves already."
+"I think I hear footsteps...who's that I spy?"
+"Figures, you can't fight worth a damn but you sure can hide."
+"You're lucky I can't stab you in the back right now."
+"I hate it when they run. Come on and fight like a soldier."
+"I've got a history of hunting and killing. You don't have the advantage."
+"Guerilla warfare? You're fighting the wrong man, pal."
+"Nothing like a little cardio to pump me up before a fight."
+"I can go for miles, buddy. I've got time to find you."
+"That's right, keep running. I want to see if I can hit you across the room."
+"I don't expect insults to draw you out. I'd rather do that to your face. C'mere."
+"That gun of yours better be ready to fire. I'm gonna shoot first."
+"Going AWOL ain't any way to win a fight, soldier. Take your punishment."
+"You know all this effort to catch you means I'm gonna drop the hammer harder."
+"I like the thrill of the chase. It's just icing on the cake, you know?"
+"I spy with my little eye...nothing. Yet. Show yourself."
+"Stop dragging out the war, buddy. Let's get this over with."
+"You think you know the battlefield better than me? We'll see about that."
+"You'd better not be huddling in a corner, hiding. That's what the Nazis did."
+"Running for reinforcements isn't going to help. I'll take them on, too."
+"Time for a little in-field recon. Ready and loaded."
+"Not sure if you're neutralized or not...let's take a look around."
+"Anyone still breathing? C'mere, I can fix that."
+"I'll go over every foot with a fine-toothed comb until I found you."
+
+[RareRoamingStrings]
+"You're damned lucky I can't read my map and shoot you at the same time."
+"It'd be nice if the Wheel would turn back. I want to shoot Hitler again."
+"Why the hell does everything have to be a maze around here?"
+
+//[LosingRoamingStrings]
+
+[WinStrings]
+"Agent Blazkowicz reporting in. Mission accomplished."
+"Nothing more than another completed mission. Time for the next one."
+"There are two elements to a good victory: Careful planning and solid execution."
+"Time to reap the spoils of war."
+"Don't worry, I don't shoot POWs. Your cell is gonna be tiny though."
+"The only thing that would make this better is a Dutch cigar."
+
+[LoseStrings]
+"This is not an acceptable outcome."
+"You may have won the battle, but I can still win the war."
+"Damn it to hell. Retreat! Fall back!"
+"Should've bought more war bonds."
+"Where's that lousy cyanide pill..."
+"If you think we're done here, you're dead wrong."
+
+[FrustratedStrings] // Spammer!
+"Enough already, air strikes aren't fair!"
+"You missin' a leg, relying so hard on that crutch?!"
+"Overkill? Real original, let's see you use a real weapon."
+"Yeah, laugh now, wait until it's my turn."
+"Why the hell are you wasting this on me? There's other jerks to kill!"
+
+[EnragedStrings] // You fail it!
+"That's it! The gloves are off! Time for a war crime."
+"I hope you're prepared for a slow death, scumbag."
+"You're gonna get a taste of what I gave der Fuhrer!"
+"Hope you're still feeling cocky after I snap your neck."
+"I am gonna whup your ass like it's Eva Braun's!"
+
+[DemoralizedStrings] // Your skill is not enough!
+"Jesus, I feel like a French beach."
+"Ugh...did anyone get that tank's serial number?"
+"Okay, I give up, you've got what it takes to serve with me."
+"Come on, at least the Nazis would take breaks while beating me!"
+"I haven't been beaten this bad since boot camp."
+
+[PissedStrings] // Llama!
+"Figures that the only language you understand is violence. Let's chat."
+"Now that's just disrespectful, interrupting a superior officer like that."

+ 125 - 0
pk3/BOTINFO

@@ -0,0 +1,125 @@
+{
+name = "\cdDoomguy"
+script = DFULTBOT
+chatlump = DOOMCHAT
+gender = male
+revealed = true
+class = "Doomguy"
+color = "00 F0 00"
+accuracy = 3
+intellect = 3
+evade = 2
+anticipation = 4
+reactiontime = 1
+perception = 4
+chatfrequency = 10
+favoriteweapon = "Super Shotgun"
+}
+
+{
+name = "\cqCorvus"
+script = DFULTBOT
+chatlump = CORVCHAT
+gender = male
+revealed = true
+class = "Corvus"
+color = "771100"
+accuracy = 2
+intellect = 4
+evade = 2
+anticipation = 1
+reactiontime = 1
+perception = 4
+chatfrequency = 30
+favoriteweapon = "Dragon Claw"
+}
+
+{
+name = "\clParias"
+script = DFULTBOT
+chatlump = PARSCHAT
+gender = male
+revealed = true
+class = "Parias"
+color = "FF0000"
+accuracy = 2
+intellect = 4
+evade = 3
+anticipation = 2
+reactiontime = 2
+perception = 3
+chatfrequency = 25
+favoriteweapon = "Firestorm"
+}
+
+{
+name = "\chFred Chexter"
+script = DFULTBOT
+chatlump = CHEXCHAT
+gender = male
+revealed = true
+class = "ChexWarrior"
+color = "0000FF"
+accuracy = 2
+intellect = 3
+evade = 2
+anticipation = 3
+reactiontime = 4
+perception = 2
+chatfrequency = 25
+favoriteweapon = "Zorch Propulsor"
+}
+
+{
+name = "\cjB.J. Blazkowicz"
+script = DFULTBOT
+chatlump = BJCHAT
+gender = male
+revealed = true
+class = "Blazkowicz"
+color = "737373"
+accuracy = 3
+intellect = 1
+evade = 4
+anticipation = 2
+reactiontime = 3
+perception = 3
+chatfrequency = 30
+favoriteweapon = "  Chaingun  "
+}
+
+{
+name = "\cfDuke Nukem"
+script = DFULTBOT
+chatlump = DUKECHAT
+gender = male
+revealed = true
+class = "Duke"
+color = "FF 00 00"
+accuracy = 3
+intellect = 0
+evade = 3
+anticipation = 3
+reactiontime = 2
+perception = 4
+chatfrequency = 50
+favoriteweapon = "  Shotgun  "
+}
+
+{
+name = "\cnSecurity Officer"
+script = DFULTBOT
+chatlump = SOCHAT
+gender = male
+revealed = true
+class = "SecurityOfficer"
+color = "007FFF"
+accuracy = 4
+intellect = 0
+evade = 4
+anticipation = 1
+reactiontime = 2
+perception = 2
+chatfrequency = 30
+favoriteweapon = "MA-75B Assault Rifle"
+}

+ 81 - 0
pk3/CHEXCHAT

@@ -0,0 +1,81 @@
+[IntroStrings]
+"All right! Good luck, everyone."
+"Hello, folks, how's it going?"
+"This'll be fun."
+"Everyone ready for a fair and friendly match?"
+"May the best man, woman, or thing from beyond win."
+"I'm from Chex Squadron, and I volunteer for battle!"
+
+[FragStrings]
+"Don't worry, just relax. You'll respawn shortly."
+"Don't give up yet!"
+"I'm sure you can do better than that."
+"Oh, don't take it personally. Not everyone wins."
+"You'll be fine. I didn't even hurt you."
+"Zorched!"
+"I wonder where you'll end up?"
+"Have a nice trip."
+"Don't get lost wandering back, now."
+
+[KilledStrings]
+"Hold the party mix! I'm not finished yet!"
+"Oh, wow, great shot."
+"You would do well in the IFC."
+"Nice. I'll have to do better next time."
+"It's not over yet."
+"I still have plenty of fight left in me!"
+"You'll go from cadet to sergeant in no time."
+"Oof. I don't often feel that."
+"Eeehhh, give me a bit. I'll be back soon."
+
+[RoamingStrings]
+"This arena looks pretty nice. Some good architecture."
+"Aah, one second. Gotta clean slime off my boot."
+"Gonna have to try some of those other weapons sometime."
+"From the Halls of Montezuma...hmm hmm hmm..."
+"Haven't seen environments this bloody in a long, long time."
+"I wonder how Chex Squadron is doing."
+"The mission continues..."
+"I wonder if I'll get called back into action again."
+"Hah, if only General Mills could see me now."
+"So, you guys ready for another round?"
+"Come on, hide and seek is over. Olly olly oxen free."
+"Let's get out and get the guns blazing again."
+"This is a great subsitute for target practice."
+"Surrender is not an option. There's no exit before it's over!"
+"Gonna need to log this area down..."
+"This is going to go well. I can feel it."
+"Most don't last this long. You're doing great so far."
+"Hmm. I think I can turn up the heat now."
+"I'm going to have to restock on supplies after this."
+
+[RareRoamingStrings]
+"Hey, you guys wanna head to the Chex Diner after this? My treat."
+"Aahhh, a Golden Reggie Award is nice, but here in the field is where I belong!"
+"It's been a long time since I last wielded any ballistic weapons. I've gotten fond of the zorchers."
+"I wonder if the Wheel turns for the villains as well as for us?"
+
+//[LosingRoamingStrings]
+
+[WinStrings]
+"All right, good game, everybody."
+"Everyone up for another match?"
+"The best man won."
+"Maybe next time, guys. You can't win 'em all."
+"All right, keep the language clean, guys. You can try next time."
+
+[LoseStrings]
+"All right, good game, everybody."
+"Everyone up for another match?"
+"The best man won."
+"I don't mind losing. Sometimes the fun is just in fighting, not in winning."
+"Not bad, not bad. A good trigger finger means a long life."
+
+//[FrustratedStrings] // Spammer!
+
+//[EnragedStrings] // You fail it!
+
+//[DemoralizedStrings] // Your skill is not enough!
+
+[PissedStrings] // Llama!
+"Okay, not cool."

+ 97 - 0
pk3/CORVCHAT

@@ -0,0 +1,97 @@
+[IntroStrings]
+"I have slain demons, zombies, and beasts. You will be next."
+"Beg for a quick death. Maybe I shall oblige."
+"The last thing you will hear will be my laughter."
+"I will personally turn this arena into a graveyard."
+"Tremble, humans. Tremble more if you survive."
+"I will face you with honor."
+
+[FragStrings]
+"I've paved the way to the Hells for you."
+"Your body is but one of many."
+"Struggle all you want. I will slay you anyway."
+"You lived and died as a true coward."
+"And the ground is stained yet again."
+"Rise again. I haven't killed you enough yet."
+"You fought with honor. It was a pleasure killing you."
+"Only a child should cry like that."
+
+[KilledStrings]
+"By the gods."
+"I end in fire. As it should be."
+"My enemies would honor you for this achievement."
+"For a brief moment, you were a true fighter."
+"For just a moment, I felt something like peace."
+"I cannot rest. Not while there is more to slay."
+"I fell with honor. I will rest satisfied in that."
+"Do not rejoice. I am not downed forever."
+"Forward, I march towards oblivion. ...No, not yet."
+
+[RoamingStrings]
+"Make it challenging."
+"I grow weary of waiting."
+"If you had any honor, you would face me as a man."
+"Any time not spent fighting is time I care little for."
+"My people will not be avenged with wandering around hallways."
+"I have just enough ammo remaining to kill the rest of you."
+"There is no shame with retreating. Run and hide from me."
+"I deliberately take my time, to give you time to cower."
+"This is intoxicating, seeing people hide as I approach."
+"Never give up, always continue to try. I will be there to stomp each attempt."
+"There is no hole deep enough for you to hide in."
+"My lust for battle has made me immortal. Come test me."
+"Perhaps I should turn my weapons on the walls, so as to sate my boredom."
+"Cry little about your fate. I will bring you to meet it."
+"When will you learn to give up when I approach?"
+"Facing death, your retreat is understandable."
+"I ache to fire at more things. My finger twitches."
+"Is there enough room for gravestones here?"
+"This arena would be prettier bathed in red."
+"I am eager to demonstrate my furor."
+"Ten more seconds, and you will set a new survival record."
+"Can anyone offer me a challenge?"
+"Come forth and meet your destiny."
+"Worthy, unworthy, I slay whatever is in my path."
+"There is no turning away from my path."
+"Patience is what separates the good from the great. I can wait."
+"In one encounter, or piece by piece...I can slay either way."
+"I have no need for tracking or hunting. I simply find and fight."
+"Ashes to ashes, dust to dust."
+
+[RareRoamingStrings]
+"Beasts, undead, demons, enemies...they all bleed the same, in the end."
+"My weapons are starting to wear and fray. Soon, I will need to kill with my hands alone."
+"The Wheel must turn more. This lull in action bores me."
+
+//[LosingRoamingStrings]
+
+[WinStrings]
+"It was best to call it now, rather than let the massacre continue."
+"This is my one mercy to you."
+"Weigh your worth carefully in my shadow."
+"This is how a true warrior does battle."
+"There are yet many more steps I must scale."
+"Over so soon? How tragic."
+"Call the chambermaid. I have left an unfortunate mess for her."
+
+[LoseStrings]
+"What? No! The match is not over yet!"
+"I have wasted too much time sating the lessers' egos."
+"Your deceptions of grandeur will not elevate you."
+"Alas, if you only understood the truth: I fell asleep at the weapon."
+"One victory does not make a hero."
+"You are not a warrior. You are merely lucky, and luck does not hold."
+"What have you truly won?"
+"If this battle was of life or death, then the outcome would be very different."
+
+//[FrustratedStrings] // Spammer!
+
+
+//[EnragedStrings] // You fail it!
+
+
+//[DemoralizedStrings] // Your skill is not enough!
+
+
+[PissedStrings] // Llama!
+"I will teach you manners, even if I must do so over your cold body."

+ 75 - 0
pk3/DECALDEF

@@ -0,0 +1,75 @@
+// Doom plasma rifle
+
+decal DoomPlasmaScorchLower1
+{
+	pic PLASMA1
+	shade "00 00 00"
+	x-scale 0.3
+	y-scale 0.3
+	randomflipx
+	randomflipy
+}
+
+decal DoomPlasmaScorch1
+{
+	pic DPLMA0
+	add 1.0
+	fullbright
+	animator GoAway
+	lowerdecal DoomPlasmaScorchLower1
+}
+
+decal DoomPlasmaScorchLower2
+{
+	pic PLASMA2
+	shade "00 00 00"
+	x-scale 0.3
+	y-scale 0.3
+	randomflipx
+	randomflipy
+}
+
+decal DoomPlasmaScorch2
+{
+	pic DPLMB0
+	add 1.0
+	fullbright
+	animator GoAway
+	lowerdecal DoomPlasmaScorchLower2
+}
+
+decalgroup DoomPlasmaScorchLower
+{
+	DoomPlasmaScorchLower1	1
+	DoomPlasmaScorchLower2	1
+}
+
+decalgroup DoomPlasmaScorch
+{
+	DoomPlasmaScorch1	1
+	DoomPlasmaScorch2	1
+}
+
+// Chex plasma rifle
+
+decal ChexPlasmaScorch1
+{
+	pic CLSSA0
+	add 0.5
+	fullbright
+	animator GoAway
+}
+
+decal ChexPlasmaScorch2
+{
+	pic CLSSB0
+	add 0.5
+	fullbright
+	animator GoAway
+}
+
+decalgroup ChexPlasmaScorch
+{
+	ChexPlasmaScorch1	1
+	ChexPlasmaScorch2	1
+}

+ 4 - 1
pk3/DECORATE.dec

@@ -1,3 +1,5 @@
+#include "samsara.dec"
+
 actor SamsaraChangeFlash
 {
     +NOINTERACTION
@@ -77,7 +79,8 @@ actor SamsaraSlotPickup: CustomInventory
       Spawn:
         TNT1 A 0
         TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(215, 1) == 1, "IWasDropped")
-        goto SpawnLoop
+        TNT1 A 35 A_JumpIf(1==1, "SpawnLoop")
+        wait
 
       PickupSuccess:
         TNT1 A 0 A_SetBlend("00 00 00", 0, 0)

+ 26 - 0
pk3/DOOMCHAT

@@ -0,0 +1,26 @@
+[IntroStrings]
+"Hm."
+
+[FragStrings]
+"Heh."
+
+[KilledStrings]
+"..."
+
+[RareRoamingStrings]
+"Where's the fucking red keycard?!"
+"Hey, found a secret area.\n\cdDoomguy\c-: Ah, just a health bonus. Nevermind."
+"From Hell on Earth to the Arena Eternal to the Wheel. What a life."
+"Might makes light, and I feel mighty."
+"It's always something."
+"Here comes the night train."
+"C'mere, boys. I've got somethin' to say."
+//"Never figured out how the plasma grenade went through the shield."
+//
+//
+
+[WinStrings]
+"Heh."
+
+[LoseStrings]
+"Huh."

+ 107 - 0
pk3/DUKECHAT

@@ -0,0 +1,107 @@
+[IntroStrings]
+"The king has entered the building."
+"I'm Duke Nukem. Nothing more needs to be said!"
+"Always bet on Duke. Always."
+"That's right, boys and girls, the Duke is here to win another round!"
+"You can start quakin' in your boots now, kids. I'm here."
+"I win. Let's get to the next map already."
+"The Wheel turns again, but every turn has to have me."
+
+[FragStrings]
+"Tough break, kid, but this is what I do."
+"Stop screamin', it doesn't make you look good."
+"Let me wipe my boots on your ass real quick."
+"Right in the dick. You weren't usin' it anyway."
+"Go on. Cry. Cry and ragequit. Go on, do it."
+"I win. I always win."
+"It was funny watchin' you scramble away!"
+"I love the smell of fried assholes in the morning."
+"If you can't take it, why'd you sign up?"
+"This is my job, bitch, so sit down and take it."
+"Out of all the death screams I've heard, that was one of the worst."
+
+[KilledStrings]
+"Take a moment to reflect on your achievement, kid."
+"Awww, did I hurt your feelings?"
+"Well, that's one way to open up to someone."
+"You know, you've got a real attitude problem."
+"Fancy seeing you here. Small world."
+"Feel better now, kid?"
+"Shut up, punk. I won't hear your gloating."
+"Brag all you want. Go on, you've earned it."
+"Take every cheap shot you want, punk. It won't be enough."
+"Get your slimy hands off me!"
+"I'm not impressed."
+
+[RoamingStrings]
+"You're just stallin' the inevitable, kid."
+"You're runnin' like you drank straight from the tap!"
+"Come on, come on, I'm ready to go!"
+"I'd kill you fast, boys, if I wasn't laughin' so hard at your asses!"
+"Point your gun the other way, punk, maybe you'll start shootin' better."
+"Don't make me come find you, kid."
+"You useless shits. Gonna make me come find you, huh?"
+"You're hidin' 'cause you know you can't fight me. Smart."
+"Go run and patch up your boo-boos, baby boy. I'll wait."
+"What, are you waiting for the planets to align or something?"
+"You can't beat me. Get it through your head, little shit."
+"This is a waste of time. Let's get going already!"
+"Time to stop pissin' around and get this big guy back into action!"
+"I can see you flailing around, desperately aiming."
+"You're hilarious when you think you've got a chance."
+"You might think I'm just talkin' shit, but I'm preaching the truth."
+"Your bones'll make great gravel once I'm through with you."
+"All the sex appeal of a dog's shrivelled dick."
+"I could be gettin' laid now, instead I'm beatin' bitches!"
+"Don't worry, I'm not shooting at you. You can breathe easy."
+"You made a bad decision, wanting a piece of me."
+"Get back here, I wanna finish what I've started."
+"I'm not paid enough to put up with this kinda shit."
+"I'll be done with you and still be back in time for Oprah!"
+"I wonder if my shows recorded properly."
+"Pay attention, kids. I'm about to make this shit look good."
+"Got any ammo left after that, kid? You're gonna need it."
+"Let's speed this up. I've got shit to do."
+"When I get in this field, I play to for the top. Who's my next stepping stone?"
+"Go on, bastards, try and take me. I'll drag you to hell."
+"There's a reason nobody's survived tangling with me."
+"I've got a lot of love to spread around. C'mere and get some."
+"Can't help wallowing around in the pit of shit, someone's gotta shine."
+"Clowns to the left, jokers to the right..."
+
+[RareRoamingStrings]
+"Hah hah, and here I thought I'd never get back in action again. Then comes the Wheel."
+"I waited forever before, and look how that turned out."
+"Get out in the open! This ain't some Call of Duty cover-based shit!"
+"Your health isn't gonna regenerate, no matter how long you hide."
+
+//[LosingRoamingStrings]
+
+[WinStrings]
+"It's good to be the king."
+"This is my natural position...on top!"
+"The difference between me and everyone else is that I win."
+"This was determined from the outset! Only Duke wins!"
+"I win. Get used to hearing that. That's the only thing you'll hear."
+"The moment you think you can beat Duke is the moment you lose."
+"I could've won long ago, I just wanted to draw it out."
+"Everyone lined up for a free bitch-slapping. I just obliged."
+"Hail to the king, baby!"
+
+[LoseStrings]
+"Bullshit!"
+"Next time, scum."
+"The king needs his throne, but you can keep it warm for me."
+"I don't care what the scoreboard says! Duke doesn't lose!"
+"Man, and here I thought I'd go easy on you."
+"Looks like my ammo had an expiration date."
+"Don't push me, punk. I'm well and ready to go another round."
+"Come on, pussy, try me again. I'll take you on as many times as I need to."
+
+//[FrustratedStrings] // Spammer!
+
+//[EnragedStrings] // You fail it!
+
+//[DemoralizedStrings] // Your skill is not enough!
+
+//[PissedStrings] // Llama!

+ 103 - 0
pk3/FONTDEFS

@@ -0,0 +1,103 @@
+DOOMHUDF
+{
+	0 DOMNUM0
+	1 DOMNUM1
+	2 DOMNUM2
+	3 DOMNUM3
+	4 DOMNUM4
+	5 DOMNUM5
+	6 DOMNUM6
+	7 DOMNUM7
+	8 DOMNUM8
+	9 DOMNUM9
+	- DOMMINUS
+}
+
+WOLFHUDF
+{
+	0 WOLFNUM0
+	1 WOLFNUM1
+	2 WOLFNUM2
+	3 WOLFNUM3
+	4 WOLFNUM4
+	5 WOLFNUM5
+	6 WOLFNUM6
+	7 WOLFNUM7
+	8 WOLFNUM8
+	9 WOLFNUM9
+	- WOLFMNUS
+}
+
+CHEXHUDF
+{
+	0 CHXNUM0
+	1 CHXNUM1
+	2 CHXNUM2
+	3 CHXNUM3
+	4 CHXNUM4
+	5 CHXNUM5
+	6 CHXNUM6
+	7 CHXNUM7
+	8 CHXNUM8
+	9 CHXNUM9
+	- CHXMINUS
+}
+
+HEREHUDF
+{
+	0 HERENUM0
+	1 HERENUM1
+	2 HERENUM2
+	3 HERENUM3
+	4 HERENUM4
+	5 HERENUM5
+	6 HERENUM6
+	7 HERENUM7
+	8 HERENUM8
+	9 HERENUM9
+	- HEREMNUS
+}
+
+HEREHUDF2
+{
+	0 HERNUM0
+	1 HERNUM1
+	2 HERNUM2
+	3 HERNUM3
+	4 HERNUM4
+	5 HERNUM5
+	6 HERNUM6
+	7 HERNUM7
+	8 HERNUM8
+	9 HERNUM9
+}
+
+DUKEHUDF
+{
+	0 DUKENUM0
+	1 DUKENUM1
+	2 DUKENUM2
+	3 DUKENUM3
+	4 DUKENUM4
+	5 DUKENUM5
+	6 DUKENUM6
+	7 DUKENUM7
+	8 DUKENUM8
+	9 DUKENUM9
+	- DUKEMNUS
+}
+
+MARAHUDF
+{
+	0 MARNUM0
+	1 MARNUM1
+	2 MARNUM2
+	3 MARNUM3
+	4 MARNUM4
+	5 MARNUM5
+	6 MARNUM6
+	7 MARNUM7
+	8 MARNUM8
+	9 MARNUM9
+	- MARMINUS
+}

File diff suppressed because it is too large
+ 1952 - 0
pk3/GLDEFS


+ 93 - 0
pk3/KEYCONF

@@ -0,0 +1,93 @@
+clearplayerclasses
+addplayerclass "DoomguyPlayer"
+addplayerclass "ChexWarrior"
+addplayerclass "CorvusPlayer"
+addplayerclass "WolfenPlayer"
+addplayerclass "HexenPlayer"
+addplayerclass "DukePlayer"
+addplayerclass "MarathonPlayer"
+
+addkeysection "Samsara" samsarakeys
+
+addmenukey "Doomguy: Toggle Animations" samsara_vanilladoomanims
+addmenukey "BJ: Toggle Retro Movement" samsara_bjwalk
+addmenukey "Duke: Toggle Ballgag" samsara_dukestfu
+//addmenukey "S.O.: Toggle Firing Modes" samsara_marathonshootan
+addmenukey "Global: Toggle Weapon Bar" samsara_wephud
+
+alias samsara_vanilladoomanims "puke 210"
+alias samsara_bjwalk "puke 215"
+alias samsara_dukestfu "puke 216"
+alias samsara_wephud "puke 217"
+//alias samsara_marathonshootan "puke 223"
+
+addslotdefault 0 " Fist "
+addslotdefault 0 " Staff "
+addslotdefault 0 "Mace of Contrition"
+addslotdefault 0 " Bootspoon "
+addslotdefault 0 "Knife"
+addslotdefault 0 "Mighty Boot"
+addslotdefault 0 "Steel Knuckles"
+
+addslotdefault 1 " Chainsaw "
+addslotdefault 1 "Gauntlets of the Necromancer"
+addslotdefault 1 "Super Bootspork"
+addslotdefault 1 "Pipebombs"
+addslotdefault 1 "KKV-7 SMG Flechette"
+
+addslotdefault 1 " Pistol "
+addslotdefault 1 "Elven Wand"
+addslotdefault 1 "Sapphire Wand"
+addslotdefault 1 "Mini-Zorcher"
+addslotdefault 1 "Luger"
+addslotdefault 1 "M1911"
+addslotdefault 1 ".44 Magnum Mega Class A1"
+
+addslotdefault 2 " Shotgun "
+addslotdefault 2 " Firemace "
+addslotdefault 2 "Frost Shards"
+addslotdefault 2 "Large Zorcher"
+addslotdefault 2 "Machine Gun"
+addslotdefault 2 "  Shotgun  "
+addslotdefault 2 "WSTE-M5 Combat Shotgun"
+
+addslotdefault 3 "Super Shotgun"
+addslotdefault 3 "Ethereal Crossbow"
+addslotdefault 3 "Timon's Axe"
+addslotdefault 3 "Super Large Zorcher"
+addslotdefault 3 "Explosive Shotgun"
+addslotdefault 3 "Fusion Pistol"
+
+addslotdefault 4 " Chaingun "
+addslotdefault 4 "Dragon Claw"
+addslotdefault 4 "Serpent Staff"
+addslotdefault 4 "Rapid Zorcher"
+addslotdefault 4 "  Chaingun  "
+addslotdefault 4 "Chaingun Cannon"
+addslotdefault 4 "MA-75B Assault Rifle"
+
+addslotdefault 5 "Rocket Launcher"
+addslotdefault 5 "Phoenix Rod"
+addslotdefault 5 "Hammer of Retribution"
+addslotdefault 5 "Zorch Propulsor"
+addslotdefault 5 " Rocket Launcher "
+addslotdefault 5 RPG
+addslotdefault 5 "SPNKR-XP SSM Launcher"
+
+addslotdefault 6 "Plasma Rifle"
+addslotdefault 6 "Hellstaff"
+addslotdefault 6 "Firestorm"
+addslotdefault 6 "Phasing Zorcher"
+addslotdefault 6 " Flamethrower "
+addslotdefault 6 "Freezethrower"
+addslotdefault 6 "TOZT-7 Napalm Unit"
+
+addslotdefault 7 "B.F.G. 9000"
+addslotdefault 7 "Wraithverge"
+addslotdefault 7 "LAZ Device"
+addslotdefault 7 "Spear of Destiny"
+addslotdefault 7 "Devastator"
+addslotdefault 7 "ONI-71 Wave Motion Cannon"
+
+addslotdefault 8 "Alien Weapon"
+addslotdefault 8 " Alien Weapon "

+ 120 - 0
pk3/LANGUAGE

@@ -0,0 +1,120 @@
+[enu default]
+
+//Buddha
+QUITMSG = "Neither fire nor wind,\nbirth nor death,\ncan erase our good deeds.";
+//Doom
+QUITMSG1 = "hey, ron!\ncan we say 'fuck' in the game?";
+QUITMSG2 = "i'd leave:\nthis is just more monsters and levels.\nwhat a load.";
+//Chex Quest
+QUITMSG3 = "I hope you're just taking a\nbreak for Chex(R) party mix.";
+QUITMSG4 = "The only people who don't run\nare either fools or heroes.\nLet's hope you're the latter.";
+//Heretic
+QUITMSG5 = "...the world is surely damned.";
+QUITMSG6 = "It is not my destiny to be a hero.";
+//HeXen
+QUITMSG7 = "Worship me, and I may yet be merciful.\nThen again, maybe not.";
+QUITMSG8 = "My servants can smell your blood, human.";
+//Wolfenstein
+QUITMSG9 = "Heroes don't quit, but\ngo ahead and press Y\nif you aren't one.";
+QUITMSG10 = "Sieg heil...huh.\nSieg hell.";
+//Duke Nukem
+QUITMSG11 = "After a few days of R&R,\nI'll be ready for more action!";
+QUITMSG12 = "I guess I'll lean against this oozing,\nbulbous wall and wait for death.";
+//Marathon
+QUITMSG13 = "Do you know what kind of hat I'm wearing?\nA party hat. You don't get one.";
+QUITMSG14 = "P.S.: If things around here aren't working,\nit's because I'm laughing so hard.";
+
+// Zandronum cuts off here. The ZDoom-specific messages are as follows:
+//Doom
+QUITMSG15 = "look, bud. you leave now and\nyou forfeit your body count!";
+QUITMSG16 = "get outta here and go back\nto your boring programs.";
+QUITMSG17 = "go ahead and leave. see if i care.";
+QUITMSG18 = "let's beat it -- this is turning\ninto a bloodbath!";
+//Chex Quest
+QUITMSG19 = "The real Chex(R) Warrior\nwouldn't give up so fast!";
+QUITMSG20 = "Don't abandon the\nIntergalactic Federation of Cereals!";
+QUITMSG21 = "Don't quit now! We need your help!";
+QUITMSG22 = "The mission continues...";
+//Heretic
+QUITMSG23 = "But what else can you do,\nif the will to fight is gone?";
+QUITMSG24 = "You find, in the end,\nthat it is not within you\nto surrender without a fight.";
+QUITMSG25 = "No one ever said being a Heretic was easy!";
+QUITMSG26 = "Your fight has been in vain.";
+//HeXen
+QUITMSG27 = "Regardless of the path you choose,\nDeath awaits you.";
+QUITMSG28 = "Follow the light, for while the path\nis wrought with danger, your destiny lies below.";
+QUITMSG29 = "Your meddling will only result in your death.\nLeave while you can.";
+QUITMSG30 = "You've made it to your final goal,\nto turn back would be cowardice.";
+//Wolfenstein
+QUITMSG31 = "We owe you a great debt, Mr. Blazkowicz.\nYou have served your country well.";
+QUITMSG32 = "For guns and glory, press N.\nFor work and worry, press Y.";
+QUITMSG33 = "The next adventure awaits!\nSo don't wait...start the next adventure!";
+QUITMSG34 = "But the adventure is just beginning!";
+//Duke Nukem
+QUITMSG35 = "I need a stiff drink... a shower...\nand a soft-skinned belly to lie my head on.";
+QUITMSG36 = "The last thing that's gonna go thru your mind before you die... is my size 13 boot!";
+QUITMSG37 = "I always said if there's a way to go,\nit would have something to do with\nwomen, whips and oil.";
+QUITMSG38 = "I should probably kill everything,\nthen watch a movie.";
+//Marathon
+QUITMSG39 = "If I had a rocket launcher, I'd make somebody pay.";
+QUITMSG40 = "The candles burn out for you; I am free.";
+QUITMSG41 = "T-Minus 15.193792102158E+9 years\nuntil the universe closes!";
+QUITMSG42 = "You can stay behind to work on your tan,\nif you'd like, but I'm leaving.";
+
+/*
+DOOM:
+1: "hey, ron! can we say 'fuck' in the game?" // Unused Doom message
+2: "i'd leave: this is just more monsters and levels. what a load." // Unused Doom message
+3: "look, bud. you leave now and you forfeit your body count!" // Doom II message
+4: "get outta here and go back to your boring programs." // Doom II message
+5: "go ahead and leave. see if i care." // Doom message
+6: "let's beat it -- this is turning into a bloodbath!" // Doom message
+
+CHEX QUEST:
+1: "I hope you're just taking a\nbreak for Chex(R) party mix." // Chex Quest 1
+2: "The real Chex(R) Warrior\nwouldn't give up so fast!" // Chex Quest 1
+3: "Don't abandon the\nIntergalactic Federation of Cereals!" // Chex Quest 1
+4: "Don't quit now! We need your help!" // Chex Quest 1
+5: "The mission continues..." // Various Chex Quest promos
+6: "The only people who don't run are either fools or heroes.\nLet's hope you're the latter." // Chex Quest 2
+
+HERETIC:
+1: "...the world is surely damned." // From the manual.
+2: "No one ever said being a Heretic was easy!" // E1 end text.
+3: "But what else can you do, if the will to fight is gone?" // E5 end text.
+4: "You find, in the end, that it is not within you to surrender without a fight." // E5 end text.
+5: "It is not my destiny to be a hero." // Heretic II
+6: "Your fight has been in vain." // Heretic II
+
+HEXEN:
+1: "My servants can smell your blood, human." // Hub 2
+2: "Worship me, and I may yet be merciful. Then again, maybe not." // Hub 3
+3: "Regardless of the path you choose, Death awaits you." // HeXen II, Hub 1
+4: "Follow the light, for while the path is wrought with danger, your destiny lies below." // HeXen II, Hub 2
+5: "Your meddling will only result in your death.\nLeave while you can." // HeXen II; Portal of Praevus
+6: "You've made it to your final goal, to turn back would be cowardice." // HeXen II: Portal of Praevus
+
+WOLFENSTEIN 3D:
+1: "Heroes don't quit, but\ngo ahead and press Y\nif you aren't one." // Wolfenstein 3D
+2: "We owe you a great debt, Mr. Blazkowicz.\nYou have served your country well." // Spear of Destiny
+3: "For guns and glory, press N.\nFor work and worry, press Y." // Wolfenstein 3D
+4: "Sieg heil...huh. Sieg hell." // Wolfenstein 3D
+5: "The next adventure awaits! So don't wait...start the next adventure!" // Wolfenstein 3D: The Nocturnal Missions
+6: "But the adventure is just beginning!" //  Wolfenstein 3D: The Nocturnal Missions
+
+DUKE NUKEM:
+1: "I need a stiff drink... a shower... and a soft-skinned belly to lie my head on." // End of Episode 2 of Duke Nukem 3D.
+2: "The last thing that's gonna go thru your mind before you die... is my size 13 boot!" // End of Episode 2 of Duke Nukem 3D.
+3: "After a few days of R&R, I'll be ready for more action!" // Last line before credits in Duke Nukem 3D.
+4: "I guess I'll lean against this oozing, bulbous wall and wait for death." // Duke Nukem II
+5: "I always said if there's a way to go, it would have something to do with women, whips and oil." // Duke Nukem: Manhattan Project
+6: "I should probably kill everything, then watch a movie." // Duke Nukem: Land of the Babes
+
+MARATHON:
+1: "You can stay behind to work on your tan, if you'd like, but I'm leaving." // Marathon 2
+2: "If I had a rocket launcher, I'd make somebody pay." // Marathon 2
+3: "P.S.: If things around here aren't working, it's because I'm laughing so hard." // Marathon
+4: "The candles burn out for you; I am free." // Marathon
+5: "T-Minus 15.193792102158E+9 years until the universe closes!" // Marathon
+6: "Do you know what kind of hat I'm wearing?\nA party hat. You don't get one." // Marathon: Infinity
+*/

+ 88 - 0
pk3/MAPINFO

@@ -0,0 +1,88 @@
+gameinfo
+{
+	quitmessages = "$QUITMSG1", "$QUITMSG2", "$QUITMSG3", "$QUITMSG4", "$QUITMSG5", "$QUITMSG6", "$QUITMSG7",
+				   "$QUITMSG8", "$QUITMSG9", "$QUITMSG10", "$QUITMSG11", "$QUITMSG12", "$QUITMSG13", "$QUITMSG14",
+				   "$QUITMSG15", "$QUITMSG16", "$QUITMSG17", "$QUITMSG18", "$QUITMSG19", "$QUITMSG20", "$QUITMSG21",
+				   "$QUITMSG22", "$QUITMSG23", "$QUITMSG24", "$QUITMSG25", "$QUITMSG26", "$QUITMSG27", "$QUITMSG28",
+				   "$QUITMSG29", "$QUITMSG30", "$QUITMSG31", "$QUITMSG32", "$QUITMSG33", "$QUITMSG34", "$QUITMSG35",
+				   "$QUITMSG36", "$QUITMSG37", "$QUITMSG38", "$QUITMSG39", "$QUITMSG40", "$QUITMSG41", "$QUITMSG42", "$QUITMSG"
+}
+
+skill baby
+{
+	AutoUseHealth
+	AmmoFactor = 2
+	DamageFactor = 0.5
+	EasyBossBrain
+	SpawnFilter = Baby
+	Name = "Jani"
+    PlayerClassName = "Doomguy", "I'm too young to die!"
+    PlayerClassName = "ChexWarrior", "Easy Does It"
+    PlayerClassName = "Corvus", "Thou Needeth a Wet-Nurse"
+    PlayerClassName = "Blazkowicz", "Can I Play, Daddy?"
+    PlayerClassName = "Parias", "Altar Boy"
+    PlayerClassName = "Duke", "Piece of Cake"
+	PlayerClassName = "SecurityOfficer", "Kindergarten"
+}
+
+skill easy
+{
+	EasyBossBrain
+	SpawnFilter = Easy
+	Name = "Srotapanna"
+    PlayerClassName = "Doomguy", "Hey, not too rough"
+    PlayerClassName = "ChexWarrior", "Not So Sticky"
+    PlayerClassName = "Corvus", "Yellowbellies-R-Us"
+    PlayerClassName = "Blazkowicz", "Don't Hurt Me."
+    PlayerClassName = "Parias", "Acolyte"
+    PlayerClassName = "Duke", "Let's Rock"
+	PlayerClassName = "SecurityOfficer", "Easy"
+}
+
+skill normal
+{
+	SpawnFilter = Normal
+	Name = "Sakridagami"
+    PlayerClassName = "Doomguy", "Hurt Me Plenty"
+    PlayerClassName = "ChexWarrior", "Gobs of Goo"
+    PlayerClassName = "Corvus", "Bringest Them Oneth"
+    PlayerClassName = "Blazkowicz", "Bring 'em On!"
+    PlayerClassName = "Parias", "Priest"
+    PlayerClassName = "Duke", "Come Get Some"
+	PlayerClassName = "SecurityOfficer", "Normal"
+	//DefaultSkill
+}
+
+skill hard
+{
+	SpawnFilter = Hard
+	Name = "Anagamin"
+    PlayerClassName = "Doomguy", "Ultra-Violence"
+    PlayerClassName = "ChexWarrior", "Extreme Ooze"
+    PlayerClassName = "Corvus", "Thou Art a Smite-Meister"
+    PlayerClassName = "Blazkowicz", "I Am Death Incarnate!"
+    PlayerClassName = "Parias", "Cardinal"
+    PlayerClassName = "Duke", "Damn I'm Good"
+	PlayerClassName = "SecurityOfficer", "Major Damage"
+}
+
+skill nightmare
+{
+	//AmmoFactor = 2
+	FastMonsters
+	//DisableCheats
+	//RespawnTime = 12
+	SpawnFilter = Nightmare
+	Name = "Arahant"
+    PlayerClassName = "Doomguy", "NIGHTMARE!"
+    PlayerClassName = "ChexWarrior", "Super Slimey!"
+    PlayerClassName = "Corvus", "Black Plague Possesses Thee"
+    PlayerClassName = "Blazkowicz", "Destiny Yields to Me!"
+    PlayerClassName = "Parias", "Pope"
+    PlayerClassName = "Duke", "Hail to the King"
+	PlayerClassName = "SecurityOfficer", "Total Carnage"
+	MustConfirm = "Heedfulness is the Deathless path; heedlessness, the path to death."
+	
+	DamageFactor = 1.5
+	Aggressiveness = 0.55
+}

+ 88 - 0
pk3/PARSCHAT

@@ -0,0 +1,88 @@
+[IntroStrings]
+"...and give me the strength to overcome every challenge. Amen."
+"...and may all I do in this arena bring glory to you. Amen."
+"...and have mercy on every soul I bring to the afterlife. Amen."
+"...and allow me your wisdom and power in this battle. Amen."
+
+[FragStrings]
+"That is the first of the seven rites to suffer through. Six more to go."
+"Now, your soul is free."
+"Rise again. As many times as you want, I will strike you down again."
+"Requiescat in pace."
+"Your flesh offered little resistance. I believe it invited me to cleave through."
+"The flesh gives, the bones break, the heart stops. You are left with nothing."
+"Be proud of your new scars. I will give you more, if you'd like."
+"There is honor in dying for a good cause. My cause is quite worthy, I assure you."
+"The spirit is willing, but the flesh is weak."
+"I cast you to the afterlife. Be wary of that first step."
+"You may give up, if you'd like. It would be easier on you."
+"I have brought the fire and brimstone to this world myself."
+
+[KilledStrings]
+"Even in the chill clutch of death, I gain ever more strength."
+"I will rise again, and again, and again. My work will not stop, even after death."
+"There are many more lessons I have yet to learn."
+"I cannot win them all."
+"You have no need to teach me of the afterlife."
+"I err. A rare experience."
+"My armor may falter, but my soul will match your blows."
+"I cast aside my old flesh, and rise again with a new life."
+"You cannot stop my work. It is a physical impossibility."
+"A thousand times, a thousand deaths will not slay me. I will always return for you."
+
+[RoamingStrings]
+"These halls are stained with the life of thousands. What were their lives like?"
+"There are many thoughts to contemplate with this lull in battle."
+"The path boasts many thorns and thistles. I have the patience to go through."
+"Come. I grow weary of this quiet."
+"The Lord's patience is infinite. Mine is not."
+"I am here to fight you, not to wander like a lost child."
+"Delay all you want. My weapon's edges will not dull."
+"The true warrior is a shadow within the darkness, a whisper among shouts."
+"Run as you'd like. I am all about you, waiting for you to trip."
+"There are those who say there is honor in retreat. Do not believe them."
+"I take all challenges by charging forward. I see you prefer charging backwards. Pity."
+"Avoiding death by my hands is like avoiding fate itself."
+"I am the darkness around you, the stone under you, and the sky above you. You cannot run."
+"The environs all blend together again."
+"You think yourself worthy? Prove it."
+"What made you choose this path of utter annihilation?"
+"Is this the life you willingly chose?"
+"Sometimes it is preferable not to hear the serpent's rattle."
+
+[RareRoamingStrings]
+"Tell me of your master. Was he a good man?"
+"What words would you prefer on your requiem? I am writing it now, while we wait."
+"Every time the Wheel spins, I find myself with more to marvel."
+
+//[LosingRoamingStrings]
+
+[WinStrings]
+"The universal truths apply to all. The sun rises. The sun sets. I win."
+"I was ordained to win this battle. Who were you to defy it?"
+"You were not worthy. I was. I say this as fact, not with arrogance."
+"And now, I ascend to even greater challenges."
+"I must remember, to be victor in a competition like this is no cause for pride."
+"And so it ends. Rejoice, for I was merciful."
+"The fire of my soul carresses my enemies. You have withstood the fire well."
+"'...and I have created the waster, to destroy.'"
+"You were a good opponent. Unfortunately, great is better than good."
+
+[LoseStrings]
+"I bear no ill will. Not every victory can be within my grasp."
+"I have misjudged you. I am pleased that true heroes still exist."
+"You show great promise. I will match you on a higher level."
+"You have taken a great step towards providence."
+"The fire of my soul carresses my enemies. You have withstood the fire well."
+"Take heart. Only those who fight true are those who win."
+"Do remember, to be victor in a competition like this is no cause for pride."
+"Champion your people with honor and dignity."
+
+//[FrustratedStrings] // Spammer!
+
+//[EnragedStrings] // You fail it!
+
+//[DemoralizedStrings] // Your skill is not enough!
+
+[PissedStrings] // Llama!
+"I have no words adequate for a child like you."

File diff suppressed because it is too large
+ 2827 - 0
pk3/SBARINFO


File diff suppressed because it is too large
+ 991 - 0
pk3/SNDINFO


+ 76 - 0
pk3/SOCHAT

@@ -0,0 +1,76 @@
+[IntroStrings]
+"Here we go again...and again...and again...and again..."
+"I just don't care anymore. Let's get it over with."
+"I'm going to have to show you the door. Or the airlock."
+"You're going to die as many times needed until whatever forces above are happy and declare me winner. Smile."
+"And once again I'm not home, but surrounded by guns. The fun never stops."
+"I'm told to do what I do best. Let's see who'll die first."
+"Just so you know, I'm not scared of you."
+
+[FragStrings]
+"Stay down...please. For just a few more minutes..."
+"I don't take pleasure in this. This is just what I do."
+"I wonder if you were a good person."
+"Another mess to be recycled."
+"This isn't just me killing you, it's the technology gap."
+"How's resisting security going for you?"
+"I've gone through eternity. You're just someone else to put down."
+
+[KilledStrings]
+"I'm doomed to return. Mercy has abandoned me."
+"I'm not afraid of death. I welcome it. Shame that it doesn't last."
+"I've stared at death for so long I'd almost forgotten that it's a threat."
+"I guess I made an easy target, what with this whole 'being alive' thing."
+"You know, a problem with authority is a grave sign of other problems."
+"Of course. Can't feel like I'm doing too well, can I?"
+"To be continued."
+
+[RoamingStrings]
+"Retreat's never an option. Even when you want it to be."
+"Come whenever you want. I've got time. All the time in the world, in fact."
+"Go on. Take your time. I'm fine with that."
+"You can't escape. But knowing you, you'll come running back anyway."
+"What's your purpose in life?"
+"I can deal with patrolling blind. I miss that sometimes."
+"Kind of like running my old rounds again."
+"Life goes on. Death goes on longer."
+"You haven't learned yet, have you?"
+"Run while you can. I'll be there when you can't."
+"I hope you're not cozy. We don't do comfortable here."
+"Getting so sick of getting ambushed...I'm gonna find you first."
+"This temporary reprieve is just that. Temporary."
+"If you stopped hiding from me, it would end this so much faster."
+"Do you think I'm having fun with this?"
+"I'm giving you far more chances than you need."
+"Never stop running, sure. Away isn't the direction."
+"Lower your guns. Now."
+"My plan's simple: Find you and shoot you. It's worked so far."
+"Which is better? To burn out, or fade away?"
+"Hiding makes terrible cover. Just stand your ground and face me."
+
+[RareRoamingStrings]
+"The exit kills me if I hit it, right?"
+"It's funny. The arena's paths goes up, down, left, right, all sorts of ways...except out."
+"I can't even tell who I'm fighting anymore. Just give me a gun, and they die. Simple as that."
+"The Wheel of the 'rena goes 'round and 'round, 'round and 'round, 'round and 'round..."
+"If I see an accessible terminal around here, I dunno if I'm gonna be grateful or start screaming."
+"No more voices from the AIs. Instead, voices of the dead and screaming."
+"Zzzzzz...ggzk. Grgh. Sorry. Fell asleep and started sleepwalking for a bit."
+
+[WinStrings]
+"I fear eternity more than I fear you."
+"Don't feel upset. I've saved you from fate."
+"I wanted to feel like I could do something good. Ended up killing you all again."
+"It seems everywhere I go, I kill everything."
+"Got some bad news to deliver, but I think you've already got the gist."
+"The struggle for the right to live is eternal. Some triumph. Others triumph repeatedly."
+"I've always been good with my hands."
+
+[LoseStrings]
+"Maybe now, there'll finally be some rest. Ah, who am I kidding?"
+"Weigh carefully your victory. There's always a string attached to it. Trust me."
+"The end."
+"I'll come again, of course. Can't stop fate."
+"Another notch in the cosmic lose column."
+"Do I at least get a consolation prize?"
+"I've won enough times I can appreciate the virtues of losing."

+ 209 - 0
pk3/TEXTCOLO

@@ -0,0 +1,209 @@
+Brick
+{
+	#470000  #FFB8B8
+Console:
+	#470000  #A35C5C    0 127
+	#800000  #FFFEFE  128 256
+Flat:
+	#CC3333
+}
+
+Tan
+{
+	#332B13  #FFEBDF
+Console:
+	#332B13  #998B79    0 127
+	#998B79  #FFFFFF  128 256
+Flat:
+	#D2B48C
+}
+
+Gray Grey
+{
+	#272727  #EFEFEF
+Console:
+	#272727  #8B8B8B    0 127
+	#505050  #FFFFFF  128 256
+Flat:
+	#CCCCCC
+}
+
+Green
+{
+	#0B1707  #77FF6F
+Console:
+	#000000  #007F00    0 127
+	#00FF00  #FEFFFE  128 256
+Flat:
+	#00CC00
+}
+
+Brown
+{
+	#533F2F  #BFA78F
+Console:
+	#000000  #7F4000    0 127
+	#432F1F  #FFE7CF  128 256
+Flat:
+	#996633
+}
+
+Gold
+{
+	#732B00  #FFFF73
+Console:
+	#000000  #7FC040    0 127
+	#DFBF00  #DFFFFE  128 256
+Flat:
+	#FFCC00
+}
+
+Red
+{
+	#3F0000  #FF0000
+Console:
+	#000000  #7F0000    0 127
+	#FF0000  #FFFEFE  128 256
+Flat:
+	#DD0000
+}
+
+Blue
+{
+	#000027  #0000FF
+Console:
+	#000000  #00007F    0 127
+	#4040FF  #DEDEFF  128 256
+Flat:
+	#9999FF
+}
+
+Orange
+{
+	#200000  #FF8000
+Console:
+	#200000  #904000    0 127
+	#FF7F00  #FFFEFE  128 256
+Flat:
+	#FFAA00
+}
+
+// This is designed to match the white Heretic/Hexen font.
+// It is close to the gray BOOM font, but not quite the same.
+White
+{
+	#242424  #FFFFFF
+Console:
+	#000000  #7F7F7F    0 127
+	#808080  #FFFFFF  128 256
+Flat:
+	#DFDFDF
+}
+
+// This is designed to match the yellow Hexen font, which has a
+// gray outline filled with shades of yellow.
+Yellow
+{
+	#272727  #515151    0  64
+	#784918  #F3A718   65 207
+	#F3A82A  #FCD043  208 256
+Console:
+	#000000  #7F7F00    0 127
+	#FFFF00  #FFFFFF  128 256
+Flat:
+	#EEEE33
+}
+
+Untranslated
+{
+}
+
+Black
+{
+	#131313  #505050
+Console:
+	#000000  #323232    0 127
+	#0A0A0A  #505050  128 256
+Flat:
+	#000000
+}
+
+LightBlue "Light Blue"
+{
+	#000073  #B4B4FF
+Console:
+	#00003C  #5050FF    0 127
+	#8080FF  #FFFFFF  128 256
+Flat:
+	#33EEFF
+}
+
+Cream
+{
+	#CF8353  #FFD7BB
+Console:
+	#2B230F  #BF7B4B    0 127
+	#FFB383  #FFFFFF  128 256
+Flat:
+	#FFCC99
+}
+
+Olive
+{
+	#2F371F  #7B7F50
+Console:
+	#373F27  #7B7F63    0 127
+	#676B4F  #D1D8A8  128 256
+Flat:
+	#D1D8A8
+}
+
+DarkGreen "Dark Green"
+{
+	#0B1707  #439337
+Console:
+	#000000  #005800    0 127
+	#008C00  #DCFFDC  128 256
+Flat:
+	#008C00
+}
+
+DarkRed "Dark Red"
+{
+	#2B0000  #AF2B2B
+Console:
+	#000000  #730000    0 127
+	#800000  #FFDCDC  128 255
+Flat:
+	#800000
+}
+
+DarkBrown "Dark Brown"
+{
+	#1F170B  #A36B3F
+Console:
+	#2B230F  #773000    0 127
+	#735743  #F7BD58  128 256
+Flat:
+	#663333
+}
+
+Purple
+{
+	#230023  #CF00CF
+Console:
+	#000000  #9F009B    0 127
+	#FF00FF  #FFFFFF  128 256
+Flat:
+	#9966CC
+}
+
+DarkGray DarkGrey "Dark Gray" "Dark Grey"
+{
+	#232323  #8B8B8B
+Console:
+	#000000  #646464    0 127
+	#404040  #B4B4B4  128 256
+Flat:
+	#808080
+}

+ 17 - 0
pk3/UNUSEDCHAT

@@ -0,0 +1,17 @@
+[IntroStrings]
+"You've got a price on your head. I'll be taking both. Nothing personal."
+
+[FragStrings]
+"What a waste of a perfectly good spinal column."
+
+[KilledStrings]
+"A cool and steady hand is the calling card of a professional."
+"I don't leave witnesses."
+
+[RoamingStrings]
+
+[RareRoamingStrings]
+
+[WinStrings]
+
+[LoseStrings]

BIN
pk3/acs/samsara.o


+ 6 - 5
pk3/acs/samsaraDefs.h

@@ -10,6 +10,7 @@
 #define SAMSARA_CLIENT_WEAPONPICKUP 216
 
 #define SAMSARA_PUKE                226
+#define SAMSARA_OPEN_CLIENT         205
 #define SAMSARA_ENTER_CLIENT        221
 #define SAMSARA_DISCONNECT_CLIENT   222
 #define SAMSARA_CLIENT_CLASS        228
@@ -41,11 +42,11 @@
 
 int HELPSTR = 
 "Welcome to the Wheel of Samsara! There are a few optional RCon commands you may want to consider.\n\
-sv_banjetpack 0/1: Toggles whether Duke is allowed to pick up his jetpack or not.\n\
-sv_sogravity 0/1: Toggles whether the Security Officer operates off Marathon or Doom gravity.\n\
-sv_permault 0/1: Toggles whether the Weapon VII is persistent or vanishes on pickup.\n\
-sv_lmslife 0/1/2/3/4/5: Affects how much health/armor people have on LMS spawn/respawn.\n\
-sv_lmsult 0/1: Toggles whether or not players get their VII in LMS mode.";
+samsara_banjetpack 0/1: Toggles whether Duke is allowed to pick up his jetpack or not.\n\
+samsara_sogravity 0/1: Toggles whether the Security Officer operates off Marathon or Doom gravity.\n\
+samsara_permault 0/1: Toggles whether the Weapon VII is persistent or vanishes on pickup.\n\
+samsara_lmslife 0/1/2/3/4/5: Affects how much health/armor people have on LMS spawn/respawn.\n\
+samsara_lmsult 0/1: Toggles whether or not players get their VII in LMS mode.";
 
 int LMSArmors[LMSMODES] = 
 {

+ 793 - 3
pk3/acs/samsara_tichy.c

@@ -11,6 +11,7 @@ int array_vanillaAnim[PLAYERMAX];
 int array_ballgag[PLAYERMAX];
 int array_weaponBar[PLAYERMAX];
 int array_pickupswitch[PLAYERMAX];
+int DukeQuoteCooldown[PLAYERMAX];
 
 int SamsaraWepType, SamsaraClientClass, SamsaraItemFlash;
 int SamsaraClientWeps[SLOTCOUNT] = {0};
@@ -202,6 +203,20 @@ script SAMSARA_PUKE (int values, int pln) net
     array_pickupswitch[pln] = values & 16;
 }
 
+script SAMSARA_OPEN_CLIENT open clientside
+{
+    int i;
+
+    while (1)
+    {
+        for (i = 0; i < PLAYERMAX; i++)
+        {
+            DukeQuoteCooldown[i] = max(0, DukeQuoteCooldown[i]-1);
+        }
+        Delay(1);
+    }
+}
+
 
 script SAMSARA_ENTER_CLIENT enter clientside
 {
@@ -345,6 +360,10 @@ script SAMSARA_DECORATE (int choice)
       case 1:
         SetResultValue(GetActorProperty(0, APROP_Dropped));
         break;
+      
+      case 2:
+        if (CheckInventory("WolfenMovement") == 1) { SetActorState(0, "Spawn"); }
+        break;
     }
 }
 
@@ -444,9 +463,8 @@ script SAMSARA_CLIENT_WEAPONPICKUP (int slot) clientside
     int pln = PlayerNumber(), cpln = ConsolePlayerNumber();
     int pclass = samsaraClassNum();
 
-    if (cpln != pln) { terminate; }
+    if (cpln == pln) { Log(s:ClassWeapons[pclass][slot][S_PICKUPMESSAGE]); }
 
-    Log(s:ClassWeapons[pclass][slot][S_PICKUPMESSAGE]);
     LocalAmbientSound(ClassPickupSounds[pclass][slot], 127);
     FadeRange(ClassFades[pclass][0], ClassFades[pclass][1], ClassFades[pclass][2], ClassFades[pclass][3],
               ClassFades[pclass][0], ClassFades[pclass][1], ClassFades[pclass][2], 0.0, 5.0/35);
@@ -454,6 +472,778 @@ script SAMSARA_CLIENT_WEAPONPICKUP (int slot) clientside
     if (pclass == CLASS_DUKE && !GetCVar("samsara_cl_ballgag"))
     {
         Delay(8);
-        LocalAmbientSound("duke/weapontaunt", 127);
+
+        if (!DukeQuoteCooldown[pln])
+        {
+            LocalAmbientSound("duke/weapontaunt", 127);
+            DukeQuoteCooldown[pln] = 140;
+        }
+    }
+}
+
+
+/*
+ *
+ * This is still to be converted.
+ *
+ */
+
+
+#define DEBUG 0
+
+int DoomguyGame;
+int ChexterGame;
+int CorvusGame;
+int WolfenGame;
+int HexenGame;
+int DukeGame;
+int MarathonGame;
+Global int 0 : FlagsSet;
+
+int keys[3][26] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+    {"RedCard", "YellowCard", "BlueCard", "RedSkull", "YellowSkull", "BlueSkull", "KeyBlue", "KeyGreen", "KeyYellow", "ChexRedCard", "ChexYellowCard", "ChexBlueCard", "RedFlemKey", "YellowFlemKey", "BlueFlemKey", "KeyAxe", "KeyCastle", "KeyCave", "KeyDungeon", "KeyEmerald", "KeyFire", "KeyHorn", "KeyRusted", "KeySilver", "KeySteel", "KeySwamp"},
+{"\cgRed Keycard", "\ckYellow Keycard", "\chBlue Keycard", "\cgRed Skull", "\ckYellow Skull", "\chBlue Skull", "\chBlue Prism Key", "\cqGreen Prism Key", "\ckYellow Prism Key", "\cgRed Card", "\ckYellow Card", "\chBlue Card", "\cgRed Flem Key", "\ckYellow Flem Key", "\chBlue Flem Key", "\cuAxe Key", "\cfCastle Key", "\csCave Key", "\cuDungeon Key", "\cdEmerald Key", "\cgFire Key", "\ceHorn Key", "\cbRusted Key", "\cuSilver Key", "\cmSteel Key", "\cpSwamp Key"}};
+//0, 1, 2: Doom R/Y/B Keycard. - \cg, \ck, \ch
+//3, 4, 5: Doom R/Y/B Skull. - \cg, \ck, \ch
+//6, 7, 8: Heretic B/G/Y Prism Key. - \ch, \cq, \ck
+//9, 10, 11: Chex Quest R/Y/B Keycard. - \cg, \ck, \ch
+//12, 13, 14: Chex Quest R/Y/B Flem Key. - \cg, \ck, \ch
+//15: Axe Key - \cu (Grey)
+//16: Castle Key - \cf (Gold)
+//17: Cave Key - \cs (Brown)
+//18: Dungeon Key - \cu (Grey)
+//19: Emerald Key - \cd (Light Green)
+//20: Fire Key - \cg (Red)
+//21: Horn Key - \ce (Beige)
+//22: Rusted Key - \cb (Very light off-white)
+//23: Silver Key - \cu (Grey)
+//24: Steel Key - \cm (Black)
+//25: Swamp Key - \cp (Drab green-brown)
+//SCRIPTS
+//200:
+//201: Check if SP/DM/co-op for the Tome of Power/Morph Ovum.
+//202: Cooldown for Tome of Power.
+//203: Take away all the shit on level ending!
+//204: Boss monologues.
+//205: Cooldown for Duke's taunts.
+//207: Flechette cooldown.
+//208: Buddha mode for B.J.'s Extra Life.
+//209: Activate Send Full Button Info and activate sv_banjetpack/sv_lmslife/sv_lmsult.
+//211: Coop/SP mode on, as well as singleplayer "what class is playing this game" determines.
+//212: Displaying text.
+//214: Duke Jetpack/Visor fuel draining.
+//215: Turn on and off Retro Movement.
+//216: Turn on and off Ballgag.
+//217: Weapon bar.
+//219: Weapon VII co-op perma-spawn check.
+//220: Denying Duke his jetpack if the server has that option.
+//273-275: Ijon Tichy's wizardry for B.J.'s retro movement.
+//901-902: I'm pretty sure Synert is a wizard, too.
+//224: Doomguy's vanilla animations. By Ijon Tichy, transcribed by Llewellyn.
+//225: Weapon bar. By Ijon Tichy, transcribed by Llewellyn.
+
+////////////////////
+// SHARED KEYS
+// (by Synert)
+/////////////////
+
+function int isCooperative(void)
+{
+    int ret = (GetCVar("teamplay") == false) && (GetCVar("ctf") == false) &&
+    (GetCVar("deathmatch") == false);
+    
+    if (DEBUG)
+    {
+        Log(s:"isCooperative returns ", d:ret);
+    }
+    
+    return ret;
+}
+
+script 901 ENTER { // Give keys as needed, for people joining the game.
+    while(PlayerInGame(PlayerNumber())) {
+        for(int a = 0; a < 26; a++) {
+            if(keys[0][a] == 1) {
+                GiveInventory(keys[1][a], 1);
+            }
+        }
+        delay(10);
+    }
+}
+
+script 902 (int a) { // Picked up a key, broadcast that shit to the whole world!
+    if(keys[0][a] == 0) {
+        Log(n:0,s:"\c* has picked up the ",s:keys[2][a],s:"\c*."); // Let the server admins know.
+        HudMessageBold(n:0,s:"\c* has picked up the ",s:keys[2][a],s:"\c*.";HUDMSG_FADEOUT, 900, CR_GOLD, 0.5, 0.1, 3.0, 0.5);
+    }
+    keys[0][a] = 1;
+}
+
+///////////////
+// STATUS STUFF
+//////////////
+//if (GameType () == GAME_NET_COOPERATIVE)
+//if (GameType () == GAME_NET_TEAMGAME)
+//if (GameType () == GAME_NET_DEATHMATCH)
+//if (GameType () == GAME_SINGLE_PLAYER)
+script 219 (void)
+{
+    if(GetCvar("sv_permault") == 1)//if(GameType () == GAME_NET_COOPERATIVE)
+    setresultvalue(1);
+    else setresultvalue(0);
+}
+
+script 211 ENTER
+{
+    if (GameType () == GAME_NET_COOPERATIVE)
+    {
+        GiveInventory("CoopModeOn", 1);
+        SetActorState(0,"CoOpModeOn");
+    }
+    else
+    {
+        if (GameType () == GAME_SINGLE_PLAYER)
+        {
+            GiveInventory("SPModeOn", 1);
+            if(checkInventory("DoomguyClass")) DoomguyGame = 1;
+            if(checkInventory("ChexClass")) ChexterGame = 1;
+            if(checkInventory("CorvusClass")) CorvusGame = 1;
+            if(checkInventory("WolfenClass")) WolfenGame = 1;
+            if(checkInventory("HexenClass")) HexenGame = 1;
+            if(checkInventory("DukeClass")) DukeGame = 1;
+            if(checkInventory("MarathonClass")) MarathonGame = 1;
+        }
+    }
+}
+
+
+///////////////
+// ITEM STUFF
+//////////////
+
+script 220 (void)
+{
+    if (GetCvar("sv_banjetpack") == 1)
+    {
+        Print(s:"The server has forbidden the jetpack. Sorry.");
+    }
+    else
+    {
+        Print(s:"You got the Jetpack!");
+        GiveInventory("DukePortJetpack",1);
+        GiveInventory("DukeJetpackFuel",100);
+    }
+}
+
+script 214 (int dukeshit)
+{
+    switch(dukeshit)
+    {
+      case 1:
+        if (CheckInventory("DukeFlying") == 1)
+        {
+            if (CheckInventory("DukeJetpackFuel") > 0)
+            {
+                delay(15);
+                TakeInventory("DukeJetpackFuel",1);
+                restart;
+            }
+            else
+            {
+                TakeInventory("DukeFlying",1);
+                TakeInventory("DukePetJack",1);
+            }
+        }
+        break;
+        
+      case 2:
+        if (CheckInventory("DukeVision") == 1)
+        {
+            if (CheckInventory("DukeVisionFuel") > 0)
+            {
+                delay(10);
+                TakeInventory("DukeVisionFuel",1);
+                restart;
+            }
+            else
+            {
+                TakeInventory("DukeVision",1);
+                TakeInventory("PowerLightAmp",1);
+            }
+        }
+        break;
+    }
+}
+
+script 202 (void)
+{
+    if (CheckInventory("TomeOfPowerCooldown") > 0)
+    {
+        if (CheckInventory("TomeOfPowerCooldown") > 240)
+        {
+            delay(35);
+            TakeInventory("TomeOfPowerCooldown",1);
+            restart;
+        }
+        else
+        {
+            delay(35);
+            TakeInventory("TomeOfPowerCooldown",1);
+            TakeInventory("RainTracker",1);
+            restart;
+        }
+    }
+}
+
+script 207 (void)
+{
+    if (CheckInventory("DiscOfRepulsionCooldown") > 0)
+    {
+        delay(35);
+        TakeInventory("DiscOfRepulsionCooldown",1);
+        restart;
+    }
+}
+
+script 208 (void)
+{
+    if (CheckInventory("WolfExtraLife") > 0)
+    {
+        SetPlayerProperty(0,1,16);
+    }
+    else
+    {
+        SetPlayerProperty(0,0,16);
+    }
+}
+
+script 203 UNLOADING
+{
+    TakeInventory("TomeOfPowerCooldown",300);
+    TakeInventory("DiscOfRepulsionCooldown",99);
+    TakeInventory("RainTracker",997);
+    TakeInventory("DukeTauntCooldown",997);
+    TakeInventory("MaceAmmo",997);
+    TakeInventory("MacePowered",997);
+    TakeInventory("Mace",997);
+    TakeInventory("DukeFlying",997);
+    TakeInventory("DukePetJack",997);
+    TakeInventory("DukeVision",997);
+    TakeInventory("DukeReady",1);
+    TakeInventory("DukeWaiting",15);
+    TakeInventory("Infrared",997);
+    TakeInventory("SynthFireActive",99);
+    TakeInventory("SynthFireLeft",99);
+    TakeInventory("SynthFireRight",99);
+    TakeInventory("LevelLimiter",99);
+    TakeInventory("LeftReload",99);
+    TakeInventory("RightReload",99);
+    TakeInventory("UsingSMG",1);
+    TakeInventory("UsingFists",1);
+    TakeInventory("UsingPistols",1);
+    TakeInventory("UsingShotguns",1);
+    TakeInventory("UsingFusionPistol",1);
+    TakeInventory("UsingAssaultRifle",1);
+    TakeInventory("UsingSpanker",1);
+    TakeInventory("UsingToasty",1);
+    TakeInventory("UsingAlienWeapon",1);
+    TakeInventory("UsingAlienWeapon2",1);
+    TakeInventory("UsingWMC",1);
+    TakeInventory("UsingDualPistols",1);
+    TakeInventory("UsingDualShotguns",1);
+    TakeInventory("InvasionDualShottyCheck",1);
+}
+
+script 201 (int hereticshit)
+{
+    switch(hereticshit)
+    {
+      case 1:
+        if (GameType () == GAME_NET_COOPERATIVE)
+        {
+            GiveInventory ("PortTomeCoOp",1);
+            Print(s:"You got the Tome of Power! Oh, yes.");
+        }
+        else
+        {
+            if (GameType () == GAME_SINGLE_PLAYER)
+            {
+                GiveInventory ("PortTomeCoOp",1);
+                Print(s:"You got the Tome of Power! Oh, yes.");
+            }
+            else
+            {
+                GiveInventory ("PortTome",1);
+                Print(s:"You got a Tome of Power! Oh, yes.");
+            }
+        }
+        break;
+        
+      case 2:
+        if (GameType () == GAME_NET_COOPERATIVE)
+        {
+            GiveInventory ("ArtiEgg2",1);
+            Print(s:"You got the Morph Ovum!");
+        }
+        else
+        {
+            if (GameType () == GAME_SINGLE_PLAYER)
+            {
+                GiveInventory ("ArtiEgg2",1);
+                Print(s:"You got the Morph Ovum!");
+            }
+            else
+            {
+                GiveInventory ("ArtiEgg3",1);
+                Print(s:"You got the Morph Ovum!");
+            }
+        }
+        break;
     }
 }
+
+script 212 (int textshit) // This is the shit for different text messages.
+{
+    SetFont("SMALLFONT");
+    switch(textshit)
+    {
+      case 1:
+        Print(s:"You cannot use this unless injured.");
+        break;
+        
+      case 2:
+        Print(s:"                  ");
+        break;
+        
+      case 3:
+        //if (GameType () == GAME_SINGLE_PLAYER)
+        //{
+            //Log(s:"MIGHTY BOOT ENGAGED");
+        //}
+        //else
+        //{
+            SetHudSize(400, 300, 0);
+            Hudmessage(s:"MIGHTY BOOT ENGAGED";
+            HUDMSG_PLAIN,1,CR_LIGHTBLUE,200.4,9.1,1.0);
+            break;
+            
+          case 4:
+            if (GameType () != GAME_SINGLE_PLAYER)
+            {
+                SetHudSize(400, 300, 0);
+                Hudmessage(s:"Press any button to respawn.";
+                HUDMSG_PLAIN,1,CR_LIGHTBLUE,200.4,9.1,1.75);
+                delay(15);
+                LocalAmbientSound("duke/mpdeath",127);
+                GiveInventory("DukeTauntCooldown",5);
+                ACS_ExecuteAlways(205,0,0);
+            }
+            break;
+            
+          case 5:
+            Print(s:"You do not have enough fuel!");
+            break;
+            
+          case 6:
+            Print(s:"You do not have enough power!");
+            break;
+            
+          case 7:
+            Print(s:"You are already flying!");
+            break;
+            
+            // Weapon pickup messages!
+            // Doomguy
+          case 11:
+            Print(s:"You got the Chainsaw! Find some meat!");
+            break;
+            
+          case 12:
+            Print(s:"You got the Shotgun!");
+            break;
+            
+          case 13:
+            Print(s:"You got the Super Shotgun!");
+            break;
+            
+          case 14:
+            Print(s:"You got the Chaingun!");
+            break;
+            
+          case 15:
+            Print(s:"You got the Rocket Launcher!");
+            break;
+            
+          case 16:
+            Print(s:"You got the Plasma Rifle!");
+            break;
+            
+          case 17:
+            Print(s:"You got the B.F.G. 9000! Oh, yes.");
+            break;
+            
+          case 18:
+            Print(s:"You got the Berserk! Rip and tear!");
+            break;
+            
+            // Corvus
+          case 21:
+            Print(s:"You got the Gauntlets of the Necromancer!");
+            break;
+            
+          case 22:
+            Print(s:"You got the Firemace!");
+            break;
+            
+          case 23:
+            Print(s:"You got the Ethereal Crossbow!");
+            break;
+            
+          case 24:
+            Print(s:"You got the Dragon Claw!");
+            break;
+            
+          case 25:
+            Print(s:"You got the Phoenix Rod!");
+            break;
+            
+          case 26:
+            Print(s:"You got the Hellstaff!");
+            break;
+            
+          case 27:
+            Print(s:"Honor forbids you from using this until you are wounded again.");
+            break;
+            
+            //case 27:
+            // Tome of Power is already handled by ACS!
+            
+            // Chex Warrior
+          case 31:
+            Print(s:"You got the Super Bootspork! Find some milk!");
+            break;
+            
+          case 32:
+            Print(s:"You got the Large Zorcher!");
+            break;
+            
+          case 33:
+            Print(s:"You got the Super Large Zorcher!");
+            break;
+            
+          case 34:
+            Print(s:"You got the Rapid Zorcher!");
+            break;
+            
+          case 35:
+            Print(s:"You got the Zorch Propulsor!");
+            break;
+            
+          case 36:
+            Print(s:"You got the Phasing Zorcher!");
+            break;
+            
+          case 37:
+            Print(s:"You got the LAZ Device! Woot!");
+            break;
+            
+          case 38:
+            Print(s:"You got the Supercharge Breakfast!");
+            break;
+            
+            // B.J. Blazkowicz
+          case 41:
+            Print(s:"That's not a knife. THIS is a knife!");
+            break;
+            
+          case 42:
+            Print(s:"You got the Machine Gun!");
+            break;
+            
+            //case 43:
+            //break;
+            // Doesn't exist.
+            
+            //case 44:
+            //Print(s:"You got the Chaingun!");
+            //break;
+            // Case 14 handles this.
+            
+            //case 45:
+            //Print(s:"You got the Rocket Launcher!");
+            //break;
+            // Case 15 handles this.
+            
+          case 46:
+            Print(s:"You got the Flamethrower!");
+            break;
+            
+          case 47:
+            Print(s:"You got the Spear of Destiny!");
+            break;
+            
+          case 48:
+            Print(s:"You got an Extra Life!");
+            break;
+            
+            // Parias
+          case 51:
+            Print(s:"You got the Flechette!");
+            break;
+            
+          case 52:
+            Print(s:"You got the Frost Shards!");
+            break;
+            
+          case 53:
+            Print(s:"You got Timon's Axe!");
+            break;
+            
+          case 54:
+            Print(s:"You got the Serpent Staff!");
+            break;
+            
+          case 55:
+            Print(s:"You got the Hammer of Retribution!");
+            break;
+            
+          case 56:
+            Print(s:"You got the Firestorm!");
+            break;
+            
+          case 57:
+            Print(s:"You got the Wraithverge! Scream for me!");
+            break;
+            
+          case 58:
+            Print(s:"You got the Mystic Ambit Incant!");
+            break;
+            
+            // Duke
+          case 61:
+            Print(s:"You got the Pipebombs!");
+            break;
+            
+            //case 62:
+            //Print(s:"You got the Shotgun!");
+            //break;
+            // Case 12 handles this
+            
+          case 63:
+            Print(s:"You got the Explosive Shotgun!");
+            break;
+            
+          case 64:
+            Print(s:"You got the Ripper Chaingun Cannon!");
+            break;
+            
+          case 65:
+            Print(s:"You got the RPG!");
+            break;
+            
+          case 66:
+            Print(s:"You got the Freezethrower!");
+            break;
+            
+          case 67:
+            Print(s:"You got the Devastator!");
+            break;
+            
+          case 68:
+            Print(s:"You got the Jetpack!");
+            break;
+            
+            // Security Officer
+          case 71:
+            HudMessage(s:"You got the KKV-7 SMG Flechette!\n",
+            s:"You got a second .44 Magnum Mega Class A1!";
+            HUDMSG_PLAIN, 0, CR_GOLD, 0.5, 0.4, 2.0);
+            break;
+            
+          case 72:
+            Print(s:"You got the WSTE-M5 Combat Shotgun!");
+            break;
+            
+          case 73:
+            Print(s:"You got the Zeus Class Fusion Pistol!");
+            break;
+            
+          case 74:
+            Print(s:"You got the MA-75B Assault Rifle!");
+            break;
+            
+          case 75:
+            Print(s:"You got the SPNKR-XP SSM Launcher!");
+            break;
+            
+          case 76:
+            Print(s:"You got the TOZT-7 Backpack Napalm Unit!");
+            break;
+            
+          case 77:
+            Print(s:"You got the ONI-71 Wave Motion Cannon!");
+            break;
+            
+          case 78:
+            HudMessage(s:"You got an\cina\cfaNN\ckAa\ciN \ccSYSTEM ERROR 0xfded";
+            HUDMSG_PLAIN, 0, CR_GOLD, 0.5, 0.4, 2.0);
+            break;
+            
+          case 79:
+            Print(s:"You got a second WSTE-M5 Combat Shotgun!");
+            break;
+            
+          case 80:
+            Print(s:"You got a pair of WSTE-M5 Combat Shotguns!");
+            break;
+        }
+    }
+    
+    
+    /////////////////
+    // BOSS STUFF
+    //////////////
+    
+    script 204 (int bossmonologueshit)
+    {
+        switch(bossmonologueshit)
+        {
+          case 1: // KORAX
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"So, you have come."; HUDMSG_FADEOUT,15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I have personally watched every step of your path, mortal."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Your journey has given you such raw, destructive power..."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Endless mountains of corpses and blood pollute your wake..."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I can't help but see myself when I look at you."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"You've done me a great favor by coming here..."; HUDMSG_FADEOUT,15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"...now there are so many more worlds open to me."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Don't feel too sad about never seeing home again."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I'll be sure to give my regards when I visit on your behalf."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Greetings, mortal..."; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            delay(100);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"...Are you ready to die?"; HUDMSG_FADEOUT, 15, CR_RED,320.4, 150.0, 5.5, 1.0);
+            break;
+            
+          case 2: // LORD SNOTFOLUS
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Glorp...glorp...glorp..."; HUDMSG_FADEOUT,15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Isn't it beautiful?"; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Look at it all. Look at all the goop that surrounds you."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Your people call it repulsive. Revolting. Disgusting."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"For me...it's life."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Would you deny a man food? Would you deny a man life?"; HUDMSG_FADEOUT,15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Your food is made for only one purpose--to consume, as we have."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Would you blame me for leading my people to prosperous grounds?"; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"If I'm to play the villain simply for eating, then so be it."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I will bury you in slime."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            delay(100);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Glorp...glorp...glorp..."; HUDMSG_FADEOUT, 15, CR_GREEN,320.4, 150.0, 5.5, 1.0);
+            break;
+            
+          case 3: // D'SPARIL
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I suppose congratulations are in order."; HUDMSG_FADEOUT,15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"You've come all this way to the doors of my sanctum."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"How many times have you narrowly dodged the clutch of death?"; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"It's such a shame that it was all ultimately pointless."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Do you realize you are the only living mortal left on this planet?"; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I command the vast power of the cosmos, the stars above you."; HUDMSG_FADEOUT,15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I command the vast power of the hells, the nethers below you."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I command the vast power of the dead, the corpses around you."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"I can effortlessly rebuild anything you have broken with just a thought."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(154);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Gape at your own insignificance in the greater workings of the universe."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            delay(140);
+            SetHudSize(640, 400, 0);
+            SetFont("BIGFONT");
+            HudMessageBold(s:"Surrender to D'Sparil."; HUDMSG_FADEOUT, 15, CR_GOLD,320.4, 150.0, 5.5, 1.0);
+            break;
+        }
+    }

BIN
pk3/acs/samsara_tichy.o


File diff suppressed because it is too large
+ 1094 - 0
pk3/actors/CHEX


File diff suppressed because it is too large
+ 1063 - 0
pk3/actors/DOOM


File diff suppressed because it is too large
+ 3633 - 0
pk3/actors/DUKE


+ 96 - 0
pk3/actors/GAME_CHAOS

@@ -0,0 +1,96 @@
+// For the crossover-mashup mods Hordes of Chaos and Resurrection of Chaos, by Udderdude, Vermil, and Hobomaster.
+
+// Hordes of Chaos
+ACTOR DoomImpHOC : RandomSpawner 7001
+{ 
+Game Heretic
+DropItem "DoomImp2" }
+
+ACTOR LostSoulHOC : RandomSpawner 7002
+{
+Game Heretic
+DropItem "LostSoul2" }
+
+ACTOR PainElementalHOC : RandomSpawner 7003 
+{
+Game Heretic
+DropItem "PainElemental2" }
+
+ACTOR CacodemonHOC : RandomSpawner 7004 
+{
+Game Heretic
+DropItem "Cacodemon2" }
+
+ACTOR BaronOfHellHOC : RandomSpawner 7005 
+{
+Game Heretic
+DropItem "BaronOfHell2" }
+
+ACTOR CentaurHOC : RandomSpawner 7006 
+{
+Game Heretic
+DropItem "Centaur2" }
+
+ACTOR CentaurLeaderHOC : RandomSpawner 7007 
+{
+Game Heretic
+DropItem "CentaurLeader2" }
+
+ACTOR BishopHOC : RandomSpawner 7008 
+{
+Game Heretic
+DropItem "Bishop2" }
+
+ACTOR ArchvileHOC : RandomSpawner 7009 
+{
+Game Heretic
+DropItem "Archvile2" }
+
+ACTOR SerpentHOC : RandomSpawner 7010 
+{
+Game Heretic
+DropItem "Serpent2" }
+
+ACTOR SerpentLeaderHOC : RandomSpawner 7011 
+{
+Game Heretic
+DropItem "SerpentLeader2" }
+
+ACTOR WendigoHOC : RandomSpawner 7020 
+{
+Game Heretic
+DropItem "IceGuy2" }
+
+ACTOR HeresiarchHOC : RandomSpawner 7030 
+{
+Game Heretic
+DropItem "Heresiarch2" }
+
+
+// Resurrection of Chaos
+
+ACTOR MancubusHOC : RandomSpawner 7005 {
+Game Hexen
+DropItem "Fatso2" } // May appear in RoC as a Baron of Hell.
+
+ACTOR RevenantHOC : RandomSpawner 7006 {
+Game Hexen
+DropItem "Cacodemon2" } // May appear in RoC as a Centaur.
+
+ACTOR SnakeHOC : RandomSpawner 7008 {
+Game Hexen
+DropItem "Snake2" } // May appear in RoC as a Bishop.
+
+ACTOR CyberdemonHOC : RandomSpawner 7009 {
+Game Hexen
+DropItem "Cyberdemon2" } // May appear in RoC as an Archvile.
+
+ACTOR DemonHOC : RandomSpawner 7010 {
+Game Hexen
+DropItem "DoomDemon2" } // May appear in RoC as a Stalker.
+
+ACTOR SpectreHOC : RandomSpawner 7000 {
+Game Hexen
+DropItem "Spectre2" }
+
+// None of the original monsters are here because I don't feel right nicking other people's Decorate.

File diff suppressed because it is too large
+ 1910 - 0
pk3/actors/GAME_CHEX


File diff suppressed because it is too large
+ 2285 - 0
pk3/actors/GAME_DOOM


File diff suppressed because it is too large
+ 2496 - 0
pk3/actors/GAME_HERETIC


File diff suppressed because it is too large
+ 2763 - 0
pk3/actors/GAME_HEXEN


+ 289 - 0
pk3/actors/GAME_SKULLTAG

@@ -0,0 +1,289 @@
+// Weapon/item spawners for Skulltag-specific maps. Wahey!
+
+ACTOR RedArmor : BasicArmorPickup 5040 // Now gold!
+{
+	Game Doom
+	SpawnID 168
+	Radius 20
+	Height 16
+	Armor.Savepercent 66.66666
+	Armor.Saveamount 250
+	Inventory.Icon "ARM3A0"
+	RenderStyle Add
+	Alpha 0.95
+	Inventory.Pickupmessage "Picked up 250 explosive/fire-tempered armor."
+	Inventory.PickupSound "armor3get"
+	DamageFactor "Fire", 0.125
+	DamageFactor "Explosive", 0.125
+	DamageFactor "DoomTheseGuysAreTheBest", 0.125
+	DamageFactor "DoomHellNoble", 0.125
+	DamageFactor "DukeExplosive", 0.125
+	States
+	{
+	Spawn:
+		ARM3 A 6
+		ARM3 A 6 bright
+		goto Spawn
+	}
+}
+
+Actor Minigun : Chaingun 5014
+{
+Weapon.SlotNumber 8
+Game Doom
+SpawnID 214
+}
+
+Actor STMinigunReplace : Weapon4Spawner replaces Minigun { }
+
+Actor GrenadeLauncher : RocketLauncher 5011
+{
+Weapon.SlotNumber 8
+Game Doom
+SpawnID 163
+}
+
+Actor STGrenadeLauncherReplace : Weapon5Spawner replaces GrenadeLauncher { }
+
+Actor Railgun : PlasmaRifle 5012
+{
+Weapon.SlotNumber 8
+Game Doom
+SpawnID 164
+}
+
+Actor STRailgunReplace : Weapon6Spawner replaces Railgun { }
+
+Actor BFG10k : BFG9000 5013
+{
+Weapon.SlotNumber 8
+Game Doom
+SpawnID 165
+}
+
+Actor STBFG10kreplace : Weapon7Spawner replaces BFG10k { }
+
+//Actor InvisibilitySphere : PartialInvisibility { }
+Actor MaxArmorBonus : ArmorScrap 5091
+{
+Game Doom
+SpawnID 167
+}
+Actor MaxHealthBonus : HealPack0 5090
+{
+Game Doom
+SpawnID 166
+}
+
+// Monster spawners
+
+Actor Abaddon : Cacodemon2 5015
+{
+  Game Doom
+  Health 1200
+  SpawnID 220
+  Speed 12
+  PainChance 40
+  Translation "173:191=5:8", "16:47=96:111", "166:167=108:108", "223:223=0:0"
+  Obituary "%o was smitten by an Abaddon."
+  HitObituary "%o became food for an Abaddon."
+}
+  
+Actor Belphegor : BaronOfHell2 5008
+{
+  Game Doom
+  SpawnID 215
+  Health 1500
+  PainChance 25
+  Obituary "%o was slain by a Belphegor."
+  HitObituary "%o was slain by a Belphegor."
+  Translation "16:47=176:191", "48:79=80:111"
+}
+
+Actor BloodDemon : DoomDemon2 5004
+{
+  Game Doom
+  SpawnID 156
+  Health 300
+  Obituary "%o was chomped on by a Blood Demon."
+  Translation "16:31=176:183", "32:47=184:191", "79:79=191:191"
+}
+
+Actor Cacolantern : Cacodemon2 5006
+{
+  Game Doom
+  SpawnID 159
+  Health 800
+  Obituary "%o was smitten by a Cacolantern."
+  HitObituary "%o got too close to a Cacolantern."
+  Translation "173:191=208:223", "16:47=209:223", "112:127=176:191"
+}
+
+Actor DarkImp : DoomImp2 5003
+{
+  Game Doom
+  SpawnID 155
+  Health 120
+  Obituary "%o was burned by a Dark Imp."
+  HitObituary "%o was slashed by a Dark Imp."
+  Translation"64:72=104:111", "73:79=5:8"
+}
+
+Actor Hectebus : Fatso2 5007
+{
+  Game Doom
+  SpawnID 158
+  Health 1200
+  PainChance 20
+  Obituary "%o was cremated by a Hectebus."
+  Translation "48:79=96:111", "1:2=5:6", "236:239=108:111", "13:15=109:111", "144:151=105:111", "112:127=176:191"
+}
+
+Actor SuperShotgunGuy : ChaingunGuy2 5005
+{
+  Game Doom
+  SpawnID 157
+  Health 120
+  AttackSound "doomguy/sshotf"
+  DropItem "SuperShotgunPickup"
+  Obituary "%o was pounded by a Riot Shotgun Guy."
+  Translation "32:47=9:12"
+  States
+  {
+    Missile:
+      CPOS E 9 A_FaceTarget
+      CPOS F 6 Bright A_CustomBulletAttack(8, 7, 7, 5, "BulletPuff")
+      CPOS E 6
+      Goto See
+  }
+}
+
+actor SuperShotgunPickup : CustomInventory
+{
+	+COUNTITEM
+	+BRIGHT
+	Inventory.PickupMessage "Picked up Weapon 3."
+	Inventory.PickupSound "nosoundforyoubitch"
+	states
+	{
+	Spawn:
+	   SGN2 A -1
+	   Stop
+    Pickup:
+       TNT1 A 0 A_JumpIfInventory("Super Shotgun",1,"PickupDoom2")
+       TNT1 A 0 A_JumpIfInventory("Super Large Zorcher",1,"PickupChex2")
+       TNT1 A 0 A_JumpIfInventory("Ethereal Crossbow",1,"PickupHeretic2")
+       TNT1 A 0 A_JumpIfInventory("Machine Gun",1,"PickupWolfen2")
+       TNT1 A 0 A_JumpIfInventory("Timon's Axe",1,"PickupHexen2")
+	   TNT1 A 0 A_JumpIfInventory("Explosive Shotgun",1,"PickupDuke3")
+       TNT1 A 0 A_JumpIfInventory("Fusion Pistol",1,"PickupMarathon2")
+       TNT1 A 0 A_JumpIfInventory("DoomguyClass",1,"PickupDoom")
+       TNT1 A 0 A_JumpIfInventory("ChexClass",1,"PickupChex")
+       TNT1 A 0 A_JumpIfInventory("CorvusClass",1,"PickupHeretic")
+       TNT1 A 0 A_JumpIfInventory("WolfenClass",1,"PickupWolfen")
+       TNT1 A 0 A_JumpIfInventory("HexenClass",1,"PickupHexen")
+	   TNT1 A 0 A_JumpIfInventory("DukeClass",1,"PickupDuke")
+       TNT1 A 0 A_JumpIfInventory("MarathonClass",1,"PickupMarathon")
+	PickupFail:
+	   SHOT A 1
+	   fail
+    PickupHeretic:
+	   TNT1 A 0 A_PlaySound("heretic/weaponget")
+	   TNT1 A 0 A_Print("You got the Ethereal Crossbow!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   TNT1 A 1 A_GiveInventory("Ethereal Crossbow")
+	   stop
+	PickupChex:
+	   TNT1 A 0 A_PlaySound("chex/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Large Zorcher!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   TNT1 A 1 A_GiveInventory("Super Large Zorcher")
+	   stop
+	PickupDoom:
+	   TNT1 A 0 A_PlaySound("doomguy/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Shotgun!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   TNT1 A 1 A_GiveInventory("Super Shotgun")
+	   stop
+	PickupWolfen:
+	   TNT1 A 0 A_PlaySound("wolfen/mgunget")
+	   TNT1 A 0 A_Print("You got the Machine Gun!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon2",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   WEPG A 1 A_GiveInventory("Machine Gun")
+	   stop
+	PickupHexen:
+	   TNT1 A 0 A_PlaySound("hexen/weaponget")
+	   TNT1 A 0 A_Print("You got Timon's Axe!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   TNT1 A 1 A_GiveInventory("Timon's Axe")
+	   stop
+	PickupDuke:
+	   TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"PickupDuke2")
+	   TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"PickupDuke2")
+	   TNT1 A 0 A_PlaySoundEx("duke/weapontaunt","soundslot7",0,0)
+	   TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
+	   TNT1 A 0 ACS_ExecuteAlways(205)
+	PickupDuke2:
+	   TNT1 A 0 A_Print("You got the Explosive Shotgun!")
+	   TNT1 A 0 A_PlaySound("duke/xshotgunpump")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 1 A_GiveInventory("Explosive Shotgun")
+	   stop
+	PickupMarathon:
+	   TNT1 A 0 A_PlaySound("marathon/itemget")
+	   TNT1 A 0 A_Print("You got the Zeus Class Fusion Pistol!")
+	   TNT1 A 0 A_GiveInventory("GotWeapon3",1)
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   TNT1 A 0 A_SpawnItem("WeaponGetYaaaay")
+	   TNT1 A 0 A_SetBlend("Green",0.4,4)
+	   TNT1 A 1 A_GiveInventory("Fusion Pistol")
+	   stop
+    PickupHeretic2:
+	   TNT1 A 0 A_JumpIfInventory("AmmoShell",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("heretic/ammoget")
+	   TNT1 A 1 A_GiveInventory("AmmoShell",4)
+	   stop
+	PickupChex2:
+	   TNT1 A 0 A_JumpIfInventory("AmmoShell",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("chex/weaponget")
+	   TNT1 A 1 A_GiveInventory("AmmoShell",4)
+	   stop
+	PickupDoom2:
+	   TNT1 A 0 A_JumpIfInventory("AmmoShell",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("doomguy/weaponget")
+	   TNT1 A 1 A_GiveInventory("AmmoShell",4)
+	   stop
+    PickupWolfen2:
+	   TNT1 A 0 A_JumpIfInventory("Clip",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("wolfen/itemget")
+	   TNT1 A 1 A_GiveInventory("Clip",10)
+	   stop
+	PickupHexen2:
+	   TNT1 A 0 A_JumpIfInventory("Clip",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("hexen/itemget")
+	   TNT1 A 1 A_GiveInventory("Clip",4)
+	   stop
+	PickupDuke3:
+	   TNT1 A 0 A_JumpIfInventory("AmmoShell",0,"PickupFail")
+	   TNT1 A 0 A_PlaySound("duke/itemget")
+	   TNT1 A 1 A_GiveInventory("AmmoShell",4)
+	   stop
+	PickupMarathon2:
+	   TNT1 A 0 A_JumpIfInventory("Cell",0,"PickupFail")
+	   TNT1 A 0 A_SetBlend("Green",0.4,4)
+	   TNT1 A 0 A_PlaySound("marathon/itemget")
+	   TNT1 A 1 A_GiveInventory("Cell",20)
+	   stop
+	}
+}

File diff suppressed because it is too large
+ 1270 - 0
pk3/actors/GAME_STRIFE


+ 623 - 0
pk3/actors/GAME_TERRAINCOGNITA

@@ -0,0 +1,623 @@
+// Compatibility for the custom Heretic campaign Terra Incognita by FireSeraphim. Done on request.
+
+Actor HealthBonus2 : HealPack0 9937
+{
+  Inventory.PickupMessage "Picked up 2 Health."
+  Health.LowMessage 25, "Picked up 2 Health."
+  Game Heretic
+  Inventory.Amount 2
+}
+
+Actor ArmorBonus2 : ArmorScrap 9938
+{
+  Inventory.PickupMessage "Picked up 2 Armor."
+  Game Heretic
+  Armor.SaveAmount 2
+}
+
+actor HexenBishop : RandomSpawner 7085//Bishop2 7085
+{
+  Game Heretic
+  dropitem "Bishop2"
+}
+
+Actor DoomDemon : RandomSpawner 7091
+{   
+game Heretic
+dropitem "DoomDemon2"
+}
+
+ACTOR DoomCacodemon2 : RandomSpawner 7087//Cacodemon 7087
+{
+Game Heretic
+dropitem "Cacodemon2"
+}
+
+actor SuperCrossbow : CustomInventory 25102
+{
+	Game Heretic
+	Spawnid 33
+	-COUNTITEM
+    -RANDOMIZE
+	Inventory.PickupMessage "Picked up the Super Crossbow!"
+	Inventory.PickupSound "nosoundforyoubitch"
+	states
+	{
+	Spawn:
+	   WBOW B -1 BRIGHT
+	   loop
+    Pickup:
+       TNT1 A 0 A_JumpIfInventory("DoomguyClass",1,"PickupDoom")
+       TNT1 A 0 A_JumpIfInventory("ChexClass",1,"PickupChex")
+       TNT1 A 0 A_JumpIfInventory("CorvusClass",1,"PickupHeretic")
+       TNT1 A 0 A_JumpIfInventory("WolfenClass",1,"PickupWolfen")
+	   TNT1 A 0 A_JumpIfInventory("HexenClass",1,"PickupHexen")
+	   TNT1 A 0 A_JumpIfInventory("DukeClass",1,"PickupDuke")
+	   TNT1 A 0 A_JumpIfInventory("MarathonClass",1,"PickupMarathon")
+	   WBOW A 1
+	   fail
+    PickupHeretic:
+	   TNT1 A 0 A_PlaySound("heretic/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory("Super Crossbow")
+	   stop
+	PickupChex:
+	   TNT1 A 0 A_PlaySound("chex/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory("Super Crossbow")
+	   stop
+	PickupDoom:
+	   TNT1 A 0 A_PlaySound("doomguy/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory("Super Crossbow")
+	   stop
+	PickupWolfen:
+	   TNT1 A 0 A_PlaySound("wolfen/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory(" Super Crossbow ")
+	   stop
+	PickupHexen:
+	   TNT1 A 0 A_PlaySound("hexen/weaponget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory(" Super Crossbow ")
+	   stop
+	PickupDuke:
+	   TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"PickupDuke2")
+	   TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"PickupDuke2")
+	   TNT1 AA 0
+	   TNT1 A 0 A_PlaySoundEx("duke/intro19","soundslot7",0,0)
+	   TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
+	   TNT1 A 0 ACS_ExecuteAlways(205)
+	PickupDuke2:
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+		TNT1 A 0 A_PlaySound("duke/weaponget")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory("  Super Crossbow  ")
+	   stop
+	PickupMarathon:
+	   TNT1 A 0 A_PlaySound("marathon/itemget")
+	   TNT1 A 0 A_Print("You got the Super Crossbow!")
+	   TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WeaponSparkle",0,0,random(4,52),random(-2,2),random(-2,2),random(1,3),48,128)
+	   WBOW B 1 A_GiveInventory("Super Crossbow")
+	   stop
+	PickupFail:
+	   WBOW B 1
+	   fail
+	}
+}
+
+actor "Super Crossbow" : Weapon
+{
+  obituary "%k splattered %o with the Super Crossbow."