Add Duel objects

- Banana, Eggman Items, Proxi Mine, Land Mine, Hyudoro, and Drop Targets are now placeable in maps.
- By default, will only appear when in 1v1s. (Extra flag can be checked to enable spawning in all modes.)
- Most of these objects will need tweaks to account for being placeable now.
This commit is contained in:
Sally Coolatta 2022-09-27 22:43:45 -04:00
parent 5d8df43b10
commit d7be3d3aca
7 changed files with 82 additions and 7 deletions

View file

@ -139,7 +139,7 @@ skins
// Gametypes
gametypes
{
-1 = "Single Player";
-1 = "Grand Prix";
0 = "Race";
1 = "Battle";
}
@ -5113,6 +5113,7 @@ thingtypes
height = 92;
}
}
waypoints
{
color = 4; // Red
@ -5161,6 +5162,58 @@ thingtypes
fixedrotation = 1;
}
}
duel
{
color = 4; // Red
arrow = 1;
title = "Duel-Only";
sprite = "SPBMA2A8";
width = 16;
height = 32;
flags1text = "[1] Spawn in all modes";
2050
{
title = "Duel Bomb";
}
2051
{
title = "Banana";
sprite = "BANAA2A8";
}
2052
{
title = "Eggman Item";
sprite = "FITMA0";
}
2053
{
title = "Proximity Mine";
sprite = "SSMNA0";
}
2054
{
title = "Land Mine";
sprite = "LNDMA0";
}
2055
{
title = "Hyudoro";
sprite = "HYUUA2A8";
}
2056
{
title = "Drop Target";
sprite = "DTRGA0";
}
}
}
//Default things filters

View file

@ -669,6 +669,7 @@ extern boolean thwompsactive;
extern UINT8 lastLowestLap;
extern SINT8 spbplace;
extern boolean rainbowstartavailable;
extern boolean inDuel;
extern tic_t bombflashtimer; // Used to avoid causing seizures if multiple mines explode close to you :)
extern boolean legitimateexit;

View file

@ -312,6 +312,7 @@ boolean thwompsactive; // Thwomps activate on lap 2
UINT8 lastLowestLap; // Last lowest lap, for activating race lap executors
SINT8 spbplace; // SPB exists, give the person behind better items
boolean rainbowstartavailable; // Boolean, keeps track of if the rainbow start was gotten
boolean inDuel; // Boolean, keeps track of if it is a 1v1
// Client-sided, unsynched variables (NEVER use in anything that needs to be synced with other players)
tic_t bombflashtimer = 0; // Cooldown before another FlashPal can be intialized by a bomb exploding near a displayplayer. Avoids seizures.

View file

@ -23310,7 +23310,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_EGGMANITEM
-1, // doomednum
2052, // doomednum
S_EGGMANITEM1, // spawnstate
2, // spawnhealth
S_NULL, // seestate
@ -23364,7 +23364,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_BANANA
-1, // doomednum
2051, // doomednum
S_BANANA, // spawnstate
2, // spawnhealth
S_NULL, // seestate
@ -23553,7 +23553,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_SSMINE
-1, // doomednum
2053, // doomednum
S_SSMINE_AIR1, // spawnstate
1, // spawnhealth
S_NULL, // seestate
@ -23688,7 +23688,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_LANDMINE
-1, // doomednum
2054, // doomednum
S_LANDMINE, // spawnstate
2, // spawnhealth
S_NULL, // seestate
@ -23715,7 +23715,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_DROPTARGET
-1, // doomednum
2056, // doomednum
S_DROPTARGET, // spawnstate
3, // spawnhealth
S_NULL, // seestate
@ -24066,7 +24066,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
},
{ // MT_HYUDORO
-1, // doomednum
2055, // doomednum
S_HYUDORO, // spawnstate
1000, // spawnhealth
S_NULL, // seestate

View file

@ -78,6 +78,9 @@ void K_TimerInit(void)
numPlayers++;
}
// 1v1 activates DUEL rules!
inDuel = (numPlayers == 2);
if (numPlayers >= 2)
{
rainbowstartavailable = true;

View file

@ -11548,6 +11548,21 @@ static boolean P_AllowMobjSpawn(mapthing_t* mthing, mobjtype_t i)
return false;
}
break;
//case MT_DUELBOMB:
case MT_BANANA:
case MT_EGGMANITEM:
case MT_SSMINE:
case MT_LANDMINE:
case MT_HYUDORO:
case MT_DROPTARGET:
{
// Duel objects.
// Normally only spawn when placed by the map in Duels,
// but can be forced to always spawn with the Extra flag.
if (inDuel == false && !(mthing->options & MTF_EXTRA))
return false;
}
break;
default:
break;
}

View file

@ -4576,6 +4576,7 @@ static void P_NetArchiveMisc(boolean resending)
WRITEUINT8(save_p, lastLowestLap);
WRITESINT8(save_p, spbplace);
WRITEUINT8(save_p, rainbowstartavailable);
WRITEUINT8(save_p, inDuel);
WRITEUINT32(save_p, introtime);
WRITEUINT32(save_p, starttime);
@ -4733,6 +4734,7 @@ static inline boolean P_NetUnArchiveMisc(boolean reloading)
lastLowestLap = READUINT8(save_p);
spbplace = READSINT8(save_p);
rainbowstartavailable = (boolean)READUINT8(save_p);
inDuel = (boolean)READUINT8(save_p);
introtime = READUINT32(save_p);
starttime = READUINT32(save_p);