- 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"}, static CV_PossibleValue_t matchboxes_cons_t[] = {{0, "Normal"}, {1, "Random"}, {2, "Non-Random"},
{3, "None"}, {0, NULL}}; {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 match_scoring_cons_t[] = {{0, "Normal"}, {1, "Classic"}, {0, NULL}};
static CV_PossibleValue_t pause_cons_t[] = {{0, "Server"}, {1, "All"}, {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_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_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_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_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}; 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_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_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_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 // 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_sneaker = {"sneaker", "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_rocketsneaker = {"rocketsneaker", "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_invincibility = {"invincibility", "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_banana = {"banana", "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_fakeitem = {"fakeitem", "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_orbinaut = {"orbinaut", "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_jawz = {"jawz", "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_mine = {"mine", "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_ballhog = {"ballhog", "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_selfpropelledbomb = {"selfpropelledbomb", "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_sizeup = {"sizeup", "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_sizedown = {"sizedown", "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_lightningshield = {"lightningshield", "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_hyudoro = {"hyudoro", "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_pogospring = {"pogospring", "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_triplesneaker = {"triplesneaker", "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_triplebanana = {"triplebanana", "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_tripleorbinaut = {"tripleorbinaut", "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_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_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}; 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}}; 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 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}}; 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}; 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}}; 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_competitionboxes);
CV_RegisterVar(&cv_matchboxes); CV_RegisterVar(&cv_matchboxes);
CV_RegisterVar(&cv_recycler); /*CV_RegisterVar(&cv_recycler);
CV_RegisterVar(&cv_teleporters); CV_RegisterVar(&cv_teleporters);
CV_RegisterVar(&cv_superring); CV_RegisterVar(&cv_superring);
CV_RegisterVar(&cv_supersneakers); CV_RegisterVar(&cv_supersneakers);
@ -606,7 +611,7 @@ void D_RegisterServerCommands(void)
CV_RegisterVar(&cv_forceshield); CV_RegisterVar(&cv_forceshield);
CV_RegisterVar(&cv_bombshield); CV_RegisterVar(&cv_bombshield);
CV_RegisterVar(&cv_1up); CV_RegisterVar(&cv_1up);
CV_RegisterVar(&cv_eggmanbox); CV_RegisterVar(&cv_eggmanbox);*/
K_RegisterKartStuff(); // SRB2kart 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_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_jumpshield, cv_watershield, cv_ringshield, cv_forceshield, cv_bombshield;
extern consvar_t cv_1up, cv_eggmanbox; extern consvar_t cv_1up, cv_eggmanbox;
extern consvar_t cv_recycler; extern consvar_t cv_recycler;*/
// SRB2kart items // SRB2kart items
extern consvar_t cv_magnet, cv_boo, cv_mushroom, cv_triplemushroom, cv_megashroom; extern consvar_t cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana;
extern consvar_t cv_goldshroom, cv_star, cv_triplebanana, cv_fakeitem, cv_banana; extern consvar_t cv_fakeitem, cv_orbinaut, cv_jawz, cv_mine;
extern consvar_t cv_greenshell, cv_redshell, cv_laserwisp, cv_triplegreenshell, cv_bobomb; extern consvar_t cv_ballhog, cv_selfpropelledbomb, cv_sizeup, cv_sizedown;
extern consvar_t cv_blueshell, cv_jaws, cv_fireflower, cv_tripleredshell, cv_lightning; extern consvar_t cv_lightningshield, cv_hyudoro, cv_pogospring;
extern consvar_t cv_feather;
extern consvar_t cv_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz;
extern consvar_t cv_karthud; extern consvar_t cv_karthud;
extern consvar_t cv_kartminimap; extern consvar_t cv_kartminimap;
@ -129,6 +130,8 @@ extern consvar_t cv_speedometer;
extern consvar_t cv_collideminimum; extern consvar_t cv_collideminimum;
extern consvar_t cv_collidesoundnum; extern consvar_t cv_collidesoundnum;
extern consvar_t cv_collidesounds; extern consvar_t cv_collidesounds;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount;
// //
extern consvar_t cv_itemfinder; extern consvar_t cv_itemfinder;

View File

@ -230,6 +230,38 @@ typedef enum
NUMPOWERS NUMPOWERS
} powertype_t; } 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 //{ SRB2kart - kartstuff
typedef enum typedef enum
{ {
@ -249,7 +281,7 @@ typedef enum
k_sounds, // Used this to stop and then force music restores as it hits zero 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_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_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 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_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_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_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_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 // Some items use timers for their duration or effects
k_magnettimer, // Duration of Magnet's item-break and item box pull k_attractiontimer, // Duration of Lightning Shield's item-break and item box pull
k_bootimer, // Duration of the boo offroad effect itself k_hyudorotimer, // Duration of the Hyudoro offroad effect itself
k_bootaketimer, // You are stealing an item, this is your timer k_stealingtimer, // You are stealing an item, this is your timer
k_boostolentimer, // You are being stolen from, this is your timer k_stolentimer, // You are being stolen from, this is your timer
k_mushroomtimer, // Duration of the Mushroom Boost itself k_sneakertimer, // Duration of the Sneaker Boost itself
k_growshrinktimer, // > 0 = Big, < 0 = small k_growshrinktimer, // > 0 = Big, < 0 = small
k_squishedtimer, // Squished frame timer k_squishedtimer, // Squished frame timer
k_goldshroomtimer, // Gold Mushroom duration timer k_rocketsneakertimer, // Rocket Sneaker duration timer
k_startimer, // Invincibility timer k_invincibilitytimer, // Invincibility timer
k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam") k_fakeitem, // Fake item held, separate from itemtype so it doesn't stop you from getting items
k_laserwisptimer, // The duration and relative angle of the laser 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_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_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_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 // Each item needs its own power slot, for the HUD and held use
// *** ADDING A NEW ITEM? ADD IT TO K_DoBooSteal PLEASE!! -Salt *** // *** ADDING A NEW ITEM? ADD IT TO K_DoHyudoroSteal PLEASE!! -Salt ***
k_magnet, // 0x1 = Magnet in inventory k_itemtype, // KITEM_ constant for item number
k_boo, // 0x1 = Boo in inventory k_itemamount, // Amount of said item
k_mushroom, // 0x1 = 1 Mushroom in inventory, 0x2 = 2 Mushrooms in inventory k_itemheld, // Are you holding an item? 1 = normal hold, 2 = rotation hold
// 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
// Battle Mode vars // Battle Mode vars
k_balloon, // Number of balloons left k_balloon, // Number of balloons left

View File

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

View File

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

View File

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

View File

@ -499,23 +499,46 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[NOLIGHT], //"SPRG", &lspr[NOLIGHT], //"SPRG",
&lspr[NOLIGHT], //"BSPR", &lspr[NOLIGHT], //"BSPR",
&lspr[NOLIGHT], //"RNDM", &lspr[NOLIGHT], //"RNDM",
&lspr[NOLIGHT], //"SPRK",
&lspr[NOLIGHT], //"KFRE", &lspr[NOLIGHT], //"KFRE",
&lspr[NOLIGHT], //"DRIF", &lspr[NOLIGHT], //"DRIF",
&lspr[NOLIGHT], //"FAKE", &lspr[NOLIGHT], //"DSMO",
&lspr[NOLIGHT], //"DFAK",
&lspr[NOLIGHT], //"FITM",
&lspr[NOLIGHT], //"BANA", &lspr[NOLIGHT], //"BANA",
&lspr[NOLIGHT], //"DBAN",
&lspr[NOLIGHT], //"GSHE", &lspr[NOLIGHT], //"GSHE",
&lspr[NOLIGHT], //"GSTR",
&lspr[NOLIGHT], //"DGSH",
&lspr[NOLIGHT], //"RSHE", &lspr[NOLIGHT], //"RSHE",
&lspr[NOLIGHT], //"RSTR", &lspr[NOLIGHT], //"SSMN",
&lspr[NOLIGHT], //"DRSH",
&lspr[NOLIGHT], //"BOMB",
&lspr[NOLIGHT], //"BLIG", &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 // Free slots
&lspr[NOLIGHT], &lspr[NOLIGHT],

View File

@ -5276,8 +5276,8 @@ static void HWR_ProjectSprite(mobj_t *thing)
// New colormap stuff for skins Tails 06-07-2002 // New colormap stuff for skins Tails 06-07-2002
if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player! if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player!
{ {
if (thing->player && thing->player->kartstuff[k_startimer]) if (thing->player && thing->player->kartstuff[k_invincibilitytimer])
vis->colormap = R_GetTranslationColormap(TC_STARMAN, thing->color, GTC_CACHE); vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE);
else else
{ {
size_t skinnum = (skin_t*)thing->skin-skins; 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", "GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO", "SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
//SRB2kart Sprites //SRB2kart Sprites
"SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA", "SPRG","BSPR","RNDM","KFRE","DRIF","DSMO","FITM","BANA","GSHE","RSHE",
"DBAN","GSHE","DGSH","RSHE","DRSH","BOMB","BLIG","LIGH","SINK","SITR", "SSMN","BLIG","LIGH","SINK","SITR","KBLN","LAKI","POKE","AUDI","DECO",
"KBLN","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB", "DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD","BUMP",
"CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","PBOM" "FLEN","CLAS","PSHW","ARRO","PBOM"
}; };
// Doesn't work with g++, needs actionf_p1 (don't modify this comment) // 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, 23, 3, {NULL}, 0, 0, S_RANDOMITEM1}, // S_RANDOMITEM24
{SPR_RNDM, 0, 1, {A_ItemPop}, 0, 0, S_NULL}, // S_DEADRANDOMITEM {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_RNDM, FF_FULLBRIGHT|24, 5, {NULL}, 0, 0, S_RANDOMITEMPOP2}, // S_RANDOMITEMPOP1
{SPR_RPOP, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_RANDOMITEMPOP3}, // S_RANDOMITEMPOP2 {SPR_RNDM, FF_FULLBRIGHT|25, 5, {NULL}, 0, 0, S_RANDOMITEMPOP3}, // S_RANDOMITEMPOP2
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3 {SPR_RNDM, FF_FULLBRIGHT|26, 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|27, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
{SPR_DRIF, 0, 2, {NULL}, 0, 0, S_DRIFTSPARK2}, // S_DRIFTSPARK1 {SPR_DRIF, 0, 2, {NULL}, 0, 0, S_DRIFTSPARK2}, // S_DRIFTSPARK1
{SPR_DRIF, 1, 2, {NULL}, 0, 0, S_DRIFTSPARK3}, // S_DRIFTSPARK2 {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, 21, 3, {NULL}, 0, 0, S_FAKEITEM23}, // S_FAKEITEM22 // *****
{SPR_FITM, 22, 3, {NULL}, 0, 0, S_FAKEITEM24}, // S_FAKEITEM23 // ***** {SPR_FITM, 22, 3, {NULL}, 0, 0, S_FAKEITEM24}, // S_FAKEITEM23 // *****
{SPR_FITM, 23, 3, {NULL}, 0, 0, S_FAKEITEM1}, // S_FAKEITEM24 // ***** {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_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, 0, 1, {NULL}, 0, 0, S_GREENSHIELD2}, // S_GREENSHIELD1
{SPR_GSHE, 1, 1, {NULL}, 0, 0, S_GREENSHIELD3}, // S_GREENSHIELD2 {SPR_GSHE, 1, 1, {NULL}, 0, 0, S_GREENSHIELD3}, // S_GREENSHIELD2
{SPR_GSHE, 2, 1, {NULL}, 0, 0, S_GREENSHIELD4}, // S_GREENSHIELD3 {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, 5, 1, {NULL}, 0, 0, S_GREENITEM7}, // S_GREENITEM6
{SPR_GSHE, 6, 1, {NULL}, 0, 0, S_GREENITEM8}, // S_GREENITEM7 {SPR_GSHE, 6, 1, {NULL}, 0, 0, S_GREENITEM8}, // S_GREENITEM7
{SPR_GSHE, 7, 1, {NULL}, 0, 0, S_GREENITEM1}, // S_GREENITEM8 {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, 0, 1, {NULL}, 0, 0, S_REDSHIELD2}, // S_REDSHIELD1
{SPR_RSHE, 1, 1, {NULL}, 0, 0, S_REDSHIELD3}, // S_REDSHIELD2 {SPR_RSHE, 1, 1, {NULL}, 0, 0, S_REDSHIELD3}, // S_REDSHIELD2
{SPR_RSHE, 2, 1, {NULL}, 0, 0, S_REDSHIELD4}, // S_REDSHIELD3 {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, 5, 1, {NULL}, 0, 0, S_REDSHIELD7}, // S_REDSHIELD6
{SPR_RSHE, 6, 1, {NULL}, 0, 0, S_REDSHIELD8}, // S_REDSHIELD7 {SPR_RSHE, 6, 1, {NULL}, 0, 0, S_REDSHIELD8}, // S_REDSHIELD7
{SPR_RSHE, 7, 1, {NULL}, 0, 0, S_REDSHIELD1}, // S_REDSHIELD8 {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, 0, 1, {A_JawzChase}, 0, 0, S_REDITEM2}, // S_REDITEM1
{SPR_RSHE, 1, 1, {A_RedShellChase}, 0, 0, S_REDITEM3}, // S_REDITEM2 {SPR_RSHE, 1, 1, {A_JawzChase}, 0, 0, S_REDITEM3}, // S_REDITEM2
{SPR_RSHE, 2, 1, {A_RedShellChase}, 0, 0, S_REDITEM4}, // S_REDITEM3 {SPR_RSHE, 2, 1, {A_JawzChase}, 0, 0, S_REDITEM4}, // S_REDITEM3
{SPR_RSHE, 3, 1, {A_RedShellChase}, 0, 0, S_REDITEM5}, // S_REDITEM4 {SPR_RSHE, 3, 1, {A_JawzChase}, 0, 0, S_REDITEM5}, // S_REDITEM4
{SPR_RSHE, 4, 1, {A_RedShellChase}, 0, 0, S_REDITEM6}, // S_REDITEM5 {SPR_RSHE, 4, 1, {A_JawzChase}, 0, 0, S_REDITEM6}, // S_REDITEM5
{SPR_RSHE, 5, 1, {A_RedShellChase}, 0, 0, S_REDITEM7}, // S_REDITEM6 {SPR_RSHE, 5, 1, {A_JawzChase}, 0, 0, S_REDITEM7}, // S_REDITEM6
{SPR_RSHE, 6, 1, {A_RedShellChase}, 0, 0, S_REDITEM8}, // S_REDITEM7 {SPR_RSHE, 6, 1, {A_JawzChase}, 0, 0, S_REDITEM8}, // S_REDITEM7
{SPR_RSHE, 7, 1, {A_RedShellChase}, 0, 0, S_REDITEM1}, // S_REDITEM8 {SPR_RSHE, 7, 1, {A_JawzChase}, 0, 0, S_REDITEM1}, // S_REDITEM8
{SPR_DRSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADRED {SPR_RSHE, 8, 175, {NULL}, 0, 0, S_NULL}, // S_DEADRED
{SPR_FBLL, 13, 3, {NULL}, 0, 0, S_FIRETRAIL2}, // S_FIRETRAIL1 {SPR_FBLL, 13, 3, {NULL}, 0, 0, S_FIRETRAIL2}, // S_FIRETRAIL1
{SPR_FBLL, 14, 3, {NULL}, 0, 0, S_FIRETRAIL3}, // S_FIRETRAIL2 {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, 20, 3, {NULL}, 0, 0, S_FIRETRAIL9}, // S_FIRETRAIL8
{SPR_FBLL, 21, 3, {NULL}, 0, 0, S_NULL}, // S_FIRETRAIL9 {SPR_FBLL, 21, 3, {NULL}, 0, 0, S_NULL}, // S_FIRETRAIL9
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBSHIELD}, // S_BOMBSHIELD {SPR_SSMN, 4, 1, {NULL}, 0, 0, S_BOMBSHIELD2}, // S_BOMBSHIELD1
{SPR_BOMB, 0, 1, {A_GrenadeRing}, 0, 0, S_BOMBITEM}, // S_BOMBITEM {SPR_SSMN, 5, 1, {NULL}, 0, 0, S_BOMBSHIELD1}, // S_BOMBSHIELD2
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBAIR}, // S_BOMBAIR {SPR_SSMN, 4, 1, {NULL}, 0, 0, S_BOMBAIR2}, // S_BOMBAIR1
{SPR_BOMB, 0, 1, {A_BobombExplode}, MT_BOMBEXPLOSION, 0, S_NULL}, // S_BOMBEXPLODE {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, 0, 2, {NULL}, 0, 0, S_BLUELIGHTNING2}, // S_BLUELIGHTNING1
{SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2 {SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2
{SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3 {SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3
{SPR_BLIG, 3, 2, {NULL}, 0, 0, S_NULL}, // S_BLUELIGHTNING4 {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, 0, 2, {NULL}, 0, 0, S_LIGHTNING2}, // S_LIGHTNING1
{SPR_LIGH, 1, 2, {NULL}, 0, 0, S_LIGHTNING3}, // S_LIGHTNING2 {SPR_LIGH, 1, 2, {NULL}, 0, 0, S_LIGHTNING3}, // S_LIGHTNING2
@ -2863,20 +2865,17 @@ state_t states[NUMSTATES] =
// Above player arrow // Above player arrow
{SPR_ARRO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW {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|1, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_SNEAKER
{SPR_ARRO, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_GREENSHELL
{SPR_ARRO, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BANANA {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|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|5, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_HYUDORO
{SPR_ARRO, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_FEATHER {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_REDSHELL {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_BOBOMB {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_FIREFLOWER {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_TRIPLEGREENSHELL {SPR_ARRO, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_ORBINAUT
{SPR_ARRO, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_TRIPLEBANANA {SPR_ARRO, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_INVINCIBILITY
{SPR_ARRO, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_TRIPLEREDSHELL {SPR_ARRO, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_SIZEUP
{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|15, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_KITCHENSINK {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|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 {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 S_NULL // raisestate
}, },
{ // MT_MUSHROOMTRAIL { // MT_SNEAKERTRAIL
-1, // doomednum -1, // doomednum
S_KARTFIRE1, // spawnstate S_KARTFIRE1, // spawnstate
1, // spawnhealth 1, // spawnhealth
@ -14437,87 +14436,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate 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 { // MT_BANANASHIELD
-1, // doomednum -1, // doomednum
S_BANANAITEM, // spawnstate S_BANANAITEM, // spawnstate
@ -14534,7 +14452,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADBANANA, // deathstate S_DEADBANANA, // deathstate
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
k_banana, // speed 0, // speed
16*FRACUNIT, // radius 16*FRACUNIT, // radius
32*FRACUNIT, // height 32*FRACUNIT, // height
0, // display offset 0, // display offset
@ -14572,87 +14490,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate 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 { // MT_GREENSHIELD
-1, // doomednum -1, // doomednum
S_GREENSHIELD1, // spawnstate S_GREENSHIELD1, // spawnstate
@ -14669,7 +14506,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADGREEN, // deathstate S_DEADGREEN, // deathstate
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
k_greenshell, // speed 10*FRACUNIT, // speed
16*FRACUNIT, // radius 16*FRACUNIT, // radius
32*FRACUNIT, // height 32*FRACUNIT, // height
0, // display offset 0, // display offset
@ -14734,87 +14571,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate 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 { // MT_REDSHIELD
-1, // doomednum -1, // doomednum
S_REDSHIELD1, // spawnstate S_REDSHIELD1, // spawnstate
@ -14831,7 +14587,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_DEADRED, // deathstate S_DEADRED, // deathstate
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
k_redshell, // speed 10*FRACUNIT, // speed
16*FRACUNIT, // radius 16*FRACUNIT, // radius
32*FRACUNIT, // height 32*FRACUNIT, // height
0, // display offset 0, // display offset
@ -14898,7 +14654,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_BOMBSHIELD { // MT_BOMBSHIELD
-1, // doomednum -1, // doomednum
S_BOMBSHIELD, // spawnstate S_BOMBSHIELD1, // spawnstate
1000, // spawnhealth 1000, // spawnhealth
S_NULL, // seestate S_NULL, // seestate
sfx_None, // seesound sfx_None, // seesound
@ -14912,7 +14668,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_BOMBEXPLODE, // deathstate S_BOMBEXPLODE, // deathstate
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
k_bobomb, // speed 10*FRACUNIT, // speed
16*FRACUNIT, // radius 16*FRACUNIT, // radius
32*FRACUNIT, // height 32*FRACUNIT, // height
0, // display offset 0, // display offset
@ -14925,7 +14681,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_BOMBITEM { // MT_BOMBITEM
-1, // doomednum -1, // doomednum
S_BOMBAIR, // spawnstate S_BOMBAIR1, // spawnstate
105, // spawnhealth 105, // spawnhealth
S_NULL, // seestate S_NULL, // seestate
sfx_tossed, // seesound sfx_tossed, // seesound

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@
UINT8 colortranslations[MAXSKINCOLORS][16]; UINT8 colortranslations[MAXSKINCOLORS][16];
extern const char *KartColor_Names[MAXSKINCOLORS]; 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); void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color);
UINT8 K_GetKartColorByName(const char *name); 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_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_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_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); void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y); boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue); INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);

View File

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

View File

@ -1497,25 +1497,25 @@ static menuitem_t OP_MonitorToggleMenu[] =
{ {
// Printing handled by drawing function // Printing handled by drawing function
// Instead of using this for dumb monitors, lets use the new item bools we have :V // 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, "Sneakers", &cv_sneaker, 10},
{IT_STRING | IT_CVAR, NULL, "Triple Mushrooms", &cv_triplemushroom, 18}, {IT_STRING | IT_CVAR, NULL, "Triple Sneakers", &cv_triplesneaker, 18},
{IT_STRING | IT_CVAR, NULL, "Mega Mushrooms", &cv_megashroom, 26}, {IT_STRING | IT_CVAR, NULL, "Rocket Sneakers", &cv_rocketsneaker, 26},
{IT_STRING | IT_CVAR, NULL, "Golden Mushrooms", &cv_goldshroom, 34}, {IT_STRING | IT_CVAR, NULL, "Invinciblity", &cv_invincibility, 34},
{IT_STRING | IT_CVAR, NULL, "Stars", &cv_star, 42}, {IT_STRING | IT_CVAR, NULL, "Bananas", &cv_banana, 42},
{IT_STRING | IT_CVAR, NULL, "Bananas", &cv_banana, 50}, {IT_STRING | IT_CVAR, NULL, "Triple Bananas", &cv_triplebanana, 50},
{IT_STRING | IT_CVAR, NULL, "Triple Bananas", &cv_triplebanana, 58}, {IT_STRING | IT_CVAR, NULL, "Fake Items", &cv_fakeitem, 58},
{IT_STRING | IT_CVAR, NULL, "Fake Items", &cv_fakeitem, 66}, {IT_STRING | IT_CVAR, NULL, "Orbinauts", &cv_orbinaut, 66},
{IT_STRING | IT_CVAR, NULL, "Green Shells", &cv_greenshell, 74}, {IT_STRING | IT_CVAR, NULL, "Triple Orbinauts", &cv_tripleorbinaut, 74},
{IT_STRING | IT_CVAR, NULL, "Red Shells", &cv_redshell, 82}, {IT_STRING | IT_CVAR, NULL, "Jawz", &cv_jawz, 82},
{IT_STRING | IT_CVAR, NULL, "Triple Green Shells", &cv_triplegreenshell, 90}, {IT_STRING | IT_CVAR, NULL, "Dual Jawz", &cv_dualjawz, 90},
{IT_STRING | IT_CVAR, NULL, "Triple Red Shells", &cv_tripleredshell, 98}, {IT_STRING | IT_CVAR, NULL, "Mines", &cv_mine, 98},
{IT_STRING | IT_CVAR, NULL, "Bob-ombs", &cv_bobomb, 106}, {IT_STRING | IT_CVAR, NULL, "Ballhogs", &cv_ballhog, 106},
{IT_STRING | IT_CVAR, NULL, "Fire Flowers", &cv_fireflower, 114}, {IT_STRING | IT_CVAR, NULL, "Self-Propelled Bombs",&cv_selfpropelledbomb,114},
{IT_STRING | IT_CVAR, NULL, "Magnets", &cv_magnet, 122}, {IT_STRING | IT_CVAR, NULL, "Size Up", &cv_sizeup, 122},
{IT_STRING | IT_CVAR, NULL, "Boos", &cv_boo, 130}, {IT_STRING | IT_CVAR, NULL, "Size Down", &cv_sizedown, 130},
{IT_STRING | IT_CVAR, NULL, "Lightning", &cv_lightning, 138}, {IT_STRING | IT_CVAR, NULL, "Lightning Shields", &cv_lightningshield, 138},
{IT_STRING | IT_CVAR, NULL, "Blue Lightning", &cv_blueshell, 146}, {IT_STRING | IT_CVAR, NULL, "Hyudoros", &cv_hyudoro, 146},
{IT_STRING | IT_CVAR, NULL, "Feathers", &cv_feather, 154}, {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_DualAction(mobj_t *actor);
void A_RemoteAction(mobj_t *actor); void A_RemoteAction(mobj_t *actor);
void A_ToggleFlameJet(mobj_t *actor); void A_ToggleFlameJet(mobj_t *actor);
void A_ItemPop(mobj_t *actor); // SRB2kart void A_ItemPop(mobj_t *actor); // SRB2kart
void A_RedShellChase(mobj_t *actor); // SRB2kart void A_JawzChase(mobj_t *actor); // SRB2kart
void A_BobombExplode(mobj_t *actor); // SRB2kart void A_MineExplode(mobj_t *actor); // SRB2kart
void A_OrbitNights(mobj_t *actor); void A_OrbitNights(mobj_t *actor);
void A_GhostMe(mobj_t *actor); void A_GhostMe(mobj_t *actor);
void A_SetObjectState(mobj_t *actor); void A_SetObjectState(mobj_t *actor);
@ -741,7 +741,7 @@ static boolean P_LookForShield(mobj_t *actor)
continue; continue;
// SRB2kart - magnet item // 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_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); P_SetTarget(&actor->tracer, player->mo);
@ -2605,8 +2605,9 @@ void A_MonitorPop(mobj_t *actor)
case MT_QUESTIONBOX: // Random! case MT_QUESTIONBOX: // Random!
{ {
mobjtype_t spawnchance[256]; mobjtype_t spawnchance[256];
INT32 numchoices = 0, i = 0; INT32 numchoices = 0/*, i = 0*/;
/*
#define QUESTIONBOXCHANCES(type, cvar) \ #define QUESTIONBOXCHANCES(type, cvar) \
for (i = cvar.value; i; --i) spawnchance[numchoices++] = type 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); QUESTIONBOXCHANCES(MT_RECYCLETV, cv_recycler);
#undef QUESTIONBOXCHANCES #undef QUESTIONBOXCHANCES
*/
if (numchoices == 0) if (numchoices == 0)
{ {
@ -3613,7 +3615,7 @@ void A_AttractChase(mobj_t *actor)
// Turn flingrings back into regular rings if attracted. // Turn flingrings back into regular rings if attracted.
if (actor->tracer && actor->tracer->player 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) && actor->info->reactiontime && actor->type != (mobjtype_t)actor->info->reactiontime)
{ {
mobj_t *newring; mobj_t *newring;
@ -3830,7 +3832,7 @@ void A_ThrownRing(mobj_t *actor)
P_SetTarget(&actor->tracer, NULL); 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. //&& (actor->tracer->player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT)// Already found someone to follow.
{ {
const INT32 temp = actor->threshold; const INT32 temp = actor->threshold;
@ -3882,7 +3884,7 @@ void A_ThrownRing(mobj_t *actor)
&& actor->target->player->ctfteam == player->ctfteam) && actor->target->player->ctfteam == player->ctfteam)
continue; 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; 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. if (thing == grenade->target && !(grenade->threshold == 0)) // Don't blow up at your owner.
return true; return true;
if (thing->player && (thing->player->kartstuff[k_bootimer] if (thing->player && thing->player->kartstuff[k_hyudorotimer])
|| (thing->player->kartstuff[k_balloon] <= 0 && thing->player->kartstuff[k_comebacktimer]))) return true;
if ((gametype != GT_RACE) && thing->player
&& thing->player->kartstuff[k_balloon] <= 0 && thing->player->kartstuff[k_comebacktimer])
return true; return true;
if ((gametype == GT_CTF || gametype == GT_TEAMMATCH) 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) void A_ItemPop(mobj_t *actor)
{ {
mobj_t *remains; mobj_t *remains;
@ -8149,14 +8154,14 @@ void A_ItemPop(mobj_t *actor)
P_RemoveMobj(actor); P_RemoveMobj(actor);
} }
void A_RedShellChase(mobj_t *actor) void A_JawzChase(mobj_t *actor)
{ {
INT32 c = 0; INT32 c = 0;
INT32 stop; INT32 stop;
player_t *player; player_t *player;
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
if (LUA_CallAction("A_RedShellChase", actor)) if (LUA_CallAction("A_JawzChase", actor))
return; return;
#endif #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 if (gametype == GT_RACE) // Only in races, in match and CTF you should go after any nearby players
{ {
// USER TARGET // 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; 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; mobj_t *mo2;
thinker_t *th; thinker_t *th;
@ -8261,7 +8266,7 @@ void A_BobombExplode(mobj_t *actor)
INT32 locvar1 = var1; INT32 locvar1 = var1;
mobjtype_t type; mobjtype_t type;
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
if (LUA_CallAction("A_BobombExplode", actor)) if (LUA_CallAction("A_MineExplode", actor))
return; return;
#endif #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_GOOP: // Egg Slimer's goop objects
case MT_SPINFIRE: // Elemental Shield flame balls case MT_SPINFIRE: // Elemental Shield flame balls
case MT_MUSHROOMTRAIL: case MT_SNEAKERTRAIL:
case MT_SPIKE: // Floor Spike case MT_SPIKE: // Floor Spike
// Is the object hang from the ceiling? // Is the object hang from the ceiling?
// In that case, swap the planes used. // 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 if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // No balloons in Match
return false; 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; return true;
if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer] if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer]
|| player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off || player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_rocketsneakertimer]) // Item-specific timer going off
return false; return false;
if (player->kartstuff[k_itemroulette] if (player->kartstuff[k_itemroulette]
|| player->kartstuff[k_greenshell] || player->kartstuff[k_triplegreenshell] || player->kartstuff[k_itemamount]
|| player->kartstuff[k_redshell] || player->kartstuff[k_tripleredshell] || player->kartstuff[k_itemheld]) // Item slot already taken up
|| 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
return false; return false;
return true; 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"); str = M_GetText("%s%s's tagging hand %s %s.\n");
break; break;
case MT_SPINFIRE: case MT_SPINFIRE:
case MT_MUSHROOMTRAIL: case MT_SNEAKERTRAIL:
str = M_GetText("%s%s's elemental fire trail %s %s.\n"); str = M_GetText("%s%s's elemental fire trail %s %s.\n");
break; break;
case MT_THROWNBOUNCE: 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 // I wish I knew a better way to do this
if (target->target && target->target->player && target->target->player->mo) if (target->target && target->target->player && target->target->player->mo)
{ {
if (target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_greenshell] & 1) if (target->target->player->kartstuff[k_fakeitem] && target->type == MT_FAKESHIELD)
target->target->player->kartstuff[k_greenshell] &= ~1; target->target->player->kartstuff[k_fakeitem] = 0;
else if (target->type == MT_REDSHIELD && target->target->player->kartstuff[k_redshell] & 1)
target->target->player->kartstuff[k_redshell] &= ~1; if ((target->target->player->kartstuff[k_itemheld])
else if (target->type == MT_BANANASHIELD && target->target->player->kartstuff[k_banana] & 1) && ((target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT)
target->target->player->kartstuff[k_banana] &= ~1; || (target->type == MT_REDSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_JAWZ)
else if (target->type == MT_FAKESHIELD && target->target->player->kartstuff[k_fakeitem] & 1) || (target->type == MT_BANANASHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA)
target->target->player->kartstuff[k_fakeitem] &= ~1; || (target->type == MT_BOMBSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_MINE)))
else if (target->type == MT_BOMBSHIELD && target->target->player->kartstuff[k_bobomb] & 1) {
target->target->player->kartstuff[k_bobomb] &= ~1; if (target->lastlook > 0)
else if (target->type == MT_TRIPLEGREENSHIELD1 && target->target->player->kartstuff[k_triplegreenshell] & 1) target->target->player->kartstuff[k_itemamount] = target->lastlook-1;
target->target->player->kartstuff[k_triplegreenshell] &= ~1; else
else if (target->type == MT_TRIPLEGREENSHIELD2 && target->target->player->kartstuff[k_triplegreenshell] & 2) target->target->player->kartstuff[k_itemamount]--;
target->target->player->kartstuff[k_triplegreenshell] &= ~2; if (!target->target->player->kartstuff[k_itemamount])
else if (target->type == MT_TRIPLEGREENSHIELD3 && target->target->player->kartstuff[k_triplegreenshell] & 4) target->target->player->kartstuff[k_itemheld] = 0;
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;*/
} }
// //
@ -2080,11 +2059,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
// SRB2kart // SRB2kart
if (target->type != MT_PLAYER && !(target->flags & MF_MONITOR) if (target->type != MT_PLAYER && !(target->flags & MF_MONITOR)
&& !(target->type == MT_GREENITEM || target->type == MT_GREENSHIELD && !(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_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_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_FAKEITEM || target->type == MT_FAKESHIELD
|| target->type == MT_FIREBALL)) // kart dead items || target->type == MT_FIREBALL)) // kart dead items
target->flags |= MF_NOGRAVITY; // Don't drop Tails 03-08-2000 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 //{ SRB2kart - special damage sources
player->kartstuff[k_mushroomtimer] = 0; player->kartstuff[k_sneakertimer] = 0;
// Thunder // Thunder
if (damage == 64 && player != source->player) if (damage == 64 && player != source->player)
{ {
// Don't flip out while super! // 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! // Start slipping!
K_SpinPlayer(player, source); 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->mo->destscale = 6*FRACUNIT/8;
player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position]))); 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) if (player->kartstuff[k_growshrinktimer] > 0)
{ {
player->kartstuff[k_growshrinktimer] = 2; 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 // Instant-Death
if (damage == 10000) if (damage == 10000)
P_KillPlayer(player, source, damage); 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; return false;
else else
{ {
if (inflictor && (inflictor->type == MT_GREENITEM || inflictor->type == MT_GREENSHIELD 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_REDITEM || inflictor->type == MT_REDSHIELD || inflictor->type == MT_REDITEMDUD
|| inflictor->type == MT_FAKEITEM || inflictor->type == MT_FAKESHIELD || 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)) || inflictor->player))
{ {
player->kartstuff[k_spinouttype] = 1; player->kartstuff[k_spinouttype] = 1;

View File

@ -655,10 +655,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->type == MT_RANDOMITEM) if (tmthing->type == MT_RANDOMITEM)
return true; return true;
if (tmthing->type == MT_GREENITEM || tmthing->type == MT_REDITEM || tmthing->type == MT_REDITEMDUD || if (tmthing->type == MT_GREENITEM || tmthing->type == MT_REDITEM || tmthing->type == MT_REDITEMDUD
tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD || || 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)
{ {
// see if it went over / under // see if it went over / under
if (tmthing->z > thing->z + thing->height) 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) if (tmthing->health <= 0 || thing->health <= 0)
return true; return true;
if (((tmthing->type == MT_TRIPLEGREENSHIELD1 || tmthing->type == MT_TRIPLEGREENSHIELD2 || tmthing->type == MT_TRIPLEGREENSHIELD3 if ((tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD) && tmthing->lastlook
|| tmthing->type == MT_TRIPLEREDSHIELD1 || tmthing->type == MT_TRIPLEREDSHIELD2 || tmthing->type == MT_TRIPLEREDSHIELD3) && (thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD) && thing->lastlook
&& (thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3
|| thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3))
&& (tmthing->target == thing->target)) // Don't hit each other if you have the same target && (tmthing->target == thing->target)) // Don't hit each other if you have the same target
return true; 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 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_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_BANANAITEM || thing->type == MT_BANANASHIELD
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3
|| thing->type == MT_FIREBALL) || thing->type == MT_FIREBALL)
{ {
// Other Item Damage // Other Item Damage
@ -739,9 +732,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
} }
else if (thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD) else if (thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD)
{ {
if (tmthing->type == MT_GREENSHIELD || tmthing->type == MT_REDSHIELD 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)
{ {
// This Item Damage // This Item Damage
if (tmthing->eflags & MFE_VERTICALFLIP) 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. 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 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) || tmthing->type == MT_FIREBALL)
{ {
// see if it went over / under // see if it went over / under
@ -871,8 +861,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->health <= 0 || thing->health <= 0) if (tmthing->health <= 0 || thing->health <= 0)
return true; return true;
if (((tmthing->type == MT_BANANASHIELD || tmthing->type == MT_TRIPLEBANANASHIELD1 || tmthing->type == MT_TRIPLEBANANASHIELD2 || tmthing->type == MT_TRIPLEBANANASHIELD3) if (((tmthing->type == MT_BANANASHIELD) && (thing->type == MT_BANANASHIELD))
&& (thing->type == MT_BANANASHIELD || thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3))
&& (tmthing->target == thing->target)) // Don't hit each other if you have the same target && (tmthing->target == thing->target)) // Don't hit each other if you have the same target
return true; return true;
@ -899,11 +888,9 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false); P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT); 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 else if (thing->type == MT_BANANAITEM || thing->type == MT_BANANASHIELD
|| thing->type == MT_TRIPLEBANANASHIELD1 || thing->type == MT_TRIPLEBANANASHIELD2 || thing->type == MT_TRIPLEBANANASHIELD3 || thing->type == MT_GREENITEM || thing->type == MT_GREENSHIELD
|| thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD || thing->type == MT_REDSHIELD
|| 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_FIREBALL) || thing->type == MT_FIREBALL)
{ {
// Other Item Damage // Other Item Damage
@ -934,7 +921,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
} }
else if (thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD) 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 // This Item Damage
if (tmthing->eflags & MFE_VERTICALFLIP) if (tmthing->eflags & MFE_VERTICALFLIP)
@ -999,10 +986,10 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false); P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT); 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 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_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3 || thing->type == MT_REDSHIELD
|| thing->type == MT_BOMBSHIELD || 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) || thing->type == MT_FAKEITEM || thing->type == MT_FAKESHIELD)
{ {
// Other Item Damage // Other Item Damage
@ -1073,8 +1060,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_KillMobj(tmthing, thing, thing); P_KillMobj(tmthing, thing, thing);
} }
else if (thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD 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_GREENSHIELD || thing->type == MT_REDSHIELD)
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3)
{ {
P_KillMobj(tmthing, thing, thing); P_KillMobj(tmthing, thing, thing);
@ -1096,11 +1082,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
else if (tmthing->type == MT_PLAYER && else if (tmthing->type == MT_PLAYER &&
(thing->type == MT_GREENSHIELD || thing->type == MT_GREENITEM (thing->type == MT_GREENSHIELD || thing->type == MT_GREENITEM
|| thing->type == MT_REDSHIELD || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD || 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_FAKESHIELD || thing->type == MT_FAKEITEM
|| thing->type == MT_BANANASHIELD || thing->type == MT_BANANAITEM || 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_BOMBSHIELD || thing->type == MT_BOMBITEM
|| thing->type == MT_BOMBEXPLOSION || thing->type == MT_BOMBEXPLOSION
|| thing->type == MT_SINK || thing->type == MT_FIREBALL || 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)) && !(thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD))
return true; return true;
if (thing->type == MT_GREENSHIELD || thing->type == MT_TRIPLEGREENSHIELD1 || thing->type == MT_TRIPLEGREENSHIELD2 || thing->type == MT_TRIPLEGREENSHIELD3 if (thing->type == MT_GREENSHIELD || thing->type == MT_REDSHIELD
|| thing->type == MT_REDSHIELD || thing->type == MT_TRIPLEREDSHIELD1 || thing->type == MT_TRIPLEREDSHIELD2 || thing->type == MT_TRIPLEREDSHIELD3
|| thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD || thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD
|| thing->type == MT_FAKESHIELD || thing->type == MT_FAKEITEM) || 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); 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 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) || thing->type == MT_FIREBALL)
{ {
if ((thing->target == tmthing) && (thing->threshold > 0)) if ((thing->target == tmthing) && (thing->threshold > 0))
@ -1549,9 +1530,9 @@ static boolean PIT_CheckThing(mobj_t *thing)
} }
// SRB2kart - Starpower! // 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); 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); P_DamageMobj(tmthing, thing, thing, 1);
if (G_RingSlingerGametype() && (!G_GametypeHasTeams() || tmthing->player->ctfteam != thing->player->ctfteam)) 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 return true; // underneath
if (thing->player->kartstuff[k_growshrinktimer] || thing->player->kartstuff[k_squishedtimer] 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_hyudorotimer] || thing->player->kartstuff[k_spinouttimer]
|| thing->player->kartstuff[k_startimer] || thing->player->kartstuff[k_justbumped] || thing->player->kartstuff[k_invincibilitytimer] || thing->player->kartstuff[k_justbumped]
|| (gametype != GT_RACE && (thing->player->kartstuff[k_balloon] <= 0 || (gametype != GT_RACE && (thing->player->kartstuff[k_balloon] <= 0
&& (thing->player->kartstuff[k_comebacktimer] || thing->player->kartstuff[k_comebackmode] == 1))) && (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_growshrinktimer] || tmthing->player->kartstuff[k_squishedtimer]
|| tmthing->player->kartstuff[k_bootimer] || tmthing->player->kartstuff[k_spinouttimer] || tmthing->player->kartstuff[k_hyudorotimer] || tmthing->player->kartstuff[k_spinouttimer]
|| tmthing->player->kartstuff[k_startimer] || tmthing->player->kartstuff[k_justbumped] || tmthing->player->kartstuff[k_invincibilitytimer] || tmthing->player->kartstuff[k_justbumped]
|| (gametype != GT_RACE && (tmthing->player->kartstuff[k_balloon] <= 0 || (gametype != GT_RACE && (tmthing->player->kartstuff[k_balloon] <= 0
&& (tmthing->player->kartstuff[k_comebacktimer] || tmthing->player->kartstuff[k_comebackmode] == 1)))) && (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) if (P_IsObjectOnGround(thing) && tmthing->momz < 0)
{ {
K_KartBouncing(tmthing, thing, true, false); 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_StealBalloon(tmthing->player, thing->player, false);
K_SpinPlayer(thing->player, tmthing); K_SpinPlayer(thing->player, tmthing);
@ -1689,7 +1670,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
else if (P_IsObjectOnGround(tmthing) && thing->momz < 0) else if (P_IsObjectOnGround(tmthing) && thing->momz < 0)
{ {
K_KartBouncing(thing, tmthing, true, false); 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_StealBalloon(thing->player, tmthing->player, false);
K_SpinPlayer(tmthing->player, thing); K_SpinPlayer(tmthing->player, thing);
@ -1700,12 +1681,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (gametype != GT_RACE) 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_StealBalloon(thing->player, tmthing->player, false);
K_SpinPlayer(tmthing->player, thing); 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_StealBalloon(tmthing->player, thing->player, false);
K_SpinPlayer(thing->player, tmthing); 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 if (wasflip == !(mo->eflags & MFE_VERTICALFLIP)) // note!! == ! is not equivalent to != here - turns numeric into bool this way
P_PlayerFlip(mo); P_PlayerFlip(mo);
if (mo->player->kartstuff[k_feather] & 2) if (mo->player->kartstuff[k_pogospring])
gravityadd = FixedMul(gravityadd, 5*FRACUNIT/2); gravityadd = FixedMul(gravityadd, 5*FRACUNIT/2);
} }
else else
@ -1741,7 +1741,7 @@ void P_XYMovement(mobj_t *mo)
if (player->bot) if (player->bot)
B_MoveBlocked(player); B_MoveBlocked(player);
} }
//{ SRB2kart - Red Shell //{ SRB2kart - Jawz
if (mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD) if (mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD)
{ {
if (mo->health == 1) if (mo->health == 1)
@ -6518,7 +6518,7 @@ void P_MobjThinker(mobj_t *mobj)
return; return;
} }
if (mobj->target->player->kartstuff[k_bootimer] > 0) if (mobj->target->player->kartstuff[k_hyudorotimer] > 0)
{ {
if ((mobj->target->player == &players[displayplayer] if ((mobj->target->player == &players[displayplayer]
|| (splitscreen && mobj->target->player == &players[secondarydisplayplayer]) || (splitscreen && mobj->target->player == &players[secondarydisplayplayer])
@ -6528,7 +6528,7 @@ void P_MobjThinker(mobj_t *mobj)
|| (splitscreen && mobj->target->player == &players[secondarydisplayplayer]) || (splitscreen && mobj->target->player == &players[secondarydisplayplayer])
|| (splitscreen > 1 && mobj->target->player == &players[thirddisplayplayer]) || (splitscreen > 1 && mobj->target->player == &players[thirddisplayplayer])
|| (splitscreen > 2 && mobj->target->player == &players[fourthdisplayplayer])) || (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) if (leveltime & 1)
mobj->flags2 |= MF2_DONTDRAW; mobj->flags2 |= MF2_DONTDRAW;
@ -6538,7 +6538,7 @@ void P_MobjThinker(mobj_t *mobj)
else else
mobj->flags2 |= MF2_DONTDRAW; 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; mobj->flags2 &= ~MF2_DONTDRAW;
} }
@ -6592,15 +6592,6 @@ void P_MobjThinker(mobj_t *mobj)
case MT_BANANASHIELD: case MT_BANANASHIELD:
case MT_FAKESHIELD: case MT_FAKESHIELD:
case MT_BOMBSHIELD: 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 if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
&& mobj->target->player->health > 0 && !mobj->target->player->spectator) && 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. 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. //mobj->angle += FixedAngle(12*FRACUNIT); // mobj's actual speed.
if (mobj->type == MT_TRIPLEGREENSHIELD1 || mobj->type == MT_TRIPLEGREENSHIELD2 || mobj->type == MT_TRIPLEGREENSHIELD3 if ((mobj->type == MT_GREENSHIELD || mobj->type == MT_REDSHIELD) && mobj->lastlook > 0)
|| mobj->type == MT_TRIPLEREDSHIELD1 || mobj->type == MT_TRIPLEREDSHIELD2 || mobj->type == MT_TRIPLEREDSHIELD3)
mobj->angle += FixedAngle(mobj->info->speed); 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); 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); mobj->angle = (mobj->target->angle + ANGLE_225);
else else
mobj->angle = (mobj->target->angle + ANGLE_180); mobj->angle = (mobj->target->angle + ANGLE_180);
@ -6669,20 +6659,13 @@ void P_MobjThinker(mobj_t *mobj)
mobj->momx = mobj->momy = 0; mobj->momx = mobj->momy = 0;
// Was this so hard? // Was this so hard?
if ((mobj->type == MT_GREENSHIELD && !(mobj->target->player->kartstuff[k_greenshell] & 1)) if ((mobj->type == MT_GREENSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_ORBINAUT)
|| (mobj->type == MT_REDSHIELD && !(mobj->target->player->kartstuff[k_redshell] & 1)) || (mobj->type == MT_REDSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_JAWZ)
|| (mobj->type == MT_BANANASHIELD && !(mobj->target->player->kartstuff[k_banana] & 1)) || (mobj->type == MT_BANANASHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_BANANA)
|| (mobj->type == MT_TRIPLEGREENSHIELD1 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 1)) || (mobj->type == MT_BOMBSHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_MINE)
|| (mobj->type == MT_TRIPLEGREENSHIELD2 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 2)) || (mobj->type == MT_FAKESHIELD && !mobj->target->player->kartstuff[k_fakeitem])
|| (mobj->type == MT_TRIPLEGREENSHIELD3 && !(mobj->target->player->kartstuff[k_triplegreenshell] & 4)) || (mobj->type != MT_FAKESHIELD && !mobj->target->player->kartstuff[k_itemheld])
|| (mobj->type == MT_TRIPLEREDSHIELD1 && !(mobj->target->player->kartstuff[k_tripleredshell] & 1)) || (mobj->lastlook > 0 && mobj->target->player->kartstuff[k_itemamount] < mobj->lastlook))
|| (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)))
{ {
P_RemoveMobj(mobj); P_RemoveMobj(mobj);
return; return;
@ -6819,26 +6802,30 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->state != &states[S_PLAYERARROW_ROULETTE]) // don't reset FF_ANIMATE if (mobj->state != &states[S_PLAYERARROW_ROULETTE]) // don't reset FF_ANIMATE
P_SetMobjState(mobj, S_PLAYERARROW_ROULETTE); P_SetMobjState(mobj, S_PLAYERARROW_ROULETTE);
} }
else if (mobj->target->player->kartstuff[k_kitchensink]) P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK); else
else if (mobj->target->player->kartstuff[k_megashroom] == 1 {
|| (mobj->target->player->kartstuff[k_growshrinktimer] > 1 switch(mobj->target->player->kartstuff[k_itemtype])
&& (leveltime & 1))) P_SetMobjState(mobj, S_PLAYERARROW_MEGASHROOM); {
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 case KITEM_KITCHENSINK: P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK); break;
&& !(leveltime & 1)) P_SetMobjState(mobj, S_PLAYERARROW_EMPTY); // S_INVISIBLE case KITEM_SIZEUP: P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP); break;
else if (mobj->target->player->kartstuff[k_star] == 1) P_SetMobjState(mobj, S_PLAYERARROW_STAR); case KITEM_INVINCIBILITY: P_SetMobjState(mobj, S_PLAYERARROW_INVINCIBILITY); break;
else if (mobj->target->player->kartstuff[k_tripleredshell]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEREDSHELL); case KITEM_ORBINAUT: P_SetMobjState(mobj, S_PLAYERARROW_ORBINAUT); break;
else if (mobj->target->player->kartstuff[k_triplebanana]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEBANANA); case KITEM_BALLHOG: P_SetMobjState(mobj, S_PLAYERARROW_BALLHOG); break;
else if (mobj->target->player->kartstuff[k_triplegreenshell]) P_SetMobjState(mobj, S_PLAYERARROW_TRIPLEGREENSHELL); case KITEM_MINE: P_SetMobjState(mobj, S_PLAYERARROW_MINE); break;
else if (mobj->target->player->kartstuff[k_fireflower]) P_SetMobjState(mobj, S_PLAYERARROW_FIREFLOWER); case KITEM_JAWZ: P_SetMobjState(mobj, S_PLAYERARROW_JAWZ); break;
else if (mobj->target->player->kartstuff[k_bobomb]) P_SetMobjState(mobj, S_PLAYERARROW_BOBOMB); case KITEM_POGOSPRING: P_SetMobjState(mobj, S_PLAYERARROW_POGOSPRING); break;
else if (mobj->target->player->kartstuff[k_redshell]) P_SetMobjState(mobj, S_PLAYERARROW_REDSHELL); case KITEM_HYUDORO: P_SetMobjState(mobj, S_PLAYERARROW_HYUDORO); break;
else if (mobj->target->player->kartstuff[k_feather] & 1) P_SetMobjState(mobj, S_PLAYERARROW_FEATHER); case KITEM_FAKE: P_SetMobjState(mobj, S_PLAYERARROW_FAKEITEM); break;
else if (mobj->target->player->kartstuff[k_boo] == 1) P_SetMobjState(mobj, S_PLAYERARROW_BOO); case KITEM_BANANA: P_SetMobjState(mobj, S_PLAYERARROW_BANANA); break;
else if (mobj->target->player->kartstuff[k_fakeitem] & 2) P_SetMobjState(mobj, S_PLAYERARROW_FAKEITEM); case KITEM_SNEAKER: P_SetMobjState(mobj, S_PLAYERARROW_SNEAKER); break;
else if (mobj->target->player->kartstuff[k_banana]) P_SetMobjState(mobj, S_PLAYERARROW_BANANA); default: P_SetMobjState(mobj, S_PLAYERARROW); break; // S_INVISIBLE
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
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, 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); players[displayplayer].mo->y-mobj->target->y)), RING_DIST), mobj->target->scale);
@ -7871,14 +7858,18 @@ void P_MobjThinker(mobj_t *mobj)
mobj->threshold--; mobj->threshold--;
break; break;
case MT_BOMBITEM: 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) if (mobj->momx || mobj->momy)
P_SpawnGhostMobj(mobj); P_SpawnGhostMobj(mobj);
if (mobj->z <= mobj->floorz) if (mobj->z <= mobj->floorz)
{ {
if (mobj->health > mobj->info->spawnhealth-1) if (mobj->health > mobj->info->spawnhealth-1)
{ {
if (mobj->state == &states[S_BOMBAIR]) if (mobj->state == &states[S_BOMBAIR1] || mobj->state == &states[S_BOMBAIR2])
P_SetMobjState(mobj, S_BOMBITEM); P_SetMobjState(mobj, S_BOMBDEPLOY1);
mobj->momx = mobj->momy = 0; mobj->momx = mobj->momy = 0;
S_StartSound(mobj, mobj->info->activesound); S_StartSound(mobj, mobj->info->activesound);
@ -7979,7 +7970,7 @@ void P_MobjThinker(mobj_t *mobj)
#endif #endif
break; break;
case MT_SPINFIRE: case MT_SPINFIRE:
case MT_MUSHROOMTRAIL: case MT_SNEAKERTRAIL:
if (mobj->eflags & MFE_VERTICALFLIP) if (mobj->eflags & MFE_VERTICALFLIP)
mobj->z = mobj->ceilingz - mobj->height; mobj->z = mobj->ceilingz - mobj->height;
else 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_FALLINGROCK:
//case MT_RANDOMITEM: //case MT_RANDOMITEM:
case MT_BANANAITEM: case MT_BANANASHIELD: case MT_BANANAITEM: case MT_BANANASHIELD:
case MT_TRIPLEBANANASHIELD1: case MT_TRIPLEBANANASHIELD2: case MT_TRIPLEBANANASHIELD3:
case MT_GREENITEM: case MT_GREENSHIELD: 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_REDITEM: case MT_REDSHIELD: case MT_REDITEMDUD:
case MT_TRIPLEREDSHIELD1: case MT_TRIPLEREDSHIELD2: case MT_TRIPLEREDSHIELD3:
case MT_BATTLEBALLOON: case MT_FIREBALL: case MT_BATTLEBALLOON: case MT_FIREBALL:
case MT_FAKEITEM: case MT_FAKESHIELD: case MT_FAKEITEM: case MT_FAKESHIELD:
case MT_BOMBITEM: case MT_BOMBSHIELD: 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 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)); 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); K_DoBouncePad(player->mo, 0);
} }
break; break;
@ -3959,14 +3959,14 @@ DoneSection2:
// P_SetPlayerMobjState(player->mo, S_PLAY_FALL1); // P_SetPlayerMobjState(player->mo, S_PLAY_FALL1);
break; break;
case 6: // SRB2kart 190117 - Mushroom Boost Panel case 6: // SRB2kart 190117 - Sneaker Boost Panel
if (roversector || P_MobjReadyToTrigger(player->mo, sector)) if (roversector || P_MobjReadyToTrigger(player->mo, sector))
{ {
if (!player->kartstuff[k_floorboost]) if (!player->kartstuff[k_floorboost])
player->kartstuff[k_floorboost] = 3; player->kartstuff[k_floorboost] = 3;
else else
player->kartstuff[k_floorboost] = 2; player->kartstuff[k_floorboost] = 2;
K_DoMushroom(player, false, false); K_DoSneaker(player, false, false);
} }
break; break;
@ -7184,8 +7184,8 @@ void T_Friction(friction_t *f)
// friction works for all mobj's // friction works for all mobj's
// (or at least MF_PUSHABLEs, which is all I care about anyway) // (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 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_invincibilitytimer] == 0 && thing->player->kartstuff[k_hyudorotimer] == 0
&& thing->player->kartstuff[k_mushroomtimer] == 0 && thing->player->kartstuff[k_growshrinktimer] <= 0))) && thing->player->kartstuff[k_sneakertimer] == 0 && thing->player->kartstuff[k_growshrinktimer] <= 0)))
{ {
if (f->roverfriction) 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. // SRB2kart - We have some different powers than vanilla, some of which tweak the music.
if (!player->exiting) if (!player->exiting)
{ {
// Item - Mega Mushroom // Item - Size Up
if (player->kartstuff[k_growshrinktimer] > 1) if (player->kartstuff[k_growshrinktimer] > 1)
S_ChangeMusicInternal("mega", true); S_ChangeMusicInternal("mega", true);
// Item - Star // Item - Star
else if (player->kartstuff[k_startimer] > 1) else if (player->kartstuff[k_invincibilitytimer] > 1)
S_ChangeMusicInternal("minvnc", false); S_ChangeMusicInternal("minvnc", false);
// Event - Final Lap // Event - Final Lap
@ -2262,7 +2262,7 @@ static void P_CheckUnderwaterAndSpaceTimer(player_t *player)
// //
static void P_CheckInvincibilityTimer(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; return;
//if (mariomode && !player->powers[pw_super]) // SRB2kart //if (mariomode && !player->powers[pw_super]) // SRB2kart
@ -2275,7 +2275,7 @@ static void P_CheckInvincibilityTimer(player_t *player)
} }
// Resume normal music stuff. // 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]) 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. // Do not let the player control movement if not onground.
onground = P_IsObjectOnGround(player->mo); 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 // 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_feather] & 2) if (player->kartstuff[k_pogospring])
onground = true; onground = true;
player->aiming = cmd->aiming<<FRACBITS; player->aiming = cmd->aiming<<FRACBITS;
@ -4799,9 +4799,9 @@ static void P_3dMovement(player_t *player)
else else
topspeed = normalspd; 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; thrustfactor = player->thrustfactor*3;
else else
thrustfactor = player->thrustfactor*2; thrustfactor = player->thrustfactor*2;
@ -6775,7 +6775,7 @@ static void P_MovePlayer(player_t *player)
{ {
K_KartMoveAnimation(player); K_KartMoveAnimation(player);
if (player->kartstuff[k_feather] & 2) if (player->kartstuff[k_pogospring])
player->frameangle += ANGLE_22h; player->frameangle += ANGLE_22h;
else else
player->frameangle = player->mo->angle; player->frameangle = player->mo->angle;
@ -7071,7 +7071,7 @@ static void P_MovePlayer(player_t *player)
//////////////////////////// ////////////////////////////
// SRB2kart - Drifting smoke and fire // 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); K_SpawnDriftTrail(player);
/* // SRB2kart - nadah /* // SRB2kart - nadah
@ -7806,10 +7806,7 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
//{ SRB2kart //{ SRB2kart
if (mo->type == MT_GREENITEM || mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD if (mo->type == MT_GREENITEM || mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD
|| mo->type == MT_GREENSHIELD || mo->type == MT_REDSHIELD || 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_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_FAKEITEM || mo->type == MT_FAKESHIELD
|| mo->type == MT_FIREBALL) || mo->type == MT_FIREBALL)
{ {
@ -9518,7 +9515,7 @@ void P_PlayerThink(player_t *player)
#if 1 #if 1
// "Blur" a bit when you have speed shoes and are going fast enough // "Blur" a bit when you have speed shoes and are going fast enough
if ((player->powers[pw_super] || player->powers[pw_sneakers] 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)) && (player->speed + abs(player->mo->momz)) > FixedMul(20*FRACUNIT,player->mo->scale))
{ {
mobj_t *gmobj = P_SpawnGhostMobj(player->mo); mobj_t *gmobj = P_SpawnGhostMobj(player->mo);
@ -9665,7 +9662,7 @@ void P_PlayerThink(player_t *player)
|| (splitscreen && player == &players[secondarydisplayplayer]) || (splitscreen && player == &players[secondarydisplayplayer])
|| (splitscreen > 1 && player == &players[thirddisplayplayer]) || (splitscreen > 1 && player == &players[thirddisplayplayer])
|| (splitscreen > 2 && player == &players[fourthdisplayplayer])) || (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))) && (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)) 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 BOSS_TT_CACHE_INDEX (MAXSKINS + 1)
#define METALSONIC_TT_CACHE_INDEX (MAXSKINS + 2) #define METALSONIC_TT_CACHE_INDEX (MAXSKINS + 2)
#define ALLWHITE_TT_CACHE_INDEX (MAXSKINS + 3) #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 SKIN_RAMP_LENGTH 16
#define DEFAULT_STARTTRANSCOLOR 160 #define DEFAULT_STARTTRANSCOLOR 160
#define NUM_PALETTE_ENTRIES 256 #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_BOSS) skintableindex = BOSS_TT_CACHE_INDEX;
else if (skinnum == TC_METALSONIC) skintableindex = METALSONIC_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_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; else skintableindex = skinnum;
if (flags & GTC_CACHE) if (flags & GTC_CACHE)

View File

@ -107,7 +107,7 @@ extern lumpnum_t viewborderlump[8];
#define TC_BOSS -2 #define TC_BOSS -2
#define TC_METALSONIC -3 // For Metal Sonic battle #define TC_METALSONIC -3 // For Metal Sonic battle
#define TC_ALLWHITE -4 // For Cy-Brak-demon #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. // Initialize color translation tables, for player rendering etc.
void R_InitTranslationTables(void); void R_InitTranslationTables(void);

View File

@ -827,8 +827,8 @@ static void R_DrawVisSprite(vissprite_t *vis)
dc_transmap = vis->transmap; 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->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]) if (vis->mobj->player && vis->mobj->player->kartstuff[k_invincibilitytimer])
dc_translation = R_GetTranslationColormap(TC_STARMAN, vis->mobj->color, GTC_CACHE); dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else else
{ {
size_t skinnum = (skin_t*)vis->mobj->skin-skins; 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 // 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->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
{ {
if (vis->mobj->player && vis->mobj->player->kartstuff[k_startimer]) if (vis->mobj->player && vis->mobj->player->kartstuff[k_invincibilitytimer])
dc_translation = R_GetTranslationColormap(TC_STARMAN, vis->mobj->color, GTC_CACHE); dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else else
{ {
size_t skinnum = (skin_t*)vis->mobj->skin-skins; size_t skinnum = (skin_t*)vis->mobj->skin-skins;