From 779026162d9ed3428bd809ee980ba9400d5e90f0 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Thu, 15 Dec 2022 09:01:01 +0100
Subject: [PATCH] - exported all of RR's pickup items.

---
 source/games/duke/src/spawn_r.cpp             | 157 +----------
 .../redneck.ridesagain/rmapinfo.spawnclasses  |   3 +
 .../filter/redneck/rmapinfo.spawnclasses      |  22 ++
 .../zscript/games/duke/actors/powderkeg.zs    |   2 +-
 .../zscript/games/duke/actors/redneckitems.zs | 264 ++++++++++++++++++
 5 files changed, 291 insertions(+), 157 deletions(-)

diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp
index f63375b41..1ea67047c 100644
--- a/source/games/duke/src/spawn_r.cpp
+++ b/source/games/duke/src/spawn_r.cpp
@@ -86,7 +86,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
 			break;
 
 	*/
-		// this is not really nice...
+	// this is not really nice...
 	case RTILE_BIKERB:
 	case RTILE_BIKERBV2:
 	case RTILE_BIKER:
@@ -291,161 +291,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
 		}
 
 		break;
-
-	case RTILE_RPG2SPRITE:
-	case RTILE_MOTOAMMO:
-	case RTILE_BOATAMMO:
-		if (!isRRRA()) goto default_case;
-		[[fallthrough]];
-
-	case RTILE_STEROIDS:
-	case RTILE_HEATSENSOR:
-	case RTILE_SHIELD:
-	case RTILE_AIRTANK:
-	case RTILE_POWDERKEG:
-	case RTILE_COWPIE:
-	case RTILE_HOLODUKE:
-
-	case RTILE_FIRSTGUNSPRITE:
-	case RTILE_RIFLEGUNSPRITE:
-	case RTILE_SHOTGUNSPRITE:
-	case RTILE_CROSSBOWSPRITE:
-	case RTILE_RIPSAWSPRITE:
-	case RTILE_TITSPRITE:
-	case RTILE_ALIENBLASTERSPRITE:
-
-	case RTILE_SHOTGUNAMMO:
-	case RTILE_FREEZEAMMO:
-	case RTILE_HBOMBAMMO:
-	case RTILE_DEVISTATORAMMO:
-	case RTILE_RPGAMMO:
-	case RTILE_BOOTS:
-	case RTILE_AMMO:
-	case RTILE_AMMOLOTS:
-	case RTILE_BEER:
-	case RTILE_FIRSTAID:
-
-	case RTILE_SAWAMMO:
-
-		if (actj)
-		{
-			act->spr.lotag = 0;
-			act->spr.pos.Z -= 32;
-			act->vel.Z = -4;
-			ssp(act, CLIPMASK0);
-			act->spr.cstat = randomXFlip();
-		}
-		else
-		{
-			act->SetOwner(act);
-			act->spr.cstat = 0;
-		}
-
-		if ((ud.multimode < 2 && act->spr.pal != 0) || (act->spr.lotag > ud.player_skill))
-		{
-			act->spr.scale = DVector2(0, 0);
-			ChangeActorStat(act, STAT_MISC);
-			break;
-		}
-
-		act->spr.pal = 0;
-		[[fallthrough]];
-
-	case RTILE_ACCESSCARD:
-
-		if (ud.multimode > 1 && ud.coop != 1 && act->spr.picnum == RTILE_ACCESSCARD)
-		{
-			act->spr.scale = DVector2(0, 0);
-			ChangeActorStat(act, STAT_MISC);
-			break;
-		}
-		else
-		{
-			if (act->spr.picnum == RTILE_AMMO)
-				act->spr.scale = DVector2(0.25, 0.25);
-			else act->spr.scale = DVector2(0.5, 0.5);
-		}
-
-		act->spr.shade = -17;
-
-		if (actj) ChangeActorStat(act, STAT_ACTOR);
-		else
-		{
-			ChangeActorStat(act, STAT_ZOMBIEACTOR);
-			makeitfall(act);
-		}
-		switch (act->spr.picnum)
-		{
-		case RTILE_FIRSTGUNSPRITE:
-			act->spr.scale = DVector2(0.25, 0.25);
-			break;
-		case RTILE_SHOTGUNAMMO:
-			act->spr.scale = DVector2(0.28125, 0.265625);
-			if (isRRRA()) act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
-			break;
-		case RTILE_FIRSTAID:
-			act->spr.scale = DVector2(0.125, 0.125);
-			break;
-		case RTILE_BEER:
-			act->spr.scale = DVector2(0.078125, 0.0625);
-			break;
-		case RTILE_AMMO:
-			act->spr.scale = DVector2(0.140625, 0.140625);
-			break;
-		case RTILE_MOTOAMMO:
-			if (!isRRRA()) goto default_case;
-			act->spr.scale = DVector2(0.359375, 0.359375);
-			break;
-		case RTILE_BOATAMMO:
-			if (!isRRRA()) goto default_case;
-			act->spr.scale = DVector2(0.25, 0.25);
-			break;
-		case RTILE_COWPIE:
-			act->spr.scale = DVector2(0.125, 0.09375);
-			break;
-		case RTILE_STEROIDS:
-			act->spr.scale = DVector2(0.203125, 0.140625);
-			break;
-		case RTILE_ACCESSCARD:
-			act->spr.scale = DVector2(0.171875, 0.1875);
-			break;
-		case RTILE_HEATSENSOR:
-			act->spr.scale = DVector2(0.09375, 0.0625);
-			break;
-		case RTILE_AIRTANK:
-			act->spr.scale = DVector2(0.296875, 0.25);
-			break;
-		case RTILE_CROSSBOWSPRITE:
-			act->spr.scale = DVector2(0.25, 0.21875);
-			break;
-		case RTILE_RPG2SPRITE:
-			if (!isRRRA()) goto default_case;
-			act->spr.scale = DVector2(0.34375, 0.3125);
-			break;
-		case RTILE_RIPSAWSPRITE:
-			act->spr.scale = DVector2(0.34375, 0.203125);
-			break;
-		case RTILE_ALIENBLASTERSPRITE:
-			act->spr.scale = DVector2(0.28125, 0.265625);
-			break;
-		case RTILE_SAWAMMO:
-			act->spr.scale = DVector2(0.1875, 0.109375);
-			break;
-		case RTILE_GROWSPRITEICON:
-			act->spr.scale = DVector2(0.15625, 0.140625);
-			break;
-		case RTILE_DEVISTATORAMMO:
-			act->spr.scale = DVector2(0.15625, 0.140625);
-			break;
-		case RTILE_ATOMICHEALTH:
-			act->spr.scale = DVector2(0.125, 0.125);
-			break;
-		case RTILE_TITSPRITE:
-			act->spr.scale = DVector2(0.265625, 0.25);
-			break;
-		}
-		act->spr.shade = act->sector()->floorshade;
-		break;
 	}
 	return act;
 }
diff --git a/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses b/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses
index 6a31d1a65..ed2071378 100644
--- a/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses
+++ b/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses
@@ -167,4 +167,7 @@ spawnclasses
 	// stuff below uses CON
 	
 	7280 = RedneckRabbit
+	
+	78 = RedneckMotoAmmo
+	8460 = RedneckBoatAmmo
 }
diff --git a/wadsrc/static/filter/redneck/rmapinfo.spawnclasses b/wadsrc/static/filter/redneck/rmapinfo.spawnclasses
index 66543dfce..7c2d66014 100644
--- a/wadsrc/static/filter/redneck/rmapinfo.spawnclasses
+++ b/wadsrc/static/filter/redneck/rmapinfo.spawnclasses
@@ -136,6 +136,28 @@ spawnclasses
 
 	26 = RedneckDynamite
 	27 = RedneckPowderKeg
+	14 = RedneckChickenArrows
+	55 = RedneckMoonshine
+	56 = RedneckSnorkel
+	57 = RedneckCowPie
+	1350 = RedneckSixpack
+	21 = RedneckRevolver
+	22 = RedneckRiflegun
+	28 = RedneckShotgun
+	23 = RedneckCrossbow
+	25 = RedneckRipsaw
+	24 = RedneckTitgun
+	29 = RedneckBlaster
+	49 = RedneckShotgunammo
+	47 = RedneckDynamiteAmmo
+	42 = RedneckBlasterammo
+	61 = RedneckHipWader
+	40 = RedneckAmmo
+	51 = RedneckBeer
+	53 = RedneckWhiskey
+	43 = RedneckSawAmmo
+	60 = RedneckDoorKey
+	
 	1416 = RedneckMortar
 	285 = RedneckChickenSpawner1
 	286 = RedneckChickenSpawner2
diff --git a/wadsrc/static/zscript/games/duke/actors/powderkeg.zs b/wadsrc/static/zscript/games/duke/actors/powderkeg.zs
index 19d9a9053..9b60acf65 100644
--- a/wadsrc/static/zscript/games/duke/actors/powderkeg.zs
+++ b/wadsrc/static/zscript/games/duke/actors/powderkeg.zs
@@ -1,5 +1,5 @@
 
-class RedneckPowderKeg : DukeActor
+class RedneckPowderKeg : DukeItemBase
 {
 	default
 	{
diff --git a/wadsrc/static/zscript/games/duke/actors/redneckitems.zs b/wadsrc/static/zscript/games/duke/actors/redneckitems.zs
index e69de29bb..82562509a 100644
--- a/wadsrc/static/zscript/games/duke/actors/redneckitems.zs
+++ b/wadsrc/static/zscript/games/duke/actors/redneckitems.zs
@@ -0,0 +1,264 @@
+
+class RedneckChickenArrows : DukeItemBase
+{
+	default
+	{
+		pic "RPG2SPRITE";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.34375, 0.3125));
+	}
+}
+	
+class RedneckMotoAmmo : DukeItemBase
+{
+	default
+	{
+		pic "MOTOAMMO";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.359375, 0.359375));
+	}
+}
+	
+class RedneckBoatAmmo : DukeItemBase
+{
+	default
+	{
+		pic "BOATAMMO";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.359375, 0.359375));
+	}
+}
+
+class RedneckMoonshine : DukeItemBase
+{
+	default
+	{
+		pic "STEROIDS";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.203125, 0.140625));
+	}
+}
+	
+class RedneckSnorkel : DukeItemBase
+{
+	default
+	{
+		pic "AIRTANK";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.296875, 0.25));
+	}
+}
+
+class RedneckCowpie : DukeItemBase
+{
+	default
+	{
+		pic "COWPIE";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.125, 0.09375));
+	}
+}
+	
+class RedneckSixpack : DukeItemBase
+{
+	default
+	{
+		pic "HOLODUKE";
+	}
+}
+
+class RedneckRevolver : DukeItemBase
+{
+	default
+	{
+		pic "FIRSTGUNSPRITE";
+	}
+	override void Initialize()
+	{
+		commonItemSetup(((0.25, 0.25)));
+	}
+}
+	
+class RedneckRiflegun : DukeItemBase
+{
+	default
+	{
+		pic "RIFLEGUNSPRITE";
+	}
+}
+
+class RedneckShotgun : DukeItemBase
+{
+	default
+	{
+		pic "SHOTGUNSPRITE";
+	}
+}
+
+class RedneckCrossbow : DukeItemBase
+{
+	default
+	{
+		pic "CROSSBOWSPRITE";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.25, 0.21875));
+	}
+
+}
+	
+class RedneckRipsaw : DukeItemBase
+{
+	default
+	{
+		pic "RIPSAWSPRITE";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.34375, 0.203125));
+	}
+}
+	
+class RedneckTitgun : DukeItemBase
+{
+	default
+	{
+		pic "TITSPRITE";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.265625, 0.25));
+	}
+}
+	
+class RedneckBlaster : DukeItemBase
+{
+	default
+	{
+		pic "ALIENBLASTERSPRITE";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.28125, 0.265625));
+	}
+}
+
+class RedneckShotgunammo : DukeItemBase
+{
+	default
+	{
+		pic "SHOTGUNAMMO";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.28125, 0.265625));
+		if (Raze.isRRRA()) self.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
+	}
+}
+	
+class RedneckDynamiteAmmo : DukeItemBase
+{
+	default
+	{
+		pic "HBOMBAMMO";
+	}
+}
+
+class RedneckBlasterammo : DukeItemBase
+{
+	default
+	{
+		pic "DEVISTATORAMMO";
+	}
+
+	override void Initialize()
+	{
+		commonItemSetup((0.15625, 0.140625));
+	}
+}
+	
+class RedneckHipWader : DukeItemBase
+{
+	default
+	{
+		pic "BOOTS";
+	}
+}
+
+class RedneckAmmo : DukeItemBase
+{
+	default
+	{
+		pic "AMMO";
+	}
+	
+	override void Initialize()
+	{
+		commonItemSetup((0.140625, 0.140625));
+	}
+}	
+	
+class RedneckBeer : DukeItemBase
+{
+	default
+	{
+		pic "BEER";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.078125, 0.0625));
+	}
+}
+	
+class RedneckWhiskey : DukeItemBase
+{
+	default
+	{
+		pic "FIRSTAID";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.125, 0.125));
+	}
+}
+
+class RedneckSawAmmo : DukeItemBase
+{
+	default
+	{
+		pic "SAWAMMO";
+	}
+	override void Initialize()
+	{
+		commonItemSetup((0.1875, 0.109375));
+	}
+}
+
+class RedneckDoorkey : DukeAccessCard
+{
+	override void Initialize()
+	{
+		super.Initialize();
+		self.Scale = (0.171875, 0.1875);
+	}
+}
+
+		
\ No newline at end of file