- Renamed fucking everything
- Threw out all of the item code because it looks at me funny
This commit is contained in:
TehRealSalt 2018-02-05 18:55:52 -05:00
parent 32b2818ab6
commit cbff4bbf44
24 changed files with 1438 additions and 2584 deletions

View File

@ -216,7 +216,7 @@ static CV_PossibleValue_t competitionboxes_cons_t[] = {{0, "Normal"}, {1, "Rando
static CV_PossibleValue_t matchboxes_cons_t[] = {{0, "Normal"}, {1, "Random"}, {2, "Non-Random"},
{3, "None"}, {0, NULL}};
static CV_PossibleValue_t chances_cons_t[] = {{0, "MIN"}, {9, "MAX"}, {0, NULL}};
//static CV_PossibleValue_t chances_cons_t[] = {{0, "MIN"}, {9, "MAX"}, {0, NULL}};
static CV_PossibleValue_t match_scoring_cons_t[] = {{0, "Normal"}, {1, "Classic"}, {0, NULL}};
static CV_PossibleValue_t pause_cons_t[] = {{0, "Server"}, {1, "All"}, {0, NULL}};
@ -311,7 +311,7 @@ consvar_t cv_matchboxes = {"matchboxes", "Normal", CV_NETVAR|CV_CHEAT, matchboxe
consvar_t cv_specialrings = {"specialrings", "On", CV_NETVAR, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_powerstones = {"powerstones", "On", CV_NETVAR, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_recycler = {"tv_recycler", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
/*consvar_t cv_recycler = {"tv_recycler", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_teleporters = {"tv_teleporter", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_superring = {"tv_superring", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_supersneakers = {"tv_supersneaker", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
@ -322,30 +322,30 @@ consvar_t cv_ringshield = {"tv_ringshield", "5", CV_NETVAR|CV_CHEAT, chanc
consvar_t cv_forceshield = {"tv_forceshield", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_bombshield = {"tv_bombshield", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_1up = {"tv_1up", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_eggmanbox = {"tv_eggman", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_eggmanbox = {"tv_eggman", "5", CV_NETVAR|CV_CHEAT, chances_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};*/
// SRB2kart
consvar_t cv_magnet = {"magnets", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_boo = {"boos", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_mushroom = {"mushrooms", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_triplemushroom = {"triplemushrooms", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_megashroom = {"megashrooms", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_goldshroom = {"goldshrooms", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_star = {"stars", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_triplebanana = {"triplebananas", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_fakeitem = {"fakeitems", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_banana = {"bananas", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_greenshell = {"greenshells", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_redshell = {"redshells", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_laserwisp = {"laserwisps", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_triplegreenshell = {"triplegreenshells", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_bobomb = {"bobombs", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_blueshell = {"blueshells", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_jaws = {"jaws", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_fireflower = {"fireflowers", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_tripleredshell = {"tripleredshells", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_lightning = {"lightning", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_feather = {"feathers", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_sneaker = {"sneaker", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_rocketsneaker = {"rocketsneaker", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_invincibility = {"invincibility", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_banana = {"banana", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_fakeitem = {"fakeitem", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_orbinaut = {"orbinaut", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_jawz = {"jawz", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_mine = {"mine", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_ballhog = {"ballhog", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_selfpropelledbomb = {"selfpropelledbomb", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_sizeup = {"sizeup", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_sizedown = {"sizedown", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_lightningshield = {"lightningshield", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_hyudoro = {"hyudoro", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_pogospring = {"pogospring", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_triplesneaker = {"triplesneaker", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_triplebanana = {"triplebanana", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_tripleorbinaut = {"tripleorbinaut", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_dualjawz = {"dualjawz", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_karthud = {"karthud", "Default", CV_SAVE|CV_CALL, karthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartminimap = {"kartminimap", "Yes", CV_SAVE, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
@ -361,6 +361,11 @@ consvar_t cv_kartmirror = {"kartmirror", "Off", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NO
static CV_PossibleValue_t speedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}};
consvar_t cv_speedometer = {"speedometer", "Kilometers", CV_SAVE, speedometer_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // use tics in display
static CV_PossibleValue_t kartdebugitem_cons_t[] = {{-1, "MIN"}, {NUMKARTITEMS-1, "MAX"}, {0, NULL}};
consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}};
consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t cv_collideminimum_cons_t[] = {{1, "MIN"}, {16384, "MAX"}, {0, NULL}};
consvar_t cv_collideminimum = {"collide_minspeed", "25", CV_NETVAR, cv_collideminimum_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t cv_collidesoundnum_cons_t[] = {{1, "MIN"}, {1208, "MAX"}, {0, NULL}};
@ -595,7 +600,7 @@ void D_RegisterServerCommands(void)
CV_RegisterVar(&cv_competitionboxes);
CV_RegisterVar(&cv_matchboxes);
CV_RegisterVar(&cv_recycler);
/*CV_RegisterVar(&cv_recycler);
CV_RegisterVar(&cv_teleporters);
CV_RegisterVar(&cv_superring);
CV_RegisterVar(&cv_supersneakers);
@ -606,7 +611,7 @@ void D_RegisterServerCommands(void)
CV_RegisterVar(&cv_forceshield);
CV_RegisterVar(&cv_bombshield);
CV_RegisterVar(&cv_1up);
CV_RegisterVar(&cv_eggmanbox);
CV_RegisterVar(&cv_eggmanbox);*/
K_RegisterKartStuff(); // SRB2kart

View File

@ -103,17 +103,18 @@ extern consvar_t cv_pause;
extern consvar_t cv_restrictskinchange, cv_allowteamchange, cv_respawntime;
extern consvar_t cv_teleporters, cv_superring, cv_supersneakers, cv_invincibility;
/*extern consvar_t cv_teleporters, cv_superring, cv_supersneakers, cv_invincibility;
extern consvar_t cv_jumpshield, cv_watershield, cv_ringshield, cv_forceshield, cv_bombshield;
extern consvar_t cv_1up, cv_eggmanbox;
extern consvar_t cv_recycler;
extern consvar_t cv_recycler;*/
// SRB2kart items
extern consvar_t cv_magnet, cv_boo, cv_mushroom, cv_triplemushroom, cv_megashroom;
extern consvar_t cv_goldshroom, cv_star, cv_triplebanana, cv_fakeitem, cv_banana;
extern consvar_t cv_greenshell, cv_redshell, cv_laserwisp, cv_triplegreenshell, cv_bobomb;
extern consvar_t cv_blueshell, cv_jaws, cv_fireflower, cv_tripleredshell, cv_lightning;
extern consvar_t cv_feather;
extern consvar_t cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana;
extern consvar_t cv_fakeitem, cv_orbinaut, cv_jawz, cv_mine;
extern consvar_t cv_ballhog, cv_selfpropelledbomb, cv_sizeup, cv_sizedown;
extern consvar_t cv_lightningshield, cv_hyudoro, cv_pogospring;
extern consvar_t cv_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz;
extern consvar_t cv_karthud;
extern consvar_t cv_kartminimap;
@ -129,6 +130,8 @@ extern consvar_t cv_speedometer;
extern consvar_t cv_collideminimum;
extern consvar_t cv_collidesoundnum;
extern consvar_t cv_collidesounds;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount;
//
extern consvar_t cv_itemfinder;

View File

@ -230,6 +230,38 @@ typedef enum
NUMPOWERS
} powertype_t;
typedef enum
{
KITEM_SAD = -1,
KITEM_NONE = 0,
KITEM_SNEAKER,
KITEM_ROCKETSNEAKER,
KITEM_INVINCIBILITY,
KITEM_BANANA,
KITEM_FAKE,
KITEM_ORBINAUT,
KITEM_JAWZ,
KITEM_MINE,
KITEM_BALLHOG,
KITEM_SPB,
KITEM_SIZEUP,
KITEM_SIZEDOWN,
KITEM_LIGHTNINGSHIELD,
KITEM_HYUDORO,
KITEM_POGOSPRING,
KITEM_KITCHENSINK,
NUMKARTITEMS,
// Additional roulette numbers, only used for K_KartGetItemResult
KRITEM_TRIPLESNEAKER = NUMKARTITEMS,
KRITEM_TRIPLEBANANA,
KRITEM_TRIPLEORBINAUT,
KRITEM_DUALJAWZ,
NUMKARTRESULTS
} kartitems_t;
//{ SRB2kart - kartstuff
typedef enum
{
@ -249,7 +281,7 @@ typedef enum
k_sounds, // Used this to stop and then force music restores as it hits zero
k_boosting, // Determines if you're currently shroom-boosting
k_floorboost, // Prevents Mushroom sounds for a breif duration when triggered by a floor panel
k_floorboost, // Prevents Sneaker sounds for a breif duration when triggered by a floor panel
k_spinout, // Separate confirmation to prevent endless wipeout loops
k_spinouttype, // Determines whether to thrust forward or not while spinning out; 0 = move forwards, 1 = stay still
@ -260,54 +292,32 @@ typedef enum
k_boostcharge, // Charge-up for boosting at the start of the race, or when Lakitu drops you
k_jmp, // In Mario Kart, letting go of the jump button stops the drift
k_offroad, // In Super Mario Kart, going offroad has lee-way of about 1 second before you start losing speed
k_pogospring, // Pogo spring effect
k_itemroulette, // Used for the roulette when deciding what item to give you (was "pw_kartitem")
k_itemclose, // Used to animate the item window closing (was "pw_psychic")
// Some items use timers for their duration or effects
k_magnettimer, // Duration of Magnet's item-break and item box pull
k_bootimer, // Duration of the boo offroad effect itself
k_bootaketimer, // You are stealing an item, this is your timer
k_boostolentimer, // You are being stolen from, this is your timer
k_mushroomtimer, // Duration of the Mushroom Boost itself
k_growshrinktimer, // > 0 = Big, < 0 = small
k_squishedtimer, // Squished frame timer
k_goldshroomtimer, // Gold Mushroom duration timer
k_startimer, // Invincibility timer
k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam")
k_laserwisptimer, // The duration and relative angle of the laser
k_justbumped, // Prevent players from endlessly bumping into each other
k_poweritemtimer, // Battle mode, how long before you're allowed another power item (Star, Megashroom)
k_comebacktimer, // Battle mode, how long before you become a bomb after death
k_attractiontimer, // Duration of Lightning Shield's item-break and item box pull
k_hyudorotimer, // Duration of the Hyudoro offroad effect itself
k_stealingtimer, // You are stealing an item, this is your timer
k_stolentimer, // You are being stolen from, this is your timer
k_sneakertimer, // Duration of the Sneaker Boost itself
k_growshrinktimer, // > 0 = Big, < 0 = small
k_squishedtimer, // Squished frame timer
k_rocketsneakertimer, // Rocket Sneaker duration timer
k_invincibilitytimer, // Invincibility timer
k_fakeitem, // Fake item held, separate from itemtype so it doesn't stop you from getting items
k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam")
k_justbumped, // Prevent players from endlessly bumping into each other
k_poweritemtimer, // Battle mode, how long before you're allowed another power item (Invincibility, Size Up)
k_comebacktimer, // Battle mode, how long before you become a bomb after death
k_sadtimer, // How long you've been sad
// Each item needs its own power slot, for the HUD and held use
// *** ADDING A NEW ITEM? ADD IT TO K_DoBooSteal PLEASE!! -Salt ***
k_magnet, // 0x1 = Magnet in inventory
k_boo, // 0x1 = Boo in inventory
k_mushroom, // 0x1 = 1 Mushroom in inventory, 0x2 = 2 Mushrooms in inventory
// 0x4 = 3 Mushrooms in inventory
k_megashroom, // 0x1 = Mega Mushroom in inventory
k_goldshroom, // 0x1 = Gold Mushroom in inventory
k_star, // 0x1 = Star in inventory
k_triplebanana, // 0x1 = 1 Banana following, 0x2 = 2 Bananas following
// 0x4 = 3 Bananas following, 0x8 = Triple Banana in inventory
k_fakeitem, // 0x1 = Fake Item being held, 0x2 = Fake Item in inventory
k_banana, // 0x1 = Banana being held, 0x2 = Banana in inventory
k_greenshell, // 0x1 = Green Shell being held, 0x2 = Green Shell in inventory
k_redshell, // 0x1 = Red Shell being held, 0x2 = Red Shell in inventory
k_laserwisp, // 0x1 = Laser Wisp in inventory
k_triplegreenshell, // 0x1 = 1 Green Shell orbiting, 0x2 = 2 Green Shells orbiting
// 0x4 = 3 Green Shells orbiting, 0x8 = Triple Green Shell in inventory
k_bobomb, // 0x1 = Bob-omb being held, 0x2 = Bob-omb in inventory
k_blueshell, // 0x1 = Blue Shell in inventory
k_jaws, // 0x1 = 1 Jaws orbiting, 0x2 = 2 Jaws orbiting,
// 0x4 = 2x Jaws in inventory
k_fireflower, // 0x1 = Fire Flower in inventory
k_tripleredshell, // 0x1 = 1 Red Shell orbiting, 0x2 = 2 Red Shells orbiting
// 0x4 = 3 Red Shells orbiting, 0x8 = Triple Red Shell in inventory
k_lightning, // 0x1 = Lightning in inventory
k_feather, // 0x1 = Feather in inventory, 0x2 = Player is feather jumping
k_kitchensink, // 0x1 = Sink in inventory
// *** ADDING A NEW ITEM? ADD IT TO K_DoHyudoroSteal PLEASE!! -Salt ***
k_itemtype, // KITEM_ constant for item number
k_itemamount, // Amount of said item
k_itemheld, // Are you holding an item? 1 = normal hold, 2 = rotation hold
// Battle Mode vars
k_balloon, // Number of balloons left

View File

@ -1822,8 +1822,8 @@ static actionpointer_t actionpointers[] =
{{A_RemoteAction}, "A_REMOTEACTION"},
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
{{A_ItemPop}, "A_ITEMPOP"}, // SRB2kart
{{A_RedShellChase}, "A_REDSHELLCHASE"}, // SRB2kart
{{A_BobombExplode}, "A_BOBOMBEXPLODE"}, // SRB2kart
{{A_JawzChase}, "A_JAWZCHASE"}, // SRB2kart
{{A_MineExplode}, "A_MINEEXPLODE"}, // SRB2kart
{{A_OrbitNights}, "A_ORBITNIGHTS"},
{{A_GhostMe}, "A_GHOSTME"},
{{A_SetObjectState}, "A_SETOBJECTSTATE"},
@ -6248,7 +6248,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
// Magnet Burst
// Mushroom Fire Trail
// Sneaker Fire Trail
"S_KARTFIRE1",
"S_KARTFIRE2",
"S_KARTFIRE3",
@ -6290,15 +6290,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_BANANAITEM",
"S_DEADBANANA",
//{ Green Shell
"S_TRIPLEGREENSHIELD1",
"S_TRIPLEGREENSHIELD2",
"S_TRIPLEGREENSHIELD3",
"S_TRIPLEGREENSHIELD4",
"S_TRIPLEGREENSHIELD5",
"S_TRIPLEGREENSHIELD6",
"S_TRIPLEGREENSHIELD7",
"S_TRIPLEGREENSHIELD8",
//{ Orbinaut
"S_GREENSHIELD1",
"S_GREENSHIELD2",
"S_GREENSHIELD3",
@ -6317,15 +6309,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_GREENITEM8",
"S_DEADGREEN",
//}
//{ Red Shell
"S_TRIPLEREDSHIELD1",
"S_TRIPLEREDSHIELD2",
"S_TRIPLEREDSHIELD3",
"S_TRIPLEREDSHIELD4",
"S_TRIPLEREDSHIELD5",
"S_TRIPLEREDSHIELD6",
"S_TRIPLEREDSHIELD7",
"S_TRIPLEREDSHIELD8",
//{ Jawz
"S_REDSHIELD1",
"S_REDSHIELD2",
"S_REDSHIELD3",
@ -6355,20 +6339,38 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FIRETRAIL8",
"S_FIRETRAIL9",
// Bob-omb
"S_BOMBSHIELD",
"S_BOMBITEM",
"S_BOMBAIR",
// Special Stage Mine
"S_BOMBSHIELD1",
"S_BOMBSHIELD2",
"S_BOMBAIR1",
"S_BOMBAIR2",
"S_BOMBDEPLOY1",
"S_BOMBDEPLOY2",
"S_BOMBDEPLOY3",
"S_BOMBDEPLOY4",
"S_BOMBDEPLOY5",
"S_BOMBDEPLOY6",
"S_BOMBDEPLOY7",
"S_BOMBDEPLOY8",
"S_BOMBDEPLOY9",
"S_BOMBDEPLOY10",
"S_BOMBDEPLOY11",
"S_BOMBDEPLOY12",
"S_BOMBDEPLOY13",
"S_BOMBITEM1",
"S_BOMBITEM2",
"S_BOMBITEM3",
"S_BOMBITEM4",
"S_BOMBEXPLODE",
// Blue Shell - Blue Lightning for now...
// Self-Propelled Bomb - just an explosion for now...
"S_BLUELIGHTNING1",
"S_BLUELIGHTNING2",
"S_BLUELIGHTNING3",
"S_BLUELIGHTNING4",
"S_BLUEEXPLODE",
// Lightning
// Size Down
"S_LIGHTNING1",
"S_LIGHTNING2",
"S_LIGHTNING3",
@ -6420,20 +6422,17 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FIREDITEM4",
"S_PLAYERARROW", // Above player arrow
"S_PLAYERARROW_MUSHROOM",
"S_PLAYERARROW_GREENSHELL",
"S_PLAYERARROW_SNEAKER",
"S_PLAYERARROW_BANANA",
"S_PLAYERARROW_FAKEITEM",
"S_PLAYERARROW_BOO",
"S_PLAYERARROW_FEATHER",
"S_PLAYERARROW_REDSHELL",
"S_PLAYERARROW_BOBOMB",
"S_PLAYERARROW_FIREFLOWER",
"S_PLAYERARROW_TRIPLEGREENSHELL",
"S_PLAYERARROW_TRIPLEBANANA",
"S_PLAYERARROW_TRIPLEREDSHELL",
"S_PLAYERARROW_STAR",
"S_PLAYERARROW_MEGASHROOM",
"S_PLAYERARROW_HYUDORO",
"S_PLAYERARROW_POGOSPRING",
"S_PLAYERARROW_JAWZ",
"S_PLAYERARROW_MINE",
"S_PLAYERARROW_BALLHOG",
"S_PLAYERARROW_ORBINAUT",
"S_PLAYERARROW_INVINCIBILITY",
"S_PLAYERARROW_SIZEUP",
"S_PLAYERARROW_KITCHENSINK",
"S_PLAYERARROW_EMPTY",
"S_PLAYERARROW_ROULETTE",
@ -6959,39 +6958,31 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_FLINGRANDOMITEM",
"MT_RANDOMITEMPOP",
"MT_MUSHROOMTRAIL",
"MT_SNEAKERTRAIL",
"MT_DRIFT",
"MT_DRIFTSMOKE",
"MT_FAKESHIELD",
"MT_FAKEITEM",
"MT_TRIPLEBANANASHIELD1", // Banana Stuff
"MT_TRIPLEBANANASHIELD2",
"MT_TRIPLEBANANASHIELD3",
"MT_BANANASHIELD",
"MT_BANANASHIELD", // Banana Stuff
"MT_BANANAITEM",
"MT_TRIPLEGREENSHIELD1", // Green shell stuff
"MT_TRIPLEGREENSHIELD2",
"MT_TRIPLEGREENSHIELD3",
"MT_GREENSHIELD",
"MT_GREENSHIELD", // Orbinaut stuff
"MT_GREENITEM",
"MT_FIRETRAIL",
"MT_TRIPLEREDSHIELD1", // Red shell stuff
"MT_TRIPLEREDSHIELD2",
"MT_TRIPLEREDSHIELD3",
"MT_REDSHIELD",
"MT_REDSHIELD", // Jawz stuff
"MT_REDITEM",
"MT_REDITEMDUD",
"MT_BOMBSHIELD", // Bob-omb stuff
"MT_BOMBSHIELD", // Special Stage Mine stuff
"MT_BOMBITEM",
"MT_BOMBEXPLOSION",
"MT_BOMBEXPLOSIONSOUND",
"MT_BLUELIGHTNING", // Lightning stuff
"MT_BLUELIGHTNING", // Size Down stuff
"MT_BLUEEXPLOSION",
"MT_LIGHTNING",
@ -7338,7 +7329,6 @@ static const char *const KARTSTUFF_LIST[] = {
"LAKITU",
"THROWDIR",
"CAMSPIN",
"LAPANIMATION",
"CARDANIMATION",
"SOUNDS",
@ -7355,46 +7345,28 @@ static const char *const KARTSTUFF_LIST[] = {
"BOOSTCHARGE",
"JMP",
"OFFROAD",
"POGOSPRING",
"ITEMROULETTE",
"ITEMCLOSE",
"MAGNETTIMER",
"BOOTIMER",
"BOOTAKETIMER",
"BOOSTOLENTIMER",
"MUSHROOMTIMER",
"ATTRACTIONTIMER",
"HYUDOROTIMER",
"STEALINGTIMER",
"STOLENTIMER",
"SNEAKERTIMER",
"GROWSHRINKTIMER",
"SQUISHEDTIMER",
"GOLDSHROOMTIMER",
"STARTIMER",
"ROCKETSNEAKERTIMER",
"INVINCIBILITYTIMER",
"SPINOUTTIMER",
"LASERWISPTIMER",
"JUSTBUMPED",
"POWERITEMTIMER",
"COMEBACKTIMER",
"SADTIMER",
"MAGNET",
"BOO",
"MUSHROOM",
"MEGASHROOM",
"GOLDSHROOM",
"STAR",
"TRIPLEBANANA",
"FAKEITEM",
"BANANA",
"GREENSHELL",
"REDSHELL",
"LASERWISP",
"TRIPLEGREENSHELL",
"BOBOMB",
"BLUESHELL",
"JAWS",
"FIREFLOWER",
"TRIPLEREDSHELL",
"LIGHTNING",
"FEATHER",
"KITCHENSINK",
"ITEMTYPE",
"ITEMAMOUNT",
"ITEMHELD",
"BALLOON",
"COMEBACKPOINTS",

View File

@ -409,9 +409,9 @@ extern UINT16 spacetimetics;
extern UINT16 extralifetics;
// SRB2kart
extern INT32 bootime;
extern INT32 boostealtime;
extern INT32 mushroomtime;
extern INT32 hyudorotime;
extern INT32 stealtime;
extern INT32 sneakertime;
extern INT32 itemtime;
extern INT32 comebacktime;
extern INT32 bumptime;

View File

@ -206,9 +206,9 @@ UINT16 spacetimetics = 11*TICRATE + (TICRATE/2);
UINT16 extralifetics = 4*TICRATE;
// SRB2kart
INT32 bootime = 7*TICRATE;
INT32 boostealtime = TICRATE/2;
INT32 mushroomtime = TICRATE + (TICRATE/3);
INT32 hyudorotime = 7*TICRATE;
INT32 stealtime = TICRATE/2;
INT32 sneakertime = TICRATE + (TICRATE/3);
INT32 itemtime = 8*TICRATE;
INT32 comebacktime = 10*TICRATE;
INT32 bumptime = 6;
@ -1379,7 +1379,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
else
{
// forward with key or button // SRB2kart - we use an accel/brake instead of forward/backward.
if (InputDown(gc_accelerate, ssplayer) || player->kartstuff[k_mushroomtimer])
if (InputDown(gc_accelerate, ssplayer) || player->kartstuff[k_sneakertimer])
{
cmd->buttons |= BT_ACCELERATE;
forward = forwardmove[1]; // 50

View File

@ -499,23 +499,46 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[NOLIGHT], //"SPRG",
&lspr[NOLIGHT], //"BSPR",
&lspr[NOLIGHT], //"RNDM",
&lspr[NOLIGHT], //"SPRK",
&lspr[NOLIGHT], //"KFRE",
&lspr[NOLIGHT], //"DRIF",
&lspr[NOLIGHT], //"FAKE",
&lspr[NOLIGHT], //"DFAK",
&lspr[NOLIGHT], //"DSMO",
&lspr[NOLIGHT], //"FITM",
&lspr[NOLIGHT], //"BANA",
&lspr[NOLIGHT], //"DBAN",
&lspr[NOLIGHT], //"GSHE",
&lspr[NOLIGHT], //"GSTR",
&lspr[NOLIGHT], //"DGSH",
&lspr[NOLIGHT], //"RSHE",
&lspr[NOLIGHT], //"RSTR",
&lspr[NOLIGHT], //"DRSH",
&lspr[NOLIGHT], //"BOMB",
&lspr[NOLIGHT], //"SSMN",
&lspr[NOLIGHT], //"BLIG",
&lspr[NOLIGHT], //"LIGH"
&lspr[NOLIGHT], //"LIGH",
&lspr[NOLIGHT], //"SINK",
&lspr[NOLIGHT], //"SITR",
&lspr[NOLIGHT], //"KBLN",
&lspr[NOLIGHT], //"LAKI",
&lspr[NOLIGHT], //"POKE",
&lspr[NOLIGHT], //"AUDI",
&lspr[NOLIGHT], //"DECO",
&lspr[NOLIGHT], //"DOOD",
&lspr[NOLIGHT], //"SNES",
&lspr[NOLIGHT], //"GBAS",
&lspr[NOLIGHT], //"SPRS",
&lspr[NOLIGHT], //"BUZB",
&lspr[NOLIGHT], //"CHOM",
&lspr[NOLIGHT], //"SACO",
&lspr[NOLIGHT], //"CRAB",
&lspr[NOLIGHT], //"SHAD",
&lspr[NOLIGHT], //"BUMP",
&lspr[NOLIGHT], //"FLEN",
&lspr[NOLIGHT], //"CLAS",
&lspr[NOLIGHT], //"PSHW",
&lspr[NOLIGHT], //"ARRO",
&lspr[NOLIGHT], //"PBOM"
// Free slots
&lspr[NOLIGHT],

View File

@ -5276,8 +5276,8 @@ static void HWR_ProjectSprite(mobj_t *thing)
// New colormap stuff for skins Tails 06-07-2002
if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player!
{
if (thing->player && thing->player->kartstuff[k_startimer])
vis->colormap = R_GetTranslationColormap(TC_STARMAN, thing->color, GTC_CACHE);
if (thing->player && thing->player->kartstuff[k_invincibilitytimer])
vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE);
else
{
size_t skinnum = (skin_t*)thing->skin-skins;

View File

@ -55,10 +55,10 @@ char sprnames[NUMSPRITES + 1][5] =
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
//SRB2kart Sprites
"SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA",
"DBAN","GSHE","DGSH","RSHE","DRSH","BOMB","BLIG","LIGH","SINK","SITR",
"KBLN","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB",
"CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","PBOM"
"SPRG","BSPR","RNDM","KFRE","DRIF","DSMO","FITM","BANA","GSHE","RSHE",
"SSMN","BLIG","LIGH","SINK","SITR","KBLN","LAKI","POKE","AUDI","DECO",
"DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD","BUMP",
"FLEN","CLAS","PSHW","ARRO","PBOM"
};
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
@ -2565,10 +2565,10 @@ state_t states[NUMSTATES] =
{SPR_RNDM, 23, 3, {NULL}, 0, 0, S_RANDOMITEM1}, // S_RANDOMITEM24
{SPR_RNDM, 0, 1, {A_ItemPop}, 0, 0, S_NULL}, // S_DEADRANDOMITEM
{SPR_RPOP, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_RANDOMITEMPOP2}, // S_RANDOMITEMPOP1
{SPR_RPOP, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_RANDOMITEMPOP3}, // S_RANDOMITEMPOP2
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
{SPR_RPOP, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
{SPR_RNDM, FF_FULLBRIGHT|24, 5, {NULL}, 0, 0, S_RANDOMITEMPOP2}, // S_RANDOMITEMPOP1
{SPR_RNDM, FF_FULLBRIGHT|25, 5, {NULL}, 0, 0, S_RANDOMITEMPOP3}, // S_RANDOMITEMPOP2
{SPR_RNDM, FF_FULLBRIGHT|26, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
{SPR_RNDM, FF_FULLBRIGHT|27, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
{SPR_DRIF, 0, 2, {NULL}, 0, 0, S_DRIFTSPARK2}, // S_DRIFTSPARK1
{SPR_DRIF, 1, 2, {NULL}, 0, 0, S_DRIFTSPARK3}, // S_DRIFTSPARK2
@ -2616,19 +2616,11 @@ state_t states[NUMSTATES] =
{SPR_FITM, 21, 3, {NULL}, 0, 0, S_FAKEITEM23}, // S_FAKEITEM22 // *****
{SPR_FITM, 22, 3, {NULL}, 0, 0, S_FAKEITEM24}, // S_FAKEITEM23 // *****
{SPR_FITM, 23, 3, {NULL}, 0, 0, S_FAKEITEM1}, // S_FAKEITEM24 // *****
{SPR_DFAK, 0, 175, {NULL}, 0, 0, S_FAKEITEM1}, // S_DEADFAKEITEM
{SPR_FITM, 24, 175, {NULL}, 0, 0, S_FAKEITEM1}, // S_DEADFAKEITEM
{SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANAITEM
{SPR_DBAN, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADBANANA
{SPR_BANA, 1, 175, {NULL}, 0, 0, S_NULL}, // S_DEADBANANA
{SPR_GSHE, 0, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD2}, // S_TRIPLEGREENSHIELD1
{SPR_GSHE, 1, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD3}, // S_TRIPLEGREENSHIELD2
{SPR_GSHE, 2, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD4}, // S_TRIPLEGREENSHIELD3
{SPR_GSHE, 3, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD5}, // S_TRIPLEGREENSHIELD4
{SPR_GSHE, 4, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD6}, // S_TRIPLEGREENSHIELD5
{SPR_GSHE, 5, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD7}, // S_TRIPLEGREENSHIELD6
{SPR_GSHE, 6, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD8}, // S_TRIPLEGREENSHIELD7
{SPR_GSHE, 7, 1, {NULL}, 0, 0, S_TRIPLEGREENSHIELD1}, // S_TRIPLEGREENSHIELD8
{SPR_GSHE, 0, 1, {NULL}, 0, 0, S_GREENSHIELD2}, // S_GREENSHIELD1
{SPR_GSHE, 1, 1, {NULL}, 0, 0, S_GREENSHIELD3}, // S_GREENSHIELD2
{SPR_GSHE, 2, 1, {NULL}, 0, 0, S_GREENSHIELD4}, // S_GREENSHIELD3
@ -2645,16 +2637,8 @@ state_t states[NUMSTATES] =
{SPR_GSHE, 5, 1, {NULL}, 0, 0, S_GREENITEM7}, // S_GREENITEM6
{SPR_GSHE, 6, 1, {NULL}, 0, 0, S_GREENITEM8}, // S_GREENITEM7
{SPR_GSHE, 7, 1, {NULL}, 0, 0, S_GREENITEM1}, // S_GREENITEM8
{SPR_DGSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADGREEN
{SPR_GSHE, 8, 175, {NULL}, 0, 0, S_NULL}, // S_DEADGREEN
{SPR_RSHE, 0, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD2}, // S_TRIPLEREDSHIELD1
{SPR_RSHE, 1, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD3}, // S_TRIPLEREDSHIELD2
{SPR_RSHE, 2, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD4}, // S_TRIPLEREDSHIELD3
{SPR_RSHE, 3, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD5}, // S_TRIPLEREDSHIELD4
{SPR_RSHE, 4, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD6}, // S_TRIPLEREDSHIELD5
{SPR_RSHE, 5, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD7}, // S_TRIPLEREDSHIELD6
{SPR_RSHE, 6, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD8}, // S_TRIPLEREDSHIELD7
{SPR_RSHE, 7, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD1}, // S_TRIPLEREDSHIELD8
{SPR_RSHE, 0, 1, {NULL}, 0, 0, S_REDSHIELD2}, // S_REDSHIELD1
{SPR_RSHE, 1, 1, {NULL}, 0, 0, S_REDSHIELD3}, // S_REDSHIELD2
{SPR_RSHE, 2, 1, {NULL}, 0, 0, S_REDSHIELD4}, // S_REDSHIELD3
@ -2663,15 +2647,15 @@ state_t states[NUMSTATES] =
{SPR_RSHE, 5, 1, {NULL}, 0, 0, S_REDSHIELD7}, // S_REDSHIELD6
{SPR_RSHE, 6, 1, {NULL}, 0, 0, S_REDSHIELD8}, // S_REDSHIELD7
{SPR_RSHE, 7, 1, {NULL}, 0, 0, S_REDSHIELD1}, // S_REDSHIELD8
{SPR_RSHE, 0, 1, {A_RedShellChase}, 0, 0, S_REDITEM2}, // S_REDITEM1
{SPR_RSHE, 1, 1, {A_RedShellChase}, 0, 0, S_REDITEM3}, // S_REDITEM2
{SPR_RSHE, 2, 1, {A_RedShellChase}, 0, 0, S_REDITEM4}, // S_REDITEM3
{SPR_RSHE, 3, 1, {A_RedShellChase}, 0, 0, S_REDITEM5}, // S_REDITEM4
{SPR_RSHE, 4, 1, {A_RedShellChase}, 0, 0, S_REDITEM6}, // S_REDITEM5
{SPR_RSHE, 5, 1, {A_RedShellChase}, 0, 0, S_REDITEM7}, // S_REDITEM6
{SPR_RSHE, 6, 1, {A_RedShellChase}, 0, 0, S_REDITEM8}, // S_REDITEM7
{SPR_RSHE, 7, 1, {A_RedShellChase}, 0, 0, S_REDITEM1}, // S_REDITEM8
{SPR_DRSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADRED
{SPR_RSHE, 0, 1, {A_JawzChase}, 0, 0, S_REDITEM2}, // S_REDITEM1
{SPR_RSHE, 1, 1, {A_JawzChase}, 0, 0, S_REDITEM3}, // S_REDITEM2
{SPR_RSHE, 2, 1, {A_JawzChase}, 0, 0, S_REDITEM4}, // S_REDITEM3
{SPR_RSHE, 3, 1, {A_JawzChase}, 0, 0, S_REDITEM5}, // S_REDITEM4
{SPR_RSHE, 4, 1, {A_JawzChase}, 0, 0, S_REDITEM6}, // S_REDITEM5
{SPR_RSHE, 5, 1, {A_JawzChase}, 0, 0, S_REDITEM7}, // S_REDITEM6
{SPR_RSHE, 6, 1, {A_JawzChase}, 0, 0, S_REDITEM8}, // S_REDITEM7
{SPR_RSHE, 7, 1, {A_JawzChase}, 0, 0, S_REDITEM1}, // S_REDITEM8
{SPR_RSHE, 8, 175, {NULL}, 0, 0, S_NULL}, // S_DEADRED
{SPR_FBLL, 13, 3, {NULL}, 0, 0, S_FIRETRAIL2}, // S_FIRETRAIL1
{SPR_FBLL, 14, 3, {NULL}, 0, 0, S_FIRETRAIL3}, // S_FIRETRAIL2
@ -2683,16 +2667,34 @@ state_t states[NUMSTATES] =
{SPR_FBLL, 20, 3, {NULL}, 0, 0, S_FIRETRAIL9}, // S_FIRETRAIL8
{SPR_FBLL, 21, 3, {NULL}, 0, 0, S_NULL}, // S_FIRETRAIL9
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBSHIELD}, // S_BOMBSHIELD
{SPR_BOMB, 0, 1, {A_GrenadeRing}, 0, 0, S_BOMBITEM}, // S_BOMBITEM
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBAIR}, // S_BOMBAIR
{SPR_BOMB, 0, 1, {A_BobombExplode}, MT_BOMBEXPLOSION, 0, S_NULL}, // S_BOMBEXPLODE
{SPR_SSMN, 4, 1, {NULL}, 0, 0, S_BOMBSHIELD2}, // S_BOMBSHIELD1
{SPR_SSMN, 5, 1, {NULL}, 0, 0, S_BOMBSHIELD1}, // S_BOMBSHIELD2
{SPR_SSMN, 4, 1, {NULL}, 0, 0, S_BOMBAIR2}, // S_BOMBAIR1
{SPR_SSMN, 5, 1, {NULL}, 0, 0, S_BOMBAIR1}, // S_BOMBAIR2
{SPR_SSMN, 6, 3, {NULL}, 0, 0, S_BOMBDEPLOY2}, // S_BOMBDEPLOY1
{SPR_SSMN, 7, 5, {NULL}, 0, 0, S_BOMBDEPLOY3}, // S_BOMBDEPLOY2
{SPR_SSMN, 8, 7, {NULL}, 0, 0, S_BOMBDEPLOY4}, // S_BOMBDEPLOY3
{SPR_SSMN, 9, 1, {NULL}, 0, 0, S_BOMBDEPLOY5}, // S_BOMBDEPLOY4
{SPR_SSMN, 10, 1, {NULL}, 0, 0, S_BOMBDEPLOY6}, // S_BOMBDEPLOY5
{SPR_SSMN, 9, 1, {NULL}, 0, 0, S_BOMBDEPLOY7}, // S_BOMBDEPLOY6
{SPR_SSMN, 10, 3, {NULL}, 0, 0, S_BOMBDEPLOY8}, // S_BOMBDEPLOY7
{SPR_SSMN, 11, 1, {NULL}, 0, 0, S_BOMBDEPLOY9}, // S_BOMBDEPLOY8
{SPR_SSMN, 10, 1, {NULL}, 0, 0, S_BOMBDEPLOY10}, // S_BOMBDEPLOY9
{SPR_SSMN, 11, 3, {NULL}, 0, 0, S_BOMBDEPLOY11}, // S_BOMBDEPLOY10
{SPR_SSMN, 12, 3, {NULL}, 0, 0, S_BOMBDEPLOY12}, // S_BOMBDEPLOY11
{SPR_SSMN, 13, 3, {NULL}, 0, 0, S_BOMBDEPLOY13}, // S_BOMBDEPLOY12
{SPR_SSMN, 14, 3, {NULL}, 0, 0, S_BOMBITEM1}, // S_BOMBDEPLOY13
{SPR_SSMN, 0, 30, {A_GrenadeRing}, 0, 0, S_BOMBITEM2}, // S_BOMBITEM1
{SPR_SSMN, 3, 3, {A_GrenadeRing}, 0, 0, S_BOMBITEM3}, // S_BOMBITEM2
{SPR_SSMN, 2, 3, {A_GrenadeRing}, 0, 0, S_BOMBITEM4}, // S_BOMBITEM3
{SPR_SSMN, 1, 3, {A_GrenadeRing}, 0, 0, S_BOMBITEM1}, // S_BOMBITEM4
{SPR_SSMN, 3, 1, {A_MineExplode}, MT_BOMBEXPLOSION, 0, S_NULL}, // S_BOMBEXPLODE
{SPR_BLIG, 0, 2, {NULL}, 0, 0, S_BLUELIGHTNING2}, // S_BLUELIGHTNING1
{SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2
{SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3
{SPR_BLIG, 3, 2, {NULL}, 0, 0, S_NULL}, // S_BLUELIGHTNING4
{SPR_BOMB, 0, 1, {A_BobombExplode}, MT_BLUEEXPLOSION, 0, S_NULL}, // S_BLUEEXPLODE
{SPR_SSMN, 3, 1, {A_MineExplode}, MT_BLUEEXPLOSION, 0, S_NULL}, // S_BLUEEXPLODE
{SPR_LIGH, 0, 2, {NULL}, 0, 0, S_LIGHTNING2}, // S_LIGHTNING1
{SPR_LIGH, 1, 2, {NULL}, 0, 0, S_LIGHTNING3}, // S_LIGHTNING2
@ -2863,20 +2865,17 @@ state_t states[NUMSTATES] =
// Above player arrow
{SPR_ARRO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW
{SPR_ARRO, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_MUSHROOM
{SPR_ARRO, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_GREENSHELL
{SPR_ARRO, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_SNEAKER
{SPR_ARRO, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BANANA
{SPR_ARRO, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_FAKEITEM
{SPR_ARRO, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BOO
{SPR_ARRO, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_FEATHER
{SPR_ARRO, FF_FULLBRIGHT|7, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_REDSHELL
{SPR_ARRO, FF_FULLBRIGHT|8, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BOBOMB
{SPR_ARRO, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_FIREFLOWER
{SPR_ARRO, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_TRIPLEGREENSHELL
{SPR_ARRO, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_TRIPLEBANANA
{SPR_ARRO, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_TRIPLEREDSHELL
{SPR_ARRO, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_STAR
{SPR_ARRO, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_MEGASHROOM
{SPR_ARRO, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_HYUDORO
{SPR_ARRO, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_POGOSPRING
{SPR_ARRO, FF_FULLBRIGHT|7, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_JAWZ
{SPR_ARRO, FF_FULLBRIGHT|8, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_MINE
{SPR_ARRO, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BALLHOG
{SPR_ARRO, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_ORBINAUT
{SPR_ARRO, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_INVINCIBILITY
{SPR_ARRO, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_SIZEUP
{SPR_ARRO, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_KITCHENSINK
{SPR_ARRO, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_EMPTY
{SPR_ARRO, FF_FULLBRIGHT|FF_ANIMATE|1, -1, {NULL}, 5, 3, S_NULL}, // S_PLAYERARROW_ROULETTE
@ -14302,7 +14301,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_MUSHROOMTRAIL
{ // MT_SNEAKERTRAIL
-1, // doomednum
S_KARTFIRE1, // spawnstate
1, // spawnhealth
@ -14437,87 +14436,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_TRIPLEBANANASHIELD1
-1, // doomednum
S_BANANAITEM, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADBANANA, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_banana, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEBANANASHIELD2
-1, // doomednum
S_BANANAITEM, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADBANANA, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_banana, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEBANANASHIELD3
-1, // doomednum
S_BANANAITEM, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADBANANA, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_banana, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_BANANASHIELD
-1, // doomednum
S_BANANAITEM, // spawnstate
@ -14534,7 +14452,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADBANANA, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_banana, // speed
0, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
@ -14572,87 +14490,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_TRIPLEGREENSHIELD1
-1, // doomednum
S_TRIPLEGREENSHIELD1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADGREEN, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEGREENSHIELD2
-1, // doomednum
S_TRIPLEGREENSHIELD4, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADGREEN, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEGREENSHIELD3
-1, // doomednum
S_TRIPLEGREENSHIELD7, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADGREEN, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_GREENSHIELD
-1, // doomednum
S_GREENSHIELD1, // spawnstate
@ -14669,7 +14506,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADGREEN, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_greenshell, // speed
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
@ -14734,87 +14571,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_TRIPLEREDSHIELD1
-1, // doomednum
S_TRIPLEREDSHIELD2, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADRED, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEREDSHIELD2
-1, // doomednum
S_TRIPLEREDSHIELD5, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADRED, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_TRIPLEREDSHIELD3
-1, // doomednum
S_TRIPLEREDSHIELD8, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_DEADRED, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_REDSHIELD
-1, // doomednum
S_REDSHIELD1, // spawnstate
@ -14831,7 +14587,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADRED, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_redshell, // speed
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
@ -14898,7 +14654,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_BOMBSHIELD
-1, // doomednum
S_BOMBSHIELD, // spawnstate
S_BOMBSHIELD1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -14912,7 +14668,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_BOMBEXPLODE, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
k_bobomb, // speed
10*FRACUNIT, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
@ -14925,7 +14681,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_BOMBITEM
-1, // doomednum
S_BOMBAIR, // spawnstate
S_BOMBAIR1, // spawnstate
105, // spawnhealth
S_NULL, // seestate
sfx_tossed, // seesound

View File

@ -163,9 +163,9 @@ void A_RandomStateRange();
void A_DualAction();
void A_RemoteAction();
void A_ToggleFlameJet();
void A_ItemPop(); // SRB2kart
void A_RedShellChase(); // SRB2kart
void A_BobombExplode(); // SRB2kart
void A_ItemPop(); // SRB2kart
void A_JawzChase(); // SRB2kart
void A_MineExplode(); // SRB2kart
void A_OrbitNights();
void A_GhostMe();
void A_SetObjectState();
@ -579,23 +579,18 @@ typedef enum sprite
SPR_BSPR, // Blue Diagonal Spring
SPR_RNDM, // Random Item Box
SPR_RPOP, // Random Item Box Pop
SPR_KFRE, // Mushroom fire trail
SPR_KFRE, // Sneaker fire trail
SPR_DRIF, // Drift Sparks
SPR_DSMO, // Drift Smoke
// Kart Items
SPR_FITM, // Fake Item box
SPR_DFAK, // Dead Fake Item
SPR_FITM, // Fake Item
SPR_BANA, // Banana Peel
SPR_DBAN, // Dead Banana Peel
SPR_GSHE, // Green Shell
SPR_DGSH, // Dead Green Shell
SPR_RSHE, // Red Shell
SPR_DRSH, // Dead Red Shell
SPR_BOMB, // Bob-omb
SPR_BLIG, // Blue Lightning
SPR_LIGH, // Lightning
SPR_GSHE, // Orbinaut
SPR_RSHE, // Jawz
SPR_SSMN, // SS Mine
SPR_BLIG, // Self-Propelled Bomb
SPR_LIGH, // Size Up/Down beams (Metallic Maddness)
SPR_SINK, // Kitchen Sink
SPR_SITR, // Kitchen Sink Trail
SPR_KBLN, // Battle Mode Balloon
@ -3085,7 +3080,7 @@ typedef enum state
// Magnet Burst
// Mushroom Fire Trail
// Sneaker Fire Trail
S_KARTFIRE1,
S_KARTFIRE2,
S_KARTFIRE3,
@ -3127,15 +3122,7 @@ typedef enum state
S_BANANAITEM,
S_DEADBANANA,
//{ Green Shell
S_TRIPLEGREENSHIELD1,
S_TRIPLEGREENSHIELD2,
S_TRIPLEGREENSHIELD3,
S_TRIPLEGREENSHIELD4,
S_TRIPLEGREENSHIELD5,
S_TRIPLEGREENSHIELD6,
S_TRIPLEGREENSHIELD7,
S_TRIPLEGREENSHIELD8,
//{ Orbinaut
S_GREENSHIELD1,
S_GREENSHIELD2,
S_GREENSHIELD3,
@ -3154,15 +3141,7 @@ typedef enum state
S_GREENITEM8,
S_DEADGREEN,
//}
//{ Red Shell
S_TRIPLEREDSHIELD1,
S_TRIPLEREDSHIELD2,
S_TRIPLEREDSHIELD3,
S_TRIPLEREDSHIELD4,
S_TRIPLEREDSHIELD5,
S_TRIPLEREDSHIELD6,
S_TRIPLEREDSHIELD7,
S_TRIPLEREDSHIELD8,
//{ Jawz
S_REDSHIELD1,
S_REDSHIELD2,
S_REDSHIELD3,
@ -3192,20 +3171,38 @@ typedef enum state
S_FIRETRAIL8,
S_FIRETRAIL9,
// Bob-omb
S_BOMBSHIELD,
S_BOMBITEM,
S_BOMBAIR,
// Special Stage Mine
S_BOMBSHIELD1,
S_BOMBSHIELD2,
S_BOMBAIR1,
S_BOMBAIR2,
S_BOMBDEPLOY1,
S_BOMBDEPLOY2,
S_BOMBDEPLOY3,
S_BOMBDEPLOY4,
S_BOMBDEPLOY5,
S_BOMBDEPLOY6,
S_BOMBDEPLOY7,
S_BOMBDEPLOY8,
S_BOMBDEPLOY9,
S_BOMBDEPLOY10,
S_BOMBDEPLOY11,
S_BOMBDEPLOY12,
S_BOMBDEPLOY13,
S_BOMBITEM1,
S_BOMBITEM2,
S_BOMBITEM3,
S_BOMBITEM4,
S_BOMBEXPLODE,
// Blue Shell - Blue Lightning for now...
// Self-Propelled Bomb - just an explosion for now...
S_BLUELIGHTNING1,
S_BLUELIGHTNING2,
S_BLUELIGHTNING3,
S_BLUELIGHTNING4,
S_BLUEEXPLODE,
// Lightning
// Size-Down
S_LIGHTNING1,
S_LIGHTNING2,
S_LIGHTNING3,
@ -3384,20 +3381,17 @@ typedef enum state
S_FIREDITEM4,
S_PLAYERARROW, // Above player arrow
S_PLAYERARROW_MUSHROOM,
S_PLAYERARROW_GREENSHELL,
S_PLAYERARROW_SNEAKER,
S_PLAYERARROW_BANANA,
S_PLAYERARROW_FAKEITEM,
S_PLAYERARROW_BOO,
S_PLAYERARROW_FEATHER,
S_PLAYERARROW_REDSHELL,
S_PLAYERARROW_BOBOMB,
S_PLAYERARROW_FIREFLOWER,
S_PLAYERARROW_TRIPLEGREENSHELL,
S_PLAYERARROW_TRIPLEBANANA,
S_PLAYERARROW_TRIPLEREDSHELL,
S_PLAYERARROW_STAR,
S_PLAYERARROW_MEGASHROOM,
S_PLAYERARROW_HYUDORO,
S_PLAYERARROW_POGOSPRING,
S_PLAYERARROW_JAWZ,
S_PLAYERARROW_MINE,
S_PLAYERARROW_BALLHOG,
S_PLAYERARROW_ORBINAUT,
S_PLAYERARROW_INVINCIBILITY,
S_PLAYERARROW_SIZEUP,
S_PLAYERARROW_KITCHENSINK,
S_PLAYERARROW_EMPTY,
S_PLAYERARROW_ROULETTE,
@ -3940,39 +3934,30 @@ typedef enum mobj_type
MT_FLINGRANDOMITEM,
MT_RANDOMITEMPOP,
MT_MUSHROOMTRAIL,
MT_SNEAKERTRAIL,
MT_DRIFT,
MT_DRIFTSMOKE,
MT_FAKESHIELD,
MT_FAKEITEM,
MT_TRIPLEBANANASHIELD1, // Banana Stuff
MT_TRIPLEBANANASHIELD2,
MT_TRIPLEBANANASHIELD3,
MT_BANANASHIELD,
MT_BANANASHIELD, // Banana Stuff
MT_BANANAITEM,
MT_TRIPLEGREENSHIELD1, // Green shell stuff
MT_TRIPLEGREENSHIELD2,
MT_TRIPLEGREENSHIELD3,
MT_GREENSHIELD,
MT_GREENSHIELD, // Orbinaut stuff
MT_GREENITEM,
MT_FIRETRAIL,
MT_TRIPLEREDSHIELD1, // Red shell stuff
MT_TRIPLEREDSHIELD2,
MT_TRIPLEREDSHIELD3,
MT_REDSHIELD,
MT_REDSHIELD, // Jawz stuff
MT_REDITEM,
MT_REDITEMDUD,
MT_BOMBSHIELD, // Bob-omb stuff
MT_BOMBSHIELD, // Mine stuff
MT_BOMBITEM,
MT_BOMBEXPLOSION,
MT_BOMBEXPLOSIONSOUND,
MT_BLUELIGHTNING, // Lightning stuff
MT_BLUELIGHTNING, // Size Down stuff
MT_BLUEEXPLOSION,
MT_LIGHTNING,

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@
UINT8 colortranslations[MAXSKINCOLORS][16];
extern const char *KartColor_Names[MAXSKINCOLORS];
void K_StarmanColormap(UINT8 *dest_colormap, UINT8 skincolor);
void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor);
void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color);
UINT8 K_GetKartColorByName(const char *name);
@ -27,7 +27,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source);
void K_StealBalloon(player_t *player, player_t *victim, boolean force);
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
void K_SpawnDriftTrail(player_t *player);
void K_DoMushroom(player_t *player, boolean doPFlag, boolean startboost);
void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost);
void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);

View File

@ -2090,7 +2090,7 @@ static int lib_kSpawnDriftTrail(lua_State *L)
return 0;
}
static int lib_kDoMushroom(lua_State *L)
static int lib_kDoSneaker(lua_State *L)
{
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
boolean doPFlag = luaL_checkboolean(L, 2);
@ -2098,7 +2098,7 @@ static int lib_kDoMushroom(lua_State *L)
NOHUD
if (!player)
return LUA_ErrInvalid(L, "player_t");
K_DoMushroom(player, doPFlag, startboost);
K_DoSneaker(player, doPFlag, startboost);
return 0;
}
@ -2336,7 +2336,7 @@ static luaL_Reg lib[] = {
{"K_StealBalloon",lib_kStealBalloon},
{"K_SpawnKartExplosion",lib_kSpawnKartExplosion},
{"K_SpawnDriftTrail",lib_kSpawnDriftTrail},
{"K_DoMushroom",lib_kDoMushroom},
{"K_DoSneaker",lib_kDoSneaker},
{"K_DoBouncePad",lib_kDoBouncePad},
{"K_MomentumToFacing",lib_kMomentumToFacing},
{"K_GetKartSpeed",lib_kGetKartSpeed},

View File

@ -1497,25 +1497,25 @@ static menuitem_t OP_MonitorToggleMenu[] =
{
// Printing handled by drawing function
// Instead of using this for dumb monitors, lets use the new item bools we have :V
{IT_STRING | IT_CVAR, NULL, "Mushrooms", &cv_mushroom, 10},
{IT_STRING | IT_CVAR, NULL, "Triple Mushrooms", &cv_triplemushroom, 18},
{IT_STRING | IT_CVAR, NULL, "Mega Mushrooms", &cv_megashroom, 26},
{IT_STRING | IT_CVAR, NULL, "Golden Mushrooms", &cv_goldshroom, 34},
{IT_STRING | IT_CVAR, NULL, "Stars", &cv_star, 42},
{IT_STRING | IT_CVAR, NULL, "Bananas", &cv_banana, 50},
{IT_STRING | IT_CVAR, NULL, "Triple Bananas", &cv_triplebanana, 58},
{IT_STRING | IT_CVAR, NULL, "Fake Items", &cv_fakeitem, 66},
{IT_STRING | IT_CVAR, NULL, "Green Shells", &cv_greenshell, 74},
{IT_STRING | IT_CVAR, NULL, "Red Shells", &cv_redshell, 82},
{IT_STRING | IT_CVAR, NULL, "Triple Green Shells", &cv_triplegreenshell, 90},
{IT_STRING | IT_CVAR, NULL, "Triple Red Shells", &cv_tripleredshell, 98},
{IT_STRING | IT_CVAR, NULL, "Bob-ombs", &cv_bobomb, 106},
{IT_STRING | IT_CVAR, NULL, "Fire Flowers", &cv_fireflower, 114},
{IT_STRING | IT_CVAR, NULL, "Magnets", &cv_magnet, 122},
{IT_STRING | IT_CVAR, NULL, "Boos", &cv_boo, 130},
{IT_STRING | IT_CVAR, NULL, "Lightning", &cv_lightning, 138},
{IT_STRING | IT_CVAR, NULL, "Blue Lightning", &cv_blueshell, 146},
{IT_STRING | IT_CVAR, NULL, "Feathers", &cv_feather, 154},
{IT_STRING | IT_CVAR, NULL, "Sneakers", &cv_sneaker, 10},
{IT_STRING | IT_CVAR, NULL, "Triple Sneakers", &cv_triplesneaker, 18},
{IT_STRING | IT_CVAR, NULL, "Rocket Sneakers", &cv_rocketsneaker, 26},
{IT_STRING | IT_CVAR, NULL, "Invinciblity", &cv_invincibility, 34},
{IT_STRING | IT_CVAR, NULL, "Bananas", &cv_banana, 42},
{IT_STRING | IT_CVAR, NULL, "Triple Bananas", &cv_triplebanana, 50},
{IT_STRING | IT_CVAR, NULL, "Fake Items", &cv_fakeitem, 58},
{IT_STRING | IT_CVAR, NULL, "Orbinauts", &cv_orbinaut, 66},
{IT_STRING | IT_CVAR, NULL, "Triple Orbinauts", &cv_tripleorbinaut, 74},
{IT_STRING | IT_CVAR, NULL, "Jawz", &cv_jawz, 82},
{IT_STRING | IT_CVAR, NULL, "Dual Jawz", &cv_dualjawz, 90},
{IT_STRING | IT_CVAR, NULL, "Mines", &cv_mine, 98},
{IT_STRING | IT_CVAR, NULL, "Ballhogs", &cv_ballhog, 106},
{IT_STRING | IT_CVAR, NULL, "Self-Propelled Bombs",&cv_selfpropelledbomb,114},
{IT_STRING | IT_CVAR, NULL, "Size Up", &cv_sizeup, 122},
{IT_STRING | IT_CVAR, NULL, "Size Down", &cv_sizedown, 130},
{IT_STRING | IT_CVAR, NULL, "Lightning Shields", &cv_lightningshield, 138},
{IT_STRING | IT_CVAR, NULL, "Hyudoros", &cv_hyudoro, 146},
{IT_STRING | IT_CVAR, NULL, "Pogo Springs", &cv_pogospring, 154},
};
// ==========================================================================

View File

@ -187,9 +187,9 @@ void A_RandomStateRange(mobj_t *actor);
void A_DualAction(mobj_t *actor);
void A_RemoteAction(mobj_t *actor);
void A_ToggleFlameJet(mobj_t *actor);
void A_ItemPop(mobj_t *actor); // SRB2kart
void A_RedShellChase(mobj_t *actor); // SRB2kart
void A_BobombExplode(mobj_t *actor); // SRB2kart
void A_ItemPop(mobj_t *actor); // SRB2kart
void A_JawzChase(mobj_t *actor); // SRB2kart
void A_MineExplode(mobj_t *actor); // SRB2kart
void A_OrbitNights(mobj_t *actor);
void A_GhostMe(mobj_t *actor);
void A_SetObjectState(mobj_t *actor);
@ -741,7 +741,7 @@ static boolean P_LookForShield(mobj_t *actor)
continue;
// SRB2kart - magnet item
if (player->kartstuff[k_magnettimer] //(player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT
if (player->kartstuff[k_attractiontimer] //(player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT
&& (P_AproxDistance(P_AproxDistance(actor->x-player->mo->x, actor->y-player->mo->y), actor->z-player->mo->z) < FixedMul(RING_DIST/4, player->mo->scale)))
{
P_SetTarget(&actor->tracer, player->mo);
@ -2605,8 +2605,9 @@ void A_MonitorPop(mobj_t *actor)
case MT_QUESTIONBOX: // Random!
{
mobjtype_t spawnchance[256];
INT32 numchoices = 0, i = 0;
INT32 numchoices = 0/*, i = 0*/;
/*
#define QUESTIONBOXCHANCES(type, cvar) \
for (i = cvar.value; i; --i) spawnchance[numchoices++] = type
@ -2624,6 +2625,7 @@ for (i = cvar.value; i; --i) spawnchance[numchoices++] = type
QUESTIONBOXCHANCES(MT_RECYCLETV, cv_recycler);
#undef QUESTIONBOXCHANCES
*/
if (numchoices == 0)
{
@ -3613,7 +3615,7 @@ void A_AttractChase(mobj_t *actor)
// Turn flingrings back into regular rings if attracted.
if (actor->tracer && actor->tracer->player
&& actor->tracer->player->kartstuff[k_magnettimer] //&& (actor->tracer->player->powers[pw_shield] & SH_NOSTACK) != SH_ATTRACT
&& actor->tracer->player->kartstuff[k_attractiontimer] //&& (actor->tracer->player->powers[pw_shield] & SH_NOSTACK) != SH_ATTRACT
&& actor->info->reactiontime && actor->type != (mobjtype_t)actor->info->reactiontime)
{
mobj_t *newring;
@ -3830,7 +3832,7 @@ void A_ThrownRing(mobj_t *actor)
P_SetTarget(&actor->tracer, NULL);
}
if (actor->tracer && (actor->tracer->health)) // SRB2kart - red shells always follow
if (actor->tracer && (actor->tracer->health)) // SRB2kart - jawz always follow
//&& (actor->tracer->player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT)// Already found someone to follow.
{
const INT32 temp = actor->threshold;
@ -3882,7 +3884,7 @@ void A_ThrownRing(mobj_t *actor)
&& actor->target->player->ctfteam == player->ctfteam)
continue;
if (actor->target->player->kartstuff[k_position] < player->kartstuff[k_position]) // SRB2kart - Red Shells only go after people ahead of you
if (actor->target->player->kartstuff[k_position] < player->kartstuff[k_position]) // SRB2kart - Jawz only go after people ahead of you
continue;
}
@ -3925,8 +3927,11 @@ static inline boolean PIT_GrenadeRing(mobj_t *thing)
if (thing == grenade->target && !(grenade->threshold == 0)) // Don't blow up at your owner.
return true;
if (thing->player && (thing->player->kartstuff[k_bootimer]
|| (thing->player->kartstuff[k_balloon] <= 0 && thing->player->kartstuff[k_comebacktimer])))
if (thing->player && thing->player->kartstuff[k_hyudorotimer])
return true;
if ((gametype != GT_RACE) && thing->player
&& thing->player->kartstuff[k_balloon] <= 0 && thing->player->kartstuff[k_comebacktimer])
return true;
if ((gametype == GT_CTF || gametype == GT_TEAMMATCH)
@ -8090,7 +8095,7 @@ void A_ToggleFlameJet(mobj_t* actor)
}
}
//{ SRB2kart - A_ItemPop, A_RedShellChase and A_BobombExplode
//{ SRB2kart - A_ItemPop, A_JawzChase and A_MineExplode
void A_ItemPop(mobj_t *actor)
{
mobj_t *remains;
@ -8149,14 +8154,14 @@ void A_ItemPop(mobj_t *actor)
P_RemoveMobj(actor);
}
void A_RedShellChase(mobj_t *actor)
void A_JawzChase(mobj_t *actor)
{
INT32 c = 0;
INT32 stop;
player_t *player;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_RedShellChase", actor))
if (LUA_CallAction("A_JawzChase", actor))
return;
#endif
@ -8216,7 +8221,7 @@ void A_RedShellChase(mobj_t *actor)
if (gametype == GT_RACE) // Only in races, in match and CTF you should go after any nearby players
{
// USER TARGET
if (actor->target->player->kartstuff[k_position] != (player->kartstuff[k_position] + 1)) // Red Shells only go after the person directly ahead of you -Sryder
if (actor->target->player->kartstuff[k_position] != (player->kartstuff[k_position] + 1)) // Jawz only go after the person directly ahead of you -Sryder
continue;
}
@ -8253,7 +8258,7 @@ void A_RedShellChase(mobj_t *actor)
}
void A_BobombExplode(mobj_t *actor)
void A_MineExplode(mobj_t *actor)
{
mobj_t *mo2;
thinker_t *th;
@ -8261,7 +8266,7 @@ void A_BobombExplode(mobj_t *actor)
INT32 locvar1 = var1;
mobjtype_t type;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_BobombExplode", actor))
if (LUA_CallAction("A_MineExplode", actor))
return;
#endif

View File

@ -237,7 +237,7 @@ result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crus
{
case MT_GOOP: // Egg Slimer's goop objects
case MT_SPINFIRE: // Elemental Shield flame balls
case MT_MUSHROOMTRAIL:
case MT_SNEAKERTRAIL:
case MT_SPIKE: // Floor Spike
// Is the object hang from the ceiling?
// In that case, swap the planes used.

View File

@ -161,23 +161,16 @@ boolean P_CanPickupItem(player_t *player, boolean weapon)
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // No balloons in Match
return false;
if (player->kartstuff[k_magnettimer]) // You should probably collect stuff when you're attracting it :V
if (player->kartstuff[k_attractiontimer]) // You should probably collect stuff when you're attracting it :V
return true;
if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer]
|| player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off
if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer]
|| player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_rocketsneakertimer]) // Item-specific timer going off
return false;
if (player->kartstuff[k_itemroulette]
|| player->kartstuff[k_greenshell] || player->kartstuff[k_triplegreenshell]
|| player->kartstuff[k_redshell] || player->kartstuff[k_tripleredshell]
|| player->kartstuff[k_banana] || player->kartstuff[k_triplebanana]
|| player->kartstuff[k_fakeitem] & 2 || player->kartstuff[k_magnet]
|| player->kartstuff[k_bobomb] || player->kartstuff[k_blueshell]
|| player->kartstuff[k_mushroom] || player->kartstuff[k_fireflower]
|| player->kartstuff[k_star] || player->kartstuff[k_goldshroom]
|| player->kartstuff[k_lightning] || player->kartstuff[k_megashroom]
|| player->kartstuff[k_boo] || player->kartstuff[k_feather] & 1) // Item slot already taken up
|| player->kartstuff[k_itemamount]
|| player->kartstuff[k_itemheld]) // Item slot already taken up
return false;
return true;
@ -1635,7 +1628,7 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
str = M_GetText("%s%s's tagging hand %s %s.\n");
break;
case MT_SPINFIRE:
case MT_MUSHROOMTRAIL:
case MT_SNEAKERTRAIL:
str = M_GetText("%s%s's elemental fire trail %s %s.\n");
break;
case MT_THROWNBOUNCE:
@ -2038,36 +2031,22 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
// I wish I knew a better way to do this
if (target->target && target->target->player && target->target->player->mo)
{
if (target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_greenshell] & 1)
target->target->player->kartstuff[k_greenshell] &= ~1;
else if (target->type == MT_REDSHIELD && target->target->player->kartstuff[k_redshell] & 1)
target->target->player->kartstuff[k_redshell] &= ~1;
else if (target->type == MT_BANANASHIELD && target->target->player->kartstuff[k_banana] & 1)
target->target->player->kartstuff[k_banana] &= ~1;
else if (target->type == MT_FAKESHIELD && target->target->player->kartstuff[k_fakeitem] & 1)
target->target->player->kartstuff[k_fakeitem] &= ~1;
else if (target->type == MT_BOMBSHIELD && target->target->player->kartstuff[k_bobomb] & 1)
target->target->player->kartstuff[k_bobomb] &= ~1;
else if (target->type == MT_TRIPLEGREENSHIELD1 && target->target->player->kartstuff[k_triplegreenshell] & 1)
target->target->player->kartstuff[k_triplegreenshell] &= ~1;
else if (target->type == MT_TRIPLEGREENSHIELD2 && target->target->player->kartstuff[k_triplegreenshell] & 2)
target->target->player->kartstuff[k_triplegreenshell] &= ~2;
else if (target->type == MT_TRIPLEGREENSHIELD3 && target->target->player->kartstuff[k_triplegreenshell] & 4)
target->target->player->kartstuff[k_triplegreenshell] &= ~4;
else if (target->type == MT_TRIPLEREDSHIELD1 && target->target->player->kartstuff[k_tripleredshell] & 1)
target->target->player->kartstuff[k_tripleredshell] &= ~1;
else if (target->type == MT_TRIPLEREDSHIELD2 && target->target->player->kartstuff[k_tripleredshell] & 2)
target->target->player->kartstuff[k_tripleredshell] &= ~2;
else if (target->type == MT_TRIPLEREDSHIELD3 && target->target->player->kartstuff[k_tripleredshell] & 4)
target->target->player->kartstuff[k_tripleredshell] &= ~4;
else if (target->type == MT_TRIPLEBANANASHIELD1 && target->target->player->kartstuff[k_triplebanana] & 1)
target->target->player->kartstuff[k_triplebanana] &= ~1;
else if (target->type == MT_TRIPLEBANANASHIELD2 && target->target->player->kartstuff[k_triplebanana] & 2)
target->target->player->kartstuff[k_triplebanana] &= ~2;
else if (target->type == MT_TRIPLEBANANASHIELD3 && target->target->player->kartstuff[k_triplebanana] & 4)
target->target->player->kartstuff[k_triplebanana] &= ~4;
/*else if (target->type == MT_BATTLEBALLOON && target->target->player->kartstuff[k_balloon] > target->threshold-1)
target->target->player->kartstuff[k_balloon] = target->threshold-1;*/
if (target->target->player->kartstuff[k_fakeitem] && target->type == MT_FAKESHIELD)
target->target->player->kartstuff[k_fakeitem] = 0;
if ((target->target->player->kartstuff[k_itemheld])
&& ((target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT)
|| (target->type == MT_REDSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_JAWZ)
|| (target->type == MT_BANANASHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA)
|| (target->type == MT_BOMBSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_MINE)))
{
if (target->lastlook > 0)
target->target->player->kartstuff[k_itemamount] = target->lastlook-1;
else
target->target->player->kartstuff[k_itemamount]--;
if (!target->target->player->kartstuff[k_itemamount])
target->target->player->kartstuff[k_itemheld] = 0;
}
}
//
@ -2080,11 +2059,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
// SRB2kart
if (target->type != MT_PLAYER && !(target->flags & MF_MONITOR)
&& !(target->type == MT_GREENITEM || target->type == MT_GREENSHIELD
|| target->type == MT_TRIPLEGREENSHIELD1 || target->type == MT_TRIPLEGREENSHIELD2 || target->type == MT_TRIPLEGREENSHIELD3
|| target->type == MT_REDITEM || target->type == MT_REDITEMDUD || target->type == MT_REDSHIELD
|| target->type == MT_TRIPLEREDSHIELD1 || target->type == MT_TRIPLEREDSHIELD2 || target->type == MT_TRIPLEREDSHIELD3
|| target->type == MT_BANANAITEM || target->type == MT_BANANASHIELD
|| target->type == MT_TRIPLEBANANASHIELD1 || target->type == MT_TRIPLEBANANASHIELD2 || target->type == MT_TRIPLEBANANASHIELD3
|| target->type == MT_FAKEITEM || target->type == MT_FAKESHIELD
|| target->type == MT_FIREBALL)) // kart dead items
target->flags |= MF_NOGRAVITY; // Don't drop Tails 03-08-2000
@ -3147,13 +3123,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
//{ SRB2kart - special damage sources
player->kartstuff[k_mushroomtimer] = 0;
player->kartstuff[k_sneakertimer] = 0;
// Thunder
if (damage == 64 && player != source->player)
{
// Don't flip out while super!
if (!player->kartstuff[k_startimer] && player->kartstuff[k_growshrinktimer] <= 0)
if (!player->kartstuff[k_invincibilitytimer] && player->kartstuff[k_growshrinktimer] <= 0)
{
// Start slipping!
K_SpinPlayer(player, source);
@ -3162,7 +3138,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
player->mo->destscale = 6*FRACUNIT/8;
player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position])));
}
// Mega Mushroom? Let's take that away.
// Size Up? Let's take that away.
if (player->kartstuff[k_growshrinktimer] > 0)
{
player->kartstuff[k_growshrinktimer] = 2;
@ -3208,15 +3184,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
// Instant-Death
if (damage == 10000)
P_KillPlayer(player, source, damage);
else if (player->kartstuff[k_startimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->powers[pw_flashing])
else if (player->kartstuff[k_invincibilitytimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->powers[pw_flashing])
return false;
else
{
if (inflictor && (inflictor->type == MT_GREENITEM || inflictor->type == MT_GREENSHIELD
|| inflictor->type == MT_REDITEM || inflictor->type == MT_REDSHIELD || inflictor->type == MT_REDITEMDUD
|| inflictor->type == MT_FAKEITEM || inflictor->type == MT_FAKESHIELD
|| inflictor->type == MT_TRIPLEGREENSHIELD1 || inflictor->type == MT_TRIPLEGREENSHIELD2 || inflictor->type == MT_TRIPLEGREENSHIELD3
|| inflictor->type == MT_TRIPLEREDSHIELD1 || inflictor->type == MT_TRIPLEREDSHIELD2 || inflictor->type == MT_TRIPLEREDSHIELD3
|| inflictor->player))
{
player->kartstuff[k_spinouttype] = 1;

View File

@ -655,10 +655,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->type == MT_RANDOMITEM)
return true;
if (tmthing->type == MT_GREENITEM || tmthing->type == MT_REDITEM || tmthing->type == MT_REDITEMDUD ||
tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD ||
tmthing->type == MT_TRIPLEGREENSHIELD1 || tmthing->type == MT_TRIPLEGREENSHIELD2 || tmthing->type == MT_TRIPLEGREENSHIELD3 ||
tmthing->type == MT_TRIPLEREDSHIELD1 || tmthing->type == MT_TRIPLEREDSHIELD2 || tmthing->type == MT_TRIPLEREDSHIELD3)
if (tmthing->type == MT_GREENITEM || tmthing->type == MT_REDITEM || tmthing->type == MT_REDITEMDUD
|| tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD)
{
// see if it went over / under
if (tmthing->z > thing->z + thing->height)
@ -672,10 +670,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->health <= 0 || thing->health <= 0)
return true;
if (((tmthing->type == MT_TRIPLEGREENSHIELD1 || tmthing->type == MT_TRIPLEGREENSHIELD2 || tmthing->type == MT_TRIPLEGREENSHIELD3
|| tmthing->type == MT_TRIPLEREDSHIELD1 || tmthing->type == MT_TRIPLEREDSHIELD2 || tmthing->type == MT_TRIPLEREDSHIELD3)
&& (thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3))
if ((tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD) && tmthing->lastlook
&& (thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD) && thing->lastlook
&& (tmthing->target == thing->target)) // Don't hit each other if you have the same target
return true;
@ -705,10 +701,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
}
else if (thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD
|| thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
|| thing->type == MT_BANANAITEM || thing->type == MT_BANANASHIELD
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_FIREBALL)
{
// Other Item Damage
@ -739,9 +732,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
}
else if (thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD)
{
if (tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD
|| tmthing->type == MT_TRIPLEGREENSHIELD1 || tmthing->type == MT_TRIPLEGREENSHIELD2 || tmthing->type == MT_TRIPLEGREENSHIELD3
|| tmthing->type == MT_TRIPLEREDSHIELD1 || tmthing->type == MT_TRIPLEREDSHIELD2 || tmthing->type == MT_TRIPLEREDSHIELD3)
if (tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD)
{
// This Item Damage
if (tmthing->eflags & MFE_VERTICALFLIP)
@ -856,7 +847,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
return true; // This doesn't collide with anything, but we want it to effect the player anyway.
}
else if (tmthing->type == MT_BANANASHIELD || tmthing->type == MT_BANANAITEM
|| tmthing->type == MT_TRIPLEBANANASHIELD1 || tmthing->type == MT_TRIPLEBANANASHIELD2 || tmthing->type == MT_TRIPLEBANANASHIELD3
|| tmthing->type == MT_FIREBALL)
{
// see if it went over / under
@ -871,8 +861,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->health <= 0 || thing->health <= 0)
return true;
if (((tmthing->type == MT_BANANASHIELD || tmthing->type == MT_TRIPLEBANANASHIELD1 || tmthing->type == MT_TRIPLEBANANASHIELD2 || tmthing->type == MT_TRIPLEBANANASHIELD3)
&& (thing->type == MT_BANANASHIELD || thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3))
if (((tmthing->type == MT_BANANASHIELD) && (thing->type == MT_BANANASHIELD))
&& (tmthing->target == thing->target)) // Don't hit each other if you have the same target
return true;
@ -899,11 +888,9 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
}
else if (thing->type == MT_BANANASHIELD || thing->type == MT_BANANAITEM
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_GREENSHIELD || thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
else if (thing->type == MT_BANANAITEM || thing->type == MT_BANANASHIELD
|| thing->type == MT_GREENITEM || thing->type == MT_GREENSHIELD
|| thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD || thing->type == MT_REDSHIELD
|| thing->type == MT_FIREBALL)
{
// Other Item Damage
@ -934,7 +921,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
}
else if (thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD)
{
if (tmthing->type == MT_BANANASHIELD || tmthing->type == MT_TRIPLEBANANASHIELD1 || tmthing->type == MT_TRIPLEBANANASHIELD2 || tmthing->type == MT_TRIPLEBANANASHIELD3)
if (tmthing->type == MT_BANANASHIELD)
{
// This Item Damage
if (tmthing->eflags & MFE_VERTICALFLIP)
@ -999,10 +986,10 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
}
else if (thing->type == MT_GREENSHIELD || thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3 // When these items collide with the fake item, both of them are destroyed
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
else if (thing->type == MT_GREENSHIELD // When these items collide with the fake item, both of them are destroyed
|| thing->type == MT_REDSHIELD
|| thing->type == MT_BOMBSHIELD
|| thing->type == MT_BANANASHIELD || thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_BANANASHIELD
|| thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD)
{
// Other Item Damage
@ -1073,8 +1060,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_KillMobj(tmthing, thing, thing);
}
else if (thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_GREENSHIELD || thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3)
|| thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD)
{
P_KillMobj(tmthing, thing, thing);
@ -1096,11 +1082,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
else if (tmthing->type == MT_PLAYER &&
(thing->type == MT_GREENSHIELD || thing->type == MT_GREENITEM
|| thing->type == MT_REDSHIELD || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
|| thing->type == MT_FAKESHIELD || thing->type == MT_FAKEITEM
|| thing->type == MT_BANANASHIELD || thing->type == MT_BANANAITEM
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_BOMBSHIELD || thing->type == MT_BOMBITEM
|| thing->type == MT_BOMBEXPLOSION
|| thing->type == MT_SINK || thing->type == MT_FIREBALL
@ -1116,8 +1099,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
&& !(thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD))
return true;
if (thing->type == MT_GREENSHIELD || thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
if (thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD
|| thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_FAKESHIELD || thing->type == MT_FAKEITEM)
{
@ -1146,7 +1128,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
}
else if (thing->type == MT_BANANASHIELD || thing->type == MT_BANANAITEM
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_FIREBALL)
{
if ((thing->target == tmthing) && (thing->threshold > 0))
@ -1549,9 +1530,9 @@ static boolean PIT_CheckThing(mobj_t *thing)
}
// SRB2kart - Starpower!
if (tmthing->player->kartstuff[k_startimer] && !thing->player->kartstuff[k_startimer])
if (tmthing->player->kartstuff[k_invincibilitytimer] && !thing->player->kartstuff[k_invincibilitytimer])
P_DamageMobj(thing, tmthing, tmthing, 1);
else if (thing->player->kartstuff[k_startimer] && !tmthing->player->kartstuff[k_startimer])
else if (thing->player->kartstuff[k_invincibilitytimer] && !tmthing->player->kartstuff[k_invincibilitytimer])
P_DamageMobj(tmthing, thing, thing, 1);
if (G_RingSlingerGametype() && (!G_GametypeHasTeams() || tmthing->player->ctfteam != thing->player->ctfteam))
@ -1644,13 +1625,13 @@ static boolean PIT_CheckThing(mobj_t *thing)
return true; // underneath
if (thing->player->kartstuff[k_growshrinktimer] || thing->player->kartstuff[k_squishedtimer]
|| thing->player->kartstuff[k_bootimer] || thing->player->kartstuff[k_spinouttimer]
|| thing->player->kartstuff[k_startimer] || thing->player->kartstuff[k_justbumped]
|| thing->player->kartstuff[k_hyudorotimer] || thing->player->kartstuff[k_spinouttimer]
|| thing->player->kartstuff[k_invincibilitytimer] || thing->player->kartstuff[k_justbumped]
|| (gametype != GT_RACE && (thing->player->kartstuff[k_balloon] <= 0
&& (thing->player->kartstuff[k_comebacktimer] || thing->player->kartstuff[k_comebackmode] == 1)))
|| tmthing->player->kartstuff[k_growshrinktimer] || tmthing->player->kartstuff[k_squishedtimer]
|| tmthing->player->kartstuff[k_bootimer] || tmthing->player->kartstuff[k_spinouttimer]
|| tmthing->player->kartstuff[k_startimer] || tmthing->player->kartstuff[k_justbumped]
|| tmthing->player->kartstuff[k_hyudorotimer] || tmthing->player->kartstuff[k_spinouttimer]
|| tmthing->player->kartstuff[k_invincibilitytimer] || tmthing->player->kartstuff[k_justbumped]
|| (gametype != GT_RACE && (tmthing->player->kartstuff[k_balloon] <= 0
&& (tmthing->player->kartstuff[k_comebacktimer] || tmthing->player->kartstuff[k_comebackmode] == 1))))
{
@ -1680,7 +1661,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (P_IsObjectOnGround(thing) && tmthing->momz < 0)
{
K_KartBouncing(tmthing, thing, true, false);
if (gametype != GT_RACE && tmthing->player->kartstuff[k_feather] & 2)
if (gametype != GT_RACE && tmthing->player->kartstuff[k_pogospring])
{
K_StealBalloon(tmthing->player, thing->player, false);
K_SpinPlayer(thing->player, tmthing);
@ -1689,7 +1670,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
else if (P_IsObjectOnGround(tmthing) && thing->momz < 0)
{
K_KartBouncing(thing, tmthing, true, false);
if (gametype != GT_RACE && thing->player->kartstuff[k_feather] & 2)
if (gametype != GT_RACE && thing->player->kartstuff[k_pogospring])
{
K_StealBalloon(thing->player, tmthing->player, false);
K_SpinPlayer(tmthing->player, thing);
@ -1700,12 +1681,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (gametype != GT_RACE)
{
if (thing->player->kartstuff[k_mushroomtimer] && !(tmthing->player->kartstuff[k_mushroomtimer]))
if (thing->player->kartstuff[k_sneakertimer] && !(tmthing->player->kartstuff[k_sneakertimer]))
{
K_StealBalloon(thing->player, tmthing->player, false);
K_SpinPlayer(tmthing->player, thing);
}
else if (tmthing->player->kartstuff[k_mushroomtimer] && !(thing->player->kartstuff[k_mushroomtimer]))
else if (tmthing->player->kartstuff[k_sneakertimer] && !(thing->player->kartstuff[k_sneakertimer]))
{
K_StealBalloon(tmthing->player, thing->player, false);
K_SpinPlayer(thing->player, tmthing);

View File

@ -1351,7 +1351,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
}
if (wasflip == !(mo->eflags & MFE_VERTICALFLIP)) // note!! == ! is not equivalent to != here - turns numeric into bool this way
P_PlayerFlip(mo);
if (mo->player->kartstuff[k_feather] & 2)
if (mo->player->kartstuff[k_pogospring])
gravityadd = FixedMul(gravityadd, 5*FRACUNIT/2);
}
else
@ -1741,7 +1741,7 @@ void P_XYMovement(mobj_t *mo)
if (player->bot)
B_MoveBlocked(player);
}
//{ SRB2kart - Red Shell
//{ SRB2kart - Jawz
if (mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD)
{
if (mo->health == 1)
@ -6518,7 +6518,7 @@ void P_MobjThinker(mobj_t *mobj)
return;
}
if (mobj->target->player->kartstuff[k_bootimer] > 0)
if (mobj->target->player->kartstuff[k_hyudorotimer] > 0)
{
if ((mobj->target->player == &players[displayplayer]
|| (splitscreen && mobj->target->player == &players[secondarydisplayplayer])
@ -6528,7 +6528,7 @@ void P_MobjThinker(mobj_t *mobj)
|| (splitscreen && mobj->target->player == &players[secondarydisplayplayer])
|| (splitscreen > 1 && mobj->target->player == &players[thirddisplayplayer])
|| (splitscreen > 2 && mobj->target->player == &players[fourthdisplayplayer]))
&& (mobj->target->player->kartstuff[k_bootimer] < 1*TICRATE/2 || mobj->target->player->kartstuff[k_bootimer] > bootime-(1*TICRATE/2))))
&& (mobj->target->player->kartstuff[k_hyudorotimer] < 1*TICRATE/2 || mobj->target->player->kartstuff[k_hyudorotimer] > hyudorotime-(1*TICRATE/2))))
{
if (leveltime & 1)
mobj->flags2 |= MF2_DONTDRAW;
@ -6538,7 +6538,7 @@ void P_MobjThinker(mobj_t *mobj)
else
mobj->flags2 |= MF2_DONTDRAW;
}
else if (mobj->target->player->kartstuff[k_bootimer] == 0)
else if (mobj->target->player->kartstuff[k_hyudorotimer] == 0)
{
mobj->flags2 &= ~MF2_DONTDRAW;
}
@ -6592,15 +6592,6 @@ void P_MobjThinker(mobj_t *mobj)
case MT_BANANASHIELD:
case MT_FAKESHIELD:
case MT_BOMBSHIELD:
case MT_TRIPLEGREENSHIELD1:
case MT_TRIPLEGREENSHIELD2:
case MT_TRIPLEGREENSHIELD3:
case MT_TRIPLEREDSHIELD1:
case MT_TRIPLEREDSHIELD2:
case MT_TRIPLEREDSHIELD3:
case MT_TRIPLEBANANASHIELD1:
case MT_TRIPLEBANANASHIELD2:
case MT_TRIPLEBANANASHIELD3:
if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
&& mobj->target->player->health > 0 && !mobj->target->player->spectator)
{
@ -6608,12 +6599,11 @@ void P_MobjThinker(mobj_t *mobj)
const fixed_t radius = FixedHypot(mobj->target->radius, mobj->target->radius) + FixedHypot(mobj->radius, mobj->radius); // mobj's distance from its Target, or Radius.
//mobj->angle += FixedAngle(12*FRACUNIT); // mobj's actual speed.
if (mobj->type == MT_TRIPLEGREENSHIELD1 || mobj->type == MT_TRIPLEGREENSHIELD2 || mobj->type == MT_TRIPLEGREENSHIELD3
|| mobj->type == MT_TRIPLEREDSHIELD1 || mobj->type == MT_TRIPLEREDSHIELD2 || mobj->type == MT_TRIPLEREDSHIELD3)
if ((mobj->type == MT_GREENSHIELD || mobj->type == MT_REDSHIELD) && mobj->lastlook > 0)
mobj->angle += FixedAngle(mobj->info->speed);
else if (mobj->type == MT_TRIPLEBANANASHIELD2)
else if (mobj->type == MT_BANANASHIELD && mobj->lastlook == 2)
mobj->angle = (mobj->target->angle + ANGLE_135);
else if (mobj->type == MT_TRIPLEBANANASHIELD3)
else if (mobj->type == MT_BANANASHIELD && mobj->lastlook == 3)
mobj->angle = (mobj->target->angle + ANGLE_225);
else
mobj->angle = (mobj->target->angle + ANGLE_180);
@ -6669,20 +6659,13 @@ void P_MobjThinker(mobj_t *mobj)
mobj->momx = mobj->momy = 0;
// Was this so hard?
if ((mobj->type == MT_GREENSHIELD && !(mobj->target->player->kartstuff[k_greenshell] & 1))
|| (mobj->type == MT_REDSHIELD && !(mobj->target->player->kartstuff[k_redshell] & 1))
|| (mobj->type == MT_BANANASHIELD && !(mobj->target->player->kartstuff[k_banana] & 1))
|| (mobj->type == MT_TRIPLEGREENSHIELD1 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 1))
|| (mobj->type == MT_TRIPLEGREENSHIELD2 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 2))
|| (mobj->type == MT_TRIPLEGREENSHIELD3 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 4))
|| (mobj->type == MT_TRIPLEREDSHIELD1 && !(mobj->target->player->kartstuff[k_tripleredshell] & 1))
|| (mobj->type == MT_TRIPLEREDSHIELD2 && !(mobj->target->player->kartstuff[k_tripleredshell] & 2))
|| (mobj->type == MT_TRIPLEREDSHIELD3 && !(mobj->target->player->kartstuff[k_tripleredshell] & 4))
|| (mobj->type == MT_TRIPLEBANANASHIELD1 && !(mobj->target->player->kartstuff[k_triplebanana] & 1))
|| (mobj->type == MT_TRIPLEBANANASHIELD2 && !(mobj->target->player->kartstuff[k_triplebanana] & 2))
|| (mobj->type == MT_TRIPLEBANANASHIELD3 && !(mobj->target->player->kartstuff[k_triplebanana] & 4))
|| (mobj->type == MT_BOMBSHIELD && !(mobj->target->player->kartstuff[k_bobomb] & 1))
|| (mobj->type == MT_FAKESHIELD && !(mobj->target->player->kartstuff[k_fakeitem] & 1)))
if ((mobj->type == MT_GREENSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_ORBINAUT)
|| (mobj->type == MT_REDSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_JAWZ)
|| (mobj->type == MT_BANANASHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_BANANA)
|| (mobj->type == MT_BOMBSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_MINE)
|| (mobj->type == MT_FAKESHIELD && !mobj->target->player->kartstuff[k_fakeitem])
|| (mobj->type != MT_FAKESHIELD && !mobj->target->player->kartstuff[k_itemheld])
|| (mobj->lastlook > 0 && mobj->target->player->kartstuff[k_itemamount] < mobj->lastlook))
{
P_RemoveMobj(mobj);
return;
@ -6819,26 +6802,30 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->state != &states[S_PLAYERARROW_ROULETTE]) // don't reset FF_ANIMATE
P_SetMobjState(mobj, S_PLAYERARROW_ROULETTE);
}
else if (mobj->target->player->kartstuff[k_kitchensink]) P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK);
else if (mobj->target->player->kartstuff[k_megashroom] == 1
|| (mobj->target->player->kartstuff[k_growshrinktimer] > 1
&& (leveltime & 1))) P_SetMobjState(mobj, S_PLAYERARROW_MEGASHROOM);
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1
&& !(leveltime & 1)) P_SetMobjState(mobj, S_PLAYERARROW_EMPTY); // S_INVISIBLE
else if (mobj->target->player->kartstuff[k_star] == 1) P_SetMobjState(mobj, S_PLAYERARROW_STAR);
else if (mobj->target->player->kartstuff[k_tripleredshell]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEREDSHELL);
else if (mobj->target->player->kartstuff[k_triplebanana]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEBANANA);
else if (mobj->target->player->kartstuff[k_triplegreenshell]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEGREENSHELL);
else if (mobj->target->player->kartstuff[k_fireflower]) P_SetMobjState(mobj, S_PLAYERARROW_FIREFLOWER);
else if (mobj->target->player->kartstuff[k_bobomb]) P_SetMobjState(mobj, S_PLAYERARROW_BOBOMB);
else if (mobj->target->player->kartstuff[k_redshell]) P_SetMobjState(mobj, S_PLAYERARROW_REDSHELL);
else if (mobj->target->player->kartstuff[k_feather] & 1) P_SetMobjState(mobj, S_PLAYERARROW_FEATHER);
else if (mobj->target->player->kartstuff[k_boo] == 1) P_SetMobjState(mobj, S_PLAYERARROW_BOO);
else if (mobj->target->player->kartstuff[k_fakeitem] & 2) P_SetMobjState(mobj, S_PLAYERARROW_FAKEITEM);
else if (mobj->target->player->kartstuff[k_banana]) P_SetMobjState(mobj, S_PLAYERARROW_BANANA);
else if (mobj->target->player->kartstuff[k_greenshell]) P_SetMobjState(mobj, S_PLAYERARROW_GREENSHELL);
else if (mobj->target->player->kartstuff[k_mushroom]) P_SetMobjState(mobj, S_PLAYERARROW_MUSHROOM);
else P_SetMobjState(mobj, S_PLAYERARROW); // S_INVISIBLE
else
{
switch(mobj->target->player->kartstuff[k_itemtype])
{
case KITEM_KITCHENSINK: P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK); break;
case KITEM_SIZEUP: P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP); break;
case KITEM_INVINCIBILITY: P_SetMobjState(mobj, S_PLAYERARROW_INVINCIBILITY); break;
case KITEM_ORBINAUT: P_SetMobjState(mobj, S_PLAYERARROW_ORBINAUT); break;
case KITEM_BALLHOG: P_SetMobjState(mobj, S_PLAYERARROW_BALLHOG); break;
case KITEM_MINE: P_SetMobjState(mobj, S_PLAYERARROW_MINE); break;
case KITEM_JAWZ: P_SetMobjState(mobj, S_PLAYERARROW_JAWZ); break;
case KITEM_POGOSPRING: P_SetMobjState(mobj, S_PLAYERARROW_POGOSPRING); break;
case KITEM_HYUDORO: P_SetMobjState(mobj, S_PLAYERARROW_HYUDORO); break;
case KITEM_FAKE: P_SetMobjState(mobj, S_PLAYERARROW_FAKEITEM); break;
case KITEM_BANANA: P_SetMobjState(mobj, S_PLAYERARROW_BANANA); break;
case KITEM_SNEAKER: P_SetMobjState(mobj, S_PLAYERARROW_SNEAKER); break;
default: P_SetMobjState(mobj, S_PLAYERARROW); break; // S_INVISIBLE
}
}
if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && (leveltime & 1))
P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP);
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && !(leveltime & 1))
P_SetMobjState(mobj, S_PLAYERARROW_EMPTY); // S_INVISIBLE
scale += FixedMul(FixedDiv(abs(P_AproxDistance(players[displayplayer].mo->x-mobj->target->x,
players[displayplayer].mo->y-mobj->target->y)), RING_DIST), mobj->target->scale);
@ -7871,14 +7858,18 @@ void P_MobjThinker(mobj_t *mobj)
mobj->threshold--;
break;
case MT_BOMBITEM:
if (mobj->target && mobj->target->player)
mobj->color = mobj->target->player->skincolor;
else
mobj->color = SKINCOLOR_RED;
if (mobj->momx || mobj->momy)
P_SpawnGhostMobj(mobj);
if (mobj->z <= mobj->floorz)
{
if (mobj->health > mobj->info->spawnhealth-1)
{
if (mobj->state == &states[S_BOMBAIR])
P_SetMobjState(mobj, S_BOMBITEM);
if (mobj->state == &states[S_BOMBAIR1] || mobj->state == &states[S_BOMBAIR2])
P_SetMobjState(mobj, S_BOMBDEPLOY1);
mobj->momx = mobj->momy = 0;
S_StartSound(mobj, mobj->info->activesound);
@ -7979,7 +7970,7 @@ void P_MobjThinker(mobj_t *mobj)
#endif
break;
case MT_SPINFIRE:
case MT_MUSHROOMTRAIL:
case MT_SNEAKERTRAIL:
if (mobj->eflags & MFE_VERTICALFLIP)
mobj->z = mobj->ceilingz - mobj->height;
else
@ -8672,11 +8663,8 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
case MT_FALLINGROCK:
//case MT_RANDOMITEM:
case MT_BANANAITEM: case MT_BANANASHIELD:
case MT_TRIPLEBANANASHIELD1: case MT_TRIPLEBANANASHIELD2: case MT_TRIPLEBANANASHIELD3:
case MT_GREENITEM: case MT_GREENSHIELD:
case MT_TRIPLEGREENSHIELD1: case MT_TRIPLEGREENSHIELD2: case MT_TRIPLEGREENSHIELD3:
case MT_REDITEM: case MT_REDSHIELD: case MT_REDITEMDUD:
case MT_TRIPLEREDSHIELD1: case MT_TRIPLEREDSHIELD2: case MT_TRIPLEREDSHIELD3:
case MT_BATTLEBALLOON: case MT_FIREBALL:
case MT_FAKEITEM: case MT_FAKESHIELD:
case MT_BOMBITEM: case MT_BOMBSHIELD:

View File

@ -3752,7 +3752,7 @@ DoneSection2:
if (player->speed < K_GetKartSpeed(player, true)/4) // Push forward to prevent getting stuck
P_InstaThrust(player->mo, player->mo->angle, FixedMul(K_GetKartSpeed(player, true)/4, player->mo->scale));
player->kartstuff[k_feather] |= 2;
player->kartstuff[k_pogospring] = 1;
K_DoBouncePad(player->mo, 0);
}
break;
@ -3959,14 +3959,14 @@ DoneSection2:
// P_SetPlayerMobjState(player->mo, S_PLAY_FALL1);
break;
case 6: // SRB2kart 190117 - Mushroom Boost Panel
case 6: // SRB2kart 190117 - Sneaker Boost Panel
if (roversector || P_MobjReadyToTrigger(player->mo, sector))
{
if (!player->kartstuff[k_floorboost])
player->kartstuff[k_floorboost] = 3;
else
player->kartstuff[k_floorboost] = 2;
K_DoMushroom(player, false, false);
K_DoSneaker(player, false, false);
}
break;
@ -7184,8 +7184,8 @@ void T_Friction(friction_t *f)
// friction works for all mobj's
// (or at least MF_PUSHABLEs, which is all I care about anyway)
if ((!(thing->flags & (MF_NOGRAVITY | MF_NOCLIP)) && thing->z == thing->floorz) && (thing->player
&& (thing->player->kartstuff[k_startimer] == 0 && thing->player->kartstuff[k_bootimer] == 0
&& thing->player->kartstuff[k_mushroomtimer] == 0 && thing->player->kartstuff[k_growshrinktimer] <= 0)))
&& (thing->player->kartstuff[k_invincibilitytimer] == 0 && thing->player->kartstuff[k_hyudorotimer] == 0
&& thing->player->kartstuff[k_sneakertimer] == 0 && thing->player->kartstuff[k_growshrinktimer] <= 0)))
{
if (f->roverfriction)
{

View File

@ -1134,12 +1134,12 @@ void P_RestoreMusic(player_t *player)
// SRB2kart - We have some different powers than vanilla, some of which tweak the music.
if (!player->exiting)
{
// Item - Mega Mushroom
// Item - Size Up
if (player->kartstuff[k_growshrinktimer] > 1)
S_ChangeMusicInternal("mega", true);
// Item - Star
else if (player->kartstuff[k_startimer] > 1)
else if (player->kartstuff[k_invincibilitytimer] > 1)
S_ChangeMusicInternal("minvnc", false);
// Event - Final Lap
@ -2262,7 +2262,7 @@ static void P_CheckUnderwaterAndSpaceTimer(player_t *player)
//
static void P_CheckInvincibilityTimer(player_t *player)
{
if (!player->powers[pw_invulnerability] && !player->kartstuff[k_startimer])
if (!player->powers[pw_invulnerability] && !player->kartstuff[k_invincibilitytimer])
return;
//if (mariomode && !player->powers[pw_super]) // SRB2kart
@ -2275,7 +2275,7 @@ static void P_CheckInvincibilityTimer(player_t *player)
}
// Resume normal music stuff.
if (player->powers[pw_invulnerability] == 1 || player->kartstuff[k_startimer] == 1)
if (player->powers[pw_invulnerability] == 1 || player->kartstuff[k_invincibilitytimer] == 1)
{
if (!player->powers[pw_super])
{
@ -4769,8 +4769,8 @@ static void P_3dMovement(player_t *player)
// Do not let the player control movement if not onground.
onground = P_IsObjectOnGround(player->mo);
// SRB2Kart: shhhhhhh don't question me, feather and speed bumps are supposed to control like you're on the ground :p
if (player->kartstuff[k_feather] & 2)
// SRB2Kart: shhhhhhh don't question me, pogo springs and speed bumps are supposed to control like you're on the ground :p
if (player->kartstuff[k_pogospring])
onground = true;
player->aiming = cmd->aiming<<FRACBITS;
@ -4799,9 +4799,9 @@ static void P_3dMovement(player_t *player)
else
topspeed = normalspd;
}
else if (player->powers[pw_super] || player->powers[pw_sneakers] || player->kartstuff[k_startimer] || player->kartstuff[k_mushroomtimer])
else if (player->powers[pw_super] || player->powers[pw_sneakers] || player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_sneakertimer])
{
if (player->powers[pw_sneakers] && (player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_mushroomtimer] > 0 || player->kartstuff[k_startimer] > 0))
if (player->powers[pw_sneakers] && (player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_sneakertimer] > 0 || player->kartstuff[k_invincibilitytimer] > 0))
thrustfactor = player->thrustfactor*3;
else
thrustfactor = player->thrustfactor*2;
@ -6775,7 +6775,7 @@ static void P_MovePlayer(player_t *player)
{
K_KartMoveAnimation(player);
if (player->kartstuff[k_feather] & 2)
if (player->kartstuff[k_pogospring])
player->frameangle += ANGLE_22h;
else
player->frameangle = player->mo->angle;
@ -7071,7 +7071,7 @@ static void P_MovePlayer(player_t *player)
////////////////////////////
// SRB2kart - Drifting smoke and fire
if ((player->kartstuff[k_drift] != 0 || player->kartstuff[k_mushroomtimer] > 0) && onground && (leveltime & 1))
if ((player->kartstuff[k_drift] != 0 || player->kartstuff[k_sneakertimer] > 0) && onground && (leveltime & 1))
K_SpawnDriftTrail(player);
/* // SRB2kart - nadah
@ -7806,10 +7806,7 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
//{ SRB2kart
if (mo->type == MT_GREENITEM || mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD
|| mo->type == MT_GREENSHIELD || mo->type == MT_REDSHIELD
|| mo->type == MT_TRIPLEGREENSHIELD1 || mo->type == MT_TRIPLEGREENSHIELD2 || mo->type == MT_TRIPLEGREENSHIELD3
|| mo->type == MT_TRIPLEREDSHIELD1 || mo->type == MT_TRIPLEREDSHIELD2 || mo->type == MT_TRIPLEREDSHIELD3
|| mo->type == MT_BANANAITEM || mo->type == MT_BANANASHIELD
|| mo->type == MT_TRIPLEBANANASHIELD1 || mo->type == MT_TRIPLEBANANASHIELD2 || mo->type == MT_TRIPLEBANANASHIELD3
|| mo->type == MT_FAKEITEM || mo->type == MT_FAKESHIELD
|| mo->type == MT_FIREBALL)
{
@ -9518,7 +9515,7 @@ void P_PlayerThink(player_t *player)
#if 1
// "Blur" a bit when you have speed shoes and are going fast enough
if ((player->powers[pw_super] || player->powers[pw_sneakers]
|| player->kartstuff[k_driftboost] || player->kartstuff[k_mushroomtimer]) // SRB2kart
|| player->kartstuff[k_driftboost] || player->kartstuff[k_sneakertimer]) // SRB2kart
&& (player->speed + abs(player->mo->momz)) > FixedMul(20*FRACUNIT,player->mo->scale))
{
mobj_t *gmobj = P_SpawnGhostMobj(player->mo);
@ -9665,7 +9662,7 @@ void P_PlayerThink(player_t *player)
|| (splitscreen && player == &players[secondarydisplayplayer])
|| (splitscreen > 1 && player == &players[thirddisplayplayer])
|| (splitscreen > 2 && player == &players[fourthdisplayplayer]))
&& player->kartstuff[k_bootimer] == 0 && player->kartstuff[k_growshrinktimer] <= 0
&& player->kartstuff[k_hyudorotimer] == 0 && player->kartstuff[k_growshrinktimer] <= 0
&& (player->kartstuff[k_comebacktimer] == 0 || (gametype == GT_RACE || player->kartstuff[k_balloon] > 0)))
{
if (player->powers[pw_flashing] > 0 && player->powers[pw_flashing] < K_GetKartFlashing() && (leveltime & 1))

View File

@ -135,7 +135,7 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask;
#define BOSS_TT_CACHE_INDEX (MAXSKINS + 1)
#define METALSONIC_TT_CACHE_INDEX (MAXSKINS + 2)
#define ALLWHITE_TT_CACHE_INDEX (MAXSKINS + 3)
#define STARMAN_TT_CACHE_INDEX (MAXSKINS + 4)
#define RAINBOW_TT_CACHE_INDEX (MAXSKINS + 4)
#define SKIN_RAMP_LENGTH 16
#define DEFAULT_STARTTRANSCOLOR 160
#define NUM_PALETTE_ENTRIES 256
@ -529,7 +529,7 @@ UINT8* R_GetTranslationColormap(INT32 skinnum, skincolors_t color, UINT8 flags)
else if (skinnum == TC_BOSS) skintableindex = BOSS_TT_CACHE_INDEX;
else if (skinnum == TC_METALSONIC) skintableindex = METALSONIC_TT_CACHE_INDEX;
else if (skinnum == TC_ALLWHITE) skintableindex = ALLWHITE_TT_CACHE_INDEX;
else if (skinnum == TC_STARMAN) skintableindex = STARMAN_TT_CACHE_INDEX;
else if (skinnum == TC_RAINBOW) skintableindex = RAINBOW_TT_CACHE_INDEX;
else skintableindex = skinnum;
if (flags & GTC_CACHE)

View File

@ -107,7 +107,7 @@ extern lumpnum_t viewborderlump[8];
#define TC_BOSS -2
#define TC_METALSONIC -3 // For Metal Sonic battle
#define TC_ALLWHITE -4 // For Cy-Brak-demon
#define TC_STARMAN -5 // For star power
#define TC_RAINBOW -5 // For invincibility power
// Initialize color translation tables, for player rendering etc.
void R_InitTranslationTables(void);

View File

@ -827,8 +827,8 @@ static void R_DrawVisSprite(vissprite_t *vis)
dc_transmap = vis->transmap;
if (vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // MT_GHOST LOOKS LIKE A PLAYER SO USE THE PLAYER TRANSLATION TABLES. >_>
{
if (vis->mobj->player && vis->mobj->player->kartstuff[k_startimer])
dc_translation = R_GetTranslationColormap(TC_STARMAN, vis->mobj->color, GTC_CACHE);
if (vis->mobj->player && vis->mobj->player->kartstuff[k_invincibilitytimer])
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else
{
size_t skinnum = (skin_t*)vis->mobj->skin-skins;
@ -851,8 +851,8 @@ static void R_DrawVisSprite(vissprite_t *vis)
// New colormap stuff for skins Tails 06-07-2002
if (vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
{
if (vis->mobj->player && vis->mobj->player->kartstuff[k_startimer])
dc_translation = R_GetTranslationColormap(TC_STARMAN, vis->mobj->color, GTC_CACHE);
if (vis->mobj->player && vis->mobj->player->kartstuff[k_invincibilitytimer])
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else
{
size_t skinnum = (skin_t*)vis->mobj->skin-skins;