From b3d006b093480f6944e5b5f5cf6f0a7b9f713cf1 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 17 Apr 2021 00:27:13 +0100 Subject: [PATCH 1/6] structs gunched --- src/d_clisrv.c | 11 +- src/d_netcmd.c | 31 +- src/d_player.h | 518 ++++--------- src/deh_lua.c | 36 - src/deh_soc.c | 18 - src/deh_tables.c | 243 +----- src/deh_tables.h | 1 - src/doomstat.h | 4 +- src/f_finale.c | 4 +- src/g_demo.c | 31 +- src/g_game.c | 139 ++-- src/hardware/hw_main.c | 3 +- src/hardware/hw_md2.c | 2 +- src/hu_stuff.c | 6 +- src/info.c | 70 +- src/info.h | 8 - src/k_battle.c | 157 +--- src/k_battle.h | 2 +- src/k_bot.c | 16 +- src/k_botitem.c | 82 +- src/k_botsearch.c | 30 +- src/k_collide.c | 58 +- src/k_grandprix.c | 8 +- src/k_hud.c | 110 +-- src/k_kart.c | 1623 +++++++++++++++++++--------------------- src/k_respawn.c | 22 +- src/k_respawn.h | 6 +- src/lua_baselib.c | 38 - src/lua_hook.h | 2 - src/lua_libs.h | 2 - src/lua_playerlib.c | 688 ++++++++--------- src/lua_script.c | 3 +- src/m_cheat.c | 18 +- src/m_cheat.h | 1 - src/p_enemy.c | 261 ++----- src/p_floor.c | 2 +- src/p_inter.c | 321 ++------ src/p_local.h | 8 - src/p_map.c | 50 +- src/p_mobj.c | 440 ++--------- src/p_mobj.h | 2 +- src/p_saveg.c | 358 +++++---- src/p_saveg.h | 1 - src/p_setup.c | 39 +- src/p_setup.h | 1 - src/p_slopes.c | 10 +- src/p_spec.c | 72 +- src/p_tick.c | 20 +- src/p_user.c | 475 +++--------- src/r_patchrotation.c | 2 +- src/st_stuff.c | 2 +- src/y_inter.c | 10 +- 52 files changed, 2153 insertions(+), 3912 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 377bc8740..76606bcd4 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1051,15 +1051,6 @@ static void SV_SendPlayerInfo(INT32 node) // Extra data netbuffer->u.playerinfo[i].data = 0; //players[i].skincolor; - - if (players[i].pflags & PF_TAGIT) - netbuffer->u.playerinfo[i].data |= 0x20; - - if (players[i].gotflag) - netbuffer->u.playerinfo[i].data |= 0x40; - - if (players[i].powers[pw_super]) - netbuffer->u.playerinfo[i].data |= 0x80; } HSendPacket(node, false, 0, sizeof(plrinfo) * MSCOMPAT_MAXPLAYERS); @@ -4790,7 +4781,7 @@ static INT16 Consistancy(void) { ret += players[i].mo->x; ret -= players[i].mo->y; - ret += players[i].kartstuff[k_itemtype]; // powers[pw_shield] + ret += players[i].ktemp_itemtype; ret *= i+1; } } diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 70ebde1fb..121822f3b 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1006,7 +1006,6 @@ void D_RegisterClientCommands(void) // add cheat commands COM_AddCommand("noclip", Command_CheatNoClip_f); COM_AddCommand("god", Command_CheatGod_f); - COM_AddCommand("notarget", Command_CheatNoTarget_f); COM_AddCommand("setrings", Command_Setrings_f); COM_AddCommand("setlives", Command_Setlives_f); COM_AddCommand("devmode", Command_Devmode_f); @@ -1418,7 +1417,7 @@ static void SendNameAndColor(UINT8 n) player->skincolor = cv_playercolor[n].value; - if (player->mo && !player->powers[pw_dye]) + if (player->mo && !player->ktemp_dye) player->mo->color = player->skincolor; // Update follower for local games: @@ -1879,7 +1878,7 @@ static INT32 FindPlayerByPlace(INT32 place) for (playernum = 0; playernum < MAXPLAYERS; ++playernum) if (playeringame[playernum]) { - if (players[playernum].kartstuff[k_position] == place) + if (players[playernum].ktemp_position == place) { return playernum; } @@ -1903,7 +1902,7 @@ static void GetViewablePlayerPlaceRange(INT32 *first, INT32 *last) for (i = 0; i < MAXPLAYERS; ++i) if (G_CouldView(i)) { - place = players[i].kartstuff[k_position]; + place = players[i].ktemp_position; if (place < (*first)) (*first) = place; if (place > (*last)) @@ -2974,7 +2973,7 @@ static void Command_Respawn(void) } // todo: this probably isnt necessary anymore with v2 - if (players[consoleplayer].mo && (P_PlayerInPain(&players[consoleplayer]) || spbplace == players[consoleplayer].kartstuff[k_position])) // KART: Nice try, but no, you won't be cheesing spb anymore (x2) + if (players[consoleplayer].mo && (P_PlayerInPain(&players[consoleplayer]) || spbplace == players[consoleplayer].ktemp_position)) // KART: Nice try, but no, you won't be cheesing spb anymore (x2) { CONS_Printf(M_GetText("Nice try.\n")); return; @@ -2989,7 +2988,7 @@ static void Got_Respawn(UINT8 **cp, INT32 playernum) INT32 respawnplayer = READINT32(*cp); // You can't respawn someone else. Nice try, there. - if (respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].kartstuff[k_position]) // srb2kart: "|| (!(gametyperules & GTR_CIRCUIT))" + if (respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].ktemp_position) // srb2kart: "|| (!(gametyperules & GTR_CIRCUIT))" { CONS_Alert(CONS_WARNING, M_GetText("Illegal respawn command received from %s\n"), player_names[playernum]); if (server) @@ -3144,7 +3143,7 @@ static void HandleTeamChangeCommand(UINT8 localplayer) if (players[g_localplayers[localplayer]].spectator) error = !(NetPacket.packet.newteam || (players[g_localplayers[localplayer]].pflags & PF_WANTSTOJOIN)); // :lancer: else if (G_GametypeHasTeams()) - error = (NetPacket.packet.newteam == (unsigned)players[g_localplayers[localplayer]].ctfteam); + error = (NetPacket.packet.newteam == players[g_localplayers[localplayer]].ctfteam); else if (G_GametypeHasSpectators() && !players[g_localplayers[localplayer]].spectator) error = (NetPacket.packet.newteam == 3); #ifdef PARANOIA @@ -3260,7 +3259,7 @@ static void Command_ServerTeamChange_f(void) if (G_GametypeHasTeams()) { - if (NetPacket.packet.newteam == (unsigned)players[NetPacket.packet.playernum].ctfteam || + if (NetPacket.packet.newteam == players[NetPacket.packet.playernum].ctfteam || (players[NetPacket.packet.playernum].spectator && !NetPacket.packet.newteam)) error = true; } @@ -3437,7 +3436,7 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) displayplayers[0] = consoleplayer; } - if (G_GametypeHasTeams()) + /*if (G_GametypeHasTeams()) { if (NetPacket.packet.newteam) { @@ -3445,10 +3444,10 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) for (i = 0; i <= splitscreen; i++) { if (playernum == g_localplayers[i]) //CTF and Team Match colors. - CV_SetValue(&cv_playercolor[i], NetPacket.packet.newteam + 5); + CV_SetValue(&cv_playercolor[i], NetPacket.packet.newteam + 5); - -this calculation is totally wrong } } - } + }*/ if (gamestate != GS_LEVEL) return; @@ -3460,7 +3459,7 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) { if (gametyperules & GTR_BUMPERS) // SRB2kart { - players[playernum].marescore = 0; + players[playernum].roundscore = 0; K_CalculateBattleWanted(); } @@ -4861,8 +4860,6 @@ static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum) int item; int amt; - INT32 *kartstuff; - item = READSINT8 (*cp); amt = READUINT8 (*cp); @@ -4879,10 +4876,8 @@ static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum) return; } - kartstuff = players[playernum].kartstuff; - - kartstuff[k_itemtype] = item; - kartstuff[k_itemamount] = amt; + players[playernum].ktemp_itemtype = item; + players[playernum].ktemp_itemamount = amt; } /** Prints the number of displayplayers[0]. diff --git a/src/d_player.h b/src/d_player.h index 08a0f1cde..2ce713289 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -58,54 +58,48 @@ typedef enum // typedef enum { - PF_FAULT = 1, - - // Cheats - PF_GODMODE = 1<<4, - PF_NOCLIP = 1<<5, - PF_INVIS = 1<<6, - // True if button down last tic. - PF_ATTACKDOWN = 1<<7, - PF_ACCELDOWN = 1<<8, - PF_BRAKEDOWN = 1<<9, - PF_WPNDOWN = 1<<10, // unused + PF_ATTACKDOWN = 1, + PF_ACCELDOWN = 1<<1, + PF_BRAKEDOWN = 1<<2, + PF_WPNDOWN = 1<<3, // reserved - gonna turn this into lookback when i'm done with all the major reengineering - // Unmoving states - PF_STASIS = 1<<11, // Player is not allowed to move - PF_JUMPSTASIS = 1<<12, // unused + // Accessibility and cheats + PF_KICKSTARTACCEL = 1<<4, // Is accelerate in kickstart mode? + PF_GODMODE = 1<<5, + PF_NOCLIP = 1<<6, - // SRB2Kart: Spectator that wants to join - PF_WANTSTOJOIN = 1<<13, + PF_WANTSTOJOIN = 1<<7, // Spectator that wants to join - // Character action status - PF_STARTJUMP = 1<<14, // unused - PF_JUMPED = 1<<15, // unused - PF_NOJUMPDAMAGE = 1<<16, // unused - PF_SPINNING = 1<<17, // unused - PF_STARTDASH = 1<<18, // unused - PF_THOKKED = 1<<19, // unused - PF_SHIELDABILITY = 1<<20, // unused - PF_GLIDING = 1<<21, // unused - PF_BOUNCING = 1<<22, // unused + PF_STASIS = 1<<8, // Player is not allowed to move + PF_FAULT = 1<<9, // F A U L T + PF_ELIMINATED = 1<<10, // Battle-style elimination, no extra penalty + PF_NOCONTEST = 1<<11, // Did not finish (last place explosion) + PF_LOSTLIFE = 1<<12, // Do not lose life more than once - // Sliding (usually in water) like Labyrinth/Oil Ocean - PF_SLIDING = 1<<23, + PF_RINGLOCK = 1<<13, // Prevent picking up rings while SPB is locked on - // NiGHTS stuff - PF_TRANSFERTOCLOSEST = 1<<24, // unused - PF_DRILLING = 1<<25, // unused + // The following four flags are mutually exclusive, although they can also all be off at the same time. If we ever run out of pflags, eventually turn them into a seperate five(+) mode UINT8..? + PF_USERINGS = 1<<14, // Have to be not holding the item button to change from using rings to using items (or vice versa) - prevents weirdness + PF_ITEMOUT = 1<<15, // Are you holding an item out? + PF_EGGMANOUT = 1<<16, // Eggman mark held, separate from PF_ITEMOUT so it doesn't stop you from getting items + PF_HOLDREADY = 1<<17, // Hold button-style item is ready to activate - // Gametype-specific stuff - PF_GAMETYPEOVER = 1<<26, // Race time over - PF_TAGIT = 1<<27, // unused + PF_DRIFTINPUT = 1<<18, // Drifting! + PF_GETSPARKS = 1<<19, // Can get sparks + PF_DRIFTEND = 1<<20, // Drift has ended, used to adjust character angle after drift + PF_BRAKEDRIFT = 1<<21, // Helper for brake-drift spark spawning - /*** misc ***/ - PF_KICKSTARTACCEL = 1<<28, // Accessibility feature - is accelerate in kickstart mode? - PF_CANCARRY = 1<<29, // unused - PF_HITFINISHLINE = 1<<30, // Already hit the finish line this tic + PF_AIRFAILSAFE = 1<<22, // Whenever or not try the air boost + PF_TRICKDELAY = 1<<23, // Prevent tricks until control stick is neutral - // up to 1<<31 is free, but try to hit unused stuff first + PF_TUMBLELASTBOUNCE = 1<<24, // One more time for the funny + PF_TUMBLESOUND = 1<<25, // Don't play more than once + + PF_HITFINISHLINE = 1<<26, // Already hit the finish line this tic + PF_WRONGWAY = 1<<27, // Moving the wrong way with respect to waypoints? + + // up to 1<<31 is free } pflags_t; typedef enum @@ -119,104 +113,13 @@ typedef enum PA_HURT } panim_t; -// -// All of the base srb2 shields are either a single constant, -// or use damagetype-protecting flags applied to a constant, -// or are the force shield (which does everything weirdly). -// -// Base flags by themselves aren't used so modders can make -// abstract, ability-less shields should they so choose. -// -typedef enum -{ - SH_NONE = 0, - - // Shield flags - SH_PROTECTFIRE = 0x400, - SH_PROTECTWATER = 0x800, - SH_PROTECTELECTRIC = 0x1000, - SH_PROTECTSPIKE = 0x2000, // cactus shield one day? thanks, subarashii - //SH_PROTECTNUKE = 0x4000, // intentionally no hardcoded defense against nukes - - // Indivisible shields - SH_PITY = 1, // the world's most basic shield ever, given to players who suck at Match - SH_WHIRLWIND, - SH_ARMAGEDDON, - SH_PINK, // PITY IN PINK! - - // Normal shields that use flags - SH_ATTRACT = SH_PITY|SH_PROTECTELECTRIC, - SH_ELEMENTAL = SH_PITY|SH_PROTECTFIRE|SH_PROTECTWATER, - - // Sonic 3 shields - SH_FLAMEAURA = SH_PITY|SH_PROTECTFIRE, - SH_BUBBLEWRAP = SH_PITY|SH_PROTECTWATER, - SH_THUNDERCOIN = SH_WHIRLWIND|SH_PROTECTELECTRIC, - - // The force shield uses the lower 8 bits to count how many extra hits are left. - SH_FORCE = 0x100, - SH_FORCEHP = 0xFF, // to be used as a bitmask only - - // Mostly for use with Mario mode. - SH_FIREFLOWER = 0x200, - - SH_STACK = SH_FIREFLOWER, // second-layer shields - SH_NOSTACK = ~SH_STACK -} shieldtype_t; // pw_shield - typedef enum { CR_NONE = 0, // Specific level gimmicks. + CR_SLIDING, CR_ZOOMTUBE, -} carrytype_t; // pw_carry - -// Player powers. (don't edit this comment) -typedef enum -{ - pw_invulnerability, - pw_sneakers, - pw_flashing, - pw_shield, - pw_carry, - pw_tailsfly, // tails flying - pw_underwater, // underwater timer - pw_spacetime, // In space, no one can hear you spin! - pw_extralife, // Extra Life timer - pw_pushing, - pw_justsprung, - pw_noautobrake, - - pw_super, // Are you super? - pw_gravityboots, // gravity boots - - // Weapon ammunition - pw_infinityring, - pw_automaticring, - pw_bouncering, - pw_scatterring, - pw_grenadering, - pw_explosionring, - pw_railring, - - // Power Stones - pw_emeralds, // stored like global 'emeralds' variable - - // NiGHTS powerups - pw_nights_superloop, - pw_nights_helper, - pw_nights_linkfreeze, - - pw_nocontrol, //for linedef exec 427 - - pw_dye, // for dyes - - pw_justlaunched, // Launched off a slope this tic (0=none, 1=standard launch, 2=half-pipe launch) - - pw_ignorelatch, // Don't grab onto CR_GENERIC, add 32768 (powers[pw_ignorelatch] & 1<<15) to avoid ALL not-NiGHTS CR_ types - - NUMPOWERS -} powertype_t; +} carrytype_t; // ktemp_carry /* To use: #define FOREACH( name, number ) @@ -295,110 +198,6 @@ typedef enum #undef KSPIN_TYPE } kartspinoutflags_t; -//{ SRB2kart - kartstuff -typedef enum -{ - // TODO: Kill this giant array. Add them as actual player_t variables, or condense related timers into their own, smaller arrays. - // Basic gameplay things - k_position, // Used for Kart positions, mostly for deterministic stuff - k_oldposition, // Used for taunting when you pass someone - k_positiondelay, // Used for position number, so it can grow when passing/being passed - - k_throwdir, // Held dir of controls; 1 = forward, 0 = none, -1 = backward (was "player->heldDir") - k_instashield, // Instashield no-damage animation timer - - k_floorboost, // Prevents Sneaker sounds for a breif duration when triggered by a floor panel - k_spinouttype, // Determines the mode of spinout/wipeout, see kartspinoutflags_t - - k_drift, // Drifting Left or Right, plus a bigger counter = sharper turn - k_driftend, // Drift has ended, used to adjust character angle after drift - k_driftcharge, // Charge your drift so you can release a burst of speed - k_driftboost, // Boost you get from drifting - k_boostcharge, // Charge-up for boosting at the start of the race - k_startboost, // Boost you get from start of race or respawn drop dash - k_rings, // Number of held rings - k_pickuprings, // Number of rings being picked up before added to the counter (prevents rings from being deleted forever over 20) - k_userings, // Have to be not holding the item button to change from using rings to using items (or vice versa), to prevent some weirdness with the button - k_ringdelay, // 3 tic delay between every ring usage - k_ringboost, // Ring boost timer - k_ringlock, // Prevent picking up rings while SPB is locked on - k_sparkleanim, // Angle offset for ring sparkle animation - 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_brakestop, // Wait until you've made a complete stop for a few tics before letting brake go in reverse. - k_spindash, // Spindash charge timer - k_spindashspeed, // Spindash release speed - k_spindashboost, // Spindash release boost timer - k_waterskip, // Water skipping counter - k_dashpadcooldown, // Separate the vanilla SA-style dash pads from using pw_flashing - k_numboosts, // Count of how many boosts are being stacked, for after image spawning - k_boostpower, // Base boost value, for offroad - k_speedboost, // Boost value smoothing for max speed - k_accelboost, // Boost value smoothing for acceleration - k_handleboost, // Boost value smoothing for handling - k_draftpower, // Drafting power (from 0 to FRACUNIT), doubles your top speed & acceleration at max - k_draftleeway, // Leniency timer before removing draft power - k_lastdraft, // Last player being drafted - k_boostangle, // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted. - k_aizdriftstrat, // Let go of your drift while boosting? Helper for the SICK STRATZ you have just unlocked - k_brakedrift, // Helper for brake-drift spark spawning - - k_itemroulette, // Used for the roulette when deciding what item to give you (was "pw_kartitem") - k_roulettetype, // Used for the roulette, for deciding type (currently only used for Battle, to give you better items from Karma items) - - // Item held stuff - k_itemtype, // KITEM_ constant for item number - k_itemamount, // Amount of said item - k_itemheld, // Are you holding an item? - k_holdready, // Hold button-style item is ready to activate - - // Some items use timers for their duration or effects - k_curshield, // 0 = no shield, 1 = thunder shield - k_hyudorotimer, // Duration of the Hyudoro offroad effect itself - k_stealingtimer, // You are stealing an item, this is your timer - k_stolentimer, // You are being stolen from, this is your timer - k_superring, // Spawn rings on top of you every tic! - k_sneakertimer, // Duration of a Sneaker Boost (from Sneakers or level boosters) - k_numsneakers, // Number of stacked sneaker effects - k_growshrinktimer, // > 0 = Big, < 0 = small - k_squishedtimer, // Squished frame timer - k_rocketsneakertimer, // Rocket Sneaker duration timer - k_invincibilitytimer, // Invincibility timer - k_bubblecool, // Bubble Shield use cooldown - k_bubbleblowup, // Bubble Shield usage blowup - k_flamedash, // Flame Shield dash power - k_flamemeter, // Flame Shield dash meter left - k_flamelength, // Flame Shield dash meter, number of segments - k_eggmanheld, // Eggman monitor held, separate from k_itemheld so it doesn't stop you from getting items - k_eggmanexplode, // Fake item recieved, explode in a few seconds - k_eggmanblame, // Fake item recieved, who set this fake - k_lastjawztarget, // Last person you target with jawz, for playing the target switch sfx - k_bananadrag, // After a second of holding a banana behind you, you start to slow down - k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam") - k_wipeoutslow, // Timer before you slowdown when getting wiped out - k_justbumped, // Prevent players from endlessly bumping into each other - k_comebacktimer, // Battle mode, how long before you become a bomb after death - k_sadtimer, // How long you've been sad - - // Battle Mode vars - k_bumper, // Number of bumpers left - k_comebackpoints, // Number of times you've bombed or gave an item to someone; once it's 3 it gets set back to 0 and you're given a bumper - k_comebackmode, // 0 = bomb, 1 = item - k_wanted, // Timer for determining WANTED status, lowers when hitting people, prevents the game turning into Camp Lazlo - - // v1.0.2+ vars - k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed - k_jawztargetdelay, // Delay for Jawz target switching, to make it less twitchy - k_spectatewait, // How long have you been waiting as a spectator - k_tiregrease, // Reduced friction timer after hitting a horizontal spring - k_springstars, // Spawn stars around a player when they hit a spring - k_springcolor, // Color of spring stars - k_killfield, // How long have you been in the kill field, stay in too long and lose a bumper - k_wrongway, // Display WRONG WAY on screen - - NUMKARTSTUFF -} kartstufftype_t; - typedef enum { // Unsynced, HUD or clientsided effects @@ -437,7 +236,7 @@ typedef enum } karthudtype_t; // QUICKLY GET RING TOTAL, INCLUDING RINGS CURRENTLY IN THE PICKUP ANIMATION -#define RINGTOTAL(p) (p->rings + p->kartstuff[k_pickuprings]) +#define RINGTOTAL(p) (p->rings + p->ktemp_pickuprings) // CONSTANTS FOR TRICK PANELS #define TRICKMOMZRAMP (30) @@ -453,7 +252,7 @@ typedef enum // player_t struct for all respawn variables typedef struct respawnvars_s { - UINT8 state; // 0: not respawning, 1: heading towards respawn point, 2: about to drop + UINT8 state; // see RESPAWNST_ constants in k_respawn.h waypoint_t *wp; // Waypoint that we're going towards, NULL if the position isn't linked to one fixed_t pointx; // Respawn position coords to go towards fixed_t pointy; @@ -513,37 +312,6 @@ typedef struct player_s // fun thing for player sprite angle_t drawangle; - // player's ring count - INT16 rings; - INT16 spheres; - - // Power ups. invinc and invis are tic counters. - UINT16 powers[NUMPOWERS]; - - // SRB2kart stuff - INT32 kartstuff[NUMKARTSTUFF]; - INT32 karthud[NUMKARTHUD]; - - UINT32 distancetofinish; - waypoint_t *nextwaypoint; - respawnvars_t respawn; // Respawn info - tic_t airtime; // Keep track of how long you've been in the air - boolean driftInput; // Whenever or not try drifting. - boolean airFailsafe; // Whenever or not try the air boost - INT32 aizDriftTilt; - INT32 aizDriftTurn; - - UINT8 trickpanel; // Trick panel state - boolean trickdelay; // Prevent tricks until control stick is neutral - fixed_t trickmomx; - fixed_t trickmomy; - fixed_t trickmomz; // Instead of stupid auxiliary variables let's... just make some ourselves. - - UINT8 bumpers; - INT16 karmadelay; - boolean eliminated; - - // Bit flags. // See pflags_t, above. pflags_t pflags; @@ -561,10 +329,6 @@ typedef struct player_s INT32 skin; UINT32 availabilities; - UINT32 score; // player score - fixed_t dashspeed; // dashing speed - - // SRB2kart UINT8 kartspeed; // Kart speed stat between 1 and 9 UINT8 kartweight; // Kart weight stat between 1 and 9 @@ -573,44 +337,140 @@ typedef struct player_s UINT16 followercolor; // Kart: Used to store the follower colour the player wishes to use mobj_t *follower; // Kart: This is the follower object we have. (If any) - UINT8 tumbleBounces; - UINT16 tumbleHeight; - boolean tumbleLastBounce; - boolean tumbleSound; - - SINT8 glanceDir; // Direction the player is trying to look backwards in - - // - UINT32 charflags; // Extra abilities/settings for skins (combinable stuff) // See SF_ flags mobjtype_t followitem; // Object # to spawn for Smiles mobj_t *followmobj; // Smiles all around + UINT32 score; // player score + + UINT16 ktemp_nocontrol; //for linedef exec 427 + UINT8 ktemp_carry; + UINT16 ktemp_dye; + + // SRB2kart stuff + INT32 karthud[NUMKARTHUD]; + + // Basic gameplay things + UINT8 ktemp_position; // Used for Kart positions, mostly for deterministic stuff + UINT8 ktemp_oldposition; // Used for taunting when you pass someone + UINT8 ktemp_positiondelay; // Used for position number, so it can grow when passing/being passed + UINT32 distancetofinish; + waypoint_t *nextwaypoint; + respawnvars_t respawn; // Respawn info + tic_t airtime; // Keep track of how long you've been in the air + UINT8 ktemp_startboost; // (0 to 125) - Boost you get from start of race or respawn drop dash + + UINT16 ktemp_flashing; + UINT16 ktemp_spinouttimer; // Spin-out from a banana peel or oil slick (was "pw_bananacam") + UINT8 ktemp_spinouttype; // Determines the mode of spinout/wipeout, see kartspinoutflags_t + UINT8 ktemp_instashield; // Instashield no-damage animation timer + UINT8 ktemp_wipeoutslow; // Timer before you slowdown when getting wiped out + UINT8 ktemp_justbumped; // Prevent players from endlessly bumping into each other + UINT8 tumbleBounces; + UINT16 tumbleHeight; + + SINT8 ktemp_drift; // (-5 to 5) - Drifting Left or Right, plus a bigger counter = sharper turn + fixed_t ktemp_driftcharge; // Charge your drift so you can release a burst of speed + UINT8 ktemp_driftboost; // (0 to 125) - Boost you get from drifting + + SINT8 ktemp_aizdriftstrat; // (-1 to 1) - Let go of your drift while boosting? Helper for the SICK STRATZ (sliptiding!) you have just unlocked + INT32 aizdrifttilt; + INT32 aizdriftturn; + + fixed_t ktemp_offroad; // In Super Mario Kart, going offroad has lee-way of about 1 second before you start losing speed + UINT8 ktemp_waterskip; // Water skipping counter + + UINT16 ktemp_tiregrease; // Reduced friction timer after hitting a horizontal spring + UINT16 ktemp_springstars; // Spawn stars around a player when they hit a spring + UINT16 ktemp_springcolor; // Color of spring stars + UINT8 ktemp_dashpadcooldown; // Separate the vanilla SA-style dash pads from using ktemp_flashing + + UINT16 ktemp_spindash; // Spindash charge timer + fixed_t ktemp_spindashspeed; // Spindash release speed + UINT8 ktemp_spindashboost; // Spindash release boost timer + + UINT8 ktemp_numboosts; // Count of how many boosts are being stacked, for after image spawning + fixed_t ktemp_boostpower; // Base boost value, for offroad + fixed_t ktemp_speedboost; // Boost value smoothing for max speed + fixed_t ktemp_accelboost; // Boost value smoothing for acceleration + fixed_t ktemp_handleboost; // Boost value smoothing for handling + angle_t ktemp_boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted. + + fixed_t ktemp_draftpower; // (0 to FRACUNIT) - Drafting power, doubles your top speed & acceleration at max + UINT16 ktemp_draftleeway; // Leniency timer before removing draft power + SINT8 ktemp_lastdraft; // (-1 to 15) - Last player being drafted + + UINT16 ktemp_itemroulette; // Used for the roulette when deciding what item to give you (was "pw_kartitem") + UINT8 ktemp_roulettetype; // Used for the roulette, for deciding type (0 = normal, 1 = better, 2 = eggman mark) + + // Item held stuff + SINT8 ktemp_itemtype; // KITEM_ constant for item number + UINT8 ktemp_itemamount; // Amount of said item + SINT8 ktemp_throwdir; // Held dir of controls; 1 = forward, 0 = none, -1 = backward (was "player->heldDir") + + UINT8 ktemp_sadtimer; // How long you've been sad + + // player's ring count + SINT8 rings; + UINT8 ktemp_pickuprings; // Number of rings being picked up before added to the counter (prevents rings from being deleted forever over 20) + UINT8 ktemp_ringdelay; // (0 to 3) - 3 tic delay between every ring usage + UINT16 ktemp_ringboost; // Ring boost timer + UINT8 ktemp_sparkleanim; // (0 to 19) - Angle offset for ring sparkle animation + UINT8 ktemp_superring; // Spawn rings on top of you every tic! + + UINT8 ktemp_curshield; // see kartshields_t + UINT8 ktemp_bubblecool; // Bubble Shield use cooldown + UINT8 ktemp_bubbleblowup; // Bubble Shield usage blowup + UINT16 ktemp_flamedash; // Flame Shield dash power + UINT16 ktemp_flamemeter; // Flame Shield dash meter left + UINT8 ktemp_flamelength; // Flame Shield dash meter, number of segments + + UINT16 ktemp_hyudorotimer; // Duration of the Hyudoro offroad effect itself + SINT8 ktemp_stealingtimer; // if >0 you are stealing, if <0 you are being stolen from + + UINT16 ktemp_sneakertimer; // Duration of a Sneaker Boost (from Sneakers or level boosters) + UINT8 ktemp_numsneakers; // Number of stacked sneaker effects + UINT8 ktemp_floorboost; // (0 to 3) - Prevents Sneaker sounds for a brief duration when triggered by a floor panel + + INT16 ktemp_growshrinktimer; // > 0 = Big, < 0 = small + UINT16 ktemp_rocketsneakertimer; // Rocket Sneaker duration timer + UINT16 ktemp_invincibilitytimer; // Invincibility timer + + UINT8 ktemp_eggmanexplode; // Fake item recieved, explode in a few seconds + SINT8 ktemp_eggmanblame; // (-1 to 15) - Fake item recieved, who set this fake + + UINT8 ktemp_bananadrag; // After a second of holding a banana behind you, you start to slow down + + SINT8 ktemp_lastjawztarget; // (-1 to 15) - Last person you target with jawz, for playing the target switch sfx + UINT8 ktemp_jawztargetdelay; // (0 to 5) - Delay for Jawz target switching, to make it less twitchy + + UINT8 trickpanel; // Trick panel state + fixed_t trickmomx; + fixed_t trickmomy; + fixed_t trickmomz; + + UINT32 roundscore; // battle score this round + UINT8 ktemp_emeralds; + UINT8 bumpers; + INT16 karmadelay; + INT16 spheres; + + SINT8 glanceDir; // Direction the player is trying to look backwards in + + // + SINT8 lives; - boolean lostlife; - SINT8 continues; // continues that player has acquired SINT8 xtralife; // Ring Extra Life counter - UINT8 gotcontinue; // Got continue from this stage? fixed_t speed; // Player's speed (distance formula of MOMX and MOMY values) fixed_t lastspeed; - UINT8 secondjump; // Jump counter - UINT8 fly1; // Tails flying - UINT8 scoreadd; // Used for multiple enemy attack bonus - tic_t glidetime; // Glide counter for thrust - UINT8 climbing; // Climbing on the wall INT32 deadtimer; // End game if game over lasts too long tic_t exiting; // Exitlevel timer - UINT8 homing; // Are you homing? - tic_t dashmode; // counter for dashmode ability - - tic_t skidtime; // Skid timer - //////////////////////////// // Conveyor Belt Movement // //////////////////////////// @@ -619,73 +479,18 @@ typedef struct player_s fixed_t rmomx; // "Real" momx (momx - cmomx) fixed_t rmomy; // "Real" momy (momy - cmomy) - ///////////////////// - // Race Mode Stuff // - ///////////////////// - INT16 numboxes; // Number of item boxes obtained for Race Mode - INT16 totalring; // Total number of rings obtained for Race Mode + INT16 totalring; // Total number of rings obtained for GP tic_t realtime; // integer replacement for leveltime UINT8 laps; // Number of laps (optional) INT32 starpostnum; // The number of the last starpost you hit - //////////////////// - // CTF Mode Stuff // - //////////////////// - INT32 ctfteam; // 0 == Spectator, 1 == Red, 2 == Blue - UINT16 gotflag; // 1 == Red, 2 == Blue Do you have the flag? + UINT8 ctfteam; // 0 == Spectator, 1 == Red, 2 == Blue - INT32 weapondelay; // Delay (if any) to fire the weapon again - INT32 tossdelay; // Delay (if any) to toss a flag/emeralds again - - ///////////////// - // NiGHTS Stuff// - ///////////////// - angle_t angle_pos; - angle_t old_angle_pos; - - mobj_t *axis1; - mobj_t *axis2; - tic_t bumpertime; // Currently being bounced by MT_NIGHTSBUMPER - INT32 flyangle; - tic_t drilltimer; - INT32 linkcount; - tic_t linktimer; - INT32 anotherflyangle; - tic_t nightstime; // How long you can fly as NiGHTS. - INT32 drillmeter; - UINT8 drilldelay; - boolean bonustime; // Capsule destroyed, now it's bonus time! - mobj_t *capsule; // Go inside the capsule - mobj_t *drone; // Move center to the drone - fixed_t oldscale; // Pre-Nightserize scale - UINT8 mare; // Current mare - UINT8 marelap; // Current mare lap - UINT8 marebonuslap; // Current mare lap starting from bonus time - - // Statistical purposes. - tic_t marebegunat; // Leveltime when mare begun - tic_t startedtime; // Time which you started this mare with. - tic_t finishedtime; // Time it took you to finish the mare (used for display) - tic_t lapbegunat; // Leveltime when lap begun - tic_t lapstartedtime; // Time which you started this lap with. - INT16 finishedspheres; // The spheres you had left upon finishing the mare - INT16 finishedrings; // The rings/stars you had left upon finishing the mare - UINT32 marescore; // score for this nights stage - UINT32 lastmarescore; // score for the last mare - UINT32 totalmarescore; // score for all mares - UINT8 lastmare; // previous mare - UINT8 lastmarelap; // previous mare lap - UINT8 lastmarebonuslap; // previous mare bonus lap - UINT8 totalmarelap; // total mare lap - UINT8 totalmarebonuslap; // total mare bonus lap - INT32 maxlink; // maximum link obtained - UINT8 texttimer; // nights_texttime should not be local - UINT8 textvar; // which line of NiGHTS text to show -- let's not use cheap hacks + UINT8 checkskip; // Skipping checkpoints? Oh no no no INT16 lastsidehit, lastlinehit; - tic_t losstime; - UINT8 timeshit; // That's TIMES HIT, not TIME SHIT, you doofus! + //UINT8 timeshit; // That's TIMES HIT, not TIME SHIT, you doofus! -- in memoriam INT32 onconveyor; // You are on a conveyor belt if nonzero @@ -694,6 +499,7 @@ typedef struct player_s angle_t awayviewaiming; // Used for cut-away view boolean spectator; + tic_t ktemp_spectatewait; // reimplementable as UINT8 queue - How long have you been waiting as a spectator boolean bot; botvars_t botvars; @@ -713,10 +519,6 @@ typedef struct player_s #endif } player_t; -// Values for dashmode -#define DASHMODE_THRESHOLD (3*TICRATE) -#define DASHMODE_MAX (DASHMODE_THRESHOLD + 3) - // Value for infinite lives #define INFLIVES 0x7F diff --git a/src/deh_lua.c b/src/deh_lua.c index c36ebc034..52fd4b83e 100644 --- a/src/deh_lua.c +++ b/src/deh_lua.c @@ -445,42 +445,6 @@ static inline int lib_getenum(lua_State *L) return 1; } #endif - else if (!mathlib && fastncmp("pw_",word,3)) { - p = word+3; - for (i = 0; i < NUMPOWERS; i++) - if (fasticmp(p, POWERS_LIST[i])) { - lua_pushinteger(L, i); - return 1; - } - return 0; - } - else if (mathlib && fastncmp("PW_",word,3)) { // SOCs are ALL CAPS! - p = word+3; - for (i = 0; i < NUMPOWERS; i++) - if (fastcmp(p, POWERS_LIST[i])) { - lua_pushinteger(L, i); - return 1; - } - return luaL_error(L, "power '%s' could not be found.\n", word); - } - else if (!mathlib && fastncmp("k_",word,2)) { - p = word+2; - for (i = 0; i < NUMKARTSTUFF; i++) - if (fasticmp(p, KARTSTUFF_LIST[i])) { - lua_pushinteger(L, i); - return 1; - } - return 0; - } - else if (mathlib && fastncmp("K_",word,2)) { // SOCs are ALL CAPS! - p = word+2; - for (i = 0; i < NUMKARTSTUFF; i++) - if (fastcmp(p, KARTSTUFF_LIST[i])) { - lua_pushinteger(L, i); - return 1; - } - return luaL_error(L, "kartstuff '%s' could not be found.\n", word); - } else if (!mathlib && fastncmp("khud_",word,5)) { p = word+5; for (i = 0; i < NUMKARTHUD; i++) diff --git a/src/deh_soc.c b/src/deh_soc.c index c6ad81b7b..7b5318f2b 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -3556,10 +3556,6 @@ void readmaincfg(MYFILE *f) { maxXtraLife = (UINT8)get_number(word2); } - else if (fastcmp(word, "USECONTINUES")) - { - useContinues = (UINT8)(value || word2[0] == 'T' || word2[0] == 'Y'); - } else if (fastcmp(word, "GAMEDATA")) { @@ -4337,20 +4333,6 @@ menutype_t get_menutype(const char *word) return i; deh_warning("Couldn't find gametype named 'GT_%s'",word); return GT_COOP; -} - -static powertype_t get_power(const char *word) -{ // Returns the value of pw_ enumerations - powertype_t i; - if (*word >= '0' && *word <= '9') - return atoi(word); - if (fastncmp("PW_",word,3)) - word += 3; // take off the pw_ - for (i = 0; i < NUMPOWERS; i++) - if (fastcmp(word, POWERS_LIST[i])) - return i; - deh_warning("Couldn't find power named 'pw_%s'",word); - return pw_invulnerability; }*/ /// \todo Make ANY of this completely over-the-top math craziness obey the order of operations. diff --git a/src/deh_tables.c b/src/deh_tables.c index a6a7c35cb..001af8ce4 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -85,18 +85,13 @@ actionpointer_t actionpointers[] = {{A_FaceTracer}, "A_FACETRACER"}, {{A_Scream}, "A_SCREAM"}, {{A_BossDeath}, "A_BOSSDEATH"}, - {{A_CustomPower}, "A_CUSTOMPOWER"}, {{A_RingBox}, "A_RINGBOX"}, - {{A_Invincibility}, "A_INVINCIBILITY"}, - {{A_SuperSneakers}, "A_SUPERSNEAKERS"}, {{A_BunnyHop}, "A_BUNNYHOP"}, {{A_BubbleSpawn}, "A_BUBBLESPAWN"}, {{A_FanBubbleSpawn}, "A_FANBUBBLESPAWN"}, {{A_BubbleRise}, "A_BUBBLERISE"}, {{A_BubbleCheck}, "A_BUBBLECHECK"}, {{A_AwardScore}, "A_AWARDSCORE"}, - {{A_GiveShield}, "A_GIVESHIELD"}, - {{A_GravityBox}, "A_GRAVITYBOX"}, {{A_ScoreRise}, "A_SCORERISE"}, {{A_AttractChase}, "A_ATTRACTCHASE"}, {{A_DropMine}, "A_DROPMINE"}, @@ -5828,56 +5823,46 @@ const char *const MAPTHINGFLAG_LIST[4] = { }; const char *const PLAYERFLAG_LIST[] = { - "FAULT", - "ANALOGMODE", // Analog mode? - "DIRECTIONCHAR", // Directional character sprites? - "AUTOBRAKE", // Autobrake? - - // Cheats - "GODMODE", - "NOCLIP", - "INVIS", - // True if button down last tic. "ATTACKDOWN", "ACCELDOWN", "BRAKEDOWN", - "WPNDOWN", + "WPNDOWN", // reserved - gonna turn this into lookback when i'm done with all the major reengineering + + // Accessibility and cheats + "KICKSTARTACCEL", // Is accelerate in kickstart mode? + "GODMODE", + "NOCLIP", + + "WANTSTOJOIN", // Spectator that wants to join - // Unmoving states "STASIS", // Player is not allowed to move - "JUMPSTASIS", // and that includes jumping. + "FAULT", // F A U L T + "ELIMINATED", // Battle-style elimination, no extra penalty + "NOCONTEST", // Did not finish (last place explosion) + "LOSTLIFE", // Do not lose life more than once - // SRB2Kart: spectator that wants to join - "WANTSTOJOIN", + "RINGLOCK", // Prevent picking up rings while SPB is locked on - // Character action status - "STARTJUMP", - "JUMPED", - "NOJUMPDAMAGE", - "SPINNING", - "STARTDASH", - "THOKKED", - "SHIELDABILITY", - "GLIDING", - "BOUNCING", + // The following four flags are mutually exclusive, although they can also all be off at the same time. If we ever run out of pflags, eventually turn them into a seperate five(+) mode UINT8..? + "USERINGS", // Have to be not holding the item button to change from using rings to using items (or vice versa) - prevents weirdness + "ITEMOUT", // Are you holding an item out? + "EGGMANOUT", // Eggman mark held, separate from PF_ITEMOUT so it doesn't stop you from getting items + "HOLDREADY", // Hold button-style item is ready to activate - // Sliding (usually in water) like Labyrinth/Oil Ocean - "SLIDING", + "DRIFTINPUT", // Drifting! + "GETSPARKS", // Can get sparks + "DRIFTEND", // Drift has ended, used to adjust character angle after drift + "BRAKEDRIFT", // Helper for brake-drift spark spawning - // NiGHTS stuff - "TRANSFERTOCLOSEST", - "DRILLING", + "AIRFAILSAFE", // Whenever or not try the air boost + "TRICKDELAY", // Prevent tricks until control stick is neutral - // Gametype-specific stuff - "GAMETYPEOVER", // Race time over - "TAGIT", + "TUMBLELASTBOUNCE", // One more time for the funny + "TUMBLESOUND", // Don't play more than once - /*** misc ***/ - "FORCESTRAFE", // Accessibility feature - is accelerate in kickstart mode? - "CANCARRY", "HITFINISHLINE", // Already hit the finish line this tic - + "WRONGWAY", // Moving the wrong way with respect to waypoints? NULL // stop loop here. }; @@ -6105,145 +6090,6 @@ const char *COLOR_ENUMS[] = { "CHAOSEMERALD7" }; -const char *const POWERS_LIST[] = { - "INVULNERABILITY", - "SNEAKERS", - "FLASHING", - "SHIELD", - "CARRY", - "TAILSFLY", // tails flying - "UNDERWATER", // underwater timer - "SPACETIME", // In space, no one can hear you spin! - "EXTRALIFE", // Extra Life timer - "PUSHING", - "JUSTSPRUNG", - "NOAUTOBRAKE", - - "SUPER", // Are you super? - "GRAVITYBOOTS", // gravity boots - - // Weapon ammunition - "INFINITYRING", - "AUTOMATICRING", - "BOUNCERING", - "SCATTERRING", - "GRENADERING", - "EXPLOSIONRING", - "RAILRING", - - // Power Stones - "EMERALDS", // stored like global 'emeralds' variable - - // NiGHTS powerups - "NIGHTS_SUPERLOOP", - "NIGHTS_HELPER", - "NIGHTS_LINKFREEZE", - - //for linedef exec 427 - "NOCONTROL", - - //for dyes - "DYE", - - "JUSTLAUNCHED", - - "IGNORELATCH" -}; - -const char *const KARTSTUFF_LIST[] = { - "POSITION", - "OLDPOSITION", - "POSITIONDELAY", - - "THROWDIR", - "INSTASHIELD", - - "FLOORBOOST", - "SPINOUTTYPE", - - "DRIFT", - "DRIFTEND", - "DRIFTCHARGE", - "DRIFTBOOST", - "BOOSTCHARGE", - "STARTBOOST", - "RINGS", - "PICKUPRINGS", - "USERINGS", - "RINGDELAY", - "RINGBOOST", - "RINGLOCK", - "SPARKLEANIM", - "JMP", - "OFFROAD", - "BRAKESTOP", - "SPINDASH", - "SPINDASHSPEED", - "SPINDASHBOOST", - "WATERSKIP", - "DASHPADCOOLDOWN", - "NUMBOOSTS", - "BOOSTPOWER", - "SPEEDBOOST", - "ACCELBOOST", - "HANDLEBOOST", - "DRAFTPOWER", - "DRAFTLEEWAY", - "LASTDRAFT", - "BOOSTANGLE", - "AIZDRIFTSTRAT", - "BRAKEDRIFT", - - "ITEMROULETTE", - "ROULETTETYPE", - - "ITEMTYPE", - "ITEMAMOUNT", - "ITEMHELD", - "HOLDREADY", - - "CURSHIELD", - "HYUDOROTIMER", - "STEALINGTIMER", - "STOLENTIMER", - "SUPERRING", - "SNEAKERTIMER", - "NUMSNEAKERS", - "GROWSHRINKTIMER", - "SQUISHEDTIMER", - "ROCKETSNEAKERTIMER", - "INVINCIBILITYTIMER", - "BUBBLECOOL", - "BUBBLEBLOWUP", - "FLAMEDASH", - "FLAMEMETER", - "FLAMELENGTH", - "EGGMANHELD", - "EGGMANEXPLODE", - "EGGMANBLAME", - "LASTJAWZTARGET", - "BANANADRAG", - "SPINOUTTIMER", - "WIPEOUTSLOW", - "JUSTBUMPED", - "COMEBACKTIMER", - "SADTIMER", - - "BUMPER", - "COMEBACKPOINTS", - "COMEBACKMODE", - "WANTED", - - "GETSPARKS", - "JAWZTARGETDELAY", - "SPECTATEWAIT", - "TIREGREASE", - "SPRINGSTARS", - "SPRINGCOLOR", - "KILLFIELD", - "WRONGWAY" -}; - const char *const KARTHUD_LIST[] = { "ITEMBLINK", "ITEMBLINKMODE", @@ -6605,33 +6451,6 @@ struct int_const_s const INT_CONST[] = { {"PRECIP_STORM_NORAIN",PRECIP_STORM_NORAIN}, {"PRECIP_STORM_NOSTRIKES",PRECIP_STORM_NOSTRIKES}, - // Shields - {"SH_NONE",SH_NONE}, - // Shield flags - {"SH_PROTECTFIRE",SH_PROTECTFIRE}, - {"SH_PROTECTWATER",SH_PROTECTWATER}, - {"SH_PROTECTELECTRIC",SH_PROTECTELECTRIC}, - {"SH_PROTECTSPIKE",SH_PROTECTSPIKE}, - // Indivisible shields - {"SH_PITY",SH_PITY}, - {"SH_WHIRLWIND",SH_WHIRLWIND}, - {"SH_ARMAGEDDON",SH_ARMAGEDDON}, - {"SH_PINK",SH_PINK}, - // normal shields that use flags - {"SH_ATTRACT",SH_ATTRACT}, - {"SH_ELEMENTAL",SH_ELEMENTAL}, - // Sonic 3 shields - {"SH_FLAMEAURA",SH_FLAMEAURA}, - {"SH_BUBBLEWRAP",SH_BUBBLEWRAP}, - {"SH_THUNDERCOIN",SH_THUNDERCOIN}, - // The force shield uses the lower 8 bits to count how many extra hits are left. - {"SH_FORCE",SH_FORCE}, - {"SH_FORCEHP",SH_FORCEHP}, // to be used as a bitmask only - // Mostly for use with Mario mode. - {"SH_FIREFLOWER",SH_FIREFLOWER}, - {"SH_STACK",SH_STACK}, - {"SH_NOSTACK",SH_NOSTACK}, - // Carrying {"CR_NONE",CR_NONE}, {"CR_ZOOMTUBE",CR_ZOOMTUBE}, @@ -6640,10 +6459,6 @@ struct int_const_s const INT_CONST[] = { {"SF_HIRES",SF_HIRES}, {"SF_MACHINE",SF_MACHINE}, - // Dashmode constants - {"DASHMODE_THRESHOLD",DASHMODE_THRESHOLD}, - {"DASHMODE_MAX",DASHMODE_MAX}, - // Sound flags {"SF_TOTALLYSINGLE",SF_TOTALLYSINGLE}, {"SF_NOMULTIPLESOUND",SF_NOMULTIPLESOUND}, @@ -7079,7 +6894,6 @@ void DEH_TableCheck(void) #if defined(_DEBUG) || defined(PARANOIA) const size_t dehstates = sizeof(STATE_LIST)/sizeof(const char*); const size_t dehmobjs = sizeof(MOBJTYPE_LIST)/sizeof(const char*); - const size_t dehpowers = sizeof(POWERS_LIST)/sizeof(const char*); const size_t dehcolors = sizeof(COLOR_ENUMS)/sizeof(const char*); if (dehstates != S_FIRSTFREESLOT) @@ -7088,9 +6902,6 @@ void DEH_TableCheck(void) if (dehmobjs != MT_FIRSTFREESLOT) I_Error("You forgot to update the Dehacked mobjtype list, you dolt!\n(%d mobj types defined, versus %s in the Dehacked list)\n", MT_FIRSTFREESLOT, sizeu1(dehmobjs)); - if (dehpowers != NUMPOWERS) - I_Error("You forgot to update the Dehacked powers list, you dolt!\n(%d powers defined, versus %s in the Dehacked list)\n", NUMPOWERS, sizeu1(dehpowers)); - if (dehcolors != SKINCOLOR_FIRSTFREESLOT) I_Error("You forgot to update the Dehacked colors list, you dolt!\n(%d colors defined, versus %s in the Dehacked list)\n", SKINCOLOR_FIRSTFREESLOT, sizeu1(dehcolors)); #endif diff --git a/src/deh_tables.h b/src/deh_tables.h index 53c52fbfa..3c5d64830 100644 --- a/src/deh_tables.h +++ b/src/deh_tables.h @@ -67,7 +67,6 @@ extern const char *const GAMETYPERULE_LIST[]; extern const char *const ML_LIST[16]; // Linedef flags extern const char *COLOR_ENUMS[]; extern const char *const POWERS_LIST[]; -extern const char *const KARTSTUFF_LIST[]; extern const char *const KARTHUD_LIST[]; extern const char *const HUDITEMS_LIST[]; extern const char *const MENUTYPES_LIST[]; diff --git a/src/doomstat.h b/src/doomstat.h index 159f83172..d44ec24b0 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -465,7 +465,7 @@ enum GameTypeRules GTR_BUMPERS = 1<<3, // Enables the bumper health system GTR_SPHERES = 1<<4, // Replaces rings with blue spheres GTR_PAPERITEMS = 1<<5, // Replaces item boxes with paper item spawners - GTR_WANTED = 1<<6, // Enables the wanted anti-camping system + GTR_WANTED = 1<<6, // unused GTR_KARMA = 1<<7, // Enables the Karma system if you're out of bumpers GTR_ITEMARROWS = 1<<8, // Show item box arrows above players GTR_CAPSULES = 1<<9, // Enables the wanted anti-camping system @@ -655,8 +655,6 @@ extern UINT8 useBlackRock; extern UINT8 use1upSound; extern UINT8 maxXtraLife; // Max extra lives from rings -extern UINT8 useContinues; -#define continuesInSession (!multiplayer && (ultimatemode || (useContinues && !marathonmode) || (!modeattacking && !(cursaveslot > 0)))) extern mobj_t *hunt1, *hunt2, *hunt3; // Emerald hunt locations diff --git a/src/f_finale.c b/src/f_finale.c index 9780dc068..25d1ea98d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2909,7 +2909,7 @@ void F_TextPromptDrawer(void) } #define nocontrolallowed(j) {\ - players[j].powers[pw_nocontrol] = 1;\ + players[j].ktemp_nocontrol = 1;\ if (players[j].mo)\ {\ if (players[j].mo->state == states+S_KART_STILL && players[j].mo->tics != -1)\ @@ -2980,7 +2980,7 @@ void F_TextPromptTicker(void) { UINT8 j; - players[i].powers[pw_nocontrol] = 1; + players[i].ktemp_nocontrol = 1; // Both players' controls are locked, // But only the triggering player can advance the prompt. diff --git a/src/g_demo.c b/src/g_demo.c index 8ca756723..e2b9a0c0e 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -748,15 +748,15 @@ void G_WriteGhostTic(mobj_t *ghost, INT32 playernum) } if (ghost->player && ( - ghostext[playernum].kartitem != ghost->player->kartstuff[k_itemtype] || - ghostext[playernum].kartamount != ghost->player->kartstuff[k_itemamount] || - ghostext[playernum].kartbumpers != ghost->player->kartstuff[k_bumper] + ghostext[playernum].kartitem != ghost->player->ktemp_itemtype || + ghostext[playernum].kartamount != ghost->player->ktemp_itemamount || + ghostext[playernum].kartbumpers != ghost->player->bumpers )) { ghostext[playernum].flags |= EZT_KART; - ghostext[playernum].kartitem = ghost->player->kartstuff[k_itemtype]; - ghostext[playernum].kartamount = ghost->player->kartstuff[k_itemamount]; - ghostext[playernum].kartbumpers = ghost->player->kartstuff[k_bumper]; + ghostext[playernum].kartitem = ghost->player->ktemp_itemtype; + ghostext[playernum].kartamount = ghost->player->ktemp_itemamount; + ghostext[playernum].kartbumpers = ghost->player->bumpers; } if (ghostext[playernum].flags) @@ -1035,17 +1035,17 @@ void G_ConsGhostTic(INT32 playernum) else ghostext[playernum].desyncframes = 0; - if (players[playernum].kartstuff[k_itemtype] != ghostext[playernum].kartitem - || players[playernum].kartstuff[k_itemamount] != ghostext[playernum].kartamount - || players[playernum].kartstuff[k_bumper] != ghostext[playernum].kartbumpers) + if (players[playernum].ktemp_itemtype != ghostext[playernum].kartitem + || players[playernum].ktemp_itemamount != ghostext[playernum].kartamount + || players[playernum].bumpers != ghostext[playernum].kartbumpers) { if (demosynced) CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced!\n")); demosynced = false; - players[playernum].kartstuff[k_itemtype] = ghostext[playernum].kartitem; - players[playernum].kartstuff[k_itemamount] = ghostext[playernum].kartamount; - players[playernum].kartstuff[k_bumper] = ghostext[playernum].kartbumpers; + players[playernum].ktemp_itemtype = ghostext[playernum].kartitem; + players[playernum].ktemp_itemamount = ghostext[playernum].kartamount; + players[playernum].bumpers = ghostext[playernum].kartbumpers; } } @@ -1402,7 +1402,7 @@ void G_StoreRewindInfo(void) void G_PreviewRewind(tic_t previewtime) { SINT8 i; - size_t j; + //size_t j; fixed_t tweenvalue = 0; rewindinfo_t *info = rewindhead, *next_info = rewindhead; @@ -1461,8 +1461,9 @@ void G_PreviewRewind(tic_t previewtime) players[i].mo->hitlag = info->playerinfo[i].mobj.hitlag; players[i].realtime = info->playerinfo[i].player.realtime; - for (j = 0; j < NUMKARTSTUFF; j++) - players[i].kartstuff[j] = info->playerinfo[i].player.kartstuff[j]; + // Genuinely CANNOT be fucked. I can redo lua and I can redo netsaves but I draw the line at this abysmal hack. + /*for (j = 0; j < NUMKARTSTUFF; j++) + players[i].kartstuff[j] = info->playerinfo[i].player.kartstuff[j];*/ } for (i = splitscreen; i >= 0; i--) diff --git a/src/g_game.c b/src/g_game.c index 925f71ca0..c9118b235 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -270,7 +270,6 @@ INT32 flameseg = TICRATE/4; UINT8 use1upSound = 0; UINT8 maxXtraLife = 2; // Max extra lives from rings -UINT8 useContinues = 0; // Set to 1 to enable continues outside of no-save scenarioes UINT8 introtoplay; UINT8 creditscutscene; @@ -545,7 +544,7 @@ static void G_UpdateRecordReplays(void) if (!mainrecords[gamemap-1]) G_AllocMainRecordData(gamemap-1); - if (players[consoleplayer].pflags & PF_GAMETYPEOVER) + if (players[consoleplayer].pflags & PF_NOCONTEST) { players[consoleplayer].realtime = UINT32_MAX; } @@ -1617,7 +1616,7 @@ boolean G_CouldView(INT32 playernum) // SRB2Kart: Only go through players who are actually playing if (player->exiting) return false; - if (( player->pflags & PF_GAMETYPEOVER )) + if (( player->pflags & PF_NOCONTEST )) return false; // I don't know if we want this actually, but I'll humor the suggestion anyway @@ -2033,9 +2032,6 @@ static inline void G_PlayerFinishLevel(INT32 player) p = &players[player]; - memset(p->powers, 0, sizeof (p->powers)); - memset(p->kartstuff, 0, sizeof (p->kartstuff)); // SRB2kart - p->mo->renderflags &= ~(RF_TRANSMASK|RF_BRIGHTMASK); // cancel invisibility P_FlashPal(p, 0, 0); // Resets @@ -2064,10 +2060,8 @@ static inline void G_PlayerFinishLevel(INT32 player) void G_PlayerReborn(INT32 player, boolean betweenmaps) { player_t *p; - INT32 score, marescore; + INT32 score, roundscore; INT32 lives; - boolean lostlife; - INT32 continues; UINT8 kartspeed; UINT8 kartweight; @@ -2082,15 +2076,12 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) INT32 pflags; - INT32 ctfteam; + UINT8 ctfteam; INT32 starpostnum; INT32 exiting; - tic_t dashmode; - INT16 numboxes; INT16 totalring; UINT8 laps; - UINT8 mare; UINT16 skincolor; INT32 skin; UINT32 availabilities; @@ -2121,20 +2112,14 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) INT32 roulettetype; INT32 growshrinktimer; INT32 bumper; - INT32 wanted; boolean songcredit = false; - boolean eliminated; UINT16 nocontrol; INT32 khudfault; INT32 kickstartaccel; score = players[player].score; - marescore = players[player].marescore; lives = players[player].lives; - lostlife = players[player].lostlife; - continues = players[player].continues; ctfteam = players[player].ctfteam; - exiting = players[player].exiting; jointime = players[player].jointime; quittime = players[player].quittime; @@ -2142,21 +2127,9 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) splitscreenindex = players[player].splitscreenindex; spectator = players[player].spectator; - pflags = (players[player].pflags & (PF_WANTSTOJOIN|PF_GAMETYPEOVER|PF_FAULT|PF_KICKSTARTACCEL)); - steering = players[player].steering; playerangleturn = players[player].angleturn; - // As long as we're not in multiplayer, carry over cheatcodes from map to map - if (!(netgame || multiplayer)) - pflags |= (players[player].pflags & (PF_GODMODE|PF_NOCLIP|PF_INVIS)); - - dashmode = players[player].dashmode; - - numboxes = players[player].numboxes; - laps = players[player].laps; - totalring = players[player].totalring; - skincolor = players[player].skincolor; skin = players[player].skin; @@ -2164,7 +2137,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) kartspeed = players[player].kartspeed; kartweight = players[player].kartweight; - follower = players[player].follower; followerready = players[player].followerready; followercolor = players[player].followercolor; followerskin = players[player].followerskin; @@ -2173,20 +2145,18 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) charflags = players[player].charflags; - starpostnum = players[player].starpostnum; followitem = players[player].followitem; - mare = players[player].mare; bot = players[player].bot; botdifficulty = players[player].botvars.difficulty; botdiffincrease = players[player].botvars.diffincrease; botrival = players[player].botvars.rival; - xtralife = players[player].xtralife; + pflags = (players[player].pflags & (PF_WANTSTOJOIN|PF_KICKSTARTACCEL)); // SRB2kart - if (betweenmaps || leveltime < starttime) + if (betweenmaps || leveltime < introtime) { itemroulette = 0; roulettetype = 0; @@ -2196,47 +2166,64 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) bumper = ((gametyperules & GTR_BUMPERS) ? K_StartingBumperCount() : 0); rings = ((gametyperules & GTR_SPHERES) ? 0 : 5); spheres = 0; - eliminated = false; - wanted = 0; kickstartaccel = 0; + khudfault = nocontrol = 0; + laps = 0; + totalring = 0; + roundscore = 0; + exiting = 0; + starpostnum = 0; + xtralife = 0; + + follower = NULL; } else { - itemroulette = (players[player].kartstuff[k_itemroulette] > 0 ? 1 : 0); - roulettetype = players[player].kartstuff[k_roulettetype]; + itemroulette = (players[player].ktemp_itemroulette > 0 ? 1 : 0); + roulettetype = players[player].ktemp_roulettetype; - if (players[player].kartstuff[k_itemheld]) + if (players[player].pflags & PF_ITEMOUT) { itemtype = 0; itemamount = 0; } else { - itemtype = players[player].kartstuff[k_itemtype]; - itemamount = players[player].kartstuff[k_itemamount]; + itemtype = players[player].ktemp_itemtype; + itemamount = players[player].ktemp_itemamount; } // Keep Shrink status, remove Grow status - if (players[player].kartstuff[k_growshrinktimer] < 0) - growshrinktimer = players[player].kartstuff[k_growshrinktimer]; + if (players[player].ktemp_growshrinktimer < 0) + growshrinktimer = players[player].ktemp_growshrinktimer; else growshrinktimer = 0; bumper = players[player].bumpers; rings = players[player].rings; spheres = players[player].spheres; - eliminated = players[player].eliminated; - wanted = players[player].kartstuff[k_wanted]; kickstartaccel = players[player].kickstartaccel; + + khudfault = players[player].karthud[khud_fault]; + nocontrol = players[player].ktemp_nocontrol; + + laps = players[player].laps; + totalring = players[player].totalring; + roundscore = players[player].roundscore; + exiting = players[player].exiting; + starpostnum = players[player].starpostnum; + + xtralife = players[player].xtralife; + + follower = players[player].follower; + + pflags |= (players[player].pflags & (PF_STASIS|PF_ELIMINATED|PF_NOCONTEST|PF_FAULT|PF_LOSTLIFE)); } - if (!betweenmaps) - { - khudfault = players[player].karthud[khud_fault]; - nocontrol = players[player].powers[pw_nocontrol]; - } - else - khudfault = nocontrol = 0; + // As long as we're not in multiplayer, carry over cheatcodes from map to map + if (!(netgame || multiplayer)) + pflags |= (players[player].pflags & (PF_GODMODE|PF_NOCLIP)); + // Obliterate follower from existence P_SetTarget(&players[player].follower, NULL); @@ -2247,10 +2234,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) memset(p, 0, sizeof (*p)); p->score = score; - p->marescore = marescore; + p->roundscore = roundscore; p->lives = lives; - p->lostlife = lostlife; - p->continues = continues; p->pflags = pflags; p->ctfteam = ctfteam; p->jointime = jointime; @@ -2273,13 +2258,9 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) p->starpostnum = starpostnum; p->exiting = exiting; - p->dashmode = dashmode; - - p->numboxes = numboxes; p->laps = laps; p->totalring = totalring; - p->mare = mare; p->bot = bot; p->botvars.difficulty = botdifficulty; p->rings = rings; @@ -2289,19 +2270,17 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) p->xtralife = xtralife; // SRB2kart - p->kartstuff[k_itemroulette] = itemroulette; - p->kartstuff[k_roulettetype] = roulettetype; - p->kartstuff[k_itemtype] = itemtype; - p->kartstuff[k_itemamount] = itemamount; - p->kartstuff[k_growshrinktimer] = growshrinktimer; + p->ktemp_itemroulette = itemroulette; + p->ktemp_roulettetype = roulettetype; + p->ktemp_itemtype = itemtype; + p->ktemp_itemamount = itemamount; + p->ktemp_growshrinktimer = growshrinktimer; p->bumpers = bumper; p->karmadelay = comebacktime; - p->eliminated = eliminated; - p->kartstuff[k_wanted] = wanted; - p->kartstuff[k_eggmanblame] = -1; - p->kartstuff[k_lastdraft] = -1; + p->ktemp_eggmanblame = -1; + p->ktemp_lastdraft = -1; p->karthud[khud_fault] = khudfault; - p->powers[pw_nocontrol] = nocontrol; + p->ktemp_nocontrol = nocontrol; p->kickstartaccel = kickstartaccel; memcpy(&p->respawn, &respawn, sizeof (p->respawn)); @@ -2866,7 +2845,7 @@ UINT32 gametypedefaultrules[NUMGAMETYPES] = // Race GTR_CIRCUIT|GTR_BOTS, // Battle - GTR_SPHERES|GTR_BUMPERS|GTR_PAPERITEMS|GTR_WANTED|GTR_KARMA|GTR_ITEMARROWS|GTR_CAPSULES|GTR_BATTLESTARTS|GTR_POINTLIMIT|GTR_TIMELIMIT|GTR_OVERTIME + GTR_SPHERES|GTR_BUMPERS|GTR_PAPERITEMS|GTR_KARMA|GTR_ITEMARROWS|GTR_CAPSULES|GTR_BATTLESTARTS|GTR_POINTLIMIT|GTR_TIMELIMIT|GTR_OVERTIME }; // @@ -3476,7 +3455,7 @@ static void G_DoCompleted(void) if (playeringame[i]) { // SRB2Kart: exitlevel shouldn't get you the points - if (!players[i].exiting && !(players[i].pflags & PF_GAMETYPEOVER)) + if (!players[i].exiting && !(players[i].pflags & PF_NOCONTEST)) { if (players[i].bot) { @@ -3484,7 +3463,7 @@ static void G_DoCompleted(void) } else { - players[i].pflags |= PF_GAMETYPEOVER; + players[i].pflags |= PF_NOCONTEST; if (P_IsLocalPlayer(&players[i])) { @@ -3798,8 +3777,8 @@ static void G_DoContinued(void) I_Assert(!netgame && !multiplayer); I_Assert(pl->continues > 0); - if (pl->continues) - pl->continues--; + /*if (pl->continues) + pl->continues--;*/ // Reset score pl->score = 0; @@ -4467,16 +4446,12 @@ void G_InitNew(UINT8 pencoremode, const char *mapname, boolean resetplayer, bool for (i = 0; i < MAXPLAYERS; i++) { players[i].playerstate = PST_REBORN; - players[i].starpostnum = 0; memset(&players[i].respawn, 0, sizeof (players[i].respawn)); - // The latter two should clear by themselves, but just in case - players[i].pflags &= ~(PF_GAMETYPEOVER|PF_STASIS|PF_FAULT); - // Clear cheatcodes too, just in case. - players[i].pflags &= ~(PF_GODMODE|PF_NOCLIP|PF_INVIS); + players[i].pflags &= ~(PF_GODMODE|PF_NOCLIP); - players[i].marescore = 0; + players[i].roundscore = 0; if (resetplayer && !(multiplayer && demo.playback)) // SRB2Kart { diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 2c2f21406..ed0523119 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4085,8 +4085,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr) gpatch = spr->gpatch; #ifdef ALAM_LIGHTING - if (!(spr->mobj->flags2 & MF2_DEBRIS) && (spr->mobj->sprite != SPR_PLAY || - (spr->mobj->player && spr->mobj->player->powers[pw_super]))) + if (!(spr->mobj->flags2 & MF2_DEBRIS) && (spr->mobj->sprite != SPR_PLAY)) HWR_DL_AddLight(spr, gpatch); #endif diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c index 974a0b067..f6c18db97 100644 --- a/src/hardware/hw_md2.c +++ b/src/hardware/hw_md2.c @@ -1565,7 +1565,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) && (spr->mobj->frame & FF_ANIMATE || (spr->mobj->state->nextstate != S_NULL && states[spr->mobj->state->nextstate].sprite == SPR_PLAY - && ((P_GetSkinSprite2(spr->mobj->skin, (((spr->mobj->player && spr->mobj->player->powers[pw_super]) ? FF_SPR2SUPER : 0)|states[spr->mobj->state->nextstate].frame) & FF_FRAMEMASK, spr->mobj->player) == spr->mobj->sprite2))))) + && ((P_GetSkinSprite2(spr->mobj->skin, (states[spr->mobj->state->nextstate].frame) & FF_FRAMEMASK, spr->mobj->player) == spr->mobj->sprite2))))) { nextFrame = (spr->mobj->frame & FF_FRAMEMASK) + 1; if (nextFrame >= mod) diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 55930b85e..12b072146 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -2353,11 +2353,11 @@ static void HU_DrawRankings(void) if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo) continue; - if (players[i].kartstuff[k_position] >= lowestposition) + if (players[i].ktemp_position >= lowestposition) continue; tab[scorelines].num = i; - lowestposition = players[i].kartstuff[k_position]; + lowestposition = players[i].ktemp_position; } i = tab[scorelines].num; @@ -2374,7 +2374,7 @@ static void HU_DrawRankings(void) tab[scorelines].count = players[i].realtime; } else - tab[scorelines].count = players[i].marescore; + tab[scorelines].count = players[i].roundscore; scorelines++; diff --git a/src/info.c b/src/info.c index 51cce3e7d..a4ede835c 100644 --- a/src/info.c +++ b/src/info.c @@ -2126,31 +2126,31 @@ state_t states[NUMSTATES] = // Box Icons -- 2 states each, animation and action {SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2}, // S_RING_ICON1 - {SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL}, // S_RING_ICON2 + {SPR_TVRI, 2, 18, {NULL}, 0, 0, S_NULL}, // S_RING_ICON2 {SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2}, // S_PITY_ICON1 - {SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL}, // S_PITY_ICON2 + {SPR_TVPI, 2, 18, {NULL}, 0, 0, S_NULL}, // S_PITY_ICON2 {SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2}, // S_ATTRACT_ICON1 - {SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL}, // S_ATTRACT_ICON2 + {SPR_TVAT, 2, 18, {NULL}, 0, 0, S_NULL}, // S_ATTRACT_ICON2 {SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2}, // S_FORCE_ICON1 - {SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL}, // S_FORCE_ICON2 + {SPR_TVFO, 2, 18, {NULL}, 0, 0, S_NULL}, // S_FORCE_ICON2 {SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2}, // S_ARMAGEDDON_ICON1 - {SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL}, // S_ARMAGEDDON_ICON2 + {SPR_TVAR, 2, 18, {NULL}, 0, 0, S_NULL}, // S_ARMAGEDDON_ICON2 {SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2}, // S_WHIRLWIND_ICON1 - {SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL}, // S_WHIRLWIND_ICON2 + {SPR_TVWW, 2, 18, {NULL}, 0, 0, S_NULL}, // S_WHIRLWIND_ICON2 {SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2}, // S_ELEMENTAL_ICON1 - {SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL}, // S_ELEMENTAL_ICON2 + {SPR_TVEL, 2, 18, {NULL}, 0, 0, S_NULL}, // S_ELEMENTAL_ICON2 {SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2}, // S_SNEAKERS_ICON1 - {SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL}, // S_SNEAKERS_ICON2 + {SPR_TVSS, 2, 18, {NULL}, 0, 0, S_NULL}, // S_SNEAKERS_ICON2 {SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2}, // S_INVULN_ICON1 - {SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL}, // S_INVULN_ICON2 + {SPR_TVIV, 2, 18, {NULL}, 0, 0, S_NULL}, // S_INVULN_ICON2 {SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2}, // S_1UP_ICON1 {SPR_TV1U, 2, 18, {NULL}, 0, 0, S_NULL}, // S_1UP_ICON2 @@ -2162,7 +2162,7 @@ state_t states[NUMSTATES] = {SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL}, // S_MIXUP_ICON2 {SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2}, // S_GRAVITY_ICON1 - {SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL}, // S_GRAVITY_ICON2 + {SPR_TVGV, 2, 18, {NULL}, 0, 0, S_NULL}, // S_GRAVITY_ICON2 {SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2}, // S_RECYCLER_ICON1 {SPR_TVRC, 2, 18, {NULL}, 0, 0, S_NULL}, // S_RECYCLER_ICON2 @@ -2174,13 +2174,13 @@ state_t states[NUMSTATES] = {SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL}, // S_SCORE10K_ICON2 {SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2}, // S_FLAMEAURA_ICON1 - {SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL}, // S_FLAMEAURA_ICON2 + {SPR_TVFL, 2, 18, {NULL}, 0, 0, S_NULL}, // S_FLAMEAURA_ICON2 {SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2}, // S_BUBBLEWRAP_ICON1 - {SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL}, // S_BUBBLERWAP_ICON2 + {SPR_TVBB, 2, 18, {NULL}, 0, 0, S_NULL}, // S_BUBBLERWAP_ICON2 {SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2}, // S_THUNDERCOIN_ICON1 - {SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL}, // S_THUNDERCOIN_ICON2 + {SPR_TVZP, 2, 18, {NULL}, 0, 0, S_NULL}, // S_THUNDERCOIN_ICON2 // --- @@ -17454,7 +17454,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_ELEMENTAL, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17481,7 +17481,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_ATTRACT, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17508,7 +17508,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_FORCE, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17535,7 +17535,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_ARMAGEDDON, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17562,7 +17562,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_WHIRLWIND, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17589,7 +17589,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_PITY, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17616,7 +17616,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_FLAMEAURA, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height -4, // display offset @@ -17643,7 +17643,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_BUBBLEWRAP, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height 4, // display offset @@ -17670,7 +17670,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound - SH_THUNDERCOIN, // speed + 0, // speed 64*FRACUNIT, // radius 64*FRACUNIT, // height -4, // display offset @@ -19763,7 +19763,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_bouncering, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19790,7 +19790,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_railring, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19817,7 +19817,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_infinityring,// mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19844,7 +19844,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_automaticring, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19871,7 +19871,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_explosionring, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19898,7 +19898,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_scatterring, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19925,7 +19925,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_grenadering, // mass + 0, // mass 0, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19953,7 +19953,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_bouncering, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -19980,7 +19980,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_railring, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -20007,7 +20007,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_automaticring, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -20034,7 +20034,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_explosionring, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -20061,7 +20061,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_scatterring, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags @@ -20088,7 +20088,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 24*FRACUNIT, // radius 24*FRACUNIT, // height 0, // display offset - pw_grenadering, // mass + 0, // mass 2*TICRATE, // damage sfx_None, // activesound MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags diff --git a/src/info.h b/src/info.h index 527dc5a05..bfd02ab4d 100644 --- a/src/info.h +++ b/src/info.h @@ -42,16 +42,12 @@ enum actionnum A_BOSSDEATH, A_CUSTOMPOWER, A_RINGBOX, - A_INVINCIBILITY, - A_SUPERSNEAKERS, A_BUNNYHOP, A_BUBBLESPAWN, A_FANBUBBLESPAWN, A_BUBBLERISE, A_BUBBLECHECK, A_AWARDSCORE, - A_GIVESHIELD, - A_GRAVITYBOX, A_SCORERISE, A_ATTRACTCHASE, A_DROPMINE, @@ -313,16 +309,12 @@ void A_Scream(); void A_BossDeath(); void A_CustomPower(); // Use this for a custom power void A_RingBox(); // Obtained Ring Box Tails -void A_Invincibility(); // Obtained Invincibility Box -void A_SuperSneakers(); // Obtained Super Sneakers Box void A_BunnyHop(); // have bunny hop tails void A_BubbleSpawn(); // Randomly spawn bubbles void A_FanBubbleSpawn(); void A_BubbleRise(); // Bubbles float to surface void A_BubbleCheck(); // Don't draw if not underwater void A_AwardScore(); -void A_GiveShield(); // Obtained Shield -void A_GravityBox(); void A_ScoreRise(); // Rise the score logo void A_AttractChase(); // Ring Chase void A_DropMine(); // Drop Mine from Skim or Jetty-Syn Bomber diff --git a/src/k_battle.c b/src/k_battle.c index 35974c642..f039dad0d 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -41,140 +41,7 @@ INT32 K_StartingBumperCount(void) boolean K_IsPlayerWanted(player_t *player) { -#if 1 - return (player->kartstuff[k_position] == 1); -#else - UINT8 i; - - if (!(gametyperules & GTR_WANTED)) - return false; - - for (i = 0; i < 4; i++) - { - if (battlewanted[i] == -1) - break; - if (player == &players[battlewanted[i]]) - return true; - } - return false; -#endif -} - -void K_CalculateBattleWanted(void) -{ - UINT8 numingame = 0, numwanted = 0; - SINT8 camppos[MAXPLAYERS]; // who is the biggest camper - UINT8 ties = 0, nextcamppos = 0; - UINT8 i, j; - -#if 0 - if (!(gametyperules & GTR_WANTED)) -#endif - { - memset(battlewanted, -1, sizeof (battlewanted)); - return; - } - - wantedcalcdelay = wantedfrequency; - memset(camppos, -1, sizeof (camppos)); // initialize - - for (i = 0; i < MAXPLAYERS; i++) - { - UINT8 position = 1; - - if (!playeringame[i] || players[i].spectator) // Not playing - continue; - - if (players[i].exiting) // We're done, don't calculate. - return; - - if (players[i].bumpers <= 0) // Not alive, so don't do anything else - continue; - - numingame++; - - for (j = 0; j < MAXPLAYERS; j++) - { - if (!playeringame[j] || players[j].spectator) - continue; - - if (players[j].bumpers <= 0) - continue; - - if (j == i) - continue; - - if (K_NumEmeralds(&players[j]) > K_NumEmeralds(&players[i])) - { - position++; - } - else if (players[j].bumpers > players[i].bumpers) - { - position++; - } - else if (players[j].marescore > players[i].marescore) - { - position++; - } - else if (players[j].kartstuff[k_wanted] > players[i].kartstuff[k_wanted]) - { - position++; - } - } - - position--; // Make zero based - - while (camppos[position] != -1) // Port priority! - position++; - - camppos[position] = i; - } - - if (numingame <= 2) // In 1v1s then there's no need for WANTED. - numwanted = 0; - else - numwanted = min(4, 1 + ((numingame-2) / 4)); - - for (i = 0; i < 4; i++) - { - if (i+1 > numwanted) // Not enough players for this slot to be wanted! - { - battlewanted[i] = -1; - } - else - { - // Do not add *any* more people if there's too many times that are tied with others. - // This could theoretically happen very easily if people don't hit each other for a while after the start of a match. - // (I will be sincerely impressed if more than 2 people tie after people start hitting each other though) - - if (camppos[nextcamppos] == -1 // Out of entries - || ties >= (numwanted-i)) // Already counted ties - { - battlewanted[i] = -1; - continue; - } - - if (ties < (numwanted-i)) - { - ties = 0; // Reset - for (j = 0; j < 2; j++) - { - if (camppos[nextcamppos+(j+1)] == -1) // Nothing beyond, cancel - break; - if (players[camppos[nextcamppos]].kartstuff[k_wanted] == players[camppos[nextcamppos+(j+1)]].kartstuff[k_wanted]) - ties++; - } - } - - if (ties < (numwanted-i)) // Is it still low enough after counting? - { - battlewanted[i] = camppos[nextcamppos]; - nextcamppos++; - } - else - battlewanted[i] = -1; - } - } + return (player->ktemp_position == 1); } void K_SpawnBattlePoints(player_t *source, player_t *victim, UINT8 amount) @@ -226,7 +93,7 @@ void K_CheckBumpers(void) return; numingame++; - winnerscoreadd += players[i].marescore; + winnerscoreadd += players[i].roundscore; if (players[i].bumpers <= 0) // if you don't have any bumpers, you're probably not a winner { @@ -237,7 +104,7 @@ void K_CheckBumpers(void) return; winnernum = i; - winnerscoreadd -= players[i].marescore; + winnerscoreadd -= players[i].roundscore; } if (numingame <= 1) @@ -253,7 +120,7 @@ void K_CheckBumpers(void) { for (i = 0; i < MAXPLAYERS; i++) { - players[i].pflags |= PF_GAMETYPEOVER; + players[i].pflags |= PF_NOCONTEST; P_DoPlayerExit(&players[i]); } } @@ -264,7 +131,7 @@ void K_CheckBumpers(void) if (winnernum > -1 && playeringame[winnernum]) { - players[winnernum].marescore += winnerscoreadd; + players[winnernum].roundscore += winnerscoreadd; CONS_Printf(M_GetText("%s recieved %d point%s for winning!\n"), player_names[winnernum], winnerscoreadd, (winnerscoreadd == 1 ? "" : "s")); } @@ -279,12 +146,12 @@ void K_CheckEmeralds(player_t *player) { UINT8 i; - if (!ALLCHAOSEMERALDS(player->powers[pw_emeralds])) + if (!ALLCHAOSEMERALDS(player->ktemp_emeralds)) { return; } - player->marescore++; // lol + player->roundscore++; // lol for (i = 0; i < MAXPLAYERS; i++) { @@ -371,12 +238,12 @@ void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType) { UINT32 emeraldFlag = (1 << i); - if ((player->powers[pw_emeralds] & emeraldFlag) && (emeraldFlag & emeraldType)) + if ((player->ktemp_emeralds & emeraldFlag) && (emeraldFlag & emeraldType)) { mobj_t *emerald = K_SpawnChaosEmerald(player->mo->x, player->mo->y, player->mo->z, player->mo->angle - ANGLE_90, flip, emeraldFlag); P_SetTarget(&emerald->target, player->mo); - player->powers[pw_emeralds] &= ~emeraldFlag; + player->ktemp_emeralds &= ~emeraldFlag; } } } @@ -390,7 +257,7 @@ UINT8 K_NumEmeralds(player_t *player) { UINT32 emeraldFlag = (1 << i); - if (player->powers[pw_emeralds] & emeraldFlag) + if (player->ktemp_emeralds & emeraldFlag) { num++; } @@ -443,9 +310,9 @@ void K_RunPaperItemSpawners(void) continue; } - emeraldsSpawned |= players[i].powers[pw_emeralds]; + emeraldsSpawned |= players[i].ktemp_emeralds; - if ((players[i].exiting > 0 || players[i].eliminated) + if ((players[i].exiting > 0 || (players[i].pflags & PF_ELIMINATED)) || ((gametyperules & GTR_BUMPERS) && players[i].bumpers <= 0)) { continue; diff --git a/src/k_battle.h b/src/k_battle.h index 4b1508cbf..221873b04 100644 --- a/src/k_battle.h +++ b/src/k_battle.h @@ -17,7 +17,7 @@ extern UINT8 maptargets, numtargets; INT32 K_StartingBumperCount(void); boolean K_IsPlayerWanted(player_t *player); -void K_CalculateBattleWanted(void); +#define K_CalculateBattleWanted() (void)0 // not nulled out so we know where we need to recalculate some other form of battle mode importance void K_SpawnBattlePoints(player_t *source, player_t *victim, UINT8 amount); void K_CheckBumpers(void); void K_CheckEmeralds(player_t *player); diff --git a/src/k_bot.c b/src/k_bot.c index f6d3a993f..043f3ba39 100644 --- a/src/k_bot.c +++ b/src/k_bot.c @@ -274,10 +274,10 @@ boolean K_PlayerUsesBotMovement(player_t *player) boolean K_BotCanTakeCut(player_t *player) { if (!K_ApplyOffroad(player) - || player->kartstuff[k_itemtype] == KITEM_SNEAKER - || player->kartstuff[k_itemtype] == KITEM_ROCKETSNEAKER - || player->kartstuff[k_itemtype] == KITEM_INVINCIBILITY - || player->kartstuff[k_itemtype] == KITEM_HYUDORO) + || player->ktemp_itemtype == KITEM_SNEAKER + || player->ktemp_itemtype == KITEM_ROCKETSNEAKER + || player->ktemp_itemtype == KITEM_INVINCIBILITY + || player->ktemp_itemtype == KITEM_HYUDORO) return true; return false; @@ -716,7 +716,7 @@ static UINT8 K_TrySpindash(player_t *player) { const tic_t difficultyModifier = (TICRATE/6); - if (player->kartstuff[k_spindashboost] || player->kartstuff[k_tiregrease]) + if (player->ktemp_spindashboost || player->ktemp_tiregrease) { // You just released a spindash, you don't need to try again yet, jeez. return 0; @@ -749,7 +749,7 @@ static UINT8 K_TrySpindash(player_t *player) } // Logic for normal racing. - if (player->powers[pw_flashing] > 0) + if (player->ktemp_flashing > 0) { // Don't bother trying to spindash. // Trying to spindash while flashing is fine during POSITION, but not during the actual race. @@ -757,7 +757,7 @@ static UINT8 K_TrySpindash(player_t *player) } if (player->speed < 10*mapobjectscale // Below the speed threshold - && player->kartstuff[k_speedboost] < (FRACUNIT/8)) // If you have other boosts, you can probably trust it. + && player->ktemp_speedboost < (FRACUNIT/8)) // If you have other boosts, you can probably trust it. { INT32 chargingPoint = (K_GetSpindashChargeTime(player) + difficultyModifier); @@ -765,7 +765,7 @@ static UINT8 K_TrySpindash(player_t *player) // Sounds counter-productive, but that's actually the best strategy after the race has started. chargingPoint -= player->botvars.difficulty * difficultyModifier; - if (player->kartstuff[k_spindash] > chargingPoint) + if (player->ktemp_spindash > chargingPoint) { // Time to release. return 0; diff --git a/src/k_botitem.c b/src/k_botitem.c index 070f927c8..1d2c0c9c9 100644 --- a/src/k_botitem.c +++ b/src/k_botitem.c @@ -64,7 +64,7 @@ static boolean K_BotUseItemNearPlayer(player_t *player, ticcmd_t *cmd, fixed_t r if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->powers[pw_flashing]) + || target->ktemp_flashing) { continue; } @@ -117,7 +117,7 @@ static boolean K_PlayerNearSpot(player_t *player, fixed_t x, fixed_t y, fixed_t if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->powers[pw_flashing]) + || target->ktemp_flashing) { continue; } @@ -190,7 +190,7 @@ static boolean K_PlayerInCone(player_t *player, fixed_t radius, UINT16 cone, boo if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->powers[pw_flashing] + || target->ktemp_flashing || !P_CheckSight(player->mo, target->mo)) { continue; @@ -354,7 +354,7 @@ static boolean K_BotRevealsGenericTrap(player_t *player, INT16 turnamt, boolean --------------------------------------------------*/ static void K_BotItemGenericTrapShield(player_t *player, ticcmd_t *cmd, INT16 turnamt, boolean mine) { - if (player->kartstuff[k_itemheld]) + if (player->pflags & PF_ITEMOUT) { return; } @@ -379,7 +379,7 @@ static void K_BotItemGenericTrapShield(player_t *player, ticcmd_t *cmd, INT16 tu --------------------------------------------------*/ static void K_BotItemGenericOrbitShield(player_t *player, ticcmd_t *cmd) { - if (player->kartstuff[k_itemheld]) + if (player->pflags & PF_ITEMOUT) { return; } @@ -401,13 +401,13 @@ static void K_BotItemGenericOrbitShield(player_t *player, ticcmd_t *cmd) --------------------------------------------------*/ static void K_BotItemSneaker(player_t *player, ticcmd_t *cmd) { - if ((player->kartstuff[k_offroad] && K_ApplyOffroad(player)) // Stuck in offroad, use it NOW + if ((player->ktemp_offroad && K_ApplyOffroad(player)) // Stuck in offroad, use it NOW || K_GetWaypointIsShortcut(player->nextwaypoint) == true // Going toward a shortcut! || player->speed < K_GetKartSpeed(player, false)/2 // Being slowed down too much - || player->kartstuff[k_speedboost] > (FRACUNIT/8) // Have another type of boost (tethering) + || player->ktemp_speedboost > (FRACUNIT/8) // Have another type of boost (tethering) || player->botvars.itemconfirm > 4*TICRATE) // Held onto it for too long { - if (!player->kartstuff[k_sneakertimer] && !(player->pflags & PF_ATTACKDOWN)) + if (!player->ktemp_sneakertimer && !(player->pflags & PF_ATTACKDOWN)) { cmd->buttons |= BT_ATTACK; player->botvars.itemconfirm = 2*TICRATE; @@ -435,7 +435,7 @@ static void K_BotItemRocketSneaker(player_t *player, ticcmd_t *cmd) { if (player->botvars.itemconfirm > TICRATE) { - if (!player->kartstuff[k_sneakertimer] && !(player->pflags & PF_ATTACKDOWN)) + if (!player->ktemp_sneakertimer && !(player->pflags & PF_ATTACKDOWN)) { cmd->buttons |= BT_ATTACK; player->botvars.itemconfirm = 0; @@ -487,7 +487,7 @@ static void K_BotItemBanana(player_t *player, ticcmd_t *cmd, INT16 turnamt) throwdir = -1; } - if (player->botvars.itemconfirm > 2*TICRATE || player->kartstuff[k_bananadrag] >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -540,7 +540,7 @@ static void K_BotItemMine(player_t *player, ticcmd_t *cmd, INT16 turnamt) - if (player->botvars.itemconfirm > 2*TICRATE || player->kartstuff[k_bananadrag] >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -577,13 +577,13 @@ static void K_BotItemEggman(player_t *player, ticcmd_t *cmd) throwdir = -1; } - if (stealth > 1 || player->kartstuff[k_itemroulette] > 0) + if (stealth > 1 || player->ktemp_itemroulette > 0) { player->botvars.itemconfirm += player->botvars.difficulty * 4; throwdir = -1; } - if (player->botvars.itemconfirm > 2*TICRATE || player->kartstuff[k_bananadrag] >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -639,7 +639,7 @@ static boolean K_BotRevealsEggbox(player_t *player) --------------------------------------------------*/ static void K_BotItemEggmanShield(player_t *player, ticcmd_t *cmd) { - if (player->kartstuff[k_eggmanheld]) + if (player->pflags & PF_EGGMANOUT) { return; } @@ -664,7 +664,7 @@ static void K_BotItemEggmanShield(player_t *player, ticcmd_t *cmd) --------------------------------------------------*/ static void K_BotItemEggmanExplosion(player_t *player, ticcmd_t *cmd) { - if (player->kartstuff[k_position] == 1) + if (player->ktemp_position == 1) { cmd->forwardmove /= 2; cmd->buttons |= BT_BRAKE; @@ -746,7 +746,7 @@ static void K_BotItemJawz(player_t *player, ticcmd_t *cmd) throwdir = -1; } - if (player->kartstuff[k_lastjawztarget] != -1) + if (player->ktemp_lastjawztarget != -1) { player->botvars.itemconfirm += player->botvars.difficulty * 2; throwdir = 1; @@ -801,13 +801,13 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) { boolean hold = false; - if (player->kartstuff[k_bubbleblowup] <= 0) + if (player->ktemp_bubbleblowup <= 0) { UINT8 i; player->botvars.itemconfirm++; - if (player->kartstuff[k_bubblecool] <= 0) + if (player->ktemp_bubblecool <= 0) { const fixed_t radius = 192 * player->mo->scale; @@ -825,7 +825,7 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->powers[pw_flashing]) + || target->ktemp_flashing) { continue; } @@ -844,19 +844,19 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) } } } - else if (player->kartstuff[k_bubbleblowup] >= bubbletime) + else if (player->ktemp_bubbleblowup >= bubbletime) { if (player->botvars.itemconfirm >= 10*TICRATE) { hold = true; } } - else if (player->kartstuff[k_bubbleblowup] < bubbletime) + else if (player->ktemp_bubbleblowup < bubbletime) { hold = true; } - if (hold && player->kartstuff[k_holdready]) + if (hold && (player->pflags & PF_HOLDREADY)) { cmd->buttons |= BT_ATTACK; } @@ -880,11 +880,11 @@ static void K_BotItemFlame(player_t *player, ticcmd_t *cmd) { player->botvars.itemconfirm--; } - else if (player->kartstuff[k_holdready]) + else if (player->pflags & PF_HOLDREADY) { - INT32 flamemax = player->kartstuff[k_flamelength] * flameseg; + INT32 flamemax = player->ktemp_flamelength * flameseg; - if (player->kartstuff[k_flamemeter] < flamemax || flamemax == 0) + if (player->ktemp_flamemeter < flamemax || flamemax == 0) { cmd->buttons |= BT_ATTACK; } @@ -912,7 +912,7 @@ static void K_BotItemRings(player_t *player, ticcmd_t *cmd) INT32 saferingsval = 16 - K_GetKartRingPower(player, false); if (player->speed < K_GetKartSpeed(player, false)/2 // Being slowed down too much - || player->kartstuff[k_speedboost] > (FRACUNIT/5)) // Have another type of boost (tethering) + || player->ktemp_speedboost > (FRACUNIT/5)) // Have another type of boost (tethering) { saferingsval -= 5; } @@ -967,7 +967,7 @@ static void K_BotItemRouletteMash(player_t *player, ticcmd_t *cmd) --------------------------------------------------*/ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) { - if (player->kartstuff[k_userings] == 1) + if (player->pflags & PF_USERINGS) { // Use rings! @@ -985,33 +985,33 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) return; } - if (player->kartstuff[k_itemroulette]) + if (player->ktemp_itemroulette) { // Mashing behaviors K_BotItemRouletteMash(player, cmd); return; } - if (player->kartstuff[k_stealingtimer] == 0 && player->kartstuff[k_stolentimer] == 0) + if (player->ktemp_stealingtimer == 0) { - if (player->kartstuff[k_eggmanexplode]) + if (player->ktemp_eggmanexplode) { K_BotItemEggmanExplosion(player, cmd); } - else if (player->kartstuff[k_eggmanheld]) + else if (player->pflags & PF_EGGMANOUT) { K_BotItemEggman(player, cmd); } - else if (player->kartstuff[k_rocketsneakertimer] > 0) + else if (player->ktemp_rocketsneakertimer > 0) { K_BotItemRocketSneaker(player, cmd); } else { - switch (player->kartstuff[k_itemtype]) + switch (player->ktemp_itemtype) { default: - if (player->kartstuff[k_itemtype] != KITEM_NONE) + if (player->ktemp_itemtype != KITEM_NONE) { K_BotItemGenericTap(player, cmd); } @@ -1027,7 +1027,7 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) K_BotItemGenericTap(player, cmd); break; case KITEM_ROCKETSNEAKER: - if (player->kartstuff[k_rocketsneakertimer] <= 0) + if (player->ktemp_rocketsneakertimer <= 0) { K_BotItemGenericTap(player, cmd); } @@ -1037,7 +1037,7 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) break; case KITEM_BANANA: case KITEM_LANDMINE: - if (!player->kartstuff[k_itemheld]) + if (!(player->pflags & PF_ITEMOUT)) { K_BotItemGenericTrapShield(player, cmd, turnamt, false); } @@ -1050,11 +1050,11 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) K_BotItemEggmanShield(player, cmd); break; case KITEM_ORBINAUT: - if (!player->kartstuff[k_itemheld]) + if (!(player->pflags & PF_ITEMOUT)) { K_BotItemGenericOrbitShield(player, cmd); } - else if (player->kartstuff[k_position] != 1) // Hold onto orbiting items when in 1st :) + else if (player->ktemp_position != 1) // Hold onto orbiting items when in 1st :) /* FALL-THRU */ case KITEM_BALLHOG: { @@ -1062,17 +1062,17 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) } break; case KITEM_JAWZ: - if (!player->kartstuff[k_itemheld]) + if (!(player->pflags & PF_ITEMOUT)) { K_BotItemGenericOrbitShield(player, cmd); } - else if (player->kartstuff[k_position] != 1) // Hold onto orbiting items when in 1st :) + else if (player->ktemp_position != 1) // Hold onto orbiting items when in 1st :) { K_BotItemJawz(player, cmd); } break; case KITEM_MINE: - if (!player->kartstuff[k_itemheld]) + if (!(player->pflags & PF_ITEMOUT)) { K_BotItemGenericTrapShield(player, cmd, turnamt, true); } diff --git a/src/k_botsearch.c b/src/k_botsearch.c index 880eb5ef9..af793f0ee 100644 --- a/src/k_botsearch.c +++ b/src/k_botsearch.c @@ -322,7 +322,7 @@ static boolean K_FindBlockingWalls(line_t *line) // set openrange, opentop, openbottom P_LineOpening(line, globalsmuggle.botmo); - if (globalsmuggle.botmo->player->kartstuff[k_waterskip]) + if (globalsmuggle.botmo->player->ktemp_waterskip) maxstep += maxstepmove; if (P_MobjTouchingSectorSpecial(globalsmuggle.botmo, 1, 13, false)) @@ -648,18 +648,18 @@ static boolean K_FindObjectsForNudging(mobj_t *thing) break; } - if ((RINGTOTAL(globalsmuggle.botmo->player) < 20 && !globalsmuggle.botmo->player->kartstuff[k_ringlock] + if ((RINGTOTAL(globalsmuggle.botmo->player) < 20 && !(globalsmuggle.botmo->player->pflags & PF_RINGLOCK) && P_CanPickupItem(globalsmuggle.botmo->player, 0)) && !thing->extravalue1 - && (globalsmuggle.botmo->player->kartstuff[k_itemtype] != KITEM_THUNDERSHIELD)) + && (globalsmuggle.botmo->player->ktemp_itemtype != KITEM_THUNDERSHIELD)) { K_AddAttackObject(thing, side, (RINGTOTAL(globalsmuggle.botmo->player) < 3) ? 5 : 1); } break; case MT_PLAYER: if (thing->player - && !thing->player->kartstuff[k_hyudorotimer] - && !globalsmuggle.botmo->player->kartstuff[k_hyudorotimer]) + && !thing->player->ktemp_hyudorotimer + && !globalsmuggle.botmo->player->ktemp_hyudorotimer) { // There REALLY ought to be a better way to handle this logic, right?! // Squishing @@ -672,40 +672,40 @@ static boolean K_FindObjectsForNudging(mobj_t *thing) } // Invincibility else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->kartstuff[k_invincibilitytimer], - thing->player->kartstuff[k_invincibilitytimer] + globalsmuggle.botmo->player->ktemp_invincibilitytimer, + thing->player->ktemp_invincibilitytimer )) { break; } // Thunder Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->kartstuff[k_itemtype] == KITEM_THUNDERSHIELD, - thing->player->kartstuff[k_itemtype] == KITEM_THUNDERSHIELD + globalsmuggle.botmo->player->ktemp_itemtype == KITEM_THUNDERSHIELD, + thing->player->ktemp_itemtype == KITEM_THUNDERSHIELD )) { break; } // Bubble Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD, - thing->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD + globalsmuggle.botmo->player->ktemp_itemtype == KITEM_BUBBLESHIELD, + thing->player->ktemp_itemtype == KITEM_BUBBLESHIELD )) { break; } // Flame Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD, - thing->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD + globalsmuggle.botmo->player->ktemp_itemtype == KITEM_FLAMESHIELD, + thing->player->ktemp_itemtype == KITEM_FLAMESHIELD )) { break; } // Has held item shield else if (K_PlayerAttackSteer(thing, side, 20, - (globalsmuggle.botmo->player->kartstuff[k_itemheld] || globalsmuggle.botmo->player->kartstuff[k_eggmanheld]), - (thing->player->kartstuff[k_itemheld] || thing->player->kartstuff[k_eggmanheld]) + (thing->player->pflags & (PF_ITEMOUT|PF_EGGMANOUT)), + (globalsmuggle.botmo->player->pflags & (PF_ITEMOUT|PF_EGGMANOUT)) )) { break; diff --git a/src/k_collide.c b/src/k_collide.c index 2dba32202..5b148eb35 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -30,14 +30,14 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if ((t2->player->powers[pw_flashing] > 0 && t2->hitlag == 0) + if ((t2->player->ktemp_flashing > 0 && t2->hitlag == 0) && !(t1->type == MT_ORBINAUT || t1->type == MT_JAWZ || t1->type == MT_JAWZ_DUD)) return true; - if (t2->player->kartstuff[k_hyudorotimer]) + if (t2->player->ktemp_hyudorotimer) return true; // no interaction - if (t2->player->kartstuff[k_flamedash] && t2->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD) + if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -123,14 +123,14 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->powers[pw_flashing] > 0 && t2->hitlag == 0) + if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) return true; // Banana snipe! if (t1->type == MT_BANANA && t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->kartstuff[k_flamedash] && t2->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD) + if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -206,23 +206,17 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) if ((gametyperules & GTR_BUMPERS) && t2->player->bumpers <= 0) { -#ifdef OTHERKARMAMODES - if (t2->player->kartstuff[k_comebackmode] || t2->player->karmadelay) - return true; - t2->player->kartstuff[k_comebackmode] = 2; -#else return true; -#endif } else { K_DropItems(t2->player); //K_StripItems(t2->player); //K_StripOther(t2->player); - t2->player->kartstuff[k_itemroulette] = 1; - t2->player->kartstuff[k_roulettetype] = 2; + t2->player->ktemp_itemroulette = 1; + t2->player->ktemp_roulettetype = 2; } - if (t2->player->kartstuff[k_flamedash] && t2->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD) + if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -243,14 +237,14 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) if (t1->target && t1->target->player) { if ((gametyperules & GTR_CIRCUIT) || t1->target->player->bumpers > 0) - t2->player->kartstuff[k_eggmanblame] = t1->target->player-players; + t2->player->ktemp_eggmanblame = t1->target->player-players; else - t2->player->kartstuff[k_eggmanblame] = t2->player-players; + t2->player->ktemp_eggmanblame = t2->player-players; if (t1->target->hnext == t1) { P_SetTarget(&t1->target->hnext, NULL); - t1->target->player->kartstuff[k_eggmanheld] = 0; + t1->target->player->pflags &= ~PF_EGGMANOUT; } } @@ -272,7 +266,7 @@ boolean K_MineCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->powers[pw_flashing] > 0 && t2->hitlag == 0) + if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) return true; // Bomb punting @@ -314,7 +308,7 @@ boolean K_MineExplosionCollide(mobj_t *t1, mobj_t *t2) { if (t2->player) { - if (t2->player->powers[pw_flashing] > 0 && t2->hitlag == 0) + if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) return true; if (t1->state == &states[S_MINEEXPLOSION1]) @@ -345,14 +339,14 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->powers[pw_flashing]) + if (t2->player->ktemp_flashing) return true; // Banana snipe! if (t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->kartstuff[k_flamedash] && t2->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD) + if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -409,7 +403,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->powers[pw_flashing] > 0 && t2->hitlag == 0) + if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) return true; S_StartSound(NULL, sfx_bsnipe); // let all players hear it. @@ -458,8 +452,8 @@ boolean K_SMKIceBlockCollide(mobj_t *t1, mobj_t *t2) P_KillMobj(t1, t2, t2, DMG_NORMAL); /* - if (t2->player && (t2->player->kartstuff[k_invincibilitytimer] > 0 - || t2->player->kartstuff[k_growshrinktimer] > 0)) + if (t2->player && (t2->player->ktemp_invincibilitytimer > 0 + || t2->player->ktemp_growshrinktimer > 0)) return true; */ @@ -489,8 +483,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Invincibility damage - t1Condition = (t1->player->kartstuff[k_invincibilitytimer] > 0); - t2Condition = (t2->player->kartstuff[k_invincibilitytimer] > 0); + t1Condition = (t1->player->ktemp_invincibilitytimer > 0); + t2Condition = (t2->player->ktemp_invincibilitytimer > 0); if (t1Condition == true && t2Condition == false) { @@ -504,8 +498,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Flame Shield dash damage - t1Condition = (t1->player->kartstuff[k_flamedash] > 0 && t1->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD); - t2Condition = (t2->player->kartstuff[k_flamedash] > 0 && t2->player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD); + t1Condition = (t1->player->ktemp_flamedash > 0 && t1->player->ktemp_itemtype == KITEM_FLAMESHIELD); + t2Condition = (t2->player->ktemp_flamedash > 0 && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD); if (t1Condition == true && t2Condition == false) { @@ -522,8 +516,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) // (Pogo Spring damage is handled in head-stomping code) if (gametyperules & GTR_BUMPERS) { - t1Condition = (t1->player->kartstuff[k_sneakertimer] > 0 && t1->player->powers[pw_flashing] != 0); - t2Condition = (t2->player->kartstuff[k_sneakertimer] > 0 && t2->player->powers[pw_flashing] != 0); + t1Condition = (t1->player->ktemp_sneakertimer > 0 && t1->player->ktemp_flashing != 0); + t2Condition = (t2->player->ktemp_sneakertimer > 0 && t2->player->ktemp_flashing != 0); if (t1Condition == true && t2Condition == false) { @@ -538,8 +532,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Ring sting, this is a bit more unique - t1Condition = (K_GetShieldFromItem(t2->player->kartstuff[k_itemtype]) == KSHIELD_NONE); - t2Condition = (K_GetShieldFromItem(t1->player->kartstuff[k_itemtype]) == KSHIELD_NONE); + t1Condition = (K_GetShieldFromItem(t2->player->ktemp_itemtype) == KSHIELD_NONE); + t2Condition = (K_GetShieldFromItem(t1->player->ktemp_itemtype) == KSHIELD_NONE); if (t1Condition == true) { diff --git a/src/k_grandprix.c b/src/k_grandprix.c index e46a6a7be..d2c786ce0 100644 --- a/src/k_grandprix.c +++ b/src/k_grandprix.c @@ -472,7 +472,7 @@ void K_IncreaseBotDifficulty(player_t *bot) // Increment bot difficulty based on what position you were meant to come in! expectedstanding = K_BotExpectedStanding(bot); - standingdiff = expectedstanding - bot->kartstuff[k_position]; + standingdiff = expectedstanding - bot->ktemp_position; if (standingdiff >= -2) { @@ -533,7 +533,7 @@ void K_FakeBotResults(player_t *bot) if (besttime == UINT32_MAX // No one finished, so you don't finish either. || bot->distancetofinish >= worstdist) // Last place, you aren't going to finish. { - bot->pflags |= PF_GAMETYPEOVER; + bot->pflags |= PF_NOCONTEST; return; } @@ -556,13 +556,13 @@ void K_PlayerLoseLife(player_t *player) return; } - if (player->spectator || player->exiting || player->bot || player->lostlife) + if (player->spectator || player->exiting || player->bot || (player->pflags & PF_LOSTLIFE)) { return; } player->lives--; - player->lostlife = true; + player->pflags |= PF_LOSTLIFE; #if 0 if (player->lives <= 0) diff --git a/src/k_hud.c b/src/k_hud.c index 31bf7cabc..5a7ffde9a 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -1045,7 +1045,7 @@ static void K_drawKartItem(void) patch_t *localbg = ((offset) ? kp_itembg[2] : kp_itembg[0]); patch_t *localinv = ((offset) ? kp_invincibility[((leveltime % (6*3)) / 3) + 7] : kp_invincibility[(leveltime % (7*3)) / 3]); INT32 fx = 0, fy = 0, fflags = 0; // final coords for hud and flags... - const INT32 numberdisplaymin = ((!offset && stplyr->kartstuff[k_itemtype] == KITEM_ORBINAUT) ? 5 : 2); + const INT32 numberdisplaymin = ((!offset && stplyr->ktemp_itemtype == KITEM_ORBINAUT) ? 5 : 2); INT32 itembar = 0; INT32 maxl = 0; // itembar's normal highest value const INT32 barlength = (r_splitscreen > 1 ? 12 : 26); @@ -1054,12 +1054,12 @@ static void K_drawKartItem(void) UINT8 *colmap = NULL; boolean flipamount = false; // Used for 3P/4P splitscreen to flip item amount stuff - if (stplyr->kartstuff[k_itemroulette]) + if (stplyr->ktemp_itemroulette) { if (stplyr->skincolor) localcolor = stplyr->skincolor; - switch((stplyr->kartstuff[k_itemroulette] % (15*3)) / 3) + switch((stplyr->ktemp_itemroulette % (15*3)) / 3) { // Each case is handled in threes, to give three frames of in-game time to see the item on the roulette case 0: // Sneaker @@ -1144,27 +1144,27 @@ static void K_drawKartItem(void) // The only actual reason is to make sneakers line up this way in the code below // This shouldn't have any actual baring over how it functions // Hyudoro is first, because we're drawing it on top of the player's current item - if (stplyr->kartstuff[k_stolentimer] > 0) + if (stplyr->ktemp_stealingtimer < 0) { if (leveltime & 2) localpatch = kp_hyudoro[offset]; else localpatch = kp_nodraw; } - else if ((stplyr->kartstuff[k_stealingtimer] > 0) && (leveltime & 2)) + else if ((stplyr->ktemp_stealingtimer > 0) && (leveltime & 2)) { localpatch = kp_hyudoro[offset]; } - else if (stplyr->kartstuff[k_eggmanexplode] > 1) + else if (stplyr->ktemp_eggmanexplode > 1) { if (leveltime & 1) localpatch = kp_eggman[offset]; else localpatch = kp_nodraw; } - else if (stplyr->kartstuff[k_rocketsneakertimer] > 1) + else if (stplyr->ktemp_rocketsneakertimer > 1) { - itembar = stplyr->kartstuff[k_rocketsneakertimer]; + itembar = stplyr->ktemp_rocketsneakertimer; maxl = (itemtime*3) - barlength; if (leveltime & 1) @@ -1172,7 +1172,7 @@ static void K_drawKartItem(void) else localpatch = kp_nodraw; } - else if (stplyr->kartstuff[k_sadtimer] > 0) + else if (stplyr->ktemp_sadtimer > 0) { if (leveltime & 2) localpatch = kp_sadface[offset]; @@ -1181,10 +1181,10 @@ static void K_drawKartItem(void) } else { - if (stplyr->kartstuff[k_itemamount] <= 0) + if (stplyr->ktemp_itemamount <= 0) return; - switch(stplyr->kartstuff[k_itemtype]) + switch(stplyr->ktemp_itemtype) { case KITEM_SNEAKER: localpatch = kp_sneaker[offset]; @@ -1203,7 +1203,7 @@ static void K_drawKartItem(void) localpatch = kp_eggman[offset]; break; case KITEM_ORBINAUT: - localpatch = kp_orbinaut[(offset ? 4 : min(stplyr->kartstuff[k_itemamount]-1, 3))]; + localpatch = kp_orbinaut[(offset ? 4 : min(stplyr->ktemp_itemamount-1, 3))]; break; case KITEM_JAWZ: localpatch = kp_jawz[offset]; @@ -1258,7 +1258,7 @@ static void K_drawKartItem(void) return; } - if (stplyr->kartstuff[k_itemheld] && !(leveltime & 1)) + if ((stplyr->pflags & PF_ITEMOUT) && !(leveltime & 1)) localpatch = kp_nodraw; } @@ -1311,19 +1311,19 @@ static void K_drawKartItem(void) V_DrawScaledPatch(fx, fy, V_HUDTRANS|V_SLIDEIN|fflags, localbg); // Then, the numbers: - if (stplyr->kartstuff[k_itemamount] >= numberdisplaymin && !stplyr->kartstuff[k_itemroulette]) + if (stplyr->ktemp_itemamount >= numberdisplaymin && !stplyr->ktemp_itemroulette) { V_DrawScaledPatch(fx + (flipamount ? 48 : 0), fy, V_HUDTRANS|V_SLIDEIN|fflags|(flipamount ? V_FLIP : 0), kp_itemmulsticker[offset]); // flip this graphic for p2 and p4 in split and shift it. V_DrawFixedPatch(fx<kartstuff[k_itemamount])); + V_DrawString(fx+2, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->ktemp_itemamount)); else - V_DrawString(fx+24, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->kartstuff[k_itemamount])); + V_DrawString(fx+24, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->ktemp_itemamount)); else { V_DrawScaledPatch(fy+28, fy+41, V_HUDTRANS|V_SLIDEIN|fflags, kp_itemx); - V_DrawKartString(fx+38, fy+36, V_HUDTRANS|V_SLIDEIN|fflags, va("%d", stplyr->kartstuff[k_itemamount])); + V_DrawKartString(fx+38, fy+36, V_HUDTRANS|V_SLIDEIN|fflags, va("%d", stplyr->ktemp_itemamount)); } } else @@ -1351,17 +1351,17 @@ static void K_drawKartItem(void) } // Quick Eggman numbers - if (stplyr->kartstuff[k_eggmanexplode] > 1 /*&& stplyr->kartstuff[k_eggmanexplode] <= 3*TICRATE*/) - V_DrawScaledPatch(fx+17, fy+13-offset, V_HUDTRANS|V_SLIDEIN|fflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->kartstuff[k_eggmanexplode]))]); + if (stplyr->ktemp_eggmanexplode > 1) + V_DrawScaledPatch(fx+17, fy+13-offset, V_HUDTRANS|V_SLIDEIN|fflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->ktemp_eggmanexplode))]); - if (stplyr->kartstuff[k_itemtype] == KITEM_FLAMESHIELD && stplyr->kartstuff[k_flamelength] > 0) + if (stplyr->ktemp_itemtype == KITEM_FLAMESHIELD && stplyr->ktemp_flamelength > 0) { INT32 numframes = 104; INT32 absolutemax = 16 * flameseg; - INT32 flamemax = stplyr->kartstuff[k_flamelength] * flameseg; - INT32 flamemeter = min(stplyr->kartstuff[k_flamemeter], flamemax); + INT32 flamemax = stplyr->ktemp_flamelength * flameseg; + INT32 flamemeter = min(stplyr->ktemp_flamemeter, flamemax); - INT32 bf = 16 - stplyr->kartstuff[k_flamelength]; + INT32 bf = 16 - stplyr->ktemp_flamelength; INT32 ff = numframes - ((flamemeter * numframes) / absolutemax); INT32 fmin = (8 * (bf-1)); @@ -1385,9 +1385,9 @@ static void K_drawKartItem(void) if (bf >= 0 && bf < 16) V_DrawScaledPatch(fx-xo, fy-yo, V_HUDTRANS|V_SLIDEIN|fflags|flip, kp_flameshieldmeter_bg[bf][offset]); - if (ff >= 0 && ff < numframes && stplyr->kartstuff[k_flamemeter] > 0) + if (ff >= 0 && ff < numframes && stplyr->ktemp_flamemeter > 0) { - if ((stplyr->kartstuff[k_flamemeter] > flamemax) && (leveltime & 1)) + if ((stplyr->ktemp_flamemeter > flamemax) && (leveltime & 1)) { UINT8 *fsflash = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_WHITE, GTC_CACHE); V_DrawMappedPatch(fx-xo, fy-yo, V_HUDTRANS|V_SLIDEIN|fflags|flip, kp_flameshieldmeter[ff][offset], fsflash); @@ -1572,7 +1572,7 @@ static void K_DrawKartPositionNum(INT32 num) addOrSub = V_SUBTRACT; } - if (stplyr->kartstuff[k_positiondelay] || stplyr->exiting) + if (stplyr->ktemp_positiondelay || stplyr->exiting) { scale *= 2; overtake = true; // this is used for splitscreen stuff in conjunction with flipdraw. @@ -1735,11 +1735,11 @@ static boolean K_drawKartPositionFaces(void) if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo) continue; - if (players[i].kartstuff[k_position] >= lowestposition) + if (players[i].ktemp_position >= lowestposition) continue; rankplayer[ranklines] = i; - lowestposition = players[i].kartstuff[k_position]; + lowestposition = players[i].ktemp_position; } i = rankplayer[ranklines]; @@ -1816,7 +1816,7 @@ static boolean K_drawKartPositionFaces(void) UINT32 emeraldFlag = (1 << j); UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + j; - if (players[rankplayer[i]].powers[pw_emeralds] & emeraldFlag) + if (players[rankplayer[i]].ktemp_emeralds & emeraldFlag) { colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE); V_DrawMappedPatch(emeraldx, Y+7, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_rankemerald, colormap); @@ -1831,7 +1831,7 @@ static boolean K_drawKartPositionFaces(void) V_DrawScaledPatch(FACE_X-4, Y-3, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_ranknobumpers); else { - INT32 pos = players[rankplayer[i]].kartstuff[k_position]; + INT32 pos = players[rankplayer[i]].ktemp_position; if (pos < 0 || pos > MAXPLAYERS) pos = 0; // Draws the little number over the face @@ -1868,7 +1868,7 @@ static void K_drawKartEmeralds(void) UINT32 emeraldFlag = (1 << i); UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + i; - if (stplyr->powers[pw_emeralds] & emeraldFlag) + if (stplyr->ktemp_emeralds & emeraldFlag) { boolean whiteFlash = (leveltime & 1); UINT8 *colormap; @@ -1997,7 +1997,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN V_DrawScaledPatch(x-4, y-7, 0, kp_ranknobumpers); else { - INT32 pos = players[tab[i].num].kartstuff[k_position]; + INT32 pos = players[tab[i].num].ktemp_position; if (pos < 0 || pos > MAXPLAYERS) pos = 0; // Draws the little number over the face @@ -2011,7 +2011,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN { if (players[tab[i].num].exiting) V_DrawRightAlignedThinString(x+rightoffset, y-1, hilicol|V_6WIDTHSPACE, timestring(players[tab[i].num].realtime)); - else if (players[tab[i].num].pflags & PF_GAMETYPEOVER) + else if (players[tab[i].num].pflags & PF_NOCONTEST) V_DrawRightAlignedThinString(x+rightoffset, y-1, V_6WIDTHSPACE, "NO CONTEST."); else if (circuitmap) V_DrawRightAlignedThinString(x+rightoffset, y-1, V_6WIDTHSPACE, va("Lap %d", tab[i].count)); @@ -2020,7 +2020,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN { if (players[tab[i].num].exiting) V_DrawRightAlignedString(x+rightoffset, y, hilicol, timestring(players[tab[i].num].realtime)); - else if (players[tab[i].num].pflags & PF_GAMETYPEOVER) + else if (players[tab[i].num].pflags & PF_NOCONTEST) V_DrawRightAlignedThinString(x+rightoffset, y-1, 0, "NO CONTEST."); else if (circuitmap) V_DrawRightAlignedString(x+rightoffset, y, 0, va("Lap %d", tab[i].count)); @@ -2146,7 +2146,7 @@ static void K_drawKartLapsAndRings(void) V_DrawMappedPatch(fr+15, fy-10, V_HUDTRANS|V_SLIDEIN|splitflags, fontv[PINGNUM_FONT].font[rn[1]], ringmap); // SPB ring lock - if (stplyr->kartstuff[k_ringlock]) + if (stplyr->pflags & PF_RINGLOCK) V_DrawScaledPatch(fr-12, fy-23, V_HUDTRANS|V_SLIDEIN|splitflags, kp_ringspblocksmall[stplyr->karthud[khud_ringspblock]]); // Lives @@ -2184,7 +2184,7 @@ static void K_drawKartLapsAndRings(void) } // SPB ring lock - if (stplyr->kartstuff[k_ringlock]) + if (stplyr->pflags & PF_RINGLOCK) V_DrawScaledPatch(LAPS_X-5, LAPS_Y-28, V_HUDTRANS|V_SLIDEIN|splitflags, kp_ringspblock[stplyr->karthud[khud_ringspblock]]); // Lives @@ -2602,16 +2602,16 @@ static void K_drawKartPlayerCheck(void) continue; } - if ((checkplayer->kartstuff[k_invincibilitytimer] <= 0) && (leveltime & 2)) + if ((checkplayer->ktemp_invincibilitytimer <= 0) && (leveltime & 2)) { pnum++; // white frames } - if (checkplayer->kartstuff[k_itemtype] == KITEM_GROW || checkplayer->kartstuff[k_growshrinktimer] > 0) + if (checkplayer->ktemp_itemtype == KITEM_GROW || checkplayer->ktemp_growshrinktimer > 0) { pnum += 4; } - else if (checkplayer->kartstuff[k_itemtype] == KITEM_INVINCIBILITY || checkplayer->kartstuff[k_invincibilitytimer]) + else if (checkplayer->ktemp_itemtype == KITEM_INVINCIBILITY || checkplayer->ktemp_invincibilitytimer) { pnum += 2; } @@ -2645,8 +2645,8 @@ static boolean K_ShowPlayerNametag(player_t *p) if (gametyperules & GTR_CIRCUIT) { - if ((p->kartstuff[k_position] < stplyr->kartstuff[k_position]-2) - || (p->kartstuff[k_position] > stplyr->kartstuff[k_position]+2)) + if ((p->ktemp_position < stplyr->ktemp_position-2) + || (p->ktemp_position > stplyr->ktemp_position+2)) { return false; } @@ -3144,10 +3144,10 @@ static void K_drawKartMinimap(void) if (gametype == GT_BATTLE && players[i].bumpers <= 0) continue; - if (players[i].kartstuff[k_hyudorotimer] > 0) + if (players[i].ktemp_hyudorotimer > 0) { - if (!((players[i].kartstuff[k_hyudorotimer] < TICRATE/2 - || players[i].kartstuff[k_hyudorotimer] > hyu-(TICRATE/2)) + if (!((players[i].ktemp_hyudorotimer < TICRATE/2 + || players[i].ktemp_hyudorotimer > hyu-(TICRATE/2)) && !(leveltime & 1))) continue; } @@ -3178,7 +3178,7 @@ static void K_drawKartMinimap(void) K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, faceprefix[skin][FACE_MINIMAP], colormap, AutomapPic); // Target reticule - if ((gametype == GT_RACE && players[i].kartstuff[k_position] == spbplace) + if ((gametype == GT_RACE && players[i].ktemp_position == spbplace) || (gametype == GT_BATTLE && K_IsPlayerWanted(&players[i]))) K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic); } @@ -3231,7 +3231,7 @@ static void K_drawKartMinimap(void) K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, faceprefix[skin][FACE_MINIMAP], colormap, AutomapPic); // Target reticule - if ((gametype == GT_RACE && players[localplayers[i]].kartstuff[k_position] == spbplace) + if ((gametype == GT_RACE && players[localplayers[i]].ktemp_position == spbplace) || (gametype == GT_BATTLE && K_IsPlayerWanted(&players[localplayers[i]]))) K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic); } @@ -3569,7 +3569,7 @@ static void K_drawBattleFullscreen(void) if (K_IsPlayerLosing(stplyr)) p = kp_battlelose; - else if (stplyr->kartstuff[k_position] == 1) + else if (stplyr->ktemp_position == 1) p = kp_battlewin; V_DrawFixedPatch(x<steering/50) tn -= (tn - (stplyr->steering/50))/8; - if (dr != stplyr->kartstuff[k_drift]*16) - dr -= (dr - (stplyr->kartstuff[k_drift]*16))/8; + if (dr != stplyr->ktemp_drift*16) + dr -= (dr - (stplyr->ktemp_drift*16))/8; if (r_splitscreen == 1) { @@ -3721,7 +3721,7 @@ static void K_drawKartFirstPerson(void) if (stplyr->mo) { - UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->kartstuff[k_driftcharge]); + UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->ktemp_driftcharge); const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->drawangle; // yes, the following is correct. no, you do not need to swap the x and y. fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2); @@ -4054,7 +4054,7 @@ static void K_drawDistributionDebugger(void) for (i = 0; i < MAXPLAYERS; i++) { if (playeringame[i] && !players[i].spectator - && players[i].kartstuff[k_position] == 1) + && players[i].ktemp_position == 1) { // This player is first! Yay! pdis = stplyr->distancetofinish - players[i].distancetofinish; @@ -4065,7 +4065,7 @@ static void K_drawDistributionDebugger(void) if (franticitems) // Frantic items make the distances between everyone artifically higher, for crazier items pdis = (15 * pdis) / 14; - if (spbplace != -1 && stplyr->kartstuff[k_position] == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell + if (spbplace != -1 && stplyr->ktemp_position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell { pdis = (3 * pdis) / 2; spbrush = true; @@ -4172,7 +4172,7 @@ void K_drawKartHUD(void) && (stplyr->exiting || (stplyr->bumpers <= 0 && stplyr->karmadelay > 0 - && stplyr->eliminated == false + && !(stplyr->pflags & PF_ELIMINATED) && comeback == true && stplyr->playerstate == PST_LIVE))); @@ -4255,7 +4255,7 @@ void K_drawKartHUD(void) { // Draw the numerical position if (LUA_HudEnabled(hud_position)) - K_DrawKartPositionNum(stplyr->kartstuff[k_position]); + K_DrawKartPositionNum(stplyr->ktemp_position); } else //if (!(demo.playback && hu_showscores)) { @@ -4328,7 +4328,7 @@ void K_drawKartHUD(void) K_drawKartFreePlay(); } - if (r_splitscreen == 0 && stplyr->kartstuff[k_wrongway] && ((leveltime / 8) & 1)) + if (r_splitscreen == 0 && (stplyr->pflags & PF_WRONGWAY) && ((leveltime / 8) & 1)) { V_DrawCenteredString(BASEVIDWIDTH>>1, 176, V_REDMAP|V_SNAPTOBOTTOM, "WRONG WAY"); } diff --git a/src/k_kart.c b/src/k_kart.c index 280916f57..7aed2c800 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -269,15 +269,15 @@ boolean K_IsPlayerLosing(player_t *player) if (battlecapsules && player->bumpers <= 0) return true; // DNF in break the capsules - if (player->kartstuff[k_position] == 1) + if (player->ktemp_position == 1) return false; for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || players[i].spectator) continue; - if (players[i].kartstuff[k_position] > pcount) - pcount = players[i].kartstuff[k_position]; + if (players[i].ktemp_position > pcount) + pcount = players[i].ktemp_position; } if (pcount <= 1) @@ -287,7 +287,7 @@ boolean K_IsPlayerLosing(player_t *player) if (pcount % 2) // any remainder? winningpos++; - return (player->kartstuff[k_position] > winningpos); + return (player->ktemp_position > winningpos); } fixed_t K_GetKartGameSpeedScalar(SINT8 value) @@ -450,43 +450,43 @@ static void K_KartGetItemResult(player_t *player, SINT8 getitem) { // Special roulettes first, then the generic ones are handled by default case KRITEM_DUALSNEAKER: // Sneaker x2 - player->kartstuff[k_itemtype] = KITEM_SNEAKER; - player->kartstuff[k_itemamount] = 2; + player->ktemp_itemtype = KITEM_SNEAKER; + player->ktemp_itemamount = 2; break; case KRITEM_TRIPLESNEAKER: // Sneaker x3 - player->kartstuff[k_itemtype] = KITEM_SNEAKER; - player->kartstuff[k_itemamount] = 3; + player->ktemp_itemtype = KITEM_SNEAKER; + player->ktemp_itemamount = 3; break; case KRITEM_TRIPLEBANANA: // Banana x3 - player->kartstuff[k_itemtype] = KITEM_BANANA; - player->kartstuff[k_itemamount] = 3; + player->ktemp_itemtype = KITEM_BANANA; + player->ktemp_itemamount = 3; break; case KRITEM_TENFOLDBANANA: // Banana x10 - player->kartstuff[k_itemtype] = KITEM_BANANA; - player->kartstuff[k_itemamount] = 10; + player->ktemp_itemtype = KITEM_BANANA; + player->ktemp_itemamount = 10; break; case KRITEM_TRIPLEORBINAUT: // Orbinaut x3 - player->kartstuff[k_itemtype] = KITEM_ORBINAUT; - player->kartstuff[k_itemamount] = 3; + player->ktemp_itemtype = KITEM_ORBINAUT; + player->ktemp_itemamount = 3; break; case KRITEM_QUADORBINAUT: // Orbinaut x4 - player->kartstuff[k_itemtype] = KITEM_ORBINAUT; - player->kartstuff[k_itemamount] = 4; + player->ktemp_itemtype = KITEM_ORBINAUT; + player->ktemp_itemamount = 4; break; case KRITEM_DUALJAWZ: // Jawz x2 - player->kartstuff[k_itemtype] = KITEM_JAWZ; - player->kartstuff[k_itemamount] = 2; + player->ktemp_itemtype = KITEM_JAWZ; + player->ktemp_itemamount = 2; break; default: if (getitem <= 0 || getitem >= NUMKARTRESULTS) // Sad (Fallback) { if (getitem != 0) CONS_Printf("ERROR: P_KartGetItemResult - Item roulette gave bad item (%d) :(\n", getitem); - player->kartstuff[k_itemtype] = KITEM_SAD; + player->ktemp_itemtype = KITEM_SAD; } else - player->kartstuff[k_itemtype] = getitem; - player->kartstuff[k_itemamount] = 1; + player->ktemp_itemtype = getitem; + player->ktemp_itemamount = 1; break; } } @@ -540,7 +540,7 @@ INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush, if (players[i].exiting) pexiting++; - if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].kartstuff[k_itemtype])) + if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].ktemp_itemtype)) { // Don't allow more than one of each shield type at a time return 0; @@ -548,9 +548,9 @@ INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush, if (players[i].mo && gametype == GT_RACE) { - if (players[i].kartstuff[k_position] == 1 && first == -1) + if (players[i].ktemp_position == 1 && first == -1) first = i; - if (players[i].kartstuff[k_position] == 2 && second == -1) + if (players[i].ktemp_position == 2 && second == -1) second = i; } } @@ -738,7 +738,7 @@ UINT8 K_FindUseodds(player_t *player, fixed_t mashed, UINT32 pdis, UINT8 bestbum if (gametype == GT_BATTLE) // Battle Mode { - if (player->kartstuff[k_roulettetype] == 1 && oddsvalid[1] == true) + if (player->ktemp_roulettetype == 1 && oddsvalid[1] == true) { // 1 is the extreme odds of player-controlled "Karma" items useodds = 1; @@ -802,10 +802,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) boolean spbrush = false; // This makes the roulette cycle through items - if this is 0, you shouldn't be here. - if (player->kartstuff[k_itemroulette]) - player->kartstuff[k_itemroulette]++; - else + if (!player->ktemp_itemroulette) return; + player->ktemp_itemroulette++; // Gotta check how many players are active at this moment. for (i = 0; i < MAXPLAYERS; i++) @@ -824,29 +823,29 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) dontforcespb = true; // This makes the roulette produce the random noises. - if ((player->kartstuff[k_itemroulette] % 3) == 1 && P_IsDisplayPlayer(player) && !demo.freecam) + if ((player->ktemp_itemroulette % 3) == 1 && P_IsDisplayPlayer(player) && !demo.freecam) { -#define PLAYROULETTESND S_StartSound(NULL, sfx_itrol1 + ((player->kartstuff[k_itemroulette] / 3) % 8)) +#define PLAYROULETTESND S_StartSound(NULL, sfx_itrol1 + ((player->ktemp_itemroulette / 3) % 8)) for (i = 0; i <= r_splitscreen; i++) { - if (player == &players[displayplayers[i]] && players[displayplayers[i]].kartstuff[k_itemroulette]) + if (player == &players[displayplayers[i]] && players[displayplayers[i]].ktemp_itemroulette) PLAYROULETTESND; } #undef PLAYROULETTESND } - roulettestop = TICRATE + (3*(pingame - player->kartstuff[k_position])); + roulettestop = TICRATE + (3*(pingame - player->ktemp_position)); // If the roulette finishes or the player presses BT_ATTACK, stop the roulette and calculate the item. // I'm returning via the exact opposite, however, to forgo having another bracket embed. Same result either way, I think. // Finally, if you get past this check, now you can actually start calculating what item you get. - if ((cmd->buttons & BT_ATTACK) && (player->kartstuff[k_itemroulette] >= roulettestop) - && !(player->kartstuff[k_eggmanheld] || player->kartstuff[k_itemheld] || player->kartstuff[k_userings])) + if ((cmd->buttons & BT_ATTACK) && (player->ktemp_itemroulette >= roulettestop) + && !(player->pflags & (PF_ITEMOUT|PF_EGGMANOUT|PF_USERINGS))) { // Mashing reduces your chances for the good items - mashed = FixedDiv((player->kartstuff[k_itemroulette])*FRACUNIT, ((TICRATE*3)+roulettestop)*FRACUNIT) - FRACUNIT; + mashed = FixedDiv((player->ktemp_itemroulette)*FRACUNIT, ((TICRATE*3)+roulettestop)*FRACUNIT) - FRACUNIT; } - else if (!(player->kartstuff[k_itemroulette] >= (TICRATE*3))) + else if (!(player->ktemp_itemroulette >= (TICRATE*3))) return; if (cmd->buttons & BT_ATTACK) @@ -855,7 +854,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) for (i = 0; i < MAXPLAYERS; i++) { if (playeringame[i] && !players[i].spectator - && players[i].kartstuff[k_position] == 1) + && players[i].ktemp_position == 1) { // This player is first! Yay! @@ -881,7 +880,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) pdis = (15 * pdis) / 14; } - if (spbplace != -1 && player->kartstuff[k_position] == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell + if (spbplace != -1 && player->ktemp_position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell { pdis = (3 * pdis) / 2; spbrush = true; @@ -897,13 +896,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) // SPECIAL CASE No. 1: // Fake Eggman items - if (player->kartstuff[k_roulettetype] == 2) + if (player->ktemp_roulettetype == 2) { - player->kartstuff[k_eggmanexplode] = 4*TICRATE; + player->ktemp_eggmanexplode = 4*TICRATE; //player->karthud[khud_itemblink] = TICRATE; //player->karthud[khud_itemblinkmode] = 1; - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; if (P_IsDisplayPlayer(player) && !demo.freecam) S_StartSound(NULL, sfx_itrole); return; @@ -914,11 +913,11 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) if (cv_kartdebugitem.value != 0 && !modeattacking) { K_KartGetItemResult(player, cv_kartdebugitem.value); - player->kartstuff[k_itemamount] = cv_kartdebugamount.value; + player->ktemp_itemamount = cv_kartdebugamount.value; player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = 2; - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; if (P_IsDisplayPlayer(player) && !demo.freecam) S_StartSound(NULL, sfx_dbgsal); return; @@ -970,8 +969,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } player->karthud[khud_itemblink] = TICRATE; - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; return; } @@ -985,8 +984,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) K_KartGetItemResult(player, KITEM_SUPERRING); player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = 1; - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; if (P_IsDisplayPlayer(player)) S_StartSound(NULL, sfx_itrolm); return; @@ -995,15 +994,15 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) // SPECIAL CASE No. 5: // Force SPB onto 2nd if they get too far behind - if ((gametyperules & GTR_CIRCUIT) && player->kartstuff[k_position] == 2 && pdis > (DISTVAR*8) + if ((gametyperules & GTR_CIRCUIT) && player->ktemp_position == 2 && pdis > (DISTVAR*8) && spbplace == -1 && !indirectitemcooldown && !dontforcespb && cv_selfpropelledbomb.value) { K_KartGetItemResult(player, KITEM_SPB); player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = (mashed ? 1 : 0); - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; if (P_IsDisplayPlayer(player)) S_StartSound(NULL, (mashed ? sfx_itrolm : sfx_itrolf)); return; @@ -1030,18 +1029,18 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } else { - player->kartstuff[k_itemtype] = KITEM_SAD; - player->kartstuff[k_itemamount] = 1; + player->ktemp_itemtype = KITEM_SAD; + player->ktemp_itemamount = 1; } if (P_IsDisplayPlayer(player) && !demo.freecam) - S_StartSound(NULL, ((player->kartstuff[k_roulettetype] == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf))); + S_StartSound(NULL, ((player->ktemp_roulettetype == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf))); player->karthud[khud_itemblink] = TICRATE; - player->karthud[khud_itemblinkmode] = ((player->kartstuff[k_roulettetype] == 1) ? 2 : (mashed ? 1 : 0)); + player->karthud[khud_itemblinkmode] = ((player->ktemp_roulettetype == 1) ? 2 : (mashed ? 1 : 0)); - player->kartstuff[k_itemroulette] = 0; // Since we're done, clear the roulette number - player->kartstuff[k_roulettetype] = 0; // This too + player->ktemp_itemroulette = 0; // Since we're done, clear the roulette number + player->ktemp_roulettetype = 0; // This too } //} @@ -1057,7 +1056,7 @@ static fixed_t K_PlayerWeight(mobj_t *mobj, mobj_t *against) if (against && !P_MobjWasRemoved(against) && against->player && ((!P_PlayerInPain(against->player) && P_PlayerInPain(mobj->player)) // You're hurt - || (against->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD && mobj->player->kartstuff[k_itemtype] != KITEM_BUBBLESHIELD))) // They have a Bubble Shield + || (against->player->ktemp_itemtype == KITEM_BUBBLESHIELD && mobj->player->ktemp_itemtype != KITEM_BUBBLESHIELD))) // They have a Bubble Shield { weight = 0; // This player does not cause any bump action } @@ -1066,7 +1065,7 @@ static fixed_t K_PlayerWeight(mobj_t *mobj, mobj_t *against) weight = (mobj->player->kartweight) * FRACUNIT; if (mobj->player->speed > K_GetKartSpeed(mobj->player, false)) weight += (mobj->player->speed - K_GetKartSpeed(mobj->player, false))/8; - if (mobj->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD) + if (mobj->player->ktemp_itemtype == KITEM_BUBBLESHIELD) weight += 9*FRACUNIT; } @@ -1098,7 +1097,7 @@ fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against) case MT_FALLINGROCK: if (against->player) { - if (against->player->kartstuff[k_invincibilitytimer] || against->player->kartstuff[k_growshrinktimer] > 0) + if (against->player->ktemp_invincibilitytimer || against->player->ktemp_growshrinktimer > 0) weight = 0; else weight = K_PlayerWeight(against, NULL); @@ -1148,32 +1147,32 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol INT32 flash; flash = K_GetKartFlashing(mobj1->player); - if (mobj1->player && mobj1->player->powers[pw_flashing] > 0 && mobj1->player->powers[pw_flashing] < flash) + if (mobj1->player && mobj1->player->ktemp_flashing > 0 && mobj1->player->ktemp_flashing < flash) { - if (mobj1->player->powers[pw_flashing] < flash-1) - mobj1->player->powers[pw_flashing]++; + if (mobj1->player->ktemp_flashing < flash-1) + mobj1->player->ktemp_flashing++; return false; } flash = K_GetKartFlashing(mobj2->player); - if (mobj2->player && mobj2->player->powers[pw_flashing] > 0 && mobj2->player->powers[pw_flashing] < flash) + if (mobj2->player && mobj2->player->ktemp_flashing > 0 && mobj2->player->ktemp_flashing < flash) { - if (mobj2->player->powers[pw_flashing] < flash-1) - mobj2->player->powers[pw_flashing]++; + if (mobj2->player->ktemp_flashing < flash-1) + mobj2->player->ktemp_flashing++; return false; } } // Don't bump if you've recently bumped - if (mobj1->player && mobj1->player->kartstuff[k_justbumped]) + if (mobj1->player && mobj1->player->ktemp_justbumped) { - mobj1->player->kartstuff[k_justbumped] = bumptime; + mobj1->player->ktemp_justbumped = bumptime; return false; } - if (mobj2->player && mobj2->player->kartstuff[k_justbumped]) + if (mobj2->player && mobj2->player->ktemp_justbumped) { - mobj2->player->kartstuff[k_justbumped] = bumptime; + mobj2->player->ktemp_justbumped = bumptime; return false; } @@ -1261,7 +1260,7 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol } // Do the bump fx when we've CONFIRMED we can bump. - if ((mobj1->player && mobj1->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD) || (mobj2->player && mobj2->player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD)) + if ((mobj1->player && mobj1->player->ktemp_itemtype == KITEM_BUBBLESHIELD) || (mobj2->player && mobj2->player->ktemp_itemtype == KITEM_BUBBLESHIELD)) S_StartSound(mobj1, sfx_s3k44); else S_StartSound(mobj1, sfx_s3k49); @@ -1280,14 +1279,14 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol { mobj1->player->rmomx = mobj1->momx - mobj1->player->cmomx; mobj1->player->rmomy = mobj1->momy - mobj1->player->cmomy; - mobj1->player->kartstuff[k_justbumped] = bumptime; - mobj1->player->kartstuff[k_spindash] = 0; + mobj1->player->ktemp_justbumped = bumptime; + mobj1->player->ktemp_spindash = 0; - if (mobj1->player->kartstuff[k_spinouttimer]) + if (mobj1->player->ktemp_spinouttimer) { - mobj1->player->kartstuff[k_wipeoutslow] = wipeoutslowtime+1; - mobj1->player->kartstuff[k_spinouttimer] = max(wipeoutslowtime+1, mobj1->player->kartstuff[k_spinouttimer]); - //mobj1->player->kartstuff[k_spinouttype] = KSPIN_WIPEOUT; // Enforce type + mobj1->player->ktemp_wipeoutslow = wipeoutslowtime+1; + mobj1->player->ktemp_spinouttimer = max(wipeoutslowtime+1, mobj1->player->ktemp_spinouttimer); + //mobj1->player->ktemp_spinouttype = KSPIN_WIPEOUT; // Enforce type } } @@ -1295,14 +1294,14 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol { mobj2->player->rmomx = mobj2->momx - mobj2->player->cmomx; mobj2->player->rmomy = mobj2->momy - mobj2->player->cmomy; - mobj2->player->kartstuff[k_justbumped] = bumptime; - mobj2->player->kartstuff[k_spindash] = 0; + mobj2->player->ktemp_justbumped = bumptime; + mobj2->player->ktemp_spindash = 0; - if (mobj2->player->kartstuff[k_spinouttimer]) + if (mobj2->player->ktemp_spinouttimer) { - mobj2->player->kartstuff[k_wipeoutslow] = wipeoutslowtime+1; - mobj2->player->kartstuff[k_spinouttimer] = max(wipeoutslowtime+1, mobj2->player->kartstuff[k_spinouttimer]); - //mobj2->player->kartstuff[k_spinouttype] = KSPIN_WIPEOUT; // Enforce type + mobj2->player->ktemp_wipeoutslow = wipeoutslowtime+1; + mobj2->player->ktemp_spinouttimer = max(wipeoutslowtime+1, mobj2->player->ktemp_spinouttimer); + //mobj2->player->ktemp_spinouttype = KSPIN_WIPEOUT; // Enforce type } } @@ -1390,14 +1389,14 @@ static void K_UpdateOffroad(player_t *player) // If you are in offroad, a timer starts. if (offroadstrength) { - if (player->kartstuff[k_offroad] < offroadstrength) - player->kartstuff[k_offroad] += offroadstrength / TICRATE; + if (player->ktemp_offroad < offroadstrength) + player->ktemp_offroad += offroadstrength / TICRATE; - if (player->kartstuff[k_offroad] > offroadstrength) - player->kartstuff[k_offroad] = offroadstrength; + if (player->ktemp_offroad > offroadstrength) + player->ktemp_offroad = offroadstrength; } else - player->kartstuff[k_offroad] = 0; + player->ktemp_offroad = 0; } static void K_DrawDraftCombiring(player_t *player, player_t *victim, fixed_t curdist, fixed_t maxdist, boolean transparent) @@ -1481,7 +1480,7 @@ static void K_UpdateDraft(player_t *player) UINT8 leniency; UINT8 i; - if (player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD) + if (player->ktemp_itemtype == KITEM_FLAMESHIELD) { // Flame Shield gets infinite draft distance as its passive effect. draftdistance = 0; @@ -1527,7 +1526,7 @@ static void K_UpdateDraft(player_t *player) continue; // No tethering off of the guy who got the starting bonus :P - if (players[i].kartstuff[k_startboost] > 0) + if (players[i].ktemp_startboost > 0) continue; #ifndef EASYDRAFTTEST @@ -1563,21 +1562,21 @@ static void K_UpdateDraft(player_t *player) continue; #endif - olddraft = player->kartstuff[k_draftpower]; + olddraft = player->ktemp_draftpower; - player->kartstuff[k_draftleeway] = leniency; - player->kartstuff[k_lastdraft] = i; + player->ktemp_draftleeway = leniency; + player->ktemp_lastdraft = i; // Draft power is used later in K_GetKartBoostPower, ranging from 0 for normal speed and FRACUNIT for max draft speed. // How much this increments every tic biases toward acceleration! (min speed gets 1.5% per tic, max speed gets 0.5% per tic) - if (player->kartstuff[k_draftpower] < FRACUNIT) - player->kartstuff[k_draftpower] += (FRACUNIT/200) + ((9 - player->kartspeed) * ((3*FRACUNIT)/1600)); + if (player->ktemp_draftpower < FRACUNIT) + player->ktemp_draftpower += (FRACUNIT/200) + ((9 - player->kartspeed) * ((3*FRACUNIT)/1600)); - if (player->kartstuff[k_draftpower] > FRACUNIT) - player->kartstuff[k_draftpower] = FRACUNIT; + if (player->ktemp_draftpower > FRACUNIT) + player->ktemp_draftpower = FRACUNIT; // Play draft finish noise - if (olddraft < FRACUNIT && player->kartstuff[k_draftpower] >= FRACUNIT) + if (olddraft < FRACUNIT && player->ktemp_draftpower >= FRACUNIT) S_StartSound(player->mo, sfx_cdfm62); // Spawn in the visual! @@ -1588,24 +1587,24 @@ static void K_UpdateDraft(player_t *player) } // No one to draft off of? Then you can knock that off. - if (player->kartstuff[k_draftleeway]) // Prevent small disruptions from stopping your draft. + if (player->ktemp_draftleeway) // Prevent small disruptions from stopping your draft. { - player->kartstuff[k_draftleeway]--; - if (player->kartstuff[k_lastdraft] >= 0 - && player->kartstuff[k_lastdraft] < MAXPLAYERS - && playeringame[player->kartstuff[k_lastdraft]] - && !players[player->kartstuff[k_lastdraft]].spectator - && players[player->kartstuff[k_lastdraft]].mo) + player->ktemp_draftleeway--; + if (player->ktemp_lastdraft >= 0 + && player->ktemp_lastdraft < MAXPLAYERS + && playeringame[player->ktemp_lastdraft] + && !players[player->ktemp_lastdraft].spectator + && players[player->ktemp_lastdraft].mo) { - player_t *victim = &players[player->kartstuff[k_lastdraft]]; + player_t *victim = &players[player->ktemp_lastdraft]; fixed_t dist = P_AproxDistance(P_AproxDistance(victim->mo->x - player->mo->x, victim->mo->y - player->mo->y), victim->mo->z - player->mo->z); K_DrawDraftCombiring(player, victim, dist, draftdistance, true); } } else // Remove draft speed boost. { - player->kartstuff[k_draftpower] = 0; - player->kartstuff[k_lastdraft] = -1; + player->ktemp_draftpower = 0; + player->ktemp_lastdraft = -1; } } @@ -1717,13 +1716,13 @@ void K_SpawnDashDustRelease(player_t *player) if (!P_IsObjectOnGround(player->mo)) return; - if (!player->speed && !player->kartstuff[k_startboost] && !player->kartstuff[k_spindash]) + if (!player->speed && !player->ktemp_startboost && !player->ktemp_spindash) return; travelangle = player->mo->angle; - if (player->kartstuff[k_drift] || player->kartstuff[k_driftend]) - travelangle -= (ANGLE_45/5)*player->kartstuff[k_drift]; + if (player->ktemp_drift || (player->pflags & PF_DRIFTEND)) + travelangle -= (ANGLE_45/5)*player->ktemp_drift; for (i = 0; i < 2; i++) { @@ -1824,7 +1823,7 @@ void K_SpawnNormalSpeedLines(player_t *player) K_MatchGenericExtraFlags(fast, player->mo); // Make it red when you have the eggman speed boost - if (player->kartstuff[k_eggmanexplode]) + if (player->ktemp_eggmanexplode) { fast->color = SKINCOLOR_RED; fast->colorized = true; @@ -1849,8 +1848,8 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo) fast->colorized = true; K_MatchGenericExtraFlags(fast, mo); P_SetMobjState(fast, S_KARTINVLINES1); - if (mo->player->kartstuff[k_invincibilitytimer] < 10*TICRATE) - fast->destscale = 6*((mo->player->kartstuff[k_invincibilitytimer]/TICRATE)*FRACUNIT)/8; + if (mo->player->ktemp_invincibilitytimer < 10*TICRATE) + fast->destscale = 6*((mo->player->ktemp_invincibilitytimer/TICRATE)*FRACUNIT)/8; } static SINT8 K_GlanceAtPlayers(player_t *glancePlayer) @@ -1891,7 +1890,7 @@ static SINT8 K_GlanceAtPlayers(player_t *glancePlayer) continue; } - if (p->spectator || p->kartstuff[k_hyudorotimer] > 0) + if (p->spectator || p->ktemp_hyudorotimer > 0) { // Not playing / invisible continue; @@ -1970,7 +1969,7 @@ void K_KartMoveAnimation(player_t *player) SINT8 turndir = 0; SINT8 destGlanceDir = 0; - SINT8 drift = player->kartstuff[k_drift]; + SINT8 drift = player->ktemp_drift; if (player->cmd.turning < -minturn) { @@ -1988,15 +1987,15 @@ void K_KartMoveAnimation(player_t *player) } // Sliptides: drift -> lookback frames - if (abs(player->aizDriftTurn) >= ANGLE_90) + if (abs(player->aizdriftturn) >= ANGLE_90) { - destGlanceDir = -(2*intsign(player->aizDriftTurn)); + destGlanceDir = -(2*intsign(player->aizdriftturn)); player->glanceDir = destGlanceDir; drift = turndir = 0; } - else if (player->aizDriftTurn) + else if (player->aizdriftturn) { - drift = intsign(player->aizDriftTurn); + drift = intsign(player->aizdriftturn); turndir = 0; } else if (turndir == 0 && drift == 0) @@ -2413,14 +2412,14 @@ void K_MomentumToFacing(player_t *player) boolean K_ApplyOffroad(player_t *player) { - if (player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_hyudorotimer] || player->kartstuff[k_sneakertimer]) + if (player->ktemp_invincibilitytimer || player->ktemp_hyudorotimer || player->ktemp_sneakertimer) return false; return true; } boolean K_SlopeResistance(player_t *player) { - if (player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_sneakertimer] || player->kartstuff[k_tiregrease]) + if (player->ktemp_invincibilitytimer || player->ktemp_sneakertimer || player->ktemp_tiregrease) return true; return false; } @@ -2462,17 +2461,17 @@ static void K_GetKartBoostPower(player_t *player) fixed_t speedboost = 0, accelboost = 0, handleboost = 0; UINT8 numboosts = 0; - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] == 1) // Slow down after you've been bumped + if (player->ktemp_spinouttimer && player->ktemp_wipeoutslow == 1) // Slow down after you've been bumped { - player->kartstuff[k_boostpower] = player->kartstuff[k_speedboost] = player->kartstuff[k_accelboost] = 0; + player->ktemp_boostpower = player->ktemp_speedboost = player->ktemp_accelboost = 0; return; } // Offroad is separate, it's difficult to factor it in with a variable value anyway. - if (K_ApplyOffroad(player) && player->kartstuff[k_offroad] >= 0) - boostpower = FixedDiv(boostpower, FixedMul(player->kartstuff[k_offroad], K_GetKartGameSpeedScalar(gamespeed)) + FRACUNIT); + if (K_ApplyOffroad(player) && player->ktemp_offroad >= 0) + boostpower = FixedDiv(boostpower, FixedMul(player->ktemp_offroad, K_GetKartGameSpeedScalar(gamespeed)) + FRACUNIT); - if (player->kartstuff[k_bananadrag] > TICRATE) + if (player->ktemp_bananadrag > TICRATE) boostpower = (4*boostpower)/5; // Note: Handling will ONLY stack when sliptiding! @@ -2481,34 +2480,34 @@ static void K_GetKartBoostPower(player_t *player) numboosts++; \ speedboost += FixedDiv(s, FRACUNIT + (metabolism * (numboosts-1))); \ accelboost += FixedDiv(a, FRACUNIT + (metabolism * (numboosts-1))); \ - if (player->kartstuff[k_aizdriftstrat]) \ + if (player->ktemp_aizdriftstrat) \ handleboost += FixedDiv(h, FRACUNIT + (metabolism * (numboosts-1))); \ else \ handleboost = max(h, handleboost); \ } - if (player->kartstuff[k_sneakertimer]) // Sneaker + if (player->ktemp_sneakertimer) // Sneaker { UINT8 i; - for (i = 0; i < player->kartstuff[k_numsneakers]; i++) + for (i = 0; i < player->ktemp_numsneakers; i++) { ADDBOOST(FRACUNIT/2, 8*FRACUNIT, sliptidehandling); // + 50% top speed, + 800% acceleration, +50% handling } } - if (player->kartstuff[k_invincibilitytimer]) // Invincibility + if (player->ktemp_invincibilitytimer) // Invincibility { ADDBOOST(3*FRACUNIT/8, 3*FRACUNIT, sliptidehandling/2); // + 37.5% top speed, + 300% acceleration, +25% handling } - if (player->kartstuff[k_growshrinktimer] > 0) // Grow + if (player->ktemp_growshrinktimer > 0) // Grow { ADDBOOST(0, 0, sliptidehandling/2); // + 0% top speed, + 0% acceleration, +25% handling } - if (player->kartstuff[k_flamedash]) // Flame Shield dash + if (player->ktemp_flamedash) // Flame Shield dash { - fixed_t dash = K_FlameShieldDashVar(player->kartstuff[k_flamedash]); + fixed_t dash = K_FlameShieldDashVar(player->ktemp_flamedash); ADDBOOST( dash, // + infinite top speed 3*FRACUNIT, // + 300% acceleration @@ -2516,10 +2515,10 @@ static void K_GetKartBoostPower(player_t *player) ); } - if (player->kartstuff[k_spindashboost]) // Spindash boost + if (player->ktemp_spindashboost) // Spindash boost { const fixed_t MAXCHARGESPEED = K_GetSpindashChargeSpeed(player); - const fixed_t exponent = FixedMul(player->kartstuff[k_spindashspeed], player->kartstuff[k_spindashspeed]); + const fixed_t exponent = FixedMul(player->ktemp_spindashspeed, player->ktemp_spindashspeed); // character & charge dependent ADDBOOST( @@ -2529,50 +2528,50 @@ static void K_GetKartBoostPower(player_t *player) ); } - if (player->kartstuff[k_startboost]) // Startup Boost + if (player->ktemp_startboost) // Startup Boost { ADDBOOST(FRACUNIT/2, 4*FRACUNIT, 0); // + 50% top speed, + 400% acceleration, +0% handling } - if (player->kartstuff[k_driftboost]) // Drift Boost + if (player->ktemp_driftboost) // Drift Boost { ADDBOOST(FRACUNIT/4, 4*FRACUNIT, 0); // + 25% top speed, + 400% acceleration, +0% handling } - if (player->kartstuff[k_ringboost]) // Ring Boost + if (player->ktemp_ringboost) // Ring Boost { ADDBOOST(FRACUNIT/5, 4*FRACUNIT, 0); // + 20% top speed, + 400% acceleration, +0% handling } - if (player->kartstuff[k_eggmanexplode]) // Ready-to-explode + if (player->ktemp_eggmanexplode) // Ready-to-explode { ADDBOOST(3*FRACUNIT/20, FRACUNIT, 0); // + 15% top speed, + 100% acceleration, +0% handling } - if (player->kartstuff[k_draftpower] > 0) // Drafting + if (player->ktemp_draftpower > 0) // Drafting { // 30% - 44%, each point of speed adds 1.75% fixed_t draftspeed = ((3*FRACUNIT)/10) + ((player->kartspeed-1) * ((7*FRACUNIT)/400)); - speedboost += FixedMul(draftspeed, player->kartstuff[k_draftpower]); // (Drafting suffers no boost stack penalty.) + speedboost += FixedMul(draftspeed, player->ktemp_draftpower); // (Drafting suffers no boost stack penalty.) numboosts++; } - player->kartstuff[k_boostpower] = boostpower; + player->ktemp_boostpower = boostpower; // value smoothing - if (speedboost > player->kartstuff[k_speedboost]) + if (speedboost > player->ktemp_speedboost) { - player->kartstuff[k_speedboost] = speedboost; + player->ktemp_speedboost = speedboost; } else { - player->kartstuff[k_speedboost] += (speedboost - player->kartstuff[k_speedboost]) / (TICRATE/2); + player->ktemp_speedboost += (speedboost - player->ktemp_speedboost) / (TICRATE/2); } - player->kartstuff[k_accelboost] = accelboost; - player->kartstuff[k_handleboost] = handleboost; + player->ktemp_accelboost = accelboost; + player->ktemp_handleboost = handleboost; - player->kartstuff[k_numboosts] = numboosts; + player->ktemp_numboosts = numboosts; } // Returns kart speed from a stat. Boost power and scale are NOT taken into account, no player or object is necessary. @@ -2624,7 +2623,7 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower) finalspeed = FixedMul(finalspeed, K_BotTopSpeedRubberband(player)); } - return FixedMul(finalspeed, player->kartstuff[k_boostpower]+player->kartstuff[k_speedboost]); + return FixedMul(finalspeed, player->ktemp_boostpower+player->ktemp_speedboost); } return finalspeed; @@ -2642,7 +2641,7 @@ fixed_t K_GetKartAccel(player_t *player) k_accel = FixedMul(k_accel, FRACUNIT + (sphereAdd * player->spheres)); } - return FixedMul(k_accel, (FRACUNIT + player->kartstuff[k_accelboost]) / 4); + return FixedMul(k_accel, (FRACUNIT + player->ktemp_accelboost) / 4); } UINT16 K_GetKartFlashing(player_t *player) @@ -2674,17 +2673,17 @@ SINT8 K_GetForwardMove(player_t *player) { SINT8 forwardmove = player->cmd.forwardmove; - if ((player->pflags & PF_STASIS) || (player->pflags & PF_SLIDING)) + if ((player->pflags & PF_STASIS) || (player->ktemp_carry == CR_SLIDING)) { return 0; } - if (player->kartstuff[k_sneakertimer] || player->kartstuff[k_spindashboost]) + if (player->ktemp_sneakertimer || player->ktemp_spindashboost) { return MAXPLMOVE; } - if (player->kartstuff[k_spinouttimer] || K_PlayerEBrake(player)) + if (player->ktemp_spinouttimer || K_PlayerEBrake(player)) { return 0; } @@ -2827,10 +2826,10 @@ void K_DoInstashield(player_t *player) mobj_t *layera; mobj_t *layerb; - if (player->kartstuff[k_instashield] > 0) + if (player->ktemp_instashield > 0) return; - player->kartstuff[k_instashield] = 15; // length of instashield animation + player->ktemp_instashield = 15; // length of instashield animation S_StartSound(player->mo, sfx_cdpcm9); layera = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INSTASHIELDA); @@ -2892,9 +2891,9 @@ void K_SpinPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 typ (void)inflictor; (void)source; - player->kartstuff[k_spinouttype] = type; + player->ktemp_spinouttype = type; - if (( player->kartstuff[k_spinouttype] & KSPIN_THRUST )) + if (( player->ktemp_spinouttype & KSPIN_THRUST )) { // At spinout, player speed is increased to 1/4 their regular speed, moving them forward if (player->speed < K_GetKartSpeed(player, true)/4) @@ -2902,7 +2901,7 @@ void K_SpinPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 typ S_StartSound(player->mo, sfx_slip); } - player->kartstuff[k_spinouttimer] = (3*TICRATE/2)+2; + player->ktemp_spinouttimer = (3*TICRATE/2)+2; P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } @@ -2910,12 +2909,12 @@ static void K_RemoveGrowShrink(player_t *player) { if (player->mo && !P_MobjWasRemoved(player->mo)) { - if (player->kartstuff[k_growshrinktimer] > 0) // Play Shrink noise + if (player->ktemp_growshrinktimer > 0) // Play Shrink noise S_StartSound(player->mo, sfx_kc59); - else if (player->kartstuff[k_growshrinktimer] < 0) // Play Grow noise + else if (player->ktemp_growshrinktimer < 0) // Play Grow noise S_StartSound(player->mo, sfx_kc5a); - if (player->kartstuff[k_invincibilitytimer] == 0) + if (player->ktemp_invincibilitytimer == 0) player->mo->color = player->skincolor; player->mo->scalespeed = mapobjectscale/TICRATE; @@ -2924,7 +2923,7 @@ static void K_RemoveGrowShrink(player_t *player) player->mo->destscale = (6*player->mo->destscale)/8; } - player->kartstuff[k_growshrinktimer] = 0; + player->ktemp_growshrinktimer = 0; P_RestoreMusic(player); } @@ -2940,7 +2939,7 @@ void K_TumblePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) player->mo->momy = 2 * player->mo->momy / 3; player->tumbleHeight = 30; - player->tumbleSound = 0; + player->pflags &= ~PF_TUMBLESOUND; if (inflictor && !P_MobjWasRemoved(inflictor)) { @@ -2977,7 +2976,7 @@ static void K_HandleTumbleBounce(player_t *player) fixed_t gravityadjust; player->tumbleBounces++; player->tumbleHeight = (player->tumbleHeight * 4) / 5; - player->tumbleSound = 0; + player->pflags &= ~PF_TUMBLESOUND; if (player->tumbleHeight < 10) { @@ -2989,18 +2988,18 @@ static void K_HandleTumbleBounce(player_t *player) { // Leave tumble state when below 40 height, and have bounced off the ground enough - if (player->tumbleLastBounce == true) + if (player->pflags & PF_TUMBLELASTBOUNCE) { // End tumble state player->tumbleBounces = 0; - player->tumbleLastBounce = false; // Reset for next time + player->pflags &= ~PF_TUMBLELASTBOUNCE; // Reset for next time return; } else { // One last bounce at the minimum height, to reset the animation player->tumbleHeight = 10; - player->tumbleLastBounce = true; + player->pflags |= PF_TUMBLELASTBOUNCE; player->mo->rollangle = 0; // p_user.c will stop rotating the player automatically } } @@ -3032,10 +3031,10 @@ static void K_HandleTumbleSound(player_t *player) momz = player->mo->momz * P_MobjFlip(player->mo); if (!K_LastTumbleBounceCondition(player) && - !player->tumbleSound && momz < -10*player->mo->scale) + !(player->pflags & PF_TUMBLESOUND) && momz < -10*player->mo->scale) { S_StartSound(player->mo, sfx_s3k51); - player->tumbleSound = 1; + player->pflags |= PF_TUMBLESOUND; } } @@ -3048,14 +3047,14 @@ INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A player->mo->momz = 18*mapobjectscale*P_MobjFlip(player->mo); // please stop forgetting mobjflip checks!!!! player->mo->momx = player->mo->momy = 0; - player->kartstuff[k_spinouttype] = KSPIN_EXPLOSION; - player->kartstuff[k_spinouttimer] = (3*TICRATE/2)+2; + player->ktemp_spinouttype = KSPIN_EXPLOSION; + player->ktemp_spinouttimer = (3*TICRATE/2)+2; if (inflictor && !P_MobjWasRemoved(inflictor)) { if (inflictor->type == MT_SPBEXPLOSION && inflictor->extravalue1) { - player->kartstuff[k_spinouttimer] = ((5*player->kartstuff[k_spinouttimer])/2)+1; + player->ktemp_spinouttimer = ((5*player->ktemp_spinouttimer)/2)+1; player->mo->momz *= 2; ringburst = 20; } @@ -3082,9 +3081,9 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) length += (4 * (source->player->kartweight - player->kartweight)); } - player->kartstuff[k_spinouttype] = KSPIN_STUNG; - player->kartstuff[k_spinouttimer] = length; - player->kartstuff[k_wipeoutslow] = min(length-1, wipeoutslowtime+1); + player->ktemp_spinouttype = KSPIN_STUNG; + player->ktemp_spinouttimer = length; + player->ktemp_wipeoutslow = min(length-1, wipeoutslowtime+1); P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } @@ -3101,14 +3100,6 @@ void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers) if (player->bumpers > 0 && prevBumpers == 0) { - if (player->kartstuff[k_comebackmode] == 2) - { - mobj_t *poof = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_EXPLODE); - S_StartSound(poof, mobjinfo[MT_KARMAHITBOX].seesound); - } - - player->kartstuff[k_comebackmode] = 0; - if (netgame) { CONS_Printf(M_GetText("%s is back in the game!\n"), player_names[player-players]); @@ -3492,7 +3483,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I case MT_JAWZ: if (source && source->player) { - INT32 lasttarg = source->player->kartstuff[k_lastjawztarget]; + INT32 lasttarg = source->player->ktemp_lastjawztarget; th->cvmem = source->player->skincolor; if ((lasttarg >= 0 && lasttarg < MAXPLAYERS) && playeringame[lasttarg] @@ -3603,11 +3594,11 @@ static void K_SpawnDriftSparks(player_t *player) if (leveltime % 2 == 1) return; - if (!player->kartstuff[k_drift] - || (player->kartstuff[k_driftcharge] < ds && !(player->kartstuff[k_driftcharge] < 0))) + if (!player->ktemp_drift + || (player->ktemp_driftcharge < ds && !(player->ktemp_driftcharge < 0))) return; - travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift]; + travelangle = player->mo->angle-(ANGLE_45/5)*player->ktemp_drift; for (i = 0; i < 2; i++) { @@ -3619,7 +3610,7 @@ static void K_SpawnDriftSparks(player_t *player) spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK); P_SetTarget(&spark->target, player->mo); - spark->angle = travelangle-(ANGLE_45/5)*player->kartstuff[k_drift]; + spark->angle = travelangle-(ANGLE_45/5)*player->ktemp_drift; spark->destscale = player->mo->scale; P_SetScale(spark, player->mo->scale); @@ -3627,20 +3618,20 @@ static void K_SpawnDriftSparks(player_t *player) spark->momy = player->mo->momy/2; //spark->momz = player->mo->momz/2; - spark->color = K_DriftSparkColor(player, player->kartstuff[k_driftcharge]); + spark->color = K_DriftSparkColor(player, player->ktemp_driftcharge); - if (player->kartstuff[k_driftcharge] < 0) + if (player->ktemp_driftcharge < 0) { // Stage 0: Yellow size = 0; } - else if (player->kartstuff[k_driftcharge] >= ds*4) + else if (player->ktemp_driftcharge >= ds*4) { // Stage 3: Rainbow size = 2; trail = 2; - if (player->kartstuff[k_driftcharge] <= (ds*4)+(32*3)) + if (player->ktemp_driftcharge <= (ds*4)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*3/2)); @@ -3651,13 +3642,13 @@ static void K_SpawnDriftSparks(player_t *player) spark->colorized = true; } } - else if (player->kartstuff[k_driftcharge] >= ds*2) + else if (player->ktemp_driftcharge >= ds*2) { // Stage 2: Blue size = 2; trail = 1; - if (player->kartstuff[k_driftcharge] <= (ds*2)+(32*3)) + if (player->ktemp_driftcharge <= (ds*2)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*3/2)); @@ -3668,37 +3659,37 @@ static void K_SpawnDriftSparks(player_t *player) // Stage 1: Red size = 1; - if (player->kartstuff[k_driftcharge] <= (ds)+(32*3)) + if (player->ktemp_driftcharge <= (ds)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*2)); } } - if ((player->kartstuff[k_drift] > 0 && player->cmd.turning > 0) // Inward drifts - || (player->kartstuff[k_drift] < 0 && player->cmd.turning < 0)) + if ((player->ktemp_drift > 0 && player->cmd.turning > 0) // Inward drifts + || (player->ktemp_drift < 0 && player->cmd.turning < 0)) { - if ((player->kartstuff[k_drift] < 0 && (i & 1)) - || (player->kartstuff[k_drift] > 0 && !(i & 1))) + if ((player->ktemp_drift < 0 && (i & 1)) + || (player->ktemp_drift > 0 && !(i & 1))) { size++; } - else if ((player->kartstuff[k_drift] < 0 && !(i & 1)) - || (player->kartstuff[k_drift] > 0 && (i & 1))) + else if ((player->ktemp_drift < 0 && !(i & 1)) + || (player->ktemp_drift > 0 && (i & 1))) { size--; } } - else if ((player->kartstuff[k_drift] > 0 && player->cmd.turning < 0) // Outward drifts - || (player->kartstuff[k_drift] < 0 && player->cmd.turning > 0)) + else if ((player->ktemp_drift > 0 && player->cmd.turning < 0) // Outward drifts + || (player->ktemp_drift < 0 && player->cmd.turning > 0)) { - if ((player->kartstuff[k_drift] < 0 && (i & 1)) - || (player->kartstuff[k_drift] > 0 && !(i & 1))) + if ((player->ktemp_drift < 0 && (i & 1)) + || (player->ktemp_drift > 0 && !(i & 1))) { size--; } - else if ((player->kartstuff[k_drift] < 0 && !(i & 1)) - || (player->kartstuff[k_drift] > 0 && (i & 1))) + else if ((player->ktemp_drift < 0 && !(i & 1)) + || (player->ktemp_drift > 0 && (i & 1))) { size++; } @@ -3742,11 +3733,11 @@ static void K_SpawnAIZDust(player_t *player) //S_StartSound(player->mo, sfx_s3k47); { - newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle - (player->kartstuff[k_aizdriftstrat]*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); - newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->kartstuff[k_aizdriftstrat]*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); + newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle - (player->ktemp_aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); + newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->ktemp_aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); spark = P_SpawnMobj(newx, newy, player->mo->z, MT_AIZDRIFTSTRAT); - spark->angle = travelangle+(player->kartstuff[k_aizdriftstrat]*ANGLE_90); + spark->angle = travelangle+(player->ktemp_aizdriftstrat*ANGLE_90); P_SetScale(spark, (spark->destscale = (3*player->mo->scale)>>2)); spark->momx = (6*player->mo->momx)/5; @@ -3770,7 +3761,7 @@ void K_SpawnBoostTrail(player_t *player) I_Assert(!P_MobjWasRemoved(player->mo)); if (!P_IsObjectOnGround(player->mo) - || player->kartstuff[k_hyudorotimer] != 0 + || player->ktemp_hyudorotimer != 0 || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay)) return; @@ -3779,7 +3770,7 @@ void K_SpawnBoostTrail(player_t *player) else ground = player->mo->floorz; - if (player->kartstuff[k_drift] != 0) + if (player->ktemp_drift != 0) travelangle = player->mo->angle; else travelangle = K_MomentumAngle(player->mo); @@ -3833,9 +3824,9 @@ void K_SpawnSparkleTrail(mobj_t *mo) I_Assert(mo != NULL); I_Assert(!P_MobjWasRemoved(mo)); - if ((mo->player->kartstuff[k_sneakertimer] - || mo->player->kartstuff[k_ringboost] || mo->player->kartstuff[k_driftboost] - || mo->player->kartstuff[k_startboost] || mo->player->kartstuff[k_eggmanexplode])) + if ((mo->player->ktemp_sneakertimer + || mo->player->ktemp_ringboost || mo->player->ktemp_driftboost + || mo->player->ktemp_startboost || mo->player->ktemp_eggmanexplode)) { return; } @@ -3843,7 +3834,7 @@ void K_SpawnSparkleTrail(mobj_t *mo) if (leveltime & 2) index = 2; - invtime = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1; + invtime = mo->player->ktemp_invincibilitytimer/TICRATE+1; //CONS_Printf("%d\n", index); @@ -3934,17 +3925,17 @@ void K_SpawnDraftDust(mobj_t *mo) ang = mo->player->drawangle; - if (mo->player->kartstuff[k_drift] != 0) + if (mo->player->ktemp_drift != 0) { drifting = true; - ang += (mo->player->kartstuff[k_drift] * ((ANGLE_270 + ANGLE_22h) / 5)); // -112.5 doesn't work. I fucking HATE SRB2 angles - if (mo->player->kartstuff[k_drift] < 0) + ang += (mo->player->ktemp_drift * ((ANGLE_270 + ANGLE_22h) / 5)); // -112.5 doesn't work. I fucking HATE SRB2 angles + if (mo->player->ktemp_drift < 0) sign = 1; else sign = -1; } - foff = 5 - ((mo->player->kartstuff[k_draftleeway] * 5) / leniency); + foff = 5 - ((mo->player->ktemp_draftleeway * 5) / leniency); // this shouldn't happen if (foff > 4) @@ -4055,11 +4046,11 @@ void K_DriftDustHandling(mobj_t *spawner) K_MatchGenericExtraFlags(dust, spawner); // Sparkle-y warning for when you're about to change drift sparks! - if (spawner->player && spawner->player->kartstuff[k_drift]) + if (spawner->player && spawner->player->ktemp_drift) { INT32 driftval = K_GetKartDriftSparkValue(spawner->player); INT32 warntime = driftval/3; - INT32 dc = spawner->player->kartstuff[k_driftcharge]; + INT32 dc = spawner->player->ktemp_driftcharge; UINT8 c = SKINCOLOR_NONE; boolean rainbow = false; @@ -4133,14 +4124,14 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map if (altthrow == 2) // Kitchen sink throwing { #if 0 - if (player->kartstuff[k_throwdir] == 1) + if (player->ktemp_throwdir == 1) dir = 3; - else if (player->kartstuff[k_throwdir] == -1) + else if (player->ktemp_throwdir == -1) dir = 1; else dir = 2; #else - if (player->kartstuff[k_throwdir] == 1) + if (player->ktemp_throwdir == 1) dir = 2; else dir = 1; @@ -4148,9 +4139,9 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - if (player->kartstuff[k_throwdir] == 1) + if (player->ktemp_throwdir == 1) dir = 2; - else if (player->kartstuff[k_throwdir] == -1) + else if (player->ktemp_throwdir == -1) dir = -1; else dir = 1; @@ -4158,8 +4149,8 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - if (player->kartstuff[k_throwdir] != 0) - dir = player->kartstuff[k_throwdir]; + if (player->ktemp_throwdir != 0) + dir = player->ktemp_throwdir; else dir = defaultDir; } @@ -4203,7 +4194,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - player->kartstuff[k_bananadrag] = 0; // RESET timer, for multiple bananas + player->ktemp_bananadrag = 0; // RESET timer, for multiple bananas if (dir > 0) { @@ -4359,12 +4350,17 @@ void K_PuntMine(mobj_t *origMine, mobj_t *punter) // Since we aren't using P_KillMobj, we need to clean up the hnext reference P_SetTarget(&mineOwner->hnext, NULL); - mineOwner->player->kartstuff[k_bananadrag] = 0; - mineOwner->player->kartstuff[k_itemheld] = 0; + mineOwner->player->ktemp_bananadrag = 0; + mineOwner->player->pflags &= ~PF_ITEMOUT; - if (--mineOwner->player->kartstuff[k_itemamount] <= 0) + if (mineOwner->player->ktemp_itemamount) { - mineOwner->player->kartstuff[k_itemtype] = KITEM_NONE; + mineOwner->player->ktemp_itemamount--; + } + + if (!mineOwner->player->ktemp_itemamount) + { + mineOwner->player->ktemp_itemtype = KITEM_NONE; } P_RemoveMobj(origMine); @@ -4489,13 +4485,13 @@ static void K_DoHyudoroSteal(player_t *player) && player != &players[i] && !players[i].exiting && !players[i].spectator // Player in-game // Can steal from this player - && (gametype == GT_RACE //&& players[i].kartstuff[k_position] < player->kartstuff[k_position]) + && (gametype == GT_RACE //&& players[i].ktemp_position < player->ktemp_position) || ((gametyperules & GTR_BUMPERS) && players[i].bumpers > 0)) // Has an item - && (players[i].kartstuff[k_itemtype] - && players[i].kartstuff[k_itemamount] - && !players[i].kartstuff[k_itemheld] + && (players[i].ktemp_itemtype + && players[i].ktemp_itemamount + && !(players[i].pflags & PF_ITEMOUT) && !players[i].karthud[khud_itemblink])) { playerswappable[numplayers] = i; @@ -4508,18 +4504,18 @@ static void K_DoHyudoroSteal(player_t *player) if (sink && numplayers > 0 && cv_kitchensink.value) // BEHOLD THE KITCHEN SINK { - player->kartstuff[k_hyudorotimer] = hyu; - player->kartstuff[k_stealingtimer] = stealtime; + player->ktemp_hyudorotimer = hyu; + player->ktemp_stealingtimer = stealtime; - player->kartstuff[k_itemtype] = KITEM_KITCHENSINK; - player->kartstuff[k_itemamount] = 1; - player->kartstuff[k_itemheld] = 0; + player->ktemp_itemtype = KITEM_KITCHENSINK; + player->ktemp_itemamount = 1; + player->pflags &= ~PF_ITEMOUT; return; } - else if ((gametype == GT_RACE && player->kartstuff[k_position] == 1) || numplayers == 0) // No-one can be stolen from? Oh well... + else if ((gametype == GT_RACE && player->ktemp_position == 1) || numplayers == 0) // No-one can be stolen from? Oh well... { - player->kartstuff[k_hyudorotimer] = hyu; - player->kartstuff[k_stealingtimer] = stealtime; + player->ktemp_hyudorotimer = hyu; + player->ktemp_stealingtimer = stealtime; return; } else if (numplayers == 1) // With just 2 players, we just need to set the other player to be the one to steal from @@ -4533,17 +4529,17 @@ static void K_DoHyudoroSteal(player_t *player) if (stealplayer > -1) // Now here's where we do the stealing, has to be done here because we still know the player we're stealing from { - player->kartstuff[k_hyudorotimer] = hyu; - player->kartstuff[k_stealingtimer] = stealtime; - players[stealplayer].kartstuff[k_stolentimer] = stealtime; + player->ktemp_hyudorotimer = hyu; + player->ktemp_stealingtimer = stealtime; + players[stealplayer].ktemp_stealingtimer = -stealtime; - player->kartstuff[k_itemtype] = players[stealplayer].kartstuff[k_itemtype]; - player->kartstuff[k_itemamount] = players[stealplayer].kartstuff[k_itemamount]; - player->kartstuff[k_itemheld] = 0; + player->ktemp_itemtype = players[stealplayer].ktemp_itemtype; + player->ktemp_itemamount = players[stealplayer].ktemp_itemamount; + player->pflags &= ~PF_ITEMOUT; - players[stealplayer].kartstuff[k_itemtype] = KITEM_NONE; - players[stealplayer].kartstuff[k_itemamount] = 0; - players[stealplayer].kartstuff[k_itemheld] = 0; + players[stealplayer].ktemp_itemtype = KITEM_NONE; + players[stealplayer].ktemp_itemamount = 0; + players[stealplayer].pflags &= ~PF_ITEMOUT; if (P_IsDisplayPlayer(&players[stealplayer]) && !r_splitscreen) S_StartSound(NULL, sfx_s3k92); @@ -4554,13 +4550,13 @@ void K_DoSneaker(player_t *player, INT32 type) { const fixed_t intendedboost = FRACUNIT/2; - if (!player->kartstuff[k_floorboost] || player->kartstuff[k_floorboost] == 3) + if (!player->ktemp_floorboost || player->ktemp_floorboost == 3) { const sfxenum_t normalsfx = sfx_cdfm01; const sfxenum_t smallsfx = sfx_cdfm40; sfxenum_t sfx = normalsfx; - if (player->kartstuff[k_numsneakers]) + if (player->ktemp_numsneakers) { // Use a less annoying sound when stacking sneakers. sfx = smallsfx; @@ -4571,13 +4567,13 @@ void K_DoSneaker(player_t *player, INT32 type) S_StartSound(player->mo, sfx); K_SpawnDashDustRelease(player); - if (intendedboost > player->kartstuff[k_speedboost]) - player->karthud[khud_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->kartstuff[k_speedboost]), intendedboost)); + if (intendedboost > player->ktemp_speedboost) + player->karthud[khud_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->ktemp_speedboost), intendedboost)); - player->kartstuff[k_numsneakers]++; + player->ktemp_numsneakers++; } - if (!player->kartstuff[k_sneakertimer]) + if (!player->ktemp_sneakertimer) { if (type == 2) { @@ -4614,10 +4610,10 @@ void K_DoSneaker(player_t *player, INT32 type) } - player->kartstuff[k_sneakertimer] = sneakertime; + player->ktemp_sneakertimer = sneakertime; // set angle for spun out players: - player->kartstuff[k_boostangle] = (INT32)player->mo->angle; + player->ktemp_boostangle = (INT32)player->mo->angle; } static void K_DoShrink(player_t *user) @@ -4634,18 +4630,18 @@ static void K_DoShrink(player_t *user) continue; if (&players[i] == user) continue; - if (players[i].kartstuff[k_position] < user->kartstuff[k_position]) + if (players[i].ktemp_position < user->ktemp_position) { //P_FlashPal(&players[i], PAL_NUKE, 10); // Grow should get taken away. - if (players[i].kartstuff[k_growshrinktimer] > 0) + if (players[i].ktemp_growshrinktimer > 0) K_RemoveGrowShrink(&players[i]); else { // Start shrinking! K_DropItems(&players[i]); - players[i].kartstuff[k_growshrinktimer] = -(15*TICRATE); + players[i].ktemp_growshrinktimer = -(15*TICRATE); if (players[i].mo && !P_MobjWasRemoved(players[i].mo)) { @@ -4673,7 +4669,7 @@ static void K_DoShrink(player_t *user) { if (mobj->target && mobj->target->player) { - if (mobj->target->player->kartstuff[k_position] > user->kartstuff[k_position]) + if (mobj->target->player->ktemp_position > user->ktemp_position) continue; // this guy's behind us, don't take his stuff away! } } @@ -4714,11 +4710,11 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound) if (mo->player) { - if (mo->player->kartstuff[k_sneakertimer]) + if (mo->player->ktemp_sneakertimer) { thrust = FixedMul(thrust, 5*FRACUNIT/4); } - else if (mo->player->kartstuff[k_invincibilitytimer]) + else if (mo->player->ktemp_invincibilitytimer) { thrust = FixedMul(thrust, 9*FRACUNIT/8); } @@ -4813,7 +4809,7 @@ void K_UpdateHnextList(player_t *player, boolean clean) { nextwork = work->hnext; - if (!clean && (!work->movedir || work->movedir <= (UINT16)player->kartstuff[k_itemamount])) + if (!clean && (!work->movedir || work->movedir <= (UINT16)player->ktemp_itemamount)) { continue; } @@ -4836,7 +4832,7 @@ void K_DropHnextList(player_t *player, boolean keepshields) INT32 flip; mobjtype_t type; boolean orbit, ponground, dropall = true; - INT32 shield = K_GetShieldFromItem(player->kartstuff[k_itemtype]); + INT32 shield = K_GetShieldFromItem(player->ktemp_itemtype); if (work == NULL || P_MobjWasRemoved(work)) { @@ -4853,9 +4849,10 @@ void K_DropHnextList(player_t *player, boolean keepshields) K_DoThunderShield(player); } - player->kartstuff[k_curshield] = KSHIELD_NONE; - player->kartstuff[k_itemtype] = KITEM_NONE; - player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; + player->ktemp_curshield = KSHIELD_NONE; + player->ktemp_itemtype = KITEM_NONE; + player->ktemp_itemamount = 0; + player->pflags &= ~PF_ITEMOUT; } nextwork = work->hnext; @@ -4977,17 +4974,18 @@ void K_DropHnextList(player_t *player, boolean keepshields) // we need this here too because this is done in afterthink - pointers are cleaned up at the START of each tic... P_SetTarget(&player->mo->hnext, NULL); - player->kartstuff[k_bananadrag] = 0; + player->ktemp_bananadrag = 0; - if (player->kartstuff[k_eggmanheld]) + if (player->pflags & PF_EGGMANOUT) { - player->kartstuff[k_eggmanheld] = 0; + player->pflags &= ~PF_EGGMANOUT; } - else if (player->kartstuff[k_itemheld] - && (dropall || (--player->kartstuff[k_itemamount] <= 0))) + else if ((player->pflags & PF_ITEMOUT) + && (dropall || (--player->ktemp_itemamount <= 0))) { - player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; - player->kartstuff[k_itemtype] = KITEM_NONE; + player->ktemp_itemamount = 0; + player->pflags &= ~PF_ITEMOUT; + player->ktemp_itemtype = KITEM_NONE; } } @@ -5108,12 +5106,12 @@ void K_DropItems(player_t *player) { K_DropHnextList(player, true); - if (player->mo && !P_MobjWasRemoved(player->mo) && player->kartstuff[k_itemamount] > 0) + if (player->mo && !P_MobjWasRemoved(player->mo) && player->ktemp_itemamount > 0) { mobj_t *drop = K_CreatePaperItem( player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, player->mo->angle + ANGLE_90, P_MobjFlip(player->mo), - player->kartstuff[k_itemtype], player->kartstuff[k_itemamount] + player->ktemp_itemtype, player->ktemp_itemamount ); K_FlipFromObject(drop, player->mo); @@ -5162,7 +5160,7 @@ void K_DropRocketSneaker(player_t *player) leftshoe = false; } P_SetTarget(&player->mo->hnext, NULL); - player->kartstuff[k_rocketsneakertimer] = 0; + player->ktemp_rocketsneakertimer = 0; } void K_DropKitchenSink(player_t *player) @@ -5208,14 +5206,14 @@ void K_RepairOrbitChain(mobj_t *orbit) { prev = cur; cur = cur->hnext; - if (++num > orbit->target->player->kartstuff[k_itemamount]) + if (++num > orbit->target->player->ktemp_itemamount) P_RemoveMobj(prev); else prev->movedir = num; } - if (orbit->target->player->kartstuff[k_itemamount] != num) - orbit->target->player->kartstuff[k_itemamount] = num; + if (orbit->target->player->ktemp_itemamount != num) + orbit->target->player->ktemp_itemamount = num; } } @@ -5358,13 +5356,14 @@ static void K_MoveHeldObjects(player_t *player) if (!player->mo->hnext) { - player->kartstuff[k_bananadrag] = 0; - if (player->kartstuff[k_eggmanheld]) - player->kartstuff[k_eggmanheld] = 0; - else if (player->kartstuff[k_itemheld]) + player->ktemp_bananadrag = 0; + if (player->pflags & PF_EGGMANOUT) + player->pflags &= ~PF_EGGMANOUT; + else if (player->pflags & PF_ITEMOUT) { - player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; - player->kartstuff[k_itemtype] = KITEM_NONE; + player->ktemp_itemamount = 0; + player->pflags &= ~PF_ITEMOUT; + player->ktemp_itemtype = KITEM_NONE; } return; } @@ -5373,13 +5372,14 @@ static void K_MoveHeldObjects(player_t *player) { // we need this here too because this is done in afterthink - pointers are cleaned up at the START of each tic... P_SetTarget(&player->mo->hnext, NULL); - player->kartstuff[k_bananadrag] = 0; - if (player->kartstuff[k_eggmanheld]) - player->kartstuff[k_eggmanheld] = 0; - else if (player->kartstuff[k_itemheld]) + player->ktemp_bananadrag = 0; + if (player->pflags & PF_EGGMANOUT) + player->pflags &= ~PF_EGGMANOUT; + else if (player->pflags & PF_ITEMOUT) { - player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; - player->kartstuff[k_itemtype] = KITEM_NONE; + player->ktemp_itemamount = 0; + player->pflags &= ~PF_ITEMOUT; + player->ktemp_itemtype = KITEM_NONE; } return; } @@ -5390,9 +5390,9 @@ static void K_MoveHeldObjects(player_t *player) case MT_JAWZ_SHIELD: { mobj_t *cur = player->mo->hnext; - fixed_t speed = ((8 - min(4, player->kartstuff[k_itemamount])) * cur->info->speed) / 7; + fixed_t speed = ((8 - min(4, player->ktemp_itemamount)) * cur->info->speed) / 7; - player->kartstuff[k_bananadrag] = 0; // Just to make sure + player->ktemp_bananadrag = 0; // Just to make sure while (cur && !P_MobjWasRemoved(cur)) { @@ -5472,7 +5472,7 @@ static void K_MoveHeldObjects(player_t *player) mobj_t *targ = player->mo; if (P_IsObjectOnGround(player->mo) && player->speed > 0) - player->kartstuff[k_bananadrag]++; + player->ktemp_bananadrag++; while (cur && !P_MobjWasRemoved(cur)) { @@ -5528,7 +5528,7 @@ static void K_MoveHeldObjects(player_t *player) cur->angle = R_PointToAngle2(cur->x, cur->y, targx, targy); - /*if (P_IsObjectOnGround(player->mo) && player->speed > 0 && player->kartstuff[k_bananadrag] > TICRATE + /*if (P_IsObjectOnGround(player->mo) && player->speed > 0 && player->ktemp_bananadrag > TICRATE && P_RandomChance(min(FRACUNIT/2, FixedDiv(player->speed, K_GetKartSpeed(player, false))/2))) { if (leveltime & 1) @@ -5569,7 +5569,7 @@ static void K_MoveHeldObjects(player_t *player) cur->flags &= ~MF_NOCLIPTHING; - if (player->kartstuff[k_rocketsneakertimer] <= TICRATE && (leveltime & 1)) + if (player->ktemp_rocketsneakertimer <= TICRATE && (leveltime & 1)) cur->renderflags |= RF_DONTDRAW; else cur->renderflags &= ~RF_DONTDRAW; @@ -5579,7 +5579,7 @@ static void K_MoveHeldObjects(player_t *player) else P_SetMobjStateNF(cur, (vibrate ? S_ROCKETSNEAKER_RVIBRATE : S_ROCKETSNEAKER_R)); - if (!player->kartstuff[k_rocketsneakertimer] || cur->extravalue2 || !cur->health) + if (!player->ktemp_rocketsneakertimer || cur->extravalue2 || !cur->health) { num = (num+1) % 2; cur = cur->hnext; @@ -5688,7 +5688,7 @@ player_t *K_FindJawzTarget(mobj_t *actor, player_t *source) continue; // Invisible, don't bother - if (player->kartstuff[k_hyudorotimer]) + if (player->ktemp_hyudorotimer) continue; // Find the angle, see who's got the best. @@ -5703,12 +5703,12 @@ player_t *K_FindJawzTarget(mobj_t *actor, player_t *source) if (thisang > ANGLE_67h) continue; // Don't pay attention to people who aren't above your position - if (player->kartstuff[k_position] >= source->kartstuff[k_position]) + if (player->ktemp_position >= source->ktemp_position) continue; - if ((best == -1) || (player->kartstuff[k_position] > best)) + if ((best == -1) || (player->ktemp_position > best)) { wtarg = player; - best = player->kartstuff[k_position]; + best = player->ktemp_position; } } else @@ -5901,16 +5901,16 @@ static void K_UpdateInvincibilitySounds(player_t *player) { if (cv_kartinvinsfx.value) { - if (player->kartstuff[k_invincibilitytimer] > 0) // Prioritize invincibility + if (player->ktemp_invincibilitytimer > 0) // Prioritize invincibility sfxnum = sfx_alarmi; - else if (player->kartstuff[k_growshrinktimer] > 0) + else if (player->ktemp_growshrinktimer > 0) sfxnum = sfx_alarmg; } else { - if (player->kartstuff[k_invincibilitytimer] > 0) + if (player->ktemp_invincibilitytimer > 0) sfxnum = sfx_kinvnc; - else if (player->kartstuff[k_growshrinktimer] > 0) + else if (player->ktemp_growshrinktimer > 0) sfxnum = sfx_kgrow; } } @@ -5950,10 +5950,10 @@ void K_KartPlayerHUDUpdate(player_t *player) if (gametype == GT_RACE) { // 0 is the fast spin animation, set at 30 tics of ring boost or higher! - if (player->kartstuff[k_ringboost] >= 30) + if (player->ktemp_ringboost >= 30) player->karthud[khud_ringdelay] = 0; else - player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->kartstuff[k_ringboost])) / 30; + player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->ktemp_ringboost)) / 30; if (player->karthud[khud_ringframe] == 0 && player->karthud[khud_ringdelay] > RINGANIM_DELAYMAX) { @@ -5974,7 +5974,7 @@ void K_KartPlayerHUDUpdate(player_t *player) } } - if (player->kartstuff[k_ringlock]) + if (player->pflags & PF_RINGLOCK) { UINT8 normalanim = (leveltime % 14); UINT8 debtanim = 14 + (leveltime % 2); @@ -6111,43 +6111,43 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) K_UpdateEngineSounds(player); // Thanks, VAda! // update boost angle if not spun out - if (!player->kartstuff[k_spinouttimer] && !player->kartstuff[k_wipeoutslow]) - player->kartstuff[k_boostangle] = (INT32)player->mo->angle; + if (!player->ktemp_spinouttimer && !player->ktemp_wipeoutslow) + player->ktemp_boostangle = (INT32)player->mo->angle; K_GetKartBoostPower(player); // Special effect objects! if (player->mo && !player->spectator) { - if (player->kartstuff[k_dashpadcooldown]) // Twinkle Circuit afterimages + if (player->ktemp_dashpadcooldown) // Twinkle Circuit afterimages { mobj_t *ghost; ghost = P_SpawnGhostMobj(player->mo); - ghost->fuse = player->kartstuff[k_dashpadcooldown]+1; - ghost->momx = player->mo->momx / (player->kartstuff[k_dashpadcooldown]+1); - ghost->momy = player->mo->momy / (player->kartstuff[k_dashpadcooldown]+1); - ghost->momz = player->mo->momz / (player->kartstuff[k_dashpadcooldown]+1); - player->kartstuff[k_dashpadcooldown]--; + ghost->fuse = player->ktemp_dashpadcooldown+1; + ghost->momx = player->mo->momx / (player->ktemp_dashpadcooldown+1); + ghost->momy = player->mo->momy / (player->ktemp_dashpadcooldown+1); + ghost->momz = player->mo->momz / (player->ktemp_dashpadcooldown+1); + player->ktemp_dashpadcooldown--; } if (player->speed > 0) { // Speed lines - if (player->kartstuff[k_sneakertimer] || player->kartstuff[k_ringboost] - || player->kartstuff[k_driftboost] || player->kartstuff[k_startboost] - || player->kartstuff[k_eggmanexplode]) + if (player->ktemp_sneakertimer || player->ktemp_ringboost + || player->ktemp_driftboost || player->ktemp_startboost + || player->ktemp_eggmanexplode) { - if (player->kartstuff[k_invincibilitytimer]) + if (player->ktemp_invincibilitytimer) K_SpawnInvincibilitySpeedLines(player->mo); else K_SpawnNormalSpeedLines(player); } - if (player->kartstuff[k_numboosts] > 0) // Boosting after images + if (player->ktemp_numboosts > 0) // Boosting after images { mobj_t *ghost; ghost = P_SpawnGhostMobj(player->mo); - ghost->extravalue1 = player->kartstuff[k_numboosts]+1; + ghost->extravalue1 = player->ktemp_numboosts+1; ghost->extravalue2 = (leveltime % ghost->extravalue1); ghost->fuse = ghost->extravalue1; ghost->frame |= FF_FULLBRIGHT; @@ -6163,7 +6163,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (P_IsObjectOnGround(player->mo)) { // Offroad dust - if (player->kartstuff[k_boostpower] < FRACUNIT) + if (player->ktemp_boostpower < FRACUNIT) { K_SpawnWipeoutTrail(player->mo, true); if (leveltime % 6 == 0) @@ -6171,7 +6171,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } // Draft dust - if (player->kartstuff[k_draftpower] >= FRACUNIT) + if (player->ktemp_draftpower >= FRACUNIT) { K_SpawnDraftDust(player->mo); /*if (leveltime % 23 == 0 || !S_SoundPlaying(player->mo, sfx_s265)) @@ -6200,7 +6200,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) debtflag->renderflags = K_GetPlayerDontDrawFlag(player); } - if (player->kartstuff[k_springstars] && (leveltime & 1)) + if (player->ktemp_springstars && (leveltime & 1)) { fixed_t randx = P_RandomRange(-40, 40) * player->mo->scale; fixed_t randy = P_RandomRange(-40, 40) * player->mo->scale; @@ -6211,7 +6211,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->mo->z + randz, MT_KARMAFIREWORK); - star->color = player->kartstuff[k_springcolor]; + star->color = player->ktemp_springcolor; star->flags |= MF_NOGRAVITY; star->momx = player->mo->momx / 2; star->momy = player->mo->momy / 2; @@ -6220,24 +6220,24 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) star->scale = player->mo->scale; star->destscale = star->scale / 2; - player->kartstuff[k_springstars]--; + player->ktemp_springstars--; } } if (player->playerstate == PST_DEAD || (player->respawn.state == RESPAWNST_MOVE)) // Ensure these are set correctly here { - player->mo->colorized = false; - player->mo->color = player->skincolor; + player->mo->colorized = (player->ktemp_dye != 0); + player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; } - else if (player->kartstuff[k_eggmanexplode]) // You're gonna diiiiie + else if (player->ktemp_eggmanexplode) // You're gonna diiiiie { - const INT32 flashtime = 4<<(player->kartstuff[k_eggmanexplode]/TICRATE); - if (player->kartstuff[k_eggmanexplode] == 1 || (player->kartstuff[k_eggmanexplode] % (flashtime/2) != 0)) + const INT32 flashtime = 4<<(player->ktemp_eggmanexplode/TICRATE); + if (player->ktemp_eggmanexplode == 1 || (player->ktemp_eggmanexplode % (flashtime/2) != 0)) { - player->mo->colorized = false; - player->mo->color = player->skincolor; + player->mo->colorized = (player->ktemp_dye != 0); + player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; } - else if (player->kartstuff[k_eggmanexplode] % flashtime == 0) + else if (player->ktemp_eggmanexplode % flashtime == 0) { player->mo->colorized = true; player->mo->color = SKINCOLOR_BLACK; @@ -6248,53 +6248,34 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->mo->color = SKINCOLOR_CRIMSON; } } - else if (player->kartstuff[k_invincibilitytimer]) // setting players to use the star colormap and spawning afterimages + else if (player->ktemp_invincibilitytimer) // setting players to use the star colormap and spawning afterimages { player->mo->colorized = true; } - else if (player->kartstuff[k_growshrinktimer]) // Ditto, for grow/shrink + else if (player->ktemp_growshrinktimer) // Ditto, for grow/shrink { - if (player->kartstuff[k_growshrinktimer] % 5 == 0) + if (player->ktemp_growshrinktimer % 5 == 0) { player->mo->colorized = true; - player->mo->color = (player->kartstuff[k_growshrinktimer] < 0 ? SKINCOLOR_CREAMSICLE : SKINCOLOR_PERIWINKLE); + player->mo->color = (player->ktemp_growshrinktimer < 0 ? SKINCOLOR_CREAMSICLE : SKINCOLOR_PERIWINKLE); } else { - player->mo->colorized = false; - player->mo->color = player->skincolor; + player->mo->colorized = (player->ktemp_dye != 0); + player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; } } - else if (player->kartstuff[k_killfield]) // You're gonna REALLY diiiiie - { - const INT32 flashtime = 4<<(4-(player->kartstuff[k_killfield]/TICRATE)); - if (player->kartstuff[k_killfield] == 1 || (player->kartstuff[k_killfield] % (flashtime/2) != 0)) - { - player->mo->colorized = false; - player->mo->color = player->skincolor; - } - else if (player->kartstuff[k_killfield] % flashtime == 0) - { - player->mo->colorized = true; - player->mo->color = SKINCOLOR_BYZANTIUM; - } - else - { - player->mo->colorized = true; - player->mo->color = SKINCOLOR_RUBY; - } - } - else if (player->kartstuff[k_ringboost] && (leveltime & 1)) // ring boosting + else if (player->ktemp_ringboost && (leveltime & 1)) // ring boosting { player->mo->colorized = true; } else { - player->mo->colorized = false; + player->mo->colorized = (player->ktemp_dye != 0); } - if (player->kartstuff[k_itemtype] == KITEM_NONE) - player->kartstuff[k_holdready] = 0; + if (player->ktemp_itemtype == KITEM_NONE) + player->pflags &= ~PF_HOLDREADY; // DKR style camera for boosting if (player->karthud[khud_boostcam] != 0 || player->karthud[khud_destboostcam] != 0) @@ -6318,30 +6299,30 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->karthud[khud_timeovercam] = 0; // Make ABSOLUTELY SURE that your flashing tics don't get set WHILE you're still in hit animations. - if (player->kartstuff[k_spinouttimer] != 0 || player->kartstuff[k_wipeoutslow] != 0) + if (player->ktemp_spinouttimer != 0 || player->ktemp_wipeoutslow != 0) { - if (( player->kartstuff[k_spinouttype] & KSPIN_IFRAMES ) == 0) - player->powers[pw_flashing] = 0; + if (( player->ktemp_spinouttype & KSPIN_IFRAMES ) == 0) + player->ktemp_flashing = 0; else - player->powers[pw_flashing] = K_GetKartFlashing(player); + player->ktemp_flashing = K_GetKartFlashing(player); } - if (player->kartstuff[k_spinouttimer]) + if (player->ktemp_spinouttimer) { if ((P_IsObjectOnGround(player->mo) - || ( player->kartstuff[k_spinouttype] & KSPIN_AIRTIMER )) - && (!player->kartstuff[k_sneakertimer])) + || ( player->ktemp_spinouttype & KSPIN_AIRTIMER )) + && (!player->ktemp_sneakertimer)) { - player->kartstuff[k_spinouttimer]--; - if (player->kartstuff[k_wipeoutslow] > 1) - player->kartstuff[k_wipeoutslow]--; + player->ktemp_spinouttimer--; + if (player->ktemp_wipeoutslow > 1) + player->ktemp_wipeoutslow--; } } else { - if (player->kartstuff[k_wipeoutslow] >= 1) + if (player->ktemp_wipeoutslow >= 1) player->mo->friction = ORIG_FRICTION; - player->kartstuff[k_wipeoutslow] = 0; + player->ktemp_wipeoutslow = 0; } if (player->rings > 20) @@ -6366,7 +6347,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) else if (player->spheres < 0) player->spheres = 0; - if (comeback == false || !(gametyperules & GTR_KARMA) || player->eliminated == true) + if (comeback == false || !(gametyperules & GTR_KARMA) || (player->pflags & PF_ELIMINATED)) { player->karmadelay = comebacktime; } @@ -6377,100 +6358,99 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) comebackshowninfo = true; // client has already seen the message } - if (player->kartstuff[k_ringdelay]) - player->kartstuff[k_ringdelay]--; + if (player->ktemp_ringdelay) + player->ktemp_ringdelay--; if (P_PlayerInPain(player)) - player->kartstuff[k_ringboost] = 0; - else if (player->kartstuff[k_ringboost]) - player->kartstuff[k_ringboost]--; + player->ktemp_ringboost = 0; + else if (player->ktemp_ringboost) + player->ktemp_ringboost--; - if (player->kartstuff[k_sneakertimer]) + if (player->ktemp_sneakertimer) { - player->kartstuff[k_sneakertimer]--; + player->ktemp_sneakertimer--; - if (player->kartstuff[k_sneakertimer] <= 0) + if (player->ktemp_sneakertimer <= 0) { - player->kartstuff[k_numsneakers] = 0; + player->ktemp_numsneakers = 0; } } - if (player->kartstuff[k_flamedash]) - player->kartstuff[k_flamedash]--; + if (player->ktemp_flamedash) + player->ktemp_flamedash--; - if (player->kartstuff[k_sneakertimer] && player->kartstuff[k_wipeoutslow] > 0 && player->kartstuff[k_wipeoutslow] < wipeoutslowtime+1) - player->kartstuff[k_wipeoutslow] = wipeoutslowtime+1; + if (player->ktemp_sneakertimer && player->ktemp_wipeoutslow > 0 && player->ktemp_wipeoutslow < wipeoutslowtime+1) + player->ktemp_wipeoutslow = wipeoutslowtime+1; - if (player->kartstuff[k_floorboost]) - player->kartstuff[k_floorboost]--; + if (player->ktemp_floorboost) + player->ktemp_floorboost--; - if (player->kartstuff[k_driftboost]) - player->kartstuff[k_driftboost]--; + if (player->ktemp_driftboost) + player->ktemp_driftboost--; - if (player->kartstuff[k_startboost]) - player->kartstuff[k_startboost]--; + if (player->ktemp_startboost) + player->ktemp_startboost--; - if (player->kartstuff[k_spindashboost]) + if (player->ktemp_spindashboost) { - player->kartstuff[k_spindashboost]--; + player->ktemp_spindashboost--; - if (player->kartstuff[k_spindashboost] <= 0) + if (player->ktemp_spindashboost <= 0) { - player->kartstuff[k_spindashspeed] = player->kartstuff[k_spindashboost] = 0; + player->ktemp_spindashspeed = player->ktemp_spindashboost = 0; } } - if (player->kartstuff[k_invincibilitytimer]) - player->kartstuff[k_invincibilitytimer]--; + if (player->ktemp_invincibilitytimer) + player->ktemp_invincibilitytimer--; - if ((player->respawn.state == RESPAWNST_NONE) && player->kartstuff[k_growshrinktimer] != 0) + if ((player->respawn.state == RESPAWNST_NONE) && player->ktemp_growshrinktimer != 0) { - if (player->kartstuff[k_growshrinktimer] > 0) - player->kartstuff[k_growshrinktimer]--; - if (player->kartstuff[k_growshrinktimer] < 0) - player->kartstuff[k_growshrinktimer]++; + if (player->ktemp_growshrinktimer > 0) + player->ktemp_growshrinktimer--; + if (player->ktemp_growshrinktimer < 0) + player->ktemp_growshrinktimer++; // Back to normal - if (player->kartstuff[k_growshrinktimer] == 0) + if (player->ktemp_growshrinktimer == 0) K_RemoveGrowShrink(player); } - if (player->kartstuff[k_superring]) + if (player->ktemp_superring) { - if (player->kartstuff[k_superring] % 3 == 0) + if (player->ktemp_superring % 3 == 0) { mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); ring->extravalue1 = 1; // Ring collect animation timer ring->angle = player->mo->angle; // animation angle P_SetTarget(&ring->target, player->mo); // toucher for thinker - player->kartstuff[k_pickuprings]++; - if (player->kartstuff[k_superring] <= 3) + player->ktemp_pickuprings++; + if (player->ktemp_superring <= 3) ring->cvmem = 1; // play caching when collected } - player->kartstuff[k_superring]--; + player->ktemp_superring--; } - if (player->kartstuff[k_stealingtimer] == 0 && player->kartstuff[k_stolentimer] == 0 - && player->kartstuff[k_rocketsneakertimer]) - player->kartstuff[k_rocketsneakertimer]--; + if (player->ktemp_stealingtimer == 0 + && player->ktemp_rocketsneakertimer) + player->ktemp_rocketsneakertimer--; - if (player->kartstuff[k_hyudorotimer]) - player->kartstuff[k_hyudorotimer]--; + if (player->ktemp_hyudorotimer) + player->ktemp_hyudorotimer--; - if (player->kartstuff[k_sadtimer]) - player->kartstuff[k_sadtimer]--; + if (player->ktemp_sadtimer) + player->ktemp_sadtimer--; - if (player->kartstuff[k_stealingtimer]) - player->kartstuff[k_stealingtimer]--; + if (player->ktemp_stealingtimer > 0) + player->ktemp_stealingtimer--; + else if (player->ktemp_stealingtimer < 0) + player->ktemp_stealingtimer++; - if (player->kartstuff[k_stolentimer]) - player->kartstuff[k_stolentimer]--; + if (player->ktemp_justbumped > 0) + player->ktemp_justbumped--; - if (player->kartstuff[k_justbumped] > 0) - player->kartstuff[k_justbumped]--; - - if (player->kartstuff[k_tiregrease]) - player->kartstuff[k_tiregrease]--; + if (player->ktemp_tiregrease) + player->ktemp_tiregrease--; if (player->tumbleBounces > 0) { @@ -6488,12 +6468,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) K_KartPlayerHUDUpdate(player); - if ((gametyperules & GTR_WANTED) && player->bumpers > 0 && !P_PlayerInPain(player) && !player->powers[pw_flashing]) - { - player->kartstuff[k_wanted]++; - } - - if ((battleovertime.enabled >= 10*TICRATE) && (player->eliminated == false)) + if ((battleovertime.enabled >= 10*TICRATE) && !(player->pflags & PF_ELIMINATED)) { fixed_t distanceToBarrier = 0; @@ -6509,59 +6484,56 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } if (P_IsObjectOnGround(player->mo)) - player->kartstuff[k_waterskip] = 0; + player->ktemp_waterskip = 0; - if (player->kartstuff[k_instashield]) - player->kartstuff[k_instashield]--; + if (player->ktemp_instashield) + player->ktemp_instashield--; - if (player->kartstuff[k_eggmanexplode]) + if (player->ktemp_eggmanexplode) { if (player->spectator || (gametype == GT_BATTLE && !player->bumpers)) - player->kartstuff[k_eggmanexplode] = 0; + player->ktemp_eggmanexplode = 0; else { - player->kartstuff[k_eggmanexplode]--; - if (player->kartstuff[k_eggmanexplode] <= 0) + player->ktemp_eggmanexplode--; + if (player->ktemp_eggmanexplode <= 0) { mobj_t *eggsexplode; - //player->powers[pw_flashing] = 0; + //player->ktemp_flashing = 0; eggsexplode = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SPBEXPLOSION); - if (player->kartstuff[k_eggmanblame] >= 0 - && player->kartstuff[k_eggmanblame] < MAXPLAYERS - && playeringame[player->kartstuff[k_eggmanblame]] - && !players[player->kartstuff[k_eggmanblame]].spectator - && players[player->kartstuff[k_eggmanblame]].mo) - P_SetTarget(&eggsexplode->target, players[player->kartstuff[k_eggmanblame]].mo); + if (player->ktemp_eggmanblame >= 0 + && player->ktemp_eggmanblame < MAXPLAYERS + && playeringame[player->ktemp_eggmanblame] + && !players[player->ktemp_eggmanblame].spectator + && players[player->ktemp_eggmanblame].mo) + P_SetTarget(&eggsexplode->target, players[player->ktemp_eggmanblame].mo); } } } - if (player->kartstuff[k_itemtype] == KITEM_THUNDERSHIELD) + if (player->ktemp_itemtype == KITEM_THUNDERSHIELD) { - if (RINGTOTAL(player) < 20 && !player->kartstuff[k_ringlock]) + if (RINGTOTAL(player) < 20 && !(player->pflags & PF_RINGLOCK)) K_LookForRings(player->mo); } - if (player->kartstuff[k_itemtype] == KITEM_BUBBLESHIELD) + if (player->ktemp_itemtype == KITEM_BUBBLESHIELD) { - if (player->kartstuff[k_bubblecool]) - player->kartstuff[k_bubblecool]--; + if (player->ktemp_bubblecool) + player->ktemp_bubblecool--; } else { - player->kartstuff[k_bubbleblowup] = 0; - player->kartstuff[k_bubblecool] = 0; + player->ktemp_bubbleblowup = 0; + player->ktemp_bubblecool = 0; } - if (player->kartstuff[k_itemtype] != KITEM_FLAMESHIELD) + if (player->ktemp_itemtype != KITEM_FLAMESHIELD) { - if (player->kartstuff[k_flamedash]) + if (player->ktemp_flamedash) K_FlameDashLeftoverSmoke(player->mo); } - if (player->karmadelay) - player->kartstuff[k_comebackmode] = 0; - if (P_IsObjectOnGround(player->mo) && player->trickpanel != 0) { if (P_MobjFlip(player->mo) * player->mo->momz <= 0) @@ -6575,13 +6547,13 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) // Only allow drifting while NOT trying to do an spindash input. if ((K_GetKartButtons(player) & BT_EBRAKEMASK) != BT_EBRAKEMASK) { - player->driftInput = true; + player->pflags |= PF_DRIFTINPUT; } // else, keep the previous value, because it might be brake-drifting. } else { - player->driftInput = false; + player->pflags &= ~PF_DRIFTINPUT; } // Roulette Code @@ -6600,9 +6572,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) void K_KartPlayerAfterThink(player_t *player) { - if (player->kartstuff[k_curshield] - || player->kartstuff[k_invincibilitytimer] - || (player->kartstuff[k_growshrinktimer] != 0 && player->kartstuff[k_growshrinktimer] % 5 == 4)) // 4 instead of 0 because this is afterthink! + if (player->ktemp_curshield + || player->ktemp_invincibilitytimer + || (player->ktemp_growshrinktimer != 0 && player->ktemp_growshrinktimer % 5 == 4)) // 4 instead of 0 because this is afterthink! { player->mo->frame |= FF_FULLBRIGHT; } @@ -6616,24 +6588,24 @@ void K_KartPlayerAfterThink(player_t *player) K_MoveHeldObjects(player); // Jawz reticule (seeking) - if (player->kartstuff[k_itemtype] == KITEM_JAWZ && player->kartstuff[k_itemheld]) + if (player->ktemp_itemtype == KITEM_JAWZ && (player->pflags & PF_ITEMOUT)) { - INT32 lasttarg = player->kartstuff[k_lastjawztarget]; + INT32 lasttarg = player->ktemp_lastjawztarget; player_t *targ; mobj_t *ret; - if (player->kartstuff[k_jawztargetdelay] && playeringame[lasttarg] && !players[lasttarg].spectator) + if (player->ktemp_jawztargetdelay && playeringame[lasttarg] && !players[lasttarg].spectator) { targ = &players[lasttarg]; - player->kartstuff[k_jawztargetdelay]--; + player->ktemp_jawztargetdelay--; } else targ = K_FindJawzTarget(player->mo, player); if (!targ || !targ->mo || P_MobjWasRemoved(targ->mo)) { - player->kartstuff[k_lastjawztarget] = -1; - player->kartstuff[k_jawztargetdelay] = 0; + player->ktemp_lastjawztarget = -1; + player->ktemp_jawztargetdelay = 0; return; } @@ -6650,14 +6622,14 @@ void K_KartPlayerAfterThink(player_t *player) else S_StartSound(targ->mo, sfx_s3k89); - player->kartstuff[k_lastjawztarget] = targ-players; - player->kartstuff[k_jawztargetdelay] = 5; + player->ktemp_lastjawztarget = targ-players; + player->ktemp_jawztargetdelay = 5; } } else { - player->kartstuff[k_lastjawztarget] = -1; - player->kartstuff[k_jawztargetdelay] = 0; + player->ktemp_lastjawztarget = -1; + player->ktemp_jawztargetdelay = 0; } } @@ -6793,7 +6765,7 @@ static waypoint_t *K_GetPlayerNextWaypoint(player_t *player) } // Remove wrong way flag if we're using nextwaypoints - player->kartstuff[k_wrongway] = 0; + player->pflags &= ~PF_WRONGWAY; updaterespawn = true; } } @@ -6833,7 +6805,7 @@ static waypoint_t *K_GetPlayerNextWaypoint(player_t *player) nextbestmomdelta = momdelta; // Set wrong way flag if we're using prevwaypoints - player->kartstuff[k_wrongway] = 1; + player->pflags |= PF_WRONGWAY; updaterespawn = false; } } @@ -7062,24 +7034,24 @@ static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer) INT16 basedrift, driftadjust; fixed_t driftweight = player->kartweight*14; // 12 - if (player->kartstuff[k_drift] == 0 || !P_IsObjectOnGround(player->mo)) + if (player->ktemp_drift == 0 || !P_IsObjectOnGround(player->mo)) { // If they aren't drifting or on the ground, this doesn't apply return 0; } - if (player->kartstuff[k_driftend] != 0) + if (player->pflags & PF_DRIFTEND) { // Drift has ended and we are tweaking their angle back a bit - return -266*player->kartstuff[k_drift]; + return -266*player->ktemp_drift; } - basedrift = (83 * player->kartstuff[k_drift]) - (((driftweight - 14) * player->kartstuff[k_drift]) / 5); // 415 - 303 - driftadjust = abs((252 - driftweight) * player->kartstuff[k_drift] / 5); + basedrift = (83 * player->ktemp_drift) - (((driftweight - 14) * player->ktemp_drift) / 5); // 415 - 303 + driftadjust = abs((252 - driftweight) * player->ktemp_drift / 5); - if (player->kartstuff[k_tiregrease] > 0) // Buff drift-steering while in greasemode + if (player->ktemp_tiregrease > 0) // Buff drift-steering while in greasemode { - basedrift += (basedrift / greasetics) * player->kartstuff[k_tiregrease]; + basedrift += (basedrift / greasetics) * player->ktemp_tiregrease; } if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)) @@ -7170,13 +7142,13 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue) turnfixed = FixedMul(turnfixed, K_BotRubberband(player)); } - if (player->kartstuff[k_drift] != 0 && P_IsObjectOnGround(player->mo)) + if (player->ktemp_drift != 0 && P_IsObjectOnGround(player->mo)) { fixed_t countersteer = FixedDiv(turnfixed, KART_FULLTURN*FRACUNIT); // If we're drifting we have a completely different turning value - if (player->kartstuff[k_driftend] != 0) + if (player->pflags & PF_DRIFTEND) { countersteer = FRACUNIT; } @@ -7184,9 +7156,9 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue) return K_GetKartDriftValue(player, countersteer); } - if (player->kartstuff[k_handleboost] > 0) + if (player->ktemp_handleboost > 0) { - turnfixed = FixedMul(turnfixed, FRACUNIT + player->kartstuff[k_handleboost]); + turnfixed = FixedMul(turnfixed, FRACUNIT + player->ktemp_handleboost); } if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)) @@ -7265,103 +7237,106 @@ static void K_KartDrift(player_t *player, boolean onground) // (This comment is extremely funny) // Drift Release (Moved here so you can't "chain" drifts) - if (player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5) + if (player->ktemp_drift != -5 && player->ktemp_drift != 5) { - if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone) + if (player->ktemp_driftcharge < 0 || player->ktemp_driftcharge >= dsone) { angle_t pushdir = K_MomentumAngle(player->mo); S_StartSound(player->mo, sfx_s23c); //K_SpawnDashDustRelease(player); - if (player->kartstuff[k_driftcharge] < 0) + if (player->ktemp_driftcharge < 0) { // Stage 0: Yellow sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 8); - if (player->kartstuff[k_driftboost] < 15) - player->kartstuff[k_driftboost] = 15; + if (player->ktemp_driftboost < 15) + player->ktemp_driftboost = 15; } - else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo) + else if (player->ktemp_driftcharge >= dsone && player->ktemp_driftcharge < dstwo) { // Stage 1: Red sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 4); - if (player->kartstuff[k_driftboost] < 20) - player->kartstuff[k_driftboost] = 20; + if (player->ktemp_driftboost < 20) + player->ktemp_driftboost = 20; K_SpawnDriftBoostExplosion(player, 1); } - else if (player->kartstuff[k_driftcharge] < dsthree) + else if (player->ktemp_driftcharge < dsthree) { // Stage 2: Blue sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 3); - if (player->kartstuff[k_driftboost] < 50) - player->kartstuff[k_driftboost] = 50; + if (player->ktemp_driftboost < 50) + player->ktemp_driftboost = 50; K_SpawnDriftBoostExplosion(player, 2); } - else if (player->kartstuff[k_driftcharge] >= dsthree) + else if (player->ktemp_driftcharge >= dsthree) { // Stage 3: Rainbow sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 2); - if (player->kartstuff[k_driftboost] < 125) - player->kartstuff[k_driftboost] = 125; + if (player->ktemp_driftboost < 125) + player->ktemp_driftboost = 125; K_SpawnDriftBoostExplosion(player, 3); } } // Remove charge - player->kartstuff[k_driftcharge] = 0; + player->ktemp_driftcharge = 0; } // Drifting: left or right? - if ((player->cmd.turning > 0) && player->speed > minspeed && player->driftInput == true - && (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != 1) - { - // Starting left drift - player->kartstuff[k_drift] = 1; - player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0; - } - else if ((player->cmd.turning < 0) && player->speed > minspeed && player->driftInput == true - && (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != -1) - { - // Starting right drift - player->kartstuff[k_drift] = -1; - player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0; - } - else if (player->driftInput == false) // || player->kartstuff[k_turndir] == 0) + if (!(player->pflags & PF_DRIFTINPUT)) { // drift is not being performed so if we're just finishing set driftend and decrement counters - if (player->kartstuff[k_drift] > 0) + if (player->ktemp_drift > 0) { - player->kartstuff[k_drift]--; - player->kartstuff[k_driftend] = 1; + player->ktemp_drift--; + player->pflags |= PF_DRIFTEND; } - else if (player->kartstuff[k_drift] < 0) + else if (player->ktemp_drift < 0) { - player->kartstuff[k_drift]++; - player->kartstuff[k_driftend] = 1; + player->ktemp_drift++; + player->pflags |= PF_DRIFTEND; } else - player->kartstuff[k_driftend] = 0; + player->pflags &= ~PF_DRIFTEND; + } + else if (player->speed > minspeed + && (player->ktemp_drift == 0 || (player->pflags & PF_DRIFTEND))) + { + if (player->cmd.turning > 0) + { + // Starting left drift + player->ktemp_drift = 1; + player->ktemp_driftcharge = 0; + player->pflags &= ~PF_DRIFTEND; + } + else if (player->cmd.turning < 0) + { + // Starting right drift + player->ktemp_drift = -1; + player->ktemp_driftcharge = 0; + player->pflags &= ~PF_DRIFTEND; + } } if (P_PlayerInPain(player) || player->speed <= 0) { // Stop drifting - player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0; - player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0; - player->kartstuff[k_getsparks] = 0; + player->ktemp_drift = player->ktemp_driftcharge = player->ktemp_aizdriftstrat = 0; + player->pflags &= ~(PF_BRAKEDRIFT|PF_GETSPARKS); } - else if (player->driftInput == true && player->kartstuff[k_drift] != 0) + else if ((player->pflags & PF_DRIFTINPUT) && player->ktemp_drift != 0) { // Incease/decrease the drift value to continue drifting in that direction fixed_t driftadditive = 24; @@ -7369,22 +7344,22 @@ static void K_KartDrift(player_t *player, boolean onground) if (onground) { - if (player->kartstuff[k_drift] >= 1) // Drifting to the left + if (player->ktemp_drift >= 1) // Drifting to the left { - player->kartstuff[k_drift]++; - if (player->kartstuff[k_drift] > 5) - player->kartstuff[k_drift] = 5; + player->ktemp_drift++; + if (player->ktemp_drift > 5) + player->ktemp_drift = 5; if (player->cmd.turning > 0) // Inward driftadditive += abs(player->cmd.turning)/100; if (player->cmd.turning < 0) // Outward driftadditive -= abs(player->cmd.turning)/75; } - else if (player->kartstuff[k_drift] <= -1) // Drifting to the right + else if (player->ktemp_drift <= -1) // Drifting to the right { - player->kartstuff[k_drift]--; - if (player->kartstuff[k_drift] < -5) - player->kartstuff[k_drift] = -5; + player->ktemp_drift--; + if (player->ktemp_drift < -5) + player->ktemp_drift = -5; if (player->cmd.turning < 0) // Inward driftadditive += abs(player->cmd.turning)/100; @@ -7393,29 +7368,29 @@ static void K_KartDrift(player_t *player, boolean onground) } // Disable drift-sparks until you're going fast enough - if (player->kartstuff[k_getsparks] == 0 - || (player->kartstuff[k_offroad] && K_ApplyOffroad(player))) + if (!(player->pflags & PF_GETSPARKS) + || (player->ktemp_offroad && K_ApplyOffroad(player))) driftadditive = 0; // Inbetween minspeed and minspeed*2, it'll keep your previous drift-spark state. if (player->speed > minspeed*2) { - player->kartstuff[k_getsparks] = 1; + player->pflags |= PF_GETSPARKS; - if (player->kartstuff[k_driftcharge] <= -1) + if (player->ktemp_driftcharge <= -1) { - player->kartstuff[k_driftcharge] = dsone; // Back to red + player->ktemp_driftcharge = dsone; // Back to red playsound = true; } } else if (player->speed <= minspeed) { - player->kartstuff[k_getsparks] = 0; + player->pflags &= ~PF_GETSPARKS; driftadditive = 0; - if (player->kartstuff[k_driftcharge] >= dsone) + if (player->ktemp_driftcharge >= dsone) { - player->kartstuff[k_driftcharge] = -1; // Set yellow sparks + player->ktemp_driftcharge = -1; // Set yellow sparks playsound = true; } } @@ -7426,15 +7401,15 @@ static void K_KartDrift(player_t *player, boolean onground) } // This spawns the drift sparks - if ((player->kartstuff[k_driftcharge] + driftadditive >= dsone) - || (player->kartstuff[k_driftcharge] < 0)) + if ((player->ktemp_driftcharge + driftadditive >= dsone) + || (player->ktemp_driftcharge < 0)) { K_SpawnDriftSparks(player); } - if ((player->kartstuff[k_driftcharge] < dsone && player->kartstuff[k_driftcharge]+driftadditive >= dsone) - || (player->kartstuff[k_driftcharge] < dstwo && player->kartstuff[k_driftcharge]+driftadditive >= dstwo) - || (player->kartstuff[k_driftcharge] < dsthree && player->kartstuff[k_driftcharge]+driftadditive >= dsthree)) + if ((player->ktemp_driftcharge < dsone && player->ktemp_driftcharge+driftadditive >= dsone) + || (player->ktemp_driftcharge < dstwo && player->ktemp_driftcharge+driftadditive >= dstwo) + || (player->ktemp_driftcharge < dsthree && player->ktemp_driftcharge+driftadditive >= dsthree)) { playsound = true; } @@ -7442,67 +7417,67 @@ static void K_KartDrift(player_t *player, boolean onground) // Sound whenever you get a different tier of sparks if (playsound && P_IsDisplayPlayer(player)) { - if (player->kartstuff[k_driftcharge] == -1) + if (player->ktemp_driftcharge == -1) S_StartSoundAtVolume(player->mo, sfx_sploss, 192); // Yellow spark sound else S_StartSoundAtVolume(player->mo, sfx_s3ka2, 192); } - player->kartstuff[k_driftcharge] += driftadditive; - player->kartstuff[k_driftend] = 0; + player->ktemp_driftcharge += driftadditive; + player->pflags &= ~PF_DRIFTEND; } - if ((player->kartstuff[k_handleboost] == 0) + if ((player->ktemp_handleboost == 0) || (!player->cmd.turning) - || (!player->kartstuff[k_aizdriftstrat]) - || (player->cmd.turning > 0) != (player->kartstuff[k_aizdriftstrat] > 0)) + || (!player->ktemp_aizdriftstrat) + || (player->cmd.turning > 0) != (player->ktemp_aizdriftstrat > 0)) { - if (!player->kartstuff[k_drift]) - player->kartstuff[k_aizdriftstrat] = 0; + if (!player->ktemp_drift) + player->ktemp_aizdriftstrat = 0; else - player->kartstuff[k_aizdriftstrat] = ((player->kartstuff[k_drift] > 0) ? 1 : -1); + player->ktemp_aizdriftstrat = ((player->ktemp_drift > 0) ? 1 : -1); } - else if (player->kartstuff[k_aizdriftstrat] && !player->kartstuff[k_drift]) + else if (player->ktemp_aizdriftstrat && !player->ktemp_drift) { K_SpawnAIZDust(player); - if (abs(player->aizDriftTilt) < ANGLE_22h) + if (abs(player->aizdrifttilt) < ANGLE_22h) { - player->aizDriftTilt = - (abs(player->aizDriftTilt) + ANGLE_11hh / 4) * - player->kartstuff[k_aizdriftstrat]; + player->aizdrifttilt = + (abs(player->aizdrifttilt) + ANGLE_11hh / 4) * + player->ktemp_aizdriftstrat; } - if (abs(player->aizDriftTurn) < ANGLE_112h) + if (abs(player->aizdriftturn) < ANGLE_112h) { - player->aizDriftTurn = - (abs(player->aizDriftTurn) + ANGLE_11hh) * - player->kartstuff[k_aizdriftstrat]; + player->aizdriftturn = + (abs(player->aizdriftturn) + ANGLE_11hh) * + player->ktemp_aizdriftstrat; } } if (!K_Sliptiding(player)) { - player->aizDriftTilt -= player->aizDriftTilt / 4; - player->aizDriftTurn -= player->aizDriftTurn / 4; + player->aizdrifttilt -= player->aizdrifttilt / 4; + player->aizdriftturn -= player->aizdriftturn / 4; - if (abs(player->aizDriftTilt) < ANGLE_11hh / 4) - player->aizDriftTilt = 0; - if (abs(player->aizDriftTurn) < ANGLE_11hh) - player->aizDriftTurn = 0; + if (abs(player->aizdrifttilt) < ANGLE_11hh / 4) + player->aizdrifttilt = 0; + if (abs(player->aizdriftturn) < ANGLE_11hh) + player->aizdriftturn = 0; } - if (player->kartstuff[k_drift] + if (player->ktemp_drift && ((buttons & BT_BRAKE) || !(buttons & BT_ACCELERATE)) && P_IsObjectOnGround(player->mo)) { - if (!player->kartstuff[k_brakedrift]) + if (!(player->pflags & PF_BRAKEDRIFT)) K_SpawnBrakeDriftSparks(player); - player->kartstuff[k_brakedrift] = 1; + player->pflags |= PF_BRAKEDRIFT; } else - player->kartstuff[k_brakedrift] = 0; + player->pflags &= ~PF_BRAKEDRIFT; } // // K_KartUpdatePosition @@ -7510,14 +7485,14 @@ static void K_KartDrift(player_t *player, boolean onground) void K_KartUpdatePosition(player_t *player) { fixed_t position = 1; - fixed_t oldposition = player->kartstuff[k_position]; + fixed_t oldposition = player->ktemp_position; fixed_t i; if (player->spectator || !player->mo) { // Ensure these are reset for spectators - player->kartstuff[k_position] = 0; - player->kartstuff[k_positiondelay] = 0; + player->ktemp_position = 0; + player->ktemp_positiondelay = 0; return; } @@ -7550,7 +7525,7 @@ void K_KartUpdatePosition(player_t *player) if (player->exiting) // End of match standings { // Only score matters - if (players[i].marescore > player->marescore) + if (players[i].roundscore > player->roundscore) position++; } else @@ -7573,7 +7548,7 @@ void K_KartUpdatePosition(player_t *player) else if (players[i].bumpers == player->bumpers) { // Score is the second tier tie breaker - if (players[i].marescore > player->marescore) + if (players[i].roundscore > player->roundscore) { position++; } @@ -7587,9 +7562,9 @@ void K_KartUpdatePosition(player_t *player) oldposition = position; if (oldposition != position) // Changed places? - player->kartstuff[k_positiondelay] = 10; // Position number growth + player->ktemp_positiondelay = 10; // Position number growth - player->kartstuff[k_position] = position; + player->ktemp_position = position; } // @@ -7599,41 +7574,39 @@ void K_StripItems(player_t *player) { K_DropRocketSneaker(player); K_DropKitchenSink(player); - player->kartstuff[k_itemtype] = KITEM_NONE; - player->kartstuff[k_itemamount] = 0; - player->kartstuff[k_itemheld] = 0; + player->ktemp_itemtype = KITEM_NONE; + player->ktemp_itemamount = 0; + player->pflags &= ~(PF_ITEMOUT|PF_EGGMANOUT); - if (!player->kartstuff[k_itemroulette] || player->kartstuff[k_roulettetype] != 2) + if (!player->ktemp_itemroulette || player->ktemp_roulettetype != 2) { - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; } - player->kartstuff[k_eggmanheld] = 0; - player->kartstuff[k_hyudorotimer] = 0; - player->kartstuff[k_stealingtimer] = 0; - player->kartstuff[k_stolentimer] = 0; + player->ktemp_hyudorotimer = 0; + player->ktemp_stealingtimer = 0; - player->kartstuff[k_curshield] = KSHIELD_NONE; - player->kartstuff[k_bananadrag] = 0; + player->ktemp_curshield = KSHIELD_NONE; + player->ktemp_bananadrag = 0; - player->kartstuff[k_sadtimer] = 0; + player->ktemp_sadtimer = 0; K_UpdateHnextList(player, true); } void K_StripOther(player_t *player) { - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; + player->ktemp_itemroulette = 0; + player->ktemp_roulettetype = 0; - player->kartstuff[k_invincibilitytimer] = 0; + player->ktemp_invincibilitytimer = 0; K_RemoveGrowShrink(player); - if (player->kartstuff[k_eggmanexplode]) + if (player->ktemp_eggmanexplode) { - player->kartstuff[k_eggmanexplode] = 0; - player->kartstuff[k_eggmanblame] = -1; + player->ktemp_eggmanexplode = 0; + player->ktemp_eggmanblame = -1; } } @@ -7648,7 +7621,7 @@ static INT32 K_FlameShieldMax(player_t *player) { if (playeringame[i] && !players[i].spectator) numplayers++; - if (players[i].kartstuff[k_position] == 1) + if (players[i].ktemp_position == 1) disttofinish = players[i].distancetofinish; } @@ -7656,7 +7629,7 @@ static INT32 K_FlameShieldMax(player_t *player) { return 16; // max when alone, for testing } - else if (player->kartstuff[k_position] == 1) + else if (player->ktemp_position == 1) { return 0; // minimum for first } @@ -7670,18 +7643,16 @@ boolean K_PlayerEBrake(player_t *player) { return (K_GetKartButtons(player) & BT_EBRAKEMASK) == BT_EBRAKEMASK && P_IsObjectOnGround(player->mo) == true - && player->kartstuff[k_drift] == 0 - && player->kartstuff[k_spinouttimer] == 0 - && player->kartstuff[k_justbumped] == 0 - && player->kartstuff[k_spindash] >= 0 - && player->kartstuff[k_spindashboost] == 0 - && player->powers[pw_nocontrol] == 0; + && player->ktemp_drift == 0 + && player->ktemp_spinouttimer == 0 + && player->ktemp_justbumped == 0 + && player->ktemp_spindashboost == 0 + && player->ktemp_nocontrol == 0; } SINT8 K_Sliptiding(player_t *player) { - const INT32 *p = player->kartstuff; - return p[k_drift] ? 0 : p[k_aizdriftstrat]; + return player->ktemp_drift ? 0 : player->ktemp_aizdriftstrat; } static void K_KartSpindashDust(mobj_t *parent) @@ -7748,15 +7719,15 @@ static void K_KartSpindash(player_t *player) if (player->mo->hitlag > 0 || P_PlayerInPain(player)) { - player->kartstuff[k_spindash] = 0; + player->ktemp_spindash = 0; } - if (player->kartstuff[k_spindash] > 0 && (cmd->buttons & (BT_DRIFT|BT_BRAKE)) != (BT_DRIFT|BT_BRAKE)) + if (player->ktemp_spindash > 0 && (cmd->buttons & (BT_DRIFT|BT_BRAKE)) != (BT_DRIFT|BT_BRAKE)) { - player->kartstuff[k_spindashspeed] = (player->kartstuff[k_spindash] * FRACUNIT) / MAXCHARGETIME; - player->kartstuff[k_spindashboost] = TICRATE; + player->ktemp_spindashspeed = (player->ktemp_spindash * FRACUNIT) / MAXCHARGETIME; + player->ktemp_spindashboost = TICRATE; - if (!player->kartstuff[k_tiregrease]) + if (!player->ktemp_tiregrease) { UINT8 i; for (i = 0; i < 2; i++) @@ -7769,26 +7740,26 @@ static void K_KartSpindash(player_t *player) } } - player->kartstuff[k_tiregrease] = 2*TICRATE; + player->ktemp_tiregrease = 2*TICRATE; - player->kartstuff[k_spindash] = 0; + player->ktemp_spindash = 0; S_StartSound(player->mo, sfx_s23c); } - if ((player->kartstuff[k_spindashboost] > 0) && (spawnWind == true)) + if ((player->ktemp_spindashboost > 0) && (spawnWind == true)) { K_KartSpindashWind(player->mo); } - if (player->kartstuff[k_spindashboost] > (TICRATE/2)) + if (player->ktemp_spindashboost > (TICRATE/2)) { K_KartSpindashDust(player->mo); } if (K_PlayerEBrake(player) == false) { - player->kartstuff[k_spindash] = 0; + player->ktemp_spindash = 0; return; } @@ -7802,7 +7773,7 @@ static void K_KartSpindash(player_t *player) { if ((cmd->buttons & (BT_DRIFT|BT_BRAKE)) == (BT_DRIFT|BT_BRAKE)) { - INT16 chargetime = MAXCHARGETIME - ++player->kartstuff[k_spindash]; + INT16 chargetime = MAXCHARGETIME - ++player->ktemp_spindash; boolean spawnOldEffect = true; if (chargetime <= (MAXCHARGETIME / 2)) @@ -7816,7 +7787,7 @@ static void K_KartSpindash(player_t *player) K_KartSpindashWind(player->mo); } - if (player->powers[pw_flashing] > 0 && (leveltime & 1) && player->kartstuff[k_hyudorotimer] == 0) + if (player->ktemp_flashing > 0 && (leveltime & 1) && player->ktemp_hyudorotimer == 0) { // Every frame that you're invisible from flashing, spill a ring. // Intentionally a lop-sided trade-off, so the game doesn't become @@ -7860,18 +7831,18 @@ static void K_AirFailsafe(player_t *player) if (player->speed > maxSpeed // Above the max speed that you're allowed to use this technique. || player->respawn.state != RESPAWNST_NONE) // Respawning, you don't need this AND drop dash :V { - player->airFailsafe = false; + player->pflags &= ~PF_AIRFAILSAFE; return; } if ((K_GetKartButtons(player) & BT_ACCELERATE) || K_GetForwardMove(player) != 0) { // Queue up later - player->airFailsafe = true; + player->pflags |= PF_AIRFAILSAFE; return; } - if (player->airFailsafe == true) + if (player->pflags & PF_AIRFAILSAFE) { // Push the player forward P_Thrust(player->mo, K_MomentumAngle(player->mo), thrustSpeed); @@ -7879,7 +7850,7 @@ static void K_AirFailsafe(player_t *player) S_StartSound(player->mo, sfx_s23c); K_SpawnDriftBoostExplosion(player, 0); - player->airFailsafe = false; + player->pflags &= ~PF_AIRFAILSAFE; } } @@ -7896,9 +7867,9 @@ void K_AdjustPlayerFriction(player_t *player) } // Reduce friction after hitting a horizontal spring - if (player->kartstuff[k_tiregrease]) + if (player->ktemp_tiregrease) { - player->mo->friction += ((FRACUNIT - prevfriction) / greasetics) * player->kartstuff[k_tiregrease]; + player->mo->friction += ((FRACUNIT - prevfriction) / greasetics) * player->ktemp_tiregrease; } /* @@ -7919,11 +7890,11 @@ void K_AdjustPlayerFriction(player_t *player) } // Wipeout slowdown - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow]) + if (player->ktemp_spinouttimer && player->ktemp_wipeoutslow) { - if (player->kartstuff[k_offroad]) + if (player->ktemp_offroad) player->mo->friction -= 4912; - if (player->kartstuff[k_wipeoutslow] == 1) + if (player->ktemp_wipeoutslow == 1) player->mo->friction -= 9824; } @@ -7959,40 +7930,40 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { ticcmd_t *cmd = &player->cmd; boolean ATTACK_IS_DOWN = ((cmd->buttons & BT_ATTACK) && !(player->pflags & PF_ATTACKDOWN)); - boolean HOLDING_ITEM = (player->kartstuff[k_itemheld] || player->kartstuff[k_eggmanheld]); - boolean NO_HYUDORO = (player->kartstuff[k_stolentimer] == 0 && player->kartstuff[k_stealingtimer] == 0); + boolean HOLDING_ITEM = (player->pflags & (PF_ITEMOUT|PF_EGGMANOUT)); + boolean NO_HYUDORO = (player->ktemp_stealingtimer == 0); player->pflags &= ~PF_HITFINISHLINE; if (!player->exiting) { - if (player->kartstuff[k_oldposition] < player->kartstuff[k_position]) // But first, if you lost a place, + if (player->ktemp_oldposition < player->ktemp_position) // But first, if you lost a place, { - player->kartstuff[k_oldposition] = player->kartstuff[k_position]; // then the other player taunts. + player->ktemp_oldposition = player->ktemp_position; // then the other player taunts. K_RegularVoiceTimers(player); // and you can't for a bit } - else if (player->kartstuff[k_oldposition] > player->kartstuff[k_position]) // Otherwise, + else if (player->ktemp_oldposition > player->ktemp_position) // Otherwise, { K_PlayOvertakeSound(player->mo); // Say "YOU'RE TOO SLOW!" - player->kartstuff[k_oldposition] = player->kartstuff[k_position]; // Restore the old position, + player->ktemp_oldposition = player->ktemp_position; // Restore the old position, } } - if (player->kartstuff[k_positiondelay]) - player->kartstuff[k_positiondelay]--; + if (player->ktemp_positiondelay) + player->ktemp_positiondelay--; // Prevent ring misfire if (!(cmd->buttons & BT_ATTACK)) { - if (player->kartstuff[k_itemtype] == KITEM_NONE + if (player->ktemp_itemtype == KITEM_NONE && NO_HYUDORO && !(HOLDING_ITEM - || player->kartstuff[k_itemamount] - || player->kartstuff[k_itemroulette] - || player->kartstuff[k_rocketsneakertimer] - || player->kartstuff[k_eggmanexplode])) - player->kartstuff[k_userings] = 1; + || player->ktemp_itemamount + || player->ktemp_itemroulette + || player->ktemp_rocketsneakertimer + || player->ktemp_eggmanexplode)) + player->pflags |= PF_USERINGS; else - player->kartstuff[k_userings] = 0; + player->pflags &= ~PF_USERINGS; } if ((player->pflags & PF_ATTACKDOWN) && !(cmd->buttons & BT_ATTACK)) @@ -8003,44 +7974,11 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player && player->mo && player->mo->health > 0 && !player->spectator && !P_PlayerInPain(player) && !mapreset && leveltime > introtime) { // First, the really specific, finicky items that function without the item being directly in your item slot. - // Karma item dropping - if (player->kartstuff[k_comebackmode]) - { - if (ATTACK_IS_DOWN) - { - mobj_t *newitem; - - if (player->kartstuff[k_comebackmode] == 1) - { - newitem = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RANDOMITEM); - newitem->threshold = 69; // selected "randomly". - } - else - { - newitem = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_EGGMANITEM); - if (player->kartstuff[k_eggmanblame] >= 0 - && player->kartstuff[k_eggmanblame] < MAXPLAYERS - && playeringame[player->kartstuff[k_eggmanblame]] - && !players[player->kartstuff[k_eggmanblame]].spectator - && players[player->kartstuff[k_eggmanblame]].mo) - P_SetTarget(&newitem->target, players[player->kartstuff[k_eggmanblame]].mo); - player->kartstuff[k_eggmanblame] = -1; - } - - newitem->flags2 = (player->mo->flags2 & MF2_OBJECTFLIP); - newitem->fuse = 15*TICRATE; // selected randomly. - - player->kartstuff[k_comebackmode] = 0; - player->karmadelay = comebacktime; - S_StartSound(player->mo, sfx_s254); - } - } - else { // Ring boosting - if (player->kartstuff[k_userings]) + if (player->pflags & PF_USERINGS) { - if ((player->pflags & PF_ATTACKDOWN) && !player->kartstuff[k_ringdelay] && player->rings > 0) + if ((player->pflags & PF_ATTACKDOWN) && !player->ktemp_ringdelay && player->rings > 0) { mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); P_SetMobjState(ring, S_FASTRING1); @@ -8049,73 +7987,72 @@ void K_MoveKartPlayer(player_t *player, boolean onground) ring->shadowscale = 0; P_SetTarget(&ring->target, player->mo); // user player->rings--; - player->kartstuff[k_ringdelay] = 3; + player->ktemp_ringdelay = 3; } } // Other items else { // Eggman Monitor exploding - if (player->kartstuff[k_eggmanexplode]) + if (player->ktemp_eggmanexplode) { - if (ATTACK_IS_DOWN && player->kartstuff[k_eggmanexplode] <= 3*TICRATE && player->kartstuff[k_eggmanexplode] > 1) - player->kartstuff[k_eggmanexplode] = 1; + if (ATTACK_IS_DOWN && player->ktemp_eggmanexplode <= 3*TICRATE && player->ktemp_eggmanexplode > 1) + player->ktemp_eggmanexplode = 1; } // Eggman Monitor throwing - else if (player->kartstuff[k_eggmanheld]) + else if (player->pflags & PF_EGGMANOUT) { if (ATTACK_IS_DOWN) { K_ThrowKartItem(player, false, MT_EGGMANITEM, -1, 0); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_eggmanheld] = 0; + player->pflags &= ~PF_EGGMANOUT; K_UpdateHnextList(player, true); } } // Rocket Sneaker usage - else if (player->kartstuff[k_rocketsneakertimer] > 1) + else if (player->ktemp_rocketsneakertimer > 1) { if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO) { K_DoSneaker(player, 2); K_PlayBoostTaunt(player->mo); - player->kartstuff[k_rocketsneakertimer] -= 3*TICRATE; - if (player->kartstuff[k_rocketsneakertimer] < 1) - player->kartstuff[k_rocketsneakertimer] = 1; + player->ktemp_rocketsneakertimer -= 3*TICRATE; + if (player->ktemp_rocketsneakertimer < 1) + player->ktemp_rocketsneakertimer = 1; } } - else if (player->kartstuff[k_itemamount] <= 0) + else if (player->ktemp_itemamount == 0) { - player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; + player->pflags &= ~PF_ITEMOUT; } else { - switch (player->kartstuff[k_itemtype]) + switch (player->ktemp_itemtype) { case KITEM_SNEAKER: if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO) { K_DoSneaker(player, 1); K_PlayBoostTaunt(player->mo); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; } break; case KITEM_ROCKETSNEAKER: if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO - && player->kartstuff[k_rocketsneakertimer] == 0) + && player->ktemp_rocketsneakertimer == 0) { INT32 moloop; mobj_t *mo = NULL; mobj_t *prev = player->mo; K_PlayBoostTaunt(player->mo); - //player->kartstuff[k_itemheld] = 1; S_StartSound(player->mo, sfx_s3k3a); //K_DoSneaker(player, 2); - player->kartstuff[k_rocketsneakertimer] = (itemtime*3); - player->kartstuff[k_itemamount]--; + player->ktemp_rocketsneakertimer = (itemtime*3); + player->ktemp_itemamount--; K_UpdateHnextList(player, true); for (moloop = 0; moloop < 2; moloop++) @@ -8137,21 +8074,21 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_INVINCIBILITY: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) // Doesn't hold your item slot hostage normally, so you're free to waste it if you have multiple { - if (!player->kartstuff[k_invincibilitytimer]) + if (!player->ktemp_invincibilitytimer) { mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INVULNFLASH); P_SetTarget(&overlay->target, player->mo); overlay->destscale = player->mo->scale; P_SetScale(overlay, player->mo->scale); } - player->kartstuff[k_invincibilitytimer] = itemtime+(2*TICRATE); // 10 seconds + player->ktemp_invincibilitytimer = itemtime+(2*TICRATE); // 10 seconds if (P_IsLocalPlayer(player)) S_ChangeMusicSpecial("kinvnc"); if (! P_IsDisplayPlayer(player)) S_StartSound(player->mo, (cv_kartinvinsfx.value ? sfx_alarmg : sfx_kinvnc)); P_RestoreMusic(player); K_PlayPowerGloatSound(player->mo); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; } break; case KITEM_BANANA: @@ -8162,20 +8099,20 @@ void K_MoveKartPlayer(player_t *player, boolean onground) mobj_t *prev = player->mo; //K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemheld] = 1; + player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s254); - for (moloop = 0; moloop < player->kartstuff[k_itemamount]; moloop++) + for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) { mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BANANA_SHIELD); if (!mo) { - player->kartstuff[k_itemamount] = moloop; + player->ktemp_itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->threshold = 10; - mo->movecount = player->kartstuff[k_itemamount]; + mo->movecount = player->ktemp_itemamount; mo->movedir = moloop+1; P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->hprev, prev); @@ -8183,11 +8120,11 @@ void K_MoveKartPlayer(player_t *player, boolean onground) prev = mo; } } - else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Banana x3 thrown + else if (ATTACK_IS_DOWN && (player->pflags & PF_ITEMOUT)) // Banana x3 thrown { K_ThrowKartItem(player, false, MT_BANANA, -1, 0); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_UpdateHnextList(player, false); } break; @@ -8195,8 +8132,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { mobj_t *mo; - player->kartstuff[k_itemamount]--; - player->kartstuff[k_eggmanheld] = 1; + player->ktemp_itemamount--; + player->pflags |= PF_EGGMANOUT; S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_EGGMANITEM_SHIELD); if (mo) @@ -8220,22 +8157,22 @@ void K_MoveKartPlayer(player_t *player, boolean onground) mobj_t *prev = player->mo; //K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemheld] = 1; + player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s3k3a); - for (moloop = 0; moloop < player->kartstuff[k_itemamount]; moloop++) + for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) { - newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->kartstuff[k_itemamount]) * moloop) << FRACBITS) + ANGLE_90; + newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->ktemp_itemamount) * moloop) << FRACBITS) + ANGLE_90; mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_ORBINAUT_SHIELD); if (!mo) { - player->kartstuff[k_itemamount] = moloop; + player->ktemp_itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->angle = newangle; mo->threshold = 10; - mo->movecount = player->kartstuff[k_itemamount]; + mo->movecount = player->ktemp_itemamount; mo->movedir = mo->lastlook = moloop+1; mo->color = player->skincolor; P_SetTarget(&mo->target, player->mo); @@ -8244,11 +8181,11 @@ void K_MoveKartPlayer(player_t *player, boolean onground) prev = mo; } } - else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Orbinaut x3 thrown + else if (ATTACK_IS_DOWN && (player->pflags & PF_ITEMOUT)) // Orbinaut x3 thrown { K_ThrowKartItem(player, true, MT_ORBINAUT, 1, 0); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_UpdateHnextList(player, false); } break; @@ -8261,22 +8198,22 @@ void K_MoveKartPlayer(player_t *player, boolean onground) mobj_t *prev = player->mo; //K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemheld] = 1; + player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s3k3a); - for (moloop = 0; moloop < player->kartstuff[k_itemamount]; moloop++) + for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) { - newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->kartstuff[k_itemamount]) * moloop) << FRACBITS) + ANGLE_90; + newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->ktemp_itemamount) * moloop) << FRACBITS) + ANGLE_90; mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_JAWZ_SHIELD); if (!mo) { - player->kartstuff[k_itemamount] = moloop; + player->ktemp_itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->angle = newangle; mo->threshold = 10; - mo->movecount = player->kartstuff[k_itemamount]; + mo->movecount = player->ktemp_itemamount; mo->movedir = mo->lastlook = moloop+1; P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->hprev, prev); @@ -8284,14 +8221,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) prev = mo; } } - else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Jawz thrown + else if (ATTACK_IS_DOWN && HOLDING_ITEM && (player->pflags & PF_ITEMOUT)) // Jawz thrown { - if (player->kartstuff[k_throwdir] == 1 || player->kartstuff[k_throwdir] == 0) + if (player->ktemp_throwdir == 1 || player->ktemp_throwdir == 0) K_ThrowKartItem(player, true, MT_JAWZ, 1, 0); - else if (player->kartstuff[k_throwdir] == -1) // Throwing backward gives you a dud that doesn't home in + else if (player->ktemp_throwdir == -1) // Throwing backward gives you a dud that doesn't home in K_ThrowKartItem(player, true, MT_JAWZ_DUD, -1, 0); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_UpdateHnextList(player, false); } break; @@ -8299,7 +8236,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { mobj_t *mo; - player->kartstuff[k_itemheld] = 1; + player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SSMINE_SHIELD); if (mo) @@ -8312,19 +8249,19 @@ void K_MoveKartPlayer(player_t *player, boolean onground) P_SetTarget(&player->mo->hnext, mo); } } - else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) + else if (ATTACK_IS_DOWN && (player->pflags & PF_ITEMOUT)) { K_ThrowKartItem(player, false, MT_SSMINE, 1, 1); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemamount]--; - player->kartstuff[k_itemheld] = 0; + player->ktemp_itemamount--; + player->pflags &= ~PF_ITEMOUT; K_UpdateHnextList(player, true); } break; case KITEM_LANDMINE: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_ThrowLandMine(player); K_PlayAttackTaunt(player->mo); } @@ -8332,7 +8269,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_BALLHOG: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_ThrowKartItem(player, true, MT_BALLHOG, 1, 0); K_PlayAttackTaunt(player->mo); } @@ -8340,7 +8277,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_SPB: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_ThrowKartItem(player, true, MT_SPB, 1, 0); K_PlayAttackTaunt(player->mo); } @@ -8348,7 +8285,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_GROW: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - if (player->kartstuff[k_growshrinktimer] < 0) // If you're shrunk, then "grow" will just make you normal again. + if (player->ktemp_growshrinktimer < 0) // If you're shrunk, then "grow" will just make you normal again. K_RemoveGrowShrink(player); else { @@ -8357,7 +8294,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->mo->destscale = (3*mapobjectscale)/2; if (cv_kartdebugshrink.value && !modeattacking && !player->bot) player->mo->destscale = (6*player->mo->destscale)/8; - player->kartstuff[k_growshrinktimer] = itemtime+(4*TICRATE); // 12 seconds + player->ktemp_growshrinktimer = itemtime+(4*TICRATE); // 12 seconds if (P_IsLocalPlayer(player)) S_ChangeMusicSpecial("kgrow"); if (! P_IsDisplayPlayer(player)) @@ -8365,84 +8302,87 @@ void K_MoveKartPlayer(player_t *player, boolean onground) P_RestoreMusic(player); S_StartSound(player->mo, sfx_kc5a); } - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; } break; case KITEM_SHRINK: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { K_DoShrink(player); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_PlayPowerGloatSound(player->mo); } break; case KITEM_THUNDERSHIELD: - if (player->kartstuff[k_curshield] != KSHIELD_THUNDER) + if (player->ktemp_curshield != KSHIELD_THUNDER) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THUNDERSHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k41); - player->kartstuff[k_curshield] = KSHIELD_THUNDER; + player->ktemp_curshield = KSHIELD_THUNDER; } if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { K_DoThunderShield(player); - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_PlayAttackTaunt(player->mo); } break; case KITEM_BUBBLESHIELD: - if (player->kartstuff[k_curshield] != KSHIELD_BUBBLE) + if (player->ktemp_curshield != KSHIELD_BUBBLE) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BUBBLESHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k3f); - player->kartstuff[k_curshield] = KSHIELD_BUBBLE; + player->ktemp_curshield = KSHIELD_BUBBLE; } if (!HOLDING_ITEM && NO_HYUDORO) { - if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready]) + if ((cmd->buttons & BT_ATTACK) && (player->pflags & PF_HOLDREADY)) { - if (player->kartstuff[k_bubbleblowup] == 0) + if (player->ktemp_bubbleblowup == 0) S_StartSound(player->mo, sfx_s3k75); - player->kartstuff[k_bubbleblowup]++; - player->kartstuff[k_bubblecool] = player->kartstuff[k_bubbleblowup]*4; + player->ktemp_bubbleblowup++; + player->ktemp_bubblecool = player->ktemp_bubbleblowup*4; - if (player->kartstuff[k_bubbleblowup] > bubbletime*2) + if (player->ktemp_bubbleblowup > bubbletime*2) { - K_ThrowKartItem(player, (player->kartstuff[k_throwdir] > 0), MT_BUBBLESHIELDTRAP, -1, 0); + K_ThrowKartItem(player, (player->ktemp_throwdir > 0), MT_BUBBLESHIELDTRAP, -1, 0); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_bubbleblowup] = 0; - player->kartstuff[k_bubblecool] = 0; - player->kartstuff[k_holdready] = 0; - player->kartstuff[k_itemamount]--; + player->ktemp_bubbleblowup = 0; + player->ktemp_bubblecool = 0; + player->pflags &= ~PF_HOLDREADY; + player->ktemp_itemamount--; } } else { - if (player->kartstuff[k_bubbleblowup] > bubbletime) - player->kartstuff[k_bubbleblowup] = bubbletime; + if (player->ktemp_bubbleblowup > bubbletime) + player->ktemp_bubbleblowup = bubbletime; - if (player->kartstuff[k_bubbleblowup]) - player->kartstuff[k_bubbleblowup]--; + if (player->ktemp_bubbleblowup) + player->ktemp_bubbleblowup--; - player->kartstuff[k_holdready] = (player->kartstuff[k_bubblecool] ? 0 : 1); + if (player->ktemp_bubblecool) + player->pflags &= ~PF_HOLDREADY; + else + player->pflags |= PF_HOLDREADY; } } break; case KITEM_FLAMESHIELD: - if (player->kartstuff[k_curshield] != KSHIELD_FLAME) + if (player->ktemp_curshield != KSHIELD_FLAME) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_FLAMESHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k3e); - player->kartstuff[k_curshield] = KSHIELD_FLAME; + player->ktemp_curshield = KSHIELD_FLAME; } if (!HOLDING_ITEM && NO_HYUDORO) @@ -8450,26 +8390,23 @@ void K_MoveKartPlayer(player_t *player, boolean onground) INT32 destlen = K_FlameShieldMax(player); INT32 flamemax = 0; - if (player->kartstuff[k_flamelength] < destlen) - player->kartstuff[k_flamelength]++; // Can always go up! + if (player->ktemp_flamelength < destlen) + player->ktemp_flamelength++; // Can always go up! - flamemax = player->kartstuff[k_flamelength] * flameseg; + flamemax = player->ktemp_flamelength * flameseg; if (flamemax > 0) flamemax += TICRATE; // leniency period - if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready]) + if ((cmd->buttons & BT_ATTACK) && (player->pflags & PF_HOLDREADY)) { - if (player->kartstuff[k_flamemeter] < 0) - player->kartstuff[k_flamemeter] = 0; - - if (player->kartstuff[k_flamedash] == 0) + if (player->ktemp_flamedash == 0) { S_StartSound(player->mo, sfx_s3k43); K_PlayBoostTaunt(player->mo); } - player->kartstuff[k_flamedash] += 2; - player->kartstuff[k_flamemeter] += 2; + player->ktemp_flamedash += 2; + player->ktemp_flamemeter += 2; if (!onground) { @@ -8479,44 +8416,44 @@ void K_MoveKartPlayer(player_t *player, boolean onground) ); } - if (player->kartstuff[k_flamemeter] > flamemax) + if (player->ktemp_flamemeter > flamemax) { P_Thrust( player->mo, player->mo->angle, FixedMul((50*player->mo->scale), K_GetKartGameSpeedScalar(gamespeed)) ); - player->kartstuff[k_flamemeter] = 0; - player->kartstuff[k_flamelength] = 0; - player->kartstuff[k_holdready] = 0; - player->kartstuff[k_itemamount]--; + player->ktemp_flamemeter = 0; + player->ktemp_flamelength = 0; + player->pflags &= ~PF_HOLDREADY; + player->ktemp_itemamount--; } } else { - player->kartstuff[k_holdready] = 1; + player->pflags |= PF_HOLDREADY; - if (player->kartstuff[k_flamemeter] > 0) - player->kartstuff[k_flamemeter]--; + if (player->ktemp_flamemeter > 0) + player->ktemp_flamemeter--; - if (player->kartstuff[k_flamelength] > destlen) + if (player->ktemp_flamelength > destlen) { - player->kartstuff[k_flamelength]--; // Can ONLY go down if you're not using it + player->ktemp_flamelength--; // Can ONLY go down if you're not using it - flamemax = player->kartstuff[k_flamelength] * flameseg; + flamemax = player->ktemp_flamelength * flameseg; if (flamemax > 0) flamemax += TICRATE; // leniency period } - if (player->kartstuff[k_flamemeter] > flamemax) - player->kartstuff[k_flamemeter] = flamemax; + if (player->ktemp_flamemeter > flamemax) + player->ktemp_flamemeter = flamemax; } } break; case KITEM_HYUDORO: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->kartstuff[k_itemamount]--; + player->ktemp_itemamount--; K_DoHyudoroSteal(player); // yes. yes they do. } break; @@ -8526,22 +8463,22 @@ void K_MoveKartPlayer(player_t *player, boolean onground) K_PlayBoostTaunt(player->mo); K_DoPogoSpring(player->mo, 32<trickpanel = 1; - player->trickdelay = 1; - player->kartstuff[k_itemamount]--; + player->pflags |= PF_TRICKDELAY; + player->ktemp_itemamount--; } break; case KITEM_SUPERRING: - if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) + if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO && player->ktemp_superring < (UINT8_MAX - (10*3))) { - player->kartstuff[k_superring] += (10*3); - player->kartstuff[k_itemamount]--; + player->ktemp_superring += (10*3); + player->ktemp_itemamount--; } break; case KITEM_KITCHENSINK: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { mobj_t *mo; - player->kartstuff[k_itemheld] = 1; + player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SINK_SHIELD); if (mo) @@ -8554,21 +8491,21 @@ void K_MoveKartPlayer(player_t *player, boolean onground) P_SetTarget(&player->mo->hnext, mo); } } - else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Sink thrown + else if (ATTACK_IS_DOWN && HOLDING_ITEM && (player->pflags & PF_ITEMOUT)) // Sink thrown { K_ThrowKartItem(player, false, MT_SINK, 1, 2); K_PlayAttackTaunt(player->mo); - player->kartstuff[k_itemamount]--; - player->kartstuff[k_itemheld] = 0; + player->ktemp_itemamount--; + player->pflags &= ~PF_ITEMOUT; K_UpdateHnextList(player, true); } break; case KITEM_SAD: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO - && !player->kartstuff[k_sadtimer]) + && !player->ktemp_sadtimer) { - player->kartstuff[k_sadtimer] = stealtime; - player->kartstuff[k_itemamount]--; + player->ktemp_sadtimer = stealtime; + player->ktemp_itemamount--; } break; default: @@ -8579,30 +8516,30 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // No more! - if (!player->kartstuff[k_itemamount]) + if (!player->ktemp_itemamount) { - player->kartstuff[k_itemheld] = 0; - player->kartstuff[k_itemtype] = KITEM_NONE; + player->pflags &= ~PF_ITEMOUT; + player->ktemp_itemtype = KITEM_NONE; } - if (K_GetShieldFromItem(player->kartstuff[k_itemtype]) == KSHIELD_NONE) + if (K_GetShieldFromItem(player->ktemp_itemtype) == KSHIELD_NONE) { - player->kartstuff[k_curshield] = KSHIELD_NONE; // RESET shield type - player->kartstuff[k_bubbleblowup] = 0; - player->kartstuff[k_bubblecool] = 0; - player->kartstuff[k_flamelength] = 0; - player->kartstuff[k_flamemeter] = 0; + player->ktemp_curshield = KSHIELD_NONE; // RESET shield type + player->ktemp_bubbleblowup = 0; + player->ktemp_bubblecool = 0; + player->ktemp_flamelength = 0; + player->ktemp_flamemeter = 0; } - if (spbplace == -1 || player->kartstuff[k_position] != spbplace) - player->kartstuff[k_ringlock] = 0; // reset ring lock + if (spbplace == -1 || player->ktemp_position != spbplace) + player->pflags &= ~PF_RINGLOCK; // reset ring lock - if (player->kartstuff[k_itemtype] == KITEM_SPB - || player->kartstuff[k_itemtype] == KITEM_SHRINK - || player->kartstuff[k_growshrinktimer] < 0) + if (player->ktemp_itemtype == KITEM_SPB + || player->ktemp_itemtype == KITEM_SHRINK + || player->ktemp_growshrinktimer < 0) indirectitemcooldown = 20*TICRATE; - if (player->kartstuff[k_hyudorotimer] > 0) + if (player->ktemp_hyudorotimer > 0) { INT32 hyu = hyudorotime; @@ -8615,15 +8552,15 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } else { - if (player->kartstuff[k_hyudorotimer] >= (TICRATE/2) && player->kartstuff[k_hyudorotimer] <= hyu-(TICRATE/2)) + if (player->ktemp_hyudorotimer >= (TICRATE/2) && player->ktemp_hyudorotimer <= hyu-(TICRATE/2)) player->mo->renderflags &= ~K_GetPlayerDontDrawFlag(player); else player->mo->renderflags &= ~RF_DONTDRAW; } - player->powers[pw_flashing] = player->kartstuff[k_hyudorotimer]; // We'll do this for now, let's people know about the invisible people through subtle hints + player->ktemp_flashing = player->ktemp_hyudorotimer; // We'll do this for now, let's people know about the invisible people through subtle hints } - else if (player->kartstuff[k_hyudorotimer] == 0) + else if (player->ktemp_hyudorotimer == 0) { player->mo->renderflags &= ~RF_DONTDRAW; } @@ -8633,7 +8570,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) K_DropItems(player); //K_StripItems(player); K_StripOther(player); player->mo->renderflags |= RF_GHOSTLY; - player->powers[pw_flashing] = player->karmadelay; + player->ktemp_flashing = player->karmadelay; } else if (gametype == GT_RACE || player->bumpers > 0) { @@ -8654,13 +8591,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { // tumble if you let your chance pass!! player->tumbleBounces = 1; - player->tumbleSound = 0; + player->pflags &= ~PF_TUMBLESOUND; player->tumbleHeight = 30; // Base tumble bounce height player->trickpanel = 0; P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } - else if (player->trickdelay <= 0) // don't allow tricking at the same frame you tumble obv + else if (!(player->pflags & PF_TRICKDELAY)) // don't allow tricking at the same frame you tumble obv { if (cmd->turning > 0) @@ -8689,7 +8626,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->trickpanel = 3; player->mo->hitlag = TRICKLAG; } - else if (player->kartstuff[k_throwdir] == 1) + else if (player->ktemp_throwdir == 1) { if (player->mo->momz * P_MobjFlip(player->mo) > 0) { @@ -8707,7 +8644,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->trickpanel = 2; player->mo->hitlag = TRICKLAG; } - else if (player->kartstuff[k_throwdir] == -1) + else if (player->ktemp_throwdir == -1) { boolean relative = true; @@ -8744,15 +8681,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // Wait until we let go off the control stick to remove the delay - if (player->trickdelay > 0) + if ((player->pflags & PF_TRICKDELAY) && !player->ktemp_throwdir && !cmd->turning) { - player->trickdelay--; - - if ((player->kartstuff[k_throwdir] != 0 || cmd->turning != 0) && player->trickdelay <= 0) - { - // Don't allow a trick until you go back to neutral - player->trickdelay = 1; - } + player->pflags &= ~PF_TRICKDELAY; } } @@ -8765,7 +8696,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } else { - player->airFailsafe = false; + player->pflags &= ~PF_AIRFAILSAFE; } // Play the starting countdown sounds @@ -8792,9 +8723,9 @@ void K_CheckSpectateStatus(void) if (!playeringame[i]) continue; if (players[i].spectator && (players[i].pflags & PF_WANTSTOJOIN)) - players[i].kartstuff[k_spectatewait]++; + players[i].ktemp_spectatewait++; else - players[i].kartstuff[k_spectatewait] = 0; + players[i].ktemp_spectatewait = 0; } // No one's allowed to join @@ -8842,11 +8773,11 @@ void K_CheckSpectateStatus(void) for (i = 0; i < numjoiners; i++) { UINT8 pos = 0; - INT32 ispecwait = players[oldrespawnlist[i]].kartstuff[k_spectatewait]; + INT32 ispecwait = players[oldrespawnlist[i]].ktemp_spectatewait; for (j = 0; j < numjoiners; j++) { - INT32 jspecwait = players[oldrespawnlist[j]].kartstuff[k_spectatewait]; + INT32 jspecwait = players[oldrespawnlist[j]].ktemp_spectatewait; if (j == i) continue; if (jspecwait > ispecwait) diff --git a/src/k_respawn.c b/src/k_respawn.c index 6018c2e54..d9315f4fa 100644 --- a/src/k_respawn.c +++ b/src/k_respawn.c @@ -113,7 +113,7 @@ static void K_RespawnAtWaypoint(player_t *player, waypoint_t *waypoint) void K_DoFault(player_t *player) { - player->powers[pw_nocontrol] = (starttime - leveltime) + 50; + player->ktemp_nocontrol = (starttime - leveltime) + 50; if (!(player->pflags & PF_FAULT)) { S_StartSound(player->mo, sfx_s3k83); @@ -149,14 +149,14 @@ void K_DoIngameRespawn(player_t *player) if (leveltime < starttime) K_DoFault(player); - player->kartstuff[k_ringboost] = 0; - player->kartstuff[k_driftboost] = 0; + player->ktemp_ringboost = 0; + player->ktemp_driftboost = 0; // If player was tumbling, set variables so that they don't tumble like crazy after they're done respawning if (player->tumbleBounces > 0) { player->tumbleBounces = TUMBLEBOUNCES-1; // Max # of bounces-1 (so you still tumble once) - player->tumbleLastBounce = false; // Still force them to bounce at least once for the funny + player->pflags &= ~PF_TUMBLELASTBOUNCE; // Still force them to bounce at least once for the funny players->tumbleHeight = 20; // force tumble height } @@ -329,8 +329,8 @@ static void K_MovePlayerToRespawnPoint(player_t *player) player->mo->momx = player->mo->momy = player->mo->momz = 0; - player->powers[pw_flashing] = 2; - player->powers[pw_nocontrol] = max(2, player->powers[pw_nocontrol]); + player->ktemp_flashing = 2; + player->ktemp_nocontrol = max(2, player->ktemp_nocontrol); if (leveltime % 8 == 0 && !mapreset) { @@ -589,7 +589,7 @@ static void K_MovePlayerToRespawnPoint(player_t *player) --------------------------------------------------*/ static void K_DropDashWait(player_t *player) { - if (player->powers[pw_nocontrol] == 0) + if (player->ktemp_nocontrol == 0) player->respawn.timer--; if (leveltime % 8 == 0) @@ -656,7 +656,7 @@ static void K_HandleDropDash(player_t *player) { const UINT16 buttons = K_GetKartButtons(player); - if (player->kartstuff[k_growshrinktimer] < 0) + if (player->ktemp_growshrinktimer < 0) { player->mo->scalespeed = mapobjectscale/TICRATE; player->mo->destscale = (6*mapobjectscale)/8; @@ -674,12 +674,12 @@ static void K_HandleDropDash(player_t *player) return; } - player->powers[pw_flashing] = K_GetKartFlashing(player); + player->ktemp_flashing = K_GetKartFlashing(player); // The old behavior was stupid and prone to accidental usage. // Let's rip off Mania instead, and turn this into a Drop Dash! - if ((buttons & BT_ACCELERATE) && !player->kartstuff[k_spinouttimer]) // Since we're letting players spin out on respawn, don't let them charge a dropdash in this state. (It wouldn't work anyway) + if ((buttons & BT_ACCELERATE) && !player->ktemp_spinouttimer) // Since we're letting players spin out on respawn, don't let them charge a dropdash in this state. (It wouldn't work anyway) { player->respawn.dropdash++; } @@ -707,7 +707,7 @@ static void K_HandleDropDash(player_t *player) if ((buttons & BT_ACCELERATE) && (player->respawn.dropdash >= TICRATE/4)) { S_StartSound(player->mo, sfx_s23c); - player->kartstuff[k_startboost] = 50; + player->ktemp_startboost = 50; K_SpawnDashDustRelease(player); } diff --git a/src/k_respawn.h b/src/k_respawn.h index 5dd78ff1f..81ee16b77 100644 --- a/src/k_respawn.h +++ b/src/k_respawn.h @@ -17,9 +17,9 @@ #define RESPAWN_DIST 1024 #define RESPAWN_TIME 48 -#define RESPAWNST_NONE 0 -#define RESPAWNST_MOVE 1 -#define RESPAWNST_DROP 2 +#define RESPAWNST_NONE 0x00 +#define RESPAWNST_MOVE 0x01 +#define RESPAWNST_DROP 0x02 /*-------------------------------------------------- fixed_t K_RespawnOffset(player_t *player, boolean flip); diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 1397f6fcf..abf0224d2 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -170,7 +170,6 @@ static const struct { {META_PLAYER, "player_t"}, {META_TICCMD, "ticcmd_t"}, {META_SKIN, "skin_t"}, - {META_POWERS, "player_t.powers"}, {META_SOUNDSID, "skin_t.soundsid"}, {META_SKINSPRITES, "skin_t.sprites"}, {META_SKINSPRITESLIST, "skin_t.sprites[]"}, @@ -1245,17 +1244,6 @@ static int lib_pRestoreMusic(lua_State *L) return 1; } -static int lib_pSpawnShieldOrb(lua_State *L) -{ - player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - NOHUD - INLEVEL - if (!player) - return LUA_ErrInvalid(L, "player_t"); - P_SpawnShieldOrb(player); - return 0; -} - static int lib_pSpawnGhostMobj(lua_State *L) { mobj_t *mobj = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); @@ -1291,17 +1279,6 @@ static int lib_pGivePlayerLives(lua_State *L) return 0; } -static int lib_pResetScore(lua_State *L) -{ - player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - NOHUD - INLEVEL - if (!player) - return LUA_ErrInvalid(L, "player_t"); - P_ResetScore(player); - return 0; -} - static int lib_pMovePlayer(lua_State *L) { player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); @@ -1376,18 +1353,6 @@ static int lib_pNukeEnemies(lua_State *L) return 0; } -static int lib_pSwitchShield(lua_State *L) -{ - player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - UINT16 shield = luaL_checkinteger(L, 2); - NOHUD - INLEVEL - if (!player) - return LUA_ErrInvalid(L, "player_t"); - P_SwitchShield(player, shield); - return 0; -} - // P_MAP /////////// @@ -3847,18 +3812,15 @@ static luaL_Reg lib[] = { {"P_PlayJingle",lib_pPlayJingle}, {"P_PlayJingleMusic",lib_pPlayJingleMusic}, {"P_RestoreMusic",lib_pRestoreMusic}, - {"P_SpawnShieldOrb",lib_pSpawnShieldOrb}, {"P_SpawnGhostMobj",lib_pSpawnGhostMobj}, {"P_GivePlayerRings",lib_pGivePlayerRings}, {"P_GivePlayerLives",lib_pGivePlayerLives}, - {"P_ResetScore",lib_pResetScore}, {"P_MovePlayer",lib_pMovePlayer}, {"P_DoPlayerExit",lib_pDoPlayerExit}, {"P_InstaThrust",lib_pInstaThrust}, {"P_ReturnThrustX",lib_pReturnThrustX}, {"P_ReturnThrustY",lib_pReturnThrustY}, {"P_NukeEnemies",lib_pNukeEnemies}, - {"P_SwitchShield",lib_pSwitchShield}, // p_map {"P_CheckPosition",lib_pCheckPosition}, diff --git a/src/lua_hook.h b/src/lua_hook.h index 022f6ad56..e44b60d75 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -114,8 +114,6 @@ boolean LUAh_PlayerCmd(player_t *player, ticcmd_t *cmd); // Allows to write to p void LUAh_IntermissionThinker(void); // Hook for Y_Ticker void LUAh_VoteThinker(void); // Hook for Y_VoteTicker -#define LUAh_ShieldSpawn(player) LUAh_PlayerHook(player, hook_ShieldSpawn) // Hook for P_SpawnShieldOrb -#define LUAh_ShieldSpecial(player) LUAh_PlayerHook(player, hook_ShieldSpecial) // Hook for shield abilities #define LUAh_MobjMoveBlocked(mo) LUAh_MobjHook(mo, hook_MobjMoveBlocked) // Hook for P_XYMovement (when movement is blocked) boolean LUAh_MapThingSpawn(mobj_t *mo, mapthing_t *mthing); // Hook for P_SpawnMapThing by mobj type boolean LUAh_FollowMobj(player_t *player, mobj_t *mobj); // Hook for P_PlayerAfterThink Smiles mobj-following diff --git a/src/lua_libs.h b/src/lua_libs.h index 28404878e..c02964467 100644 --- a/src/lua_libs.h +++ b/src/lua_libs.h @@ -37,8 +37,6 @@ extern lua_State *gL; #define META_PLAYER "PLAYER_T*" #define META_TICCMD "TICCMD_T*" #define META_SKIN "SKIN_T*" -#define META_POWERS "PLAYER_T*POWERS" -#define META_KARTSTUFF "PLAYER_T*KARTSTUFF" #define META_KARTHUD "PLAYER_T*KARTHUD" #define META_RESPAWN "PLAYER_T*RESPAWN" #define META_COLLIDE "PLAYER_T*COLLIDE" diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 082a6dca3..84c4cebc6 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -206,42 +206,168 @@ static int player_get(lua_State *L) lua_pushangle(L, plr->aiming); else if (fastcmp(field,"drawangle")) lua_pushangle(L, plr->drawangle); - else if (fastcmp(field,"rings")) - lua_pushinteger(L, plr->rings); - else if (fastcmp(field,"spheres")) - lua_pushinteger(L, plr->spheres); - else if (fastcmp(field,"powers")) - LUA_PushUserdata(L, plr->powers, META_POWERS); - else if (fastcmp(field,"kartstuff")) - LUA_PushUserdata(L, plr->kartstuff, META_KARTSTUFF); else if (fastcmp(field,"karthud")) LUA_PushUserdata(L, plr->karthud, META_KARTHUD); + else if (fastcmp(field,"ktemp_nocontrol")) + lua_pushinteger(L, plr->ktemp_nocontrol); + else if (fastcmp(field,"ktemp_carry")) + lua_pushinteger(L, plr->ktemp_carry); + else if (fastcmp(field,"ktemp_dye")) + lua_pushinteger(L, plr->ktemp_dye); + else if (fastcmp(field,"ktemp_position")) + lua_pushinteger(L, plr->ktemp_position); + else if (fastcmp(field,"ktemp_oldposition")) + lua_pushinteger(L, plr->ktemp_oldposition); + else if (fastcmp(field,"ktemp_positiondelay")) + lua_pushinteger(L, plr->ktemp_positiondelay); + else if (fastcmp(field,"distancetofinish")) + lua_pushinteger(L, plr->distancetofinish); else if (fastcmp(field,"airtime")) lua_pushinteger(L, plr->airtime); - else if (fastcmp(field,"driftInput")) - lua_pushboolean(L, plr->driftInput); - else if (fastcmp(field,"airFailsafe")) - lua_pushboolean(L, plr->airFailsafe); + else if (fastcmp(field,"ktemp_flashing")) + lua_pushinteger(L, plr->ktemp_flashing); + else if (fastcmp(field,"ktemp_spinouttimer")) + lua_pushinteger(L, plr->ktemp_spinouttimer); + else if (fastcmp(field,"ktemp_instashield")) + lua_pushinteger(L, plr->ktemp_instashield); + else if (fastcmp(field,"ktemp_wipeoutslow")) + lua_pushinteger(L, plr->ktemp_wipeoutslow); + else if (fastcmp(field,"ktemp_justbumped")) + lua_pushinteger(L, plr->ktemp_justbumped); else if (fastcmp(field,"tumbleBounces")) lua_pushinteger(L, plr->tumbleBounces); else if (fastcmp(field,"tumbleHeight")) lua_pushinteger(L, plr->tumbleHeight); - else if (fastcmp(field,"tumbleLastBounce")) - lua_pushboolean(L, plr->tumbleLastBounce); - else if (fastcmp(field,"tumbleSound")) - lua_pushboolean(L, plr->tumbleSound); + else if (fastcmp(field,"ktemp_drift")) + lua_pushinteger(L, plr->ktemp_drift); + else if (fastcmp(field,"ktemp_driftcharge")) + lua_pushinteger(L, plr->ktemp_driftcharge); + else if (fastcmp(field,"ktemp_driftboost")) + lua_pushinteger(L, plr->ktemp_driftboost); + else if (fastcmp(field,"ktemp_aizdriftstraft")) + lua_pushinteger(L, plr->ktemp_aizdriftstrat); + else if (fastcmp(field,"aizdrifttilt")) + lua_pushinteger(L, plr->aizdrifttilt); + else if (fastcmp(field,"aizdriftturn")) + lua_pushinteger(L, plr->aizdriftturn); + else if (fastcmp(field,"ktemp_offroad")) + lua_pushinteger(L, plr->ktemp_offroad); + else if (fastcmp(field,"ktemp_waterskip")) + lua_pushinteger(L, plr->ktemp_waterskip); + else if (fastcmp(field,"ktemp_tiregrease")) + lua_pushinteger(L, plr->ktemp_tiregrease); + else if (fastcmp(field,"ktemp_springstars")) + lua_pushinteger(L, plr->ktemp_springstars); + else if (fastcmp(field,"ktemp_springcolor")) + lua_pushinteger(L, plr->ktemp_springcolor); + else if (fastcmp(field,"ktemp_dashpadcooldown")) + lua_pushinteger(L, plr->ktemp_dashpadcooldown); + else if (fastcmp(field,"ktemp_spindash")) + lua_pushinteger(L, plr->ktemp_spindash); + else if (fastcmp(field,"ktemp_spindashspeed")) + lua_pushinteger(L, plr->ktemp_spindashspeed); + else if (fastcmp(field,"ktemp_spindashboost")) + lua_pushinteger(L, plr->ktemp_spindashboost); + else if (fastcmp(field,"ktemp_numboosts")) + lua_pushinteger(L, plr->ktemp_numboosts); + else if (fastcmp(field,"ktemp_boostpower")) + lua_pushinteger(L, plr->ktemp_boostpower); + else if (fastcmp(field,"ktemp_speedboost")) + lua_pushinteger(L, plr->ktemp_speedboost); + else if (fastcmp(field,"ktemp_accelboost")) + lua_pushinteger(L, plr->ktemp_accelboost); + else if (fastcmp(field,"ktemp_handleboost")) + lua_pushinteger(L, plr->ktemp_handleboost); + else if (fastcmp(field,"ktemp_boostangle")) + lua_pushinteger(L, plr->ktemp_boostangle); + else if (fastcmp(field,"ktemp_draftpower")) + lua_pushinteger(L, plr->ktemp_draftpower); + else if (fastcmp(field,"ktemp_draftleeway")) + lua_pushinteger(L, plr->ktemp_draftleeway); + else if (fastcmp(field,"ktemp_lastdraft")) + lua_pushinteger(L, plr->ktemp_lastdraft); + else if (fastcmp(field,"ktemp_itemroulette")) + lua_pushinteger(L, plr->ktemp_itemroulette); + else if (fastcmp(field,"ktemp_roulettetype")) + lua_pushinteger(L, plr->ktemp_roulettetype); + else if (fastcmp(field,"ktemp_itemtype")) + lua_pushinteger(L, plr->ktemp_itemtype); + else if (fastcmp(field,"ktemp_itemamount")) + lua_pushinteger(L, plr->ktemp_itemamount); + else if (fastcmp(field,"ktemp_throwdir")) + lua_pushinteger(L, plr->ktemp_throwdir); + else if (fastcmp(field,"ktemp_sadtimer")) + lua_pushinteger(L, plr->ktemp_sadtimer); + else if (fastcmp(field,"rings")) + lua_pushinteger(L, plr->rings); + else if (fastcmp(field,"ktemp_pickuprings")) + lua_pushinteger(L, plr->ktemp_pickuprings); + else if (fastcmp(field,"ktemp_ringdelay")) + lua_pushinteger(L, plr->ktemp_ringdelay); + else if (fastcmp(field,"ktemp_ringboost")) + lua_pushinteger(L, plr->ktemp_ringboost); + else if (fastcmp(field,"ktemp_sparkleanim")) + lua_pushinteger(L, plr->ktemp_sparkleanim); + else if (fastcmp(field,"ktemp_superring")) + lua_pushinteger(L, plr->ktemp_superring); + else if (fastcmp(field,"ktemp_curshield")) + lua_pushinteger(L, plr->ktemp_curshield); + else if (fastcmp(field,"ktemp_bubblecool")) + lua_pushinteger(L, plr->ktemp_bubblecool); + else if (fastcmp(field,"ktemp_bubbleblowup")) + lua_pushinteger(L, plr->ktemp_bubbleblowup); + else if (fastcmp(field,"ktemp_flamedash")) + lua_pushinteger(L, plr->ktemp_flamedash); + else if (fastcmp(field,"ktemp_flamemeter")) + lua_pushinteger(L, plr->ktemp_flamemeter); + else if (fastcmp(field,"ktemp_flamelength")) + lua_pushinteger(L, plr->ktemp_flamelength); + else if (fastcmp(field,"ktemp_hyudorotimer")) + lua_pushinteger(L, plr->ktemp_hyudorotimer); + else if (fastcmp(field,"ktemp_stealingtimer")) + lua_pushinteger(L, plr->ktemp_stealingtimer); + else if (fastcmp(field,"ktemp_sneakertimer")) + lua_pushinteger(L, plr->ktemp_sneakertimer); + else if (fastcmp(field,"ktemp_numsneakers")) + lua_pushinteger(L, plr->ktemp_numsneakers); + else if (fastcmp(field,"ktemp_floorboost")) + lua_pushinteger(L, plr->ktemp_floorboost); + else if (fastcmp(field,"ktemp_growshrinktimer")) + lua_pushinteger(L, plr->ktemp_growshrinktimer); + else if (fastcmp(field,"ktemp_rocketsneakertimer")) + lua_pushinteger(L, plr->ktemp_rocketsneakertimer); + else if (fastcmp(field,"ktemp_invincibilitytimer")) + lua_pushinteger(L, plr->ktemp_invincibilitytimer); + else if (fastcmp(field,"ktemp_eggmanexplode")) + lua_pushinteger(L, plr->ktemp_eggmanexplode); + else if (fastcmp(field,"ktemp_eggmanblame")) + lua_pushinteger(L, plr->ktemp_eggmanblame); + else if (fastcmp(field,"ktemp_bananadrag")) + lua_pushinteger(L, plr->ktemp_bananadrag); + else if (fastcmp(field,"ktemp_lastjawztarget")) + lua_pushinteger(L, plr->ktemp_lastjawztarget); + else if (fastcmp(field,"ktemp_jawztargetdelay")) + lua_pushinteger(L, plr->ktemp_jawztargetdelay); else if (fastcmp(field,"glanceDir")) lua_pushinteger(L, plr->glanceDir); else if (fastcmp(field,"trickpanel")) lua_pushinteger(L, plr->trickpanel); - else if (fastcmp(field,"trickdelay")) - lua_pushinteger(L, plr->trickdelay); else if (fastcmp(field,"trickmomx")) lua_pushfixed(L, plr->trickmomx); else if (fastcmp(field,"trickmomy")) lua_pushfixed(L, plr->trickmomy); else if (fastcmp(field,"trickmomz")) lua_pushfixed(L, plr->trickmomz); + else if (fastcmp(field,"roundscore")) + plr->roundscore = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_emeralds")) + lua_pushinteger(L, plr->ktemp_emeralds); + else if (fastcmp(field,"bumpers")) + lua_pushinteger(L, plr->bumpers); + else if (fastcmp(field,"karmadelay")) + lua_pushinteger(L, plr->karmadelay); + else if (fastcmp(field,"spheres")) + lua_pushinteger(L, plr->spheres); else if (fastcmp(field,"pflags")) lua_pushinteger(L, plr->pflags); else if (fastcmp(field,"panim")) @@ -280,36 +406,16 @@ static int player_get(lua_State *L) LUA_PushUserdata(L, plr->followmobj, META_MOBJ); else if (fastcmp(field,"lives")) lua_pushinteger(L, plr->lives); - else if (fastcmp(field,"lostlife")) - lua_pushboolean(L, plr->lostlife); - else if (fastcmp(field,"continues")) - lua_pushinteger(L, plr->continues); else if (fastcmp(field,"xtralife")) lua_pushinteger(L, plr->xtralife); - else if (fastcmp(field,"gotcontinue")) - lua_pushinteger(L, plr->gotcontinue); else if (fastcmp(field,"speed")) lua_pushfixed(L, plr->speed); - else if (fastcmp(field,"secondjump")) - lua_pushinteger(L, plr->secondjump); - else if (fastcmp(field,"fly1")) - lua_pushinteger(L, plr->fly1); - else if (fastcmp(field,"scoreadd")) - lua_pushinteger(L, plr->scoreadd); - else if (fastcmp(field,"glidetime")) - lua_pushinteger(L, plr->glidetime); - else if (fastcmp(field,"climbing")) - lua_pushinteger(L, plr->climbing); + else if (fastcmp(field,"lastspeed")) + lua_pushfixed(L, plr->lastspeed); else if (fastcmp(field,"deadtimer")) lua_pushinteger(L, plr->deadtimer); else if (fastcmp(field,"exiting")) lua_pushinteger(L, plr->exiting); - else if (fastcmp(field,"homing")) - lua_pushinteger(L, plr->homing); - else if (fastcmp(field,"dashmode")) - lua_pushinteger(L, plr->dashmode); - else if (fastcmp(field,"skidtime")) - lua_pushinteger(L, plr->skidtime); else if (fastcmp(field,"cmomx")) lua_pushfixed(L, plr->cmomx); else if (fastcmp(field,"cmomy")) @@ -318,8 +424,6 @@ static int player_get(lua_State *L) lua_pushfixed(L, plr->rmomx); else if (fastcmp(field,"rmomy")) lua_pushfixed(L, plr->rmomy); - else if (fastcmp(field,"numboxes")) - lua_pushinteger(L, plr->numboxes); else if (fastcmp(field,"totalring")) lua_pushinteger(L, plr->totalring); else if (fastcmp(field,"realtime")) @@ -328,98 +432,14 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->laps); else if (fastcmp(field,"ctfteam")) lua_pushinteger(L, plr->ctfteam); - else if (fastcmp(field,"gotflag")) - lua_pushinteger(L, plr->gotflag); - else if (fastcmp(field,"weapondelay")) - lua_pushinteger(L, plr->weapondelay); - else if (fastcmp(field,"tossdelay")) - lua_pushinteger(L, plr->tossdelay); + else if (fastcmp(field,"checkskip")) + lua_pushinteger(L, plr->checkskip); else if (fastcmp(field,"starpostnum")) lua_pushinteger(L, plr->starpostnum); - else if (fastcmp(field,"angle_pos")) - lua_pushangle(L, plr->angle_pos); - else if (fastcmp(field,"old_angle_pos")) - lua_pushangle(L, plr->old_angle_pos); - else if (fastcmp(field,"axis1")) - LUA_PushUserdata(L, plr->axis1, META_MOBJ); - else if (fastcmp(field,"axis2")) - LUA_PushUserdata(L, plr->axis2, META_MOBJ); - else if (fastcmp(field,"bumpertime")) - lua_pushinteger(L, plr->bumpertime); - else if (fastcmp(field,"flyangle")) - lua_pushinteger(L, plr->flyangle); - else if (fastcmp(field,"drilltimer")) - lua_pushinteger(L, plr->drilltimer); - else if (fastcmp(field,"linkcount")) - lua_pushinteger(L, plr->linkcount); - else if (fastcmp(field,"linktimer")) - lua_pushinteger(L, plr->linktimer); - else if (fastcmp(field,"anotherflyangle")) - lua_pushinteger(L, plr->anotherflyangle); - else if (fastcmp(field,"nightstime")) - lua_pushinteger(L, plr->nightstime); - else if (fastcmp(field,"drillmeter")) - lua_pushinteger(L, plr->drillmeter); - else if (fastcmp(field,"drilldelay")) - lua_pushinteger(L, plr->drilldelay); - else if (fastcmp(field,"bonustime")) - lua_pushboolean(L, plr->bonustime); - else if (fastcmp(field,"capsule")) - LUA_PushUserdata(L, plr->capsule, META_MOBJ); - else if (fastcmp(field,"drone")) - LUA_PushUserdata(L, plr->drone, META_MOBJ); - else if (fastcmp(field,"oldscale")) - lua_pushfixed(L, plr->oldscale); - else if (fastcmp(field,"mare")) - lua_pushinteger(L, plr->mare); - else if (fastcmp(field,"marelap")) - lua_pushinteger(L, plr->marelap); - else if (fastcmp(field,"marebonuslap")) - lua_pushinteger(L, plr->marebonuslap); - else if (fastcmp(field,"marebegunat")) - lua_pushinteger(L, plr->marebegunat); - else if (fastcmp(field,"startedtime")) - lua_pushinteger(L, plr->startedtime); - else if (fastcmp(field,"finishedtime")) - lua_pushinteger(L, plr->finishedtime); - else if (fastcmp(field,"lapbegunat")) - lua_pushinteger(L, plr->lapbegunat); - else if (fastcmp(field,"lapstartedtime")) - lua_pushinteger(L, plr->lapstartedtime); - else if (fastcmp(field,"finishedspheres")) - lua_pushinteger(L, plr->finishedspheres); - else if (fastcmp(field,"finishedrings")) - lua_pushinteger(L, plr->finishedrings); - else if (fastcmp(field,"marescore")) - lua_pushinteger(L, plr->marescore); - else if (fastcmp(field,"lastmarescore")) - lua_pushinteger(L, plr->lastmarescore); - else if (fastcmp(field,"totalmarescore")) - lua_pushinteger(L, plr->totalmarescore); - else if (fastcmp(field,"lastmare")) - lua_pushinteger(L, plr->lastmare); - else if (fastcmp(field,"lastmarelap")) - lua_pushinteger(L, plr->lastmarelap); - else if (fastcmp(field,"lastmarebonuslap")) - lua_pushinteger(L, plr->lastmarebonuslap); - else if (fastcmp(field,"totalmarelap")) - lua_pushinteger(L, plr->totalmarelap); - else if (fastcmp(field,"totalmarebonuslap")) - lua_pushinteger(L, plr->totalmarebonuslap); - else if (fastcmp(field,"maxlink")) - lua_pushinteger(L, plr->maxlink); - else if (fastcmp(field,"texttimer")) - lua_pushinteger(L, plr->texttimer); - else if (fastcmp(field,"textvar")) - lua_pushinteger(L, plr->textvar); else if (fastcmp(field,"lastsidehit")) lua_pushinteger(L, plr->lastsidehit); else if (fastcmp(field,"lastlinehit")) lua_pushinteger(L, plr->lastlinehit); - else if (fastcmp(field,"losstime")) - lua_pushinteger(L, plr->losstime); - else if (fastcmp(field,"timeshit")) - lua_pushinteger(L, plr->timeshit); else if (fastcmp(field,"onconveyor")) lua_pushinteger(L, plr->onconveyor); else if (fastcmp(field,"awayviewmobj")) @@ -509,23 +529,17 @@ static int player_set(lua_State *L) } else if (fastcmp(field,"drawangle")) plr->drawangle = luaL_checkangle(L, 3); - else if (fastcmp(field,"rings")) - plr->rings = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"spheres")) - plr->spheres = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"powers")) - return NOSET; else if (fastcmp(field,"pflags")) plr->pflags = luaL_checkinteger(L, 3); else if (fastcmp(field,"panim")) plr->panim = luaL_checkinteger(L, 3); else if (fastcmp(field,"flashcount")) - plr->flashcount = (UINT16)luaL_checkinteger(L, 3); + plr->flashcount = luaL_checkinteger(L, 3); else if (fastcmp(field,"flashpal")) - plr->flashpal = (UINT16)luaL_checkinteger(L, 3); + plr->flashpal = luaL_checkinteger(L, 3); else if (fastcmp(field,"skincolor")) { - UINT16 newcolor = (UINT16)luaL_checkinteger(L,3); + UINT16 newcolor = luaL_checkinteger(L,3); if (newcolor >= numskincolors) return luaL_error(L, "player.skincolor %d out of range (0 - %d).", newcolor, numskincolors-1); plr->skincolor = newcolor; @@ -535,40 +549,172 @@ static int player_set(lua_State *L) else if (fastcmp(field,"availabilities")) return NOSET; else if (fastcmp(field,"score")) - plr->score = (UINT32)luaL_checkinteger(L, 3); + plr->score = luaL_checkinteger(L, 3); // SRB2kart - else if (fastcmp(field,"kartstuff")) + else if (fastcmp(field,"ktemp_nocontrol")) + plr->ktemp_nocontrol = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_carry")) + plr->ktemp_carry = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_dye")) + plr->ktemp_dye = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_position")) + plr->ktemp_position = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_oldposition")) + plr->ktemp_oldposition = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_positiondelay")) + plr->ktemp_positiondelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"distancetofinish")) return NOSET; else if (fastcmp(field,"airtime")) - plr->airtime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"driftInput")) - plr->driftInput = luaL_checkboolean(L, 3); - else if (fastcmp(field,"airFailsafe")) - plr->airFailsafe = luaL_checkboolean(L, 3); + plr->airtime = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_flashing")) + plr->ktemp_flashing = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_spinouttimer")) + plr->ktemp_spinouttimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_instashield")) + plr->ktemp_instashield = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_wipeoutslow")) + plr->ktemp_wipeoutslow = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_justbumped")) + plr->ktemp_justbumped = luaL_checkinteger(L, 3); else if (fastcmp(field,"tumbleBounces")) - plr->tumbleBounces = (UINT8)luaL_checkinteger(L, 3); + plr->tumbleBounces = luaL_checkinteger(L, 3); else if (fastcmp(field,"tumbleHeight")) - plr->tumbleHeight = (UINT16)luaL_checkinteger(L, 3); - else if (fastcmp(field,"tumbleLastBounce")) - plr->tumbleLastBounce = luaL_checkboolean(L, 3); - else if (fastcmp(field,"tumbleSound")) - plr->tumbleSound = luaL_checkboolean(L, 3); + plr->tumbleHeight = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_drift")) + plr->ktemp_drift = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_driftcharge")) + plr->ktemp_driftcharge = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_driftboost")) + plr->ktemp_driftboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_aizdriftstraft")) + plr->ktemp_aizdriftstrat = luaL_checkinteger(L, 3); + else if (fastcmp(field,"aizdrifttilt")) + plr->aizdrifttilt = luaL_checkinteger(L, 3); + else if (fastcmp(field,"aizdriftturn")) + plr->aizdriftturn = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_offroad")) + plr->ktemp_offroad = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_waterskip")) + plr->ktemp_waterskip = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_tiregrease")) + plr->ktemp_tiregrease = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_springstars")) + plr->ktemp_springstars = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_springcolor")) + plr->ktemp_springcolor = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_dashpadcooldown")) + plr->ktemp_dashpadcooldown = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_spindash")) + plr->ktemp_spindash = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_spindashspeed")) + plr->ktemp_spindashspeed = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_spindashboost")) + plr->ktemp_spindashboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_numboosts")) + plr->ktemp_numboosts = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_boostpower")) + plr->ktemp_boostpower = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_speedboost")) + plr->ktemp_speedboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_accelboost")) + plr->ktemp_accelboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_handleboost")) + plr->ktemp_handleboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_boostangle")) + plr->ktemp_boostangle = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_draftpower")) + plr->ktemp_draftpower = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_draftleeway")) + plr->ktemp_draftleeway = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_lastdraft")) + plr->ktemp_lastdraft = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_itemroulette")) + plr->ktemp_itemroulette = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_roulettetype")) + plr->ktemp_roulettetype = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_itemtype")) + plr->ktemp_itemtype = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_itemamount")) + plr->ktemp_itemamount = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_throwdir")) + plr->ktemp_throwdir = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_sadtimer")) + plr->ktemp_sadtimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"rings")) + plr->rings = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_pickuprings")) + plr->ktemp_pickuprings = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_ringdelay")) + plr->ktemp_ringdelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_ringboost")) + plr->ktemp_ringboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_sparkleanim")) + plr->ktemp_sparkleanim = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_superring")) + plr->ktemp_superring = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_curshield")) + plr->ktemp_curshield = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_bubblecool")) + plr->ktemp_bubblecool = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_bubbleblowup")) + plr->ktemp_bubbleblowup = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_flamedash")) + plr->ktemp_flamedash = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_flamemeter")) + plr->ktemp_flamemeter = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_flamelength")) + plr->ktemp_flamelength = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_hyudorotimer")) + plr->ktemp_hyudorotimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_stealingtimer")) + plr->ktemp_stealingtimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_sneakertimer")) + plr->ktemp_sneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_numsneakers")) + plr->ktemp_numsneakers = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_floorboost")) + plr->ktemp_floorboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_growshrinktimer")) + plr->ktemp_growshrinktimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_rocketsneakertimer")) + plr->ktemp_rocketsneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_invincibilitytimer")) + plr->ktemp_invincibilitytimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_eggmanexplode")) + plr->ktemp_eggmanexplode = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_eggmanblame")) + plr->ktemp_eggmanblame = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_bananadrag")) + plr->ktemp_bananadrag = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_lastjawztarget")) + plr->ktemp_lastjawztarget = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ktemp_jawztargetdelay")) + plr->ktemp_jawztargetdelay = luaL_checkinteger(L, 3); else if (fastcmp(field,"glanceDir")) - plr->glanceDir = (SINT8)luaL_checkinteger(L, 3); + plr->glanceDir = luaL_checkinteger(L, 3); else if (fastcmp(field,"trickpanel")) plr->trickpanel = luaL_checkinteger(L, 3); - else if (fastcmp(field,"trickdelay")) - plr->trickdelay = (tic_t)luaL_checkinteger(L, 3); else if (fastcmp(field,"trickmomx")) - plr->trickmomx = (fixed_t)luaL_checkfixed(L, 3); + plr->trickmomx = luaL_checkfixed(L, 3); else if (fastcmp(field,"trickmomy")) - plr->trickmomy = (fixed_t)luaL_checkfixed(L, 3); + plr->trickmomy = luaL_checkfixed(L, 3); else if (fastcmp(field,"trickmomz")) - plr->trickmomz = (fixed_t)luaL_checkfixed(L, 3); + plr->trickmomz = luaL_checkfixed(L, 3); + else if (fastcmp(field,"roundscore")) + lua_pushinteger(L, plr->roundscore); + else if (fastcmp(field,"ktemp_emeralds")) + plr->ktemp_emeralds = luaL_checkinteger(L, 3); + else if (fastcmp(field,"bumpers")) + plr->bumpers = luaL_checkinteger(L, 3); + else if (fastcmp(field,"karmadelay")) + plr->karmadelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"spheres")) + plr->spheres = luaL_checkinteger(L, 3); else if (fastcmp(field,"kartspeed")) - plr->kartspeed = (UINT8)luaL_checkinteger(L, 3); + plr->kartspeed = luaL_checkinteger(L, 3); else if (fastcmp(field,"kartweight")) - plr->kartweight = (UINT8)luaL_checkinteger(L, 3); + plr->kartweight = luaL_checkinteger(L, 3); else if (fastcmp(field,"followerskin")) plr->followerskin = luaL_checkinteger(L, 3); else if (fastcmp(field,"followercolor")) @@ -591,36 +737,16 @@ static int player_set(lua_State *L) } else if (fastcmp(field,"lives")) plr->lives = (SINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lostlife")) - plr->lostlife = luaL_checkboolean(L, 3); - else if (fastcmp(field,"continues")) - plr->continues = (SINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"xtralife")) plr->xtralife = (SINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"gotcontinue")) - plr->gotcontinue = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"speed")) plr->speed = luaL_checkfixed(L, 3); - else if (fastcmp(field,"secondjump")) - plr->secondjump = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"fly1")) - plr->fly1 = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"scoreadd")) - plr->scoreadd = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"glidetime")) - plr->glidetime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"climbing")) - plr->climbing = (INT32)luaL_checkinteger(L, 3); + else if (fastcmp(field,"lastspeed")) + plr->lastspeed = luaL_checkfixed(L, 3); else if (fastcmp(field,"deadtimer")) plr->deadtimer = (INT32)luaL_checkinteger(L, 3); else if (fastcmp(field,"exiting")) plr->exiting = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"homing")) - plr->homing = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"dashmode")) - plr->dashmode = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"skidtime")) - plr->skidtime = (tic_t)luaL_checkinteger(L, 3); else if (fastcmp(field,"cmomx")) plr->cmomx = luaL_checkfixed(L, 3); else if (fastcmp(field,"cmomy")) @@ -629,8 +755,6 @@ static int player_set(lua_State *L) plr->rmomx = luaL_checkfixed(L, 3); else if (fastcmp(field,"rmomy")) plr->rmomy = luaL_checkfixed(L, 3); - else if (fastcmp(field,"numboxes")) - plr->numboxes = (INT16)luaL_checkinteger(L, 3); else if (fastcmp(field,"totalring")) plr->totalring = (INT16)luaL_checkinteger(L, 3); else if (fastcmp(field,"realtime")) @@ -639,118 +763,14 @@ static int player_set(lua_State *L) plr->laps = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"ctfteam")) plr->ctfteam = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"gotflag")) - plr->gotflag = (UINT16)luaL_checkinteger(L, 3); - else if (fastcmp(field,"weapondelay")) - plr->weapondelay = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"tossdelay")) - plr->tossdelay = (INT32)luaL_checkinteger(L, 3); + else if (fastcmp(field,"checkskip")) + plr->checkskip = (INT32)luaL_checkinteger(L, 3); else if (fastcmp(field,"starpostnum")) plr->starpostnum = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"angle_pos")) - plr->angle_pos = luaL_checkangle(L, 3); - else if (fastcmp(field,"old_angle_pos")) - plr->old_angle_pos = luaL_checkangle(L, 3); - else if (fastcmp(field,"axis1")) - { - mobj_t *mo = NULL; - if (!lua_isnil(L, 3)) - mo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ)); - P_SetTarget(&plr->axis1, mo); - } - else if (fastcmp(field,"axis2")) - { - mobj_t *mo = NULL; - if (!lua_isnil(L, 3)) - mo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ)); - P_SetTarget(&plr->axis2, mo); - } - else if (fastcmp(field,"bumpertime")) - plr->bumpertime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"flyangle")) - plr->flyangle = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"drilltimer")) - plr->drilltimer = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"linkcount")) - plr->linkcount = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"linktimer")) - plr->linktimer = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"anotherflyangle")) - plr->anotherflyangle = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"nightstime")) - plr->nightstime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"drillmeter")) - plr->drillmeter = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"drilldelay")) - plr->drilldelay = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"bonustime")) - plr->bonustime = luaL_checkboolean(L, 3); - else if (fastcmp(field,"capsule")) - { - mobj_t *mo = NULL; - if (!lua_isnil(L, 3)) - mo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ)); - P_SetTarget(&plr->capsule, mo); - } - else if (fastcmp(field,"drone")) - { - mobj_t *mo = NULL; - if (!lua_isnil(L, 3)) - mo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ)); - P_SetTarget(&plr->drone, mo); - } - else if (fastcmp(field,"oldscale")) - plr->oldscale = luaL_checkfixed(L, 3); - else if (fastcmp(field,"mare")) - plr->mare = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"marelap")) - plr->marelap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"marebonuslap")) - plr->marebonuslap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"marebegunat")) - plr->marebegunat = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"startedtime")) - plr->startedtime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"finishedtime")) - plr->finishedtime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lapbegunat")) - plr->lapbegunat = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lapstartedtime")) - plr->lapstartedtime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"finishedspheres")) - plr->finishedspheres = (INT16)luaL_checkinteger(L, 3); - else if (fastcmp(field,"finishedrings")) - plr->finishedrings = (INT16)luaL_checkinteger(L, 3); - else if (fastcmp(field,"marescore")) - plr->marescore = (UINT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lastmarescore")) - plr->lastmarescore = (UINT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"totalmarescore")) - plr->totalmarescore = (UINT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lastmare")) - plr->lastmare = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lastmarelap")) - plr->lastmarelap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"lastmarebonuslap")) - plr->lastmarebonuslap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"totalmarelap")) - plr->totalmarelap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"totalmarebonuslap")) - plr->totalmarebonuslap = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"maxlink")) - plr->maxlink = (INT32)luaL_checkinteger(L, 3); - else if (fastcmp(field,"texttimer")) - plr->texttimer = (UINT8)luaL_checkinteger(L, 3); - else if (fastcmp(field,"textvar")) - plr->textvar = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"lastsidehit")) plr->lastsidehit = (INT16)luaL_checkinteger(L, 3); else if (fastcmp(field,"lastlinehit")) plr->lastlinehit = (INT16)luaL_checkinteger(L, 3); - else if (fastcmp(field,"losstime")) - plr->losstime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"timeshit")) - plr->timeshit = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"onconveyor")) plr->onconveyor = (INT32)luaL_checkinteger(L, 3); else if (fastcmp(field,"awayviewmobj")) @@ -813,74 +833,6 @@ static int player_num(lua_State *L) return 1; } -// powers, p -> powers[p] -static int power_get(lua_State *L) -{ - UINT16 *powers = *((UINT16 **)luaL_checkudata(L, 1, META_POWERS)); - powertype_t p = luaL_checkinteger(L, 2); - if (p >= NUMPOWERS) - return luaL_error(L, LUA_QL("powertype_t") " cannot be %d", (INT16)p); - lua_pushinteger(L, powers[p]); - return 1; -} - -// powers, p, value -> powers[p] = value -static int power_set(lua_State *L) -{ - UINT16 *powers = *((UINT16 **)luaL_checkudata(L, 1, META_POWERS)); - powertype_t p = luaL_checkinteger(L, 2); - UINT16 i = (UINT16)luaL_checkinteger(L, 3); - if (p >= NUMPOWERS) - return luaL_error(L, LUA_QL("powertype_t") " cannot be %d", (INT16)p); - if (hud_running) - return luaL_error(L, "Do not alter player_t in HUD rendering code!"); - if (hook_cmd_running) - return luaL_error(L, "Do not alter player_t in CMD building code!"); - powers[p] = i; - return 0; -} - -// #powers -> NUMPOWERS -static int power_len(lua_State *L) -{ - lua_pushinteger(L, NUMPOWERS); - return 1; -} - -// kartstuff, ks -> kartstuff[ks] -static int kartstuff_get(lua_State *L) -{ - INT32 *kartstuff = *((INT32 **)luaL_checkudata(L, 1, META_KARTSTUFF)); - kartstufftype_t ks = luaL_checkinteger(L, 2); - if (ks >= NUMKARTSTUFF) - return luaL_error(L, LUA_QL("kartstufftype_t") " cannot be %u", ks); - lua_pushinteger(L, kartstuff[ks]); - return 1; -} - -// kartstuff, ks, value -> kartstuff[ks] = value -static int kartstuff_set(lua_State *L) -{ - INT32 *kartstuff = *((INT32 **)luaL_checkudata(L, 1, META_KARTSTUFF)); - kartstufftype_t ks = luaL_checkinteger(L, 2); - INT32 i = (INT32)luaL_checkinteger(L, 3); - if (ks >= NUMKARTSTUFF) - return luaL_error(L, LUA_QL("kartstufftype_t") " cannot be %u", ks); - if (hud_running) - return luaL_error(L, "Do not alter player_t in HUD rendering code!"); - if (hook_cmd_running) - return luaL_error(L, "Do not alter player_t in BuildCMD code!"); - kartstuff[ks] = i; - return 0; -} - -// #karthud -> NUMKARTSTUFF -static int kartstuff_len(lua_State *L) -{ - lua_pushinteger(L, NUMKARTSTUFF); - return 1; -} - // karthud, ks -> karthud[ks] static int karthud_get(lua_State *L) { @@ -892,7 +844,7 @@ static int karthud_get(lua_State *L) return 1; } -// karthud, ks, value -> kartstuff[ks] = value +// karthud, ks, value -> karthud[ks] = value static int karthud_set(lua_State *L) { INT32 *karthud = *((INT32 **)luaL_checkudata(L, 1, META_KARTHUD)); @@ -1063,28 +1015,6 @@ int LUA_PlayerLib(lua_State *L) lua_setfield(L, -2, "__len"); lua_pop(L,1); - luaL_newmetatable(L, META_POWERS); - lua_pushcfunction(L, power_get); - lua_setfield(L, -2, "__index"); - - lua_pushcfunction(L, power_set); - lua_setfield(L, -2, "__newindex"); - - lua_pushcfunction(L, power_len); - lua_setfield(L, -2, "__len"); - lua_pop(L,1); - - luaL_newmetatable(L, META_KARTSTUFF); - lua_pushcfunction(L, kartstuff_get); - lua_setfield(L, -2, "__index"); - - lua_pushcfunction(L, kartstuff_set); - lua_setfield(L, -2, "__newindex"); - - lua_pushcfunction(L, kartstuff_len); - lua_setfield(L, -2, "__len"); - lua_pop(L,1); - luaL_newmetatable(L, META_KARTHUD); lua_pushcfunction(L, karthud_get); lua_setfield(L, -2, "__index"); diff --git a/src/lua_script.c b/src/lua_script.c index 4d02ee413..6ef32daf9 100644 --- a/src/lua_script.c +++ b/src/lua_script.c @@ -945,8 +945,7 @@ void LUA_InvalidatePlayer(player_t *player) if (!gL) return; LUA_InvalidateUserdata(player); - LUA_InvalidateUserdata(player->powers); - LUA_InvalidateUserdata(player->kartstuff); + LUA_InvalidateUserdata(player->karthud); LUA_InvalidateUserdata(&player->cmd); } diff --git a/src/m_cheat.c b/src/m_cheat.c index cc9552117..bfa96345e 100644 --- a/src/m_cheat.c +++ b/src/m_cheat.c @@ -317,20 +317,6 @@ void Command_CheatGod_f(void) G_SetGameModified(multiplayer, true); } -void Command_CheatNoTarget_f(void) -{ - player_t *plyr; - - REQUIRE_INLEVEL; - REQUIRE_SINGLEPLAYER; - - plyr = &players[consoleplayer]; - plyr->pflags ^= PF_INVIS; - CONS_Printf(M_GetText("SEP Field %s\n"), plyr->pflags & PF_INVIS ? M_GetText("On") : M_GetText("Off")); - - G_SetGameModified(multiplayer, true); -} - void Command_Scale_f(void) { const double scaled = atof(COM_Argv(1)); @@ -1147,7 +1133,7 @@ void OP_ObjectplaceMovement(player_t *player) mt = OP_CreateNewMapThing(player, (UINT16)spawnthing, ceiling); if (mt->type >= 600 && mt->type <= 609) // Placement patterns - P_SpawnItemPattern(mt, false); + P_SpawnItemPattern(mt); else if (mt->type == 1705 || mt->type == 1713) // NiGHTS Hoops P_SpawnHoop(mt); else @@ -1291,6 +1277,6 @@ void Command_ObjectPlace_f(void) players[0].mo->color = op_oldcolor; // This is necessary for recovery of dying players. - players[0].powers[pw_flashing] = K_GetKartFlashing(&players[0]); + players[0].ktemp_flashing = K_GetKartFlashing(&players[0]); } } diff --git a/src/m_cheat.h b/src/m_cheat.h index de34d8a41..ec1a129cf 100644 --- a/src/m_cheat.h +++ b/src/m_cheat.h @@ -45,7 +45,6 @@ void OP_ObjectplaceMovement(player_t *player); // void Command_CheatNoClip_f(void); void Command_CheatGod_f(void); -void Command_CheatNoTarget_f(void); void Command_Savecheckpoint_f(void); void Command_Setrings_f(void); void Command_Setlives_f(void); diff --git a/src/p_enemy.c b/src/p_enemy.c index 8ef33a38e..c8c4d189d 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -105,13 +105,8 @@ void A_Scream(mobj_t *actor); void A_Pain(mobj_t *actor); void A_Explode(mobj_t *actor); void A_BossDeath(mobj_t *actor); -void A_CustomPower(mobj_t *actor); void A_RingBox(mobj_t *actor); -void A_Invincibility(mobj_t *actor); -void A_SuperSneakers(mobj_t *actor); void A_AwardScore(mobj_t *actor); -void A_GiveShield(mobj_t *actor); -void A_GravityBox(mobj_t *actor); void A_ScoreRise(mobj_t *actor); void A_BunnyHop(mobj_t *actor); void A_BubbleSpawn(mobj_t *actor); @@ -742,9 +737,6 @@ boolean P_LookForPlayers(mobj_t *actor, boolean allaround, boolean tracer, fixed if ((netgame || multiplayer) && player->spectator) continue; - if (player->pflags & PF_INVIS) - continue; // ignore notarget - if (!player->mo || P_MobjWasRemoved(player->mo)) continue; @@ -3442,7 +3434,7 @@ void A_BossDeath(mobj_t *mo) // make sure there is a player alive for victory for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i] && ((players[i].mo && players[i].mo->health) - || ((netgame || multiplayer) && (players[i].lives || players[i].continues)))) + || ((netgame || multiplayer) && players[i].lives))) break; if (i == MAXPLAYERS) @@ -3729,48 +3721,6 @@ bossjustdie: } } -// Function: A_CustomPower -// -// Description: Provides a custom powerup. Target (must be a player) is awarded the powerup. Reactiontime of the object is used as an index to the powers array. -// -// var1 = Power index # -// var2 = Power duration in tics -// -void A_CustomPower(mobj_t *actor) -{ - player_t *player; - INT32 locvar1 = var1; - INT32 locvar2 = var2; - boolean spawnshield = false; - - if (LUA_CallAction(A_CUSTOMPOWER, actor)) - return; - - if (!actor->target || !actor->target->player) - { - CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); - return; - } - - if (locvar1 >= NUMPOWERS) - { - CONS_Debug(DBG_GAMELOGIC, "Power #%d out of range!\n", locvar1); - return; - } - - player = actor->target->player; - - if (locvar1 == pw_shield && player->powers[pw_shield] != locvar2) - spawnshield = true; - - player->powers[locvar1] = (UINT16)locvar2; - if (actor->info->seesound) - S_StartSound(player->mo, actor->info->seesound); - - if (spawnshield) //workaround for a bug - P_SpawnShieldOrb(player); -} - // Function: A_RingBox // // Description: Awards the player 10 rings. @@ -3798,70 +3748,6 @@ void A_RingBox(mobj_t *actor) S_StartSound(player->mo, actor->info->seesound); } -// Function: A_Invincibility -// -// Description: Awards the player invincibility. -// -// var1 = unused -// var2 = unused -// -void A_Invincibility(mobj_t *actor) -{ - player_t *player; - - if (LUA_CallAction(A_INVINCIBILITY, actor)) - return; - - if (!actor->target || !actor->target->player) - { - CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); - return; - } - - player = actor->target->player; - player->powers[pw_invulnerability] = invulntics + 1; - - if (P_IsLocalPlayer(player) && !player->powers[pw_super]) - { - P_PlayJingle(player, JT_INV); - strlcpy(S_sfx[sfx_None].caption, "Invincibility", 14); - S_StartCaption(sfx_None, -1, player->powers[pw_invulnerability]); - } -} - -// Function: A_SuperSneakers -// -// Description: Awards the player super sneakers. -// -// var1 = unused -// var2 = unused -// -void A_SuperSneakers(mobj_t *actor) -{ - player_t *player; - - if (LUA_CallAction(A_SUPERSNEAKERS, actor)) - return; - - if (!actor->target || !actor->target->player) - { - CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); - return; - } - - player = actor->target->player; - - actor->target->player->powers[pw_sneakers] = sneakertics + 1; - - if (P_IsLocalPlayer(player) && !player->powers[pw_super]) - { - if (S_SpeedMusic(0.0f)) - S_SpeedMusic(1.4f); - strlcpy(S_sfx[sfx_None].caption, "Speed shoes", 12); - S_StartCaption(sfx_None, -1, player->powers[pw_sneakers]); - } -} - // Function: A_AwardScore // // Description: Adds a set amount of points to the player's score. @@ -3889,60 +3775,6 @@ void A_AwardScore(mobj_t *actor) S_StartSound(player->mo, actor->info->seesound); } -// Function: A_GiveShield -// -// Description: Awards the player a specified shield. -// -// var1 = Shield type (make with SH_ constants) -// var2 = unused -// -void A_GiveShield(mobj_t *actor) -{ - player_t *player; - UINT16 locvar1 = var1; - - if (LUA_CallAction(A_GIVESHIELD, actor)) - return; - - if (!actor->target || !actor->target->player) - { - CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); - return; - } - - player = actor->target->player; - - P_SwitchShield(player, locvar1); - S_StartSound(player->mo, actor->info->seesound); -} - -// Function: A_GravityBox -// -// Description: Awards the player gravity boots. -// -// var1 = unused -// var2 = unused -// -void A_GravityBox(mobj_t *actor) -{ - player_t *player; - - if (LUA_CallAction(A_GRAVITYBOX, actor)) - return; - - if (!actor->target || !actor->target->player) - { - CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); - return; - } - - player = actor->target->player; - - S_StartSound(player, actor->info->activesound); - - player->powers[pw_gravityboots] = (UINT16)(actor->info->reactiontime + 1); -} - // Function: A_ScoreRise // // Description: Makes the little score logos rise. Speed value sets speed. @@ -4173,13 +4005,13 @@ void A_AttractChase(mobj_t *actor) angle_t offset = FixedAngle(18<target->player->kartstuff[k_ringboost] += K_GetKartRingPower(actor->target->player, true) + 3; + actor->target->player->ktemp_ringboost += K_GetKartRingPower(actor->target->player, true) + 3; S_StartSound(actor->target, sfx_s1b5); sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS); P_SetTarget(&sparkle->target, actor->target); - sparkle->angle = (actor->target->angle + (offset>>1)) + (offset * actor->target->player->kartstuff[k_sparkleanim]); - actor->target->player->kartstuff[k_sparkleanim] = (actor->target->player->kartstuff[k_sparkleanim]+1) % 20; + sparkle->angle = (actor->target->angle + (offset>>1)) + (offset * actor->target->player->ktemp_sparkleanim); + actor->target->player->ktemp_sparkleanim = (actor->target->player->ktemp_sparkleanim+1) % 20; P_KillMobj(actor, actor->target, actor->target, DMG_NORMAL); return; @@ -4201,14 +4033,14 @@ void A_AttractChase(mobj_t *actor) if (actor->extravalue1 >= 16) { if (!P_GivePlayerRings(actor->target->player, 1)) // returns 0 if addition failed - actor->target->player->kartstuff[k_ringboost] += K_GetKartRingPower(actor->target->player, true) + 3; + actor->target->player->ktemp_ringboost += K_GetKartRingPower(actor->target->player, true) + 3; if (actor->cvmem) // caching S_StartSound(actor->target, sfx_s1c5); else S_StartSound(actor->target, sfx_s227); - actor->target->player->kartstuff[k_pickuprings]--; + actor->target->player->ktemp_pickuprings--; P_RemoveMobj(actor); return; } @@ -4257,9 +4089,9 @@ void A_AttractChase(mobj_t *actor) if (actor->tracer && actor->tracer->player && actor->tracer->health //&& P_CheckSight(actor, actor->tracer) - && actor->tracer->player->kartstuff[k_itemtype] == KITEM_THUNDERSHIELD + && actor->tracer->player->ktemp_itemtype == KITEM_THUNDERSHIELD && RINGTOTAL(actor->tracer->player) < 20 - && !actor->tracer->player->kartstuff[k_ringlock]) + && !(actor->tracer->player->pflags & PF_RINGLOCK)) { fixed_t dist; angle_t hang, vang; @@ -5852,7 +5684,7 @@ void A_MixUp(mobj_t *actor) for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i] && players[i].mo && players[i].mo->health > 0 && players[i].playerstate == PST_LIVE - && !players[i].exiting && !players[i].powers[pw_super]) + && !players[i].exiting) { if ((netgame || multiplayer) && players[i].spectator) // Ignore spectators continue; @@ -5877,8 +5709,8 @@ void A_MixUp(mobj_t *actor) players[two].speed = transspeed; //set flags variables now but DON'T set them. - carry1 = players[one].powers[pw_carry]; - carry2 = players[two].powers[pw_carry]; + carry1 = players[one].ktemp_carry; + carry2 = players[two].ktemp_carry; x = players[one].mo->x; y = players[one].mo->y; @@ -5904,8 +5736,8 @@ void A_MixUp(mobj_t *actor) //carry set after mixup. Stupid P_ResetPlayer() takes away some of the stuff we look for... //but not all of it! So we need to make sure they aren't set wrong or anything. - players[one].powers[pw_carry] = carry2; - players[two].powers[pw_carry] = carry1; + players[one].ktemp_carry = carry2; + players[two].ktemp_carry = carry1; teleported[one] = true; teleported[two] = true; @@ -5952,7 +5784,7 @@ void A_MixUp(mobj_t *actor) players[i].rmomx = players[i].rmomy = 1; players[i].cmomx = players[i].cmomy = 0; - transcarry[counter] = players[i].powers[pw_carry]; + transcarry[counter] = players[i].ktemp_carry; transspeed[counter] = players[i].speed; transtracer[counter] = players[i].mo->tracer; @@ -6003,7 +5835,7 @@ void A_MixUp(mobj_t *actor) FRACUNIT, anglepos[teleportfrom][1], flags2[teleportfrom]); //...carry after. same reasoning. - players[i].powers[pw_carry] = transcarry[teleportfrom]; + players[i].ktemp_carry = transcarry[teleportfrom]; teleported[i] = true; counter++; @@ -6555,7 +6387,7 @@ void A_Boss2PogoTarget(mobj_t *actor) if (LUA_CallAction(A_BOSS2POGOTARGET, actor)) return; - if (!actor->target || !(actor->target->flags & MF_SHOOTABLE) || (actor->target->player && actor->target->player->powers[pw_flashing]) + if (!actor->target || !(actor->target->flags & MF_SHOOTABLE) || (actor->target->player && actor->target->player->ktemp_flashing) || P_AproxDistance(actor->x-actor->target->x, actor->y-actor->target->y) >= FixedMul(512*FRACUNIT, actor->scale)) { // look for a new target @@ -6568,7 +6400,7 @@ void A_Boss2PogoTarget(mobj_t *actor) } // Target hit, retreat! - if ((actor->target->player && actor->target->player->powers[pw_flashing] > TICRATE) || actor->flags2 & MF2_FRET) + if ((actor->target->player && actor->target->player->ktemp_flashing > TICRATE) || actor->flags2 & MF2_FRET) { UINT8 prandom = P_RandomByte(); actor->z++; // unstick from the floor @@ -6759,8 +6591,7 @@ void A_SparkFollow(mobj_t *actor) if (LUA_CallAction(A_SPARKFOLLOW, actor)) return; - if ((!actor->target || (actor->target->health <= 0)) - || (actor->target->player && !actor->target->player->powers[pw_super])) + if (!actor->target || (actor->target->health <= 0)) { P_RemoveMobj(actor); return; @@ -7697,7 +7528,7 @@ void A_FindTarget(mobj_t *actor) if (mo2->type == (mobjtype_t)locvar1) { - if (mo2->player && (mo2->player->spectator || mo2->player->pflags & PF_INVIS)) + if (mo2->player && mo2->player->spectator) continue; // Ignore spectators if ((mo2->player || mo2->flags & MF_ENEMY) && mo2->health <= 0) continue; // Ignore dead things @@ -7761,7 +7592,7 @@ void A_FindTracer(mobj_t *actor) if (mo2->type == (mobjtype_t)locvar1) { - if (mo2->player && (mo2->player->spectator || mo2->player->pflags & PF_INVIS)) + if (mo2->player && mo2->player->spectator) continue; // Ignore spectators if ((mo2->player || mo2->flags & MF_ENEMY) && mo2->health <= 0) continue; // Ignore dead things @@ -7903,7 +7734,7 @@ void A_Dye(mobj_t *actor) // What if it's a player? if (target->player) - target->player->powers[pw_dye] = color; + target->player->ktemp_dye = color; if (!color) { @@ -9599,7 +9430,7 @@ void A_ForceWin(mobj_t *actor) for (i = 0; i < MAXPLAYERS; i++) { if (playeringame[i] && ((players[i].mo && players[i].mo->health) - || ((netgame || multiplayer) && (players[i].lives || players[i].continues)))) + || ((netgame || multiplayer) && players[i].lives))) break; } @@ -11790,7 +11621,7 @@ void A_Boss5FindWaypoint(mobj_t *actor) continue; if (players[i].mo->health <= 0) continue; - if (players[i].powers[pw_flashing]) + if (players[i].ktemp_flashing) continue; if (actor->tracer == players[i].mo) // this was your tracer last time continue; @@ -11849,7 +11680,7 @@ void A_Boss5FindWaypoint(mobj_t *actor) continue; if (players[i].mo->health <= 0) continue; - if (players[i].powers[pw_flashing]) + if (players[i].ktemp_flashing) continue; if (actor->tracer == players[i].mo) // this was your tracer last time continue; @@ -13474,7 +13305,7 @@ void A_ItemPop(mobj_t *actor) S_StartSound(remains, actor->info->deathsound); if (!((gametyperules & GTR_BUMPERS) && actor->target->player->bumpers <= 0)) - actor->target->player->kartstuff[k_itemroulette] = 1; + actor->target->player->ktemp_itemroulette = 1; remains->flags2 &= ~MF2_AMBUSH; @@ -13797,9 +13628,9 @@ void A_SPBChase(mobj_t *actor) if (players[i].respawn.state != RESPAWNST_NONE) continue;*/ // respawning - if (players[i].kartstuff[k_position] < bestrank) + if (players[i].ktemp_position < bestrank) { - bestrank = players[i].kartstuff[k_position]; + bestrank = players[i].ktemp_position; player = &players[i]; } } @@ -13832,7 +13663,7 @@ void A_SPBChase(mobj_t *actor) fixed_t easiness = ((actor->tracer->player->kartspeed + (10-spark)) << FRACBITS) / 2; actor->lastlook = actor->tracer->player-players; // Save the player num for death scumming... - actor->tracer->player->kartstuff[k_ringlock] = 1; // set ring lock + actor->tracer->player->pflags |= PF_RINGLOCK; // set ring lock if (!P_IsObjectOnGround(actor->tracer)) { @@ -13850,12 +13681,12 @@ void A_SPBChase(mobj_t *actor) cy = actor->tracer->player->cmomy; // Switch targets if you're no longer 1st for long enough - if (actor->tracer->player->kartstuff[k_position] <= bestrank) + if (actor->tracer->player->ktemp_position <= bestrank) actor->extravalue2 = 7*TICRATE; else if (actor->extravalue2-- <= 0) actor->extravalue1 = 0; // back to SEEKING - spbplace = actor->tracer->player->kartstuff[k_position]; + spbplace = actor->tracer->player->ktemp_position; } dist = P_AproxDistance(P_AproxDistance(actor->x-actor->tracer->x, actor->y-actor->tracer->y), actor->z-actor->tracer->z); @@ -13867,7 +13698,7 @@ void A_SPBChase(mobj_t *actor) wspeed = (3*defspeed)/2; if (wspeed < 20*actor->tracer->scale) wspeed = 20*actor->tracer->scale; - if (actor->tracer->player->pflags & PF_SLIDING) + if (actor->tracer->player->ktemp_carry == CR_SLIDING) wspeed = actor->tracer->player->speed/2; // ^^^^ current section: These are annoying, and grand metropolis in particular needs this. @@ -13945,8 +13776,8 @@ void A_SPBChase(mobj_t *actor) && !players[actor->lastlook].spectator && !players[actor->lastlook].exiting) { - spbplace = players[actor->lastlook].kartstuff[k_position]; - players[actor->lastlook].kartstuff[k_ringlock] = 1; + spbplace = players[actor->lastlook].ktemp_position; + players[actor->lastlook].pflags |= PF_RINGLOCK; if (actor->extravalue2-- <= 0 && players[actor->lastlook].mo) { P_SetTarget(&actor->tracer, players[actor->lastlook].mo); @@ -14175,7 +14006,7 @@ static inline boolean PIT_SSMineSearch(mobj_t *thing) if (thing == grenade->target && grenade->threshold != 0) // Don't blow up at your owner. return true; - if (thing->player && (thing->player->kartstuff[k_hyudorotimer] + if (thing->player && (thing->player->ktemp_hyudorotimer || ((gametyperules & GTR_BUMPERS) && thing->player && thing->player->bumpers <= 0 && thing->player->karmadelay))) return true; @@ -14417,10 +14248,10 @@ void A_RandomShadowFrame(mobj_t *actor) // I have NO CLUE how to hardcode all of that fancy Linedef Executor shit so the fire spinout will be done by these entities directly. if (P_LookForPlayers(actor, false, false, 380<target && !actor->target->player->powers[pw_flashing] - && !actor->target->player->kartstuff[k_invincibilitytimer] - && !actor->target->player->kartstuff[k_growshrinktimer] - && !actor->target->player->kartstuff[k_spinouttimer] + if (actor->target && !actor->target->player->ktemp_flashing + && !actor->target->player->ktemp_invincibilitytimer + && !actor->target->player->ktemp_growshrinktimer + && !actor->target->player->ktemp_spinouttimer && P_IsObjectOnGround(actor->target) && actor->z == actor->target->z) { @@ -14462,10 +14293,10 @@ void A_RoamingShadowThinker(mobj_t *actor) if (P_LookForPlayers(actor, false, false, 256<target && !actor->target->player->powers[pw_flashing] - && !actor->target->player->kartstuff[k_invincibilitytimer] - && !actor->target->player->kartstuff[k_growshrinktimer] - && !actor->target->player->kartstuff[k_spinouttimer]) + if (actor->target && !actor->target->player->ktemp_flashing + && !actor->target->player->ktemp_invincibilitytimer + && !actor->target->player->ktemp_growshrinktimer + && !actor->target->player->ktemp_spinouttimer) { // send them flying and spawn the WIND! P_InstaThrust(actor->target, 0, 0); @@ -14703,10 +14534,10 @@ void A_ReaperThinker(mobj_t *actor) { if (P_LookForPlayers(actor, false, false, 1024<target == targetplayermo && actor->target && !actor->target->player->powers[pw_flashing] - && !actor->target->player->kartstuff[k_invincibilitytimer] - && !actor->target->player->kartstuff[k_growshrinktimer] - && !actor->target->player->kartstuff[k_spinouttimer])) + if (!(actor->target == targetplayermo && actor->target && !actor->target->player->ktemp_flashing + && !actor->target->player->ktemp_invincibilitytimer + && !actor->target->player->ktemp_growshrinktimer + && !actor->target->player->ktemp_spinouttimer)) P_SetTarget(&actor->target, actor->hnext); // if the above isn't correct, then we should go back to targetting waypoints or something. } diff --git a/src/p_floor.c b/src/p_floor.c index a427eabb0..bc9c7b441 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -1555,7 +1555,7 @@ void T_RaiseSector(raise_t *raise) continue; // Option to require spindashing. - if (raise->flags & RF_SPINDASH && !(thing->player->pflags & PF_STARTDASH)) + if ((raise->flags & RF_SPINDASH) && !thing->player->ktemp_spindash) continue; if (!(thing->z == P_GetSpecialTopZ(thing, raise->sector, sector))) diff --git a/src/p_inter.c b/src/p_inter.c index 5077ef366..c37e4f848 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -108,7 +108,7 @@ void P_RampConstant(const BasicFF_t *FFInfo, INT32 Start, INT32 End) // boolean P_CanPickupItem(player_t *player, UINT8 weapon) { - if (player->exiting || mapreset || player->eliminated) + if (player->exiting || mapreset || (player->pflags & PF_ELIMINATED)) return false; #ifndef OTHERKARMAMODES @@ -122,29 +122,29 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon) if (weapon == 2) { // Invulnerable - if (player->powers[pw_flashing] > 0) + if (player->ktemp_flashing > 0) return false; // Already have fake - if (player->kartstuff[k_roulettetype] == 2 - || player->kartstuff[k_eggmanexplode]) + if (player->ktemp_roulettetype == 2 + || player->ktemp_eggmanexplode) return false; } else { // Item-specific timer going off - if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer] - || player->kartstuff[k_rocketsneakertimer] - || player->kartstuff[k_eggmanexplode]) + if (player->ktemp_stealingtimer + || player->ktemp_rocketsneakertimer + || player->ktemp_eggmanexplode) return false; // Item slot already taken up - if (player->kartstuff[k_itemroulette] - || (weapon != 3 && player->kartstuff[k_itemamount]) - || player->kartstuff[k_itemheld]) + if (player->ktemp_itemroulette + || (weapon != 3 && player->ktemp_itemamount) + || (player->pflags & PF_ITEMOUT)) return false; - if (weapon == 3 && K_GetShieldFromItem(player->kartstuff[k_itemtype]) != KSHIELD_NONE) + if (weapon == 3 && K_GetShieldFromItem(player->ktemp_itemtype) != KSHIELD_NONE) return false; // No stacking shields! } } @@ -243,16 +243,17 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) P_InstaThrust(player->mo, player->mo->angle, 20<kartstuff[k_itemamount] && player->kartstuff[k_itemtype] != special->threshold)) + if (!P_CanPickupItem(player, 3) || (player->ktemp_itemamount && player->ktemp_itemtype != special->threshold)) return; if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0) return; - player->kartstuff[k_itemtype] = special->threshold; - player->kartstuff[k_itemamount] += special->movecount; - if (player->kartstuff[k_itemamount] > 255) - player->kartstuff[k_itemamount] = 255; + player->ktemp_itemtype = special->threshold; + if ((UINT16)(player->ktemp_itemamount) + special->movecount > 255) + player->ktemp_itemamount = 255; + else + player->ktemp_itemamount += special->movecount; S_StartSound(special, special->info->deathsound); @@ -269,13 +270,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0) { -#ifdef OTHERKARMAMODES - if (player->kartstuff[k_comebackmode] || player->karmadelay) - return; - player->kartstuff[k_comebackmode] = 1; -#else return; -#endif } special->momx = special->momy = special->momz = 0; @@ -298,113 +293,30 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->target->player->karmadelay > 0) return; -#ifdef OTHERKARMAMODES - if (!special->target->player->kartstuff[k_comebackmode]) { -#endif + mobj_t *boom; + + if (P_DamageMobj(toucher, special, special->target, 1, DMG_KARMA) == false) { - mobj_t *boom; - - if (P_DamageMobj(toucher, special, special->target, 1, DMG_KARMA) == false) - { - return; - } - - boom = P_SpawnMobj(special->target->x, special->target->y, special->target->z, MT_BOOMEXPLODE); - - boom->scale = special->target->scale; - boom->destscale = special->target->scale; - boom->momz = 5*FRACUNIT; - - if (special->target->color) - boom->color = special->target->color; - else - boom->color = SKINCOLOR_KETCHUP; - - S_StartSound(boom, special->info->attacksound); - - special->target->player->karthud[khud_yougotem] = 2*TICRATE; - special->target->player->karmadelay = comebacktime; - } -#ifdef OTHERKARMAMODES - } - else if (special->target->player->kartstuff[k_comebackmode] == 1 && P_CanPickupItem(player, 1)) - { - mobj_t *poof = P_SpawnMobj(special->x, special->y, special->z, MT_EXPLODE); - S_StartSound(poof, special->info->seesound); - - // Karma fireworks - for (i = 0; i < 5; i++) - { - mobj_t *firework = P_SpawnMobj(special->x, special->y, special->z, MT_KARMAFIREWORK); - firework->momx = (special->target->momx + toucher->momx) / 2; - firework->momy = (special->target->momy + toucher->momy) / 2; - firework->momz = (special->target->momz + toucher->momz) / 2; - P_Thrust(firework, FixedAngle((72*i)<scale); - P_SetObjectMomZ(firework, P_RandomRange(1,8)*special->scale, false); - firework->color = special->target->color; + return; } - special->target->player->kartstuff[k_comebackmode] = 0; - special->target->player->kartstuff[k_comebackpoints]++; + boom = P_SpawnMobj(special->target->x, special->target->y, special->target->z, MT_BOOMEXPLODE); - if (special->target->player->kartstuff[k_comebackpoints] >= 2) - K_StealBumper(special->target->player, player, 1); - special->target->player->karmadelay = comebacktime; + boom->scale = special->target->scale; + boom->destscale = special->target->scale; + boom->momz = 5*FRACUNIT; - player->kartstuff[k_itemroulette] = 1; - player->kartstuff[k_roulettetype] = 1; - } - else if (special->target->player->kartstuff[k_comebackmode] == 2 && P_CanPickupItem(player, 2)) - { - mobj_t *poof = P_SpawnMobj(special->x, special->y, special->z, MT_EXPLODE); - UINT8 ptadd = 1; // No WANTED bonus for tricking - - S_StartSound(poof, special->info->seesound); - - if (player->bumpers == 1) // If you have only one bumper left, and see if it's a 1v1 - { - INT32 numingame = 0; - - for (i = 0; i < MAXPLAYERS; i++) - { - if (!playeringame[i] || players[i].spectator || players[i].bumpers <= 0) - continue; - numingame++; - } - - if (numingame <= 2) // If so, then an extra karma point so they are 100% certain to switch places; it's annoying to end matches with a fake kill - ptadd++; - } - - special->target->player->kartstuff[k_comebackmode] = 0; - special->target->player->kartstuff[k_comebackpoints] += ptadd; - - if (ptadd > 1) - special->target->player->karthud[khud_yougotem] = 2*TICRATE; - - if (special->target->player->kartstuff[k_comebackpoints] >= 2) - K_StealBumper(special->target->player, player, 1); - - special->target->player->karmadelay = comebacktime; - - K_DropItems(player); //K_StripItems(player); - //K_StripOther(player); - - player->kartstuff[k_itemroulette] = 1; - player->kartstuff[k_roulettetype] = 2; - - if (special->target->player->kartstuff[k_eggmanblame] >= 0 - && special->target->player->kartstuff[k_eggmanblame] < MAXPLAYERS - && playeringame[special->target->player->kartstuff[k_eggmanblame]] - && !players[special->target->player->kartstuff[k_eggmanblame]].spectator) - player->kartstuff[k_eggmanblame] = special->target->player->kartstuff[k_eggmanblame]; + if (special->target->color) + boom->color = special->target->color; else - player->kartstuff[k_eggmanblame] = -1; + boom->color = SKINCOLOR_KETCHUP; - special->target->player->kartstuff[k_eggmanblame] = -1; + S_StartSound(boom, special->info->attacksound); + + special->target->player->karthud[khud_yougotem] = 2*TICRATE; + special->target->player->karmadelay = comebacktime; } -#endif return; case MT_SPB: if ((special->target == toucher || special->target == toucher->target) && (special->threshold > 0)) @@ -420,7 +332,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) { mobj_t *spbexplode; - if (player->kartstuff[k_bubbleblowup] > 0) + if (player->ktemp_bubbleblowup > 0) { K_DropHnextList(player, false); special->extravalue1 = 2; // WAIT... @@ -452,7 +364,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (toucher->hitlag > 0) return; - player->powers[pw_emeralds] |= special->extravalue1; + player->ktemp_emeralds |= special->extravalue1; K_CheckEmeralds(player); break; /* @@ -472,16 +384,16 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; // kill - if (player->kartstuff[k_invincibilitytimer] > 0 - || player->kartstuff[k_growshrinktimer] > 0 - || player->kartstuff[k_flamedash] > 0) + if (player->ktemp_invincibilitytimer > 0 + || player->ktemp_growshrinktimer > 0 + || player->ktemp_flamedash > 0) { P_KillMobj(special, toucher, toucher, DMG_NORMAL); return; } // no interaction - if (player->powers[pw_flashing] > 0 || player->kartstuff[k_hyudorotimer] > 0 || P_PlayerInPain(player)) + if (player->ktemp_flashing > 0 || player->ktemp_hyudorotimer > 0 || P_PlayerInPain(player)) return; // attach to player! @@ -492,8 +404,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)) return; - player->kartstuff[k_itemroulette] = 1; - player->kartstuff[k_roulettetype] = 1; + player->ktemp_itemroulette = 1; + player->ktemp_roulettetype = 1; // Karma fireworks for (i = 0; i < 5; i++) @@ -545,7 +457,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; // No picking up rings while SPB is targetting you - if (player->kartstuff[k_ringlock]) + if (player->pflags & PF_RINGLOCK) return; // Don't immediately pick up spilled rings @@ -564,7 +476,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) special->extravalue1 = 1; // Ring collect animation timer special->angle = R_PointToAngle2(toucher->x, toucher->y, special->x, special->y); // animation angle P_SetTarget(&special->target, toucher); // toucher for thinker - player->kartstuff[k_pickuprings]++; + player->ktemp_pickuprings++; return; @@ -599,70 +511,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) // CTF Flags case MT_REDFLAG: case MT_BLUEFLAG: - if (player->powers[pw_flashing] || player->tossdelay) - return; - if (!special->spawnpoint) - return; - if (special->fuse == 1) - return; -// if (special->momz > 0) -// return; - { - UINT8 flagteam = (special->type == MT_REDFLAG) ? 1 : 2; - const char *flagtext; - char flagcolor; - char plname[MAXPLAYERNAME+4]; - - if (special->type == MT_REDFLAG) - { - flagtext = M_GetText("Red flag"); - flagcolor = '\x85'; - } - else - { - flagtext = M_GetText("Blue flag"); - flagcolor = '\x84'; - } - snprintf(plname, sizeof(plname), "%s%s%s", - CTFTEAMCODE(player), - player_names[player - players], - CTFTEAMENDCODE(player)); - - if (player->ctfteam == flagteam) // Player is on the same team as the flag - { - // Ignore height, only check x/y for now - // avoids stupid problems with some flags constantly returning - if (special->x>>FRACBITS != special->spawnpoint->x - || special->y>>FRACBITS != special->spawnpoint->y) - { - special->fuse = 1; - special->flags2 |= MF2_JUSTATTACKED; - - if (!P_MobjTouchingSectorSpecial(player->mo, 4, 2 + flagteam, false)) - { - CONS_Printf(M_GetText("%s returned the %c%s%c to base.\n"), plname, flagcolor, flagtext, 0x80); - - // The fuse code plays this sound effect - //if (players[consoleplayer].ctfteam == player->ctfteam) - // S_StartSound(NULL, sfx_hoop1); - } - } - } - else if (player->ctfteam) // Player is on the other team (and not a spectator) - { - UINT16 flagflag = (special->type == MT_REDFLAG) ? GF_REDFLAG : GF_BLUEFLAG; - mobj_t **flagmobj = (special->type == MT_REDFLAG) ? &redflag : &blueflag; - - if (player->powers[pw_super]) - return; - - player->gotflag |= flagflag; - CONS_Printf(M_GetText("%s picked up the %c%s%c!\n"), plname, flagcolor, flagtext, 0x80); - (*flagmobj) = NULL; - // code for dealing with abilities is handled elsewhere now - break; - } - } return; case MT_STARPOST: @@ -721,10 +569,9 @@ void P_TouchStarPost(mobj_t *post, player_t *player, boolean snaptopost) // Player must have touched all previous starposts if (post->health - player->starpostnum > 1) { - // blatant reuse of a variable that's normally unused in circuit - if (!player->tossdelay) + if (!player->checkskip) S_StartSound(toucher, sfx_lose); - player->tossdelay = 3; + player->checkskip = 3; return; } @@ -883,7 +730,7 @@ void P_CheckPointLimit(void) if (!playeringame[i] || players[i].spectator) continue; - if ((UINT32)cv_pointlimit.value <= players[i].marescore) + if ((UINT32)cv_pointlimit.value <= players[i].roundscore) { for (i = 0; i < MAXPLAYERS; i++) // AAAAA nested loop using the same iteration variable ;; { @@ -929,7 +776,7 @@ boolean P_CheckRacers(void) numplayersingame++; - if (players[i].exiting || (players[i].pflags & PF_GAMETYPEOVER)) + if (players[i].exiting || (players[i].pflags & PF_NOCONTEST)) { numexiting++; } @@ -989,7 +836,7 @@ boolean P_CheckRacers(void) continue; } - if (players[i].exiting || (players[i].pflags & PF_GAMETYPEOVER)) + if (players[i].exiting || (players[i].pflags & PF_NOCONTEST)) { // You're done, you're free to go. continue; @@ -1101,39 +948,37 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget // I wish I knew a better way to do this if (target->target && target->target->player && target->target->player->mo) { - if (target->target->player->kartstuff[k_eggmanheld] && target->type == MT_EGGMANITEM_SHIELD) - target->target->player->kartstuff[k_eggmanheld] = 0; + if ((target->target->player->pflags & PF_EGGMANOUT) && target->type == MT_EGGMANITEM_SHIELD) + target->target->player->pflags &= ~PF_EGGMANOUT; - if (target->target->player->kartstuff[k_itemheld]) + if (target->target->player->pflags & PF_ITEMOUT) { - if ((target->type == MT_BANANA_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA) // trail items - || (target->type == MT_SSMINE_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_MINE) - || (target->type == MT_SINK_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_KITCHENSINK)) + if ((target->type == MT_BANANA_SHIELD && target->target->player->ktemp_itemtype == KITEM_BANANA) // trail items + || (target->type == MT_SSMINE_SHIELD && target->target->player->ktemp_itemtype == KITEM_MINE) + || (target->type == MT_SINK_SHIELD && target->target->player->ktemp_itemtype == KITEM_KITCHENSINK)) { - if (target->movedir != 0 && target->movedir < (UINT16)target->target->player->kartstuff[k_itemamount]) + if (target->movedir != 0 && target->movedir < (UINT16)target->target->player->ktemp_itemamount) { if (target->target->hnext) K_KillBananaChain(target->target->hnext, inflictor, source); - target->target->player->kartstuff[k_itemamount] = 0; + target->target->player->ktemp_itemamount = 0; } - else - target->target->player->kartstuff[k_itemamount]--; + else if (target->target->player->ktemp_itemamount) + target->target->player->ktemp_itemamount--; } - else if ((target->type == MT_ORBINAUT_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT) // orbit items - || (target->type == MT_JAWZ_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_JAWZ)) + else if ((target->type == MT_ORBINAUT_SHIELD && target->target->player->ktemp_itemtype == KITEM_ORBINAUT) // orbit items + || (target->type == MT_JAWZ_SHIELD && target->target->player->ktemp_itemtype == KITEM_JAWZ)) { - target->target->player->kartstuff[k_itemamount]--; + if (target->target->player->ktemp_itemamount) + target->target->player->ktemp_itemamount--; if (target->lastlook != 0) { K_RepairOrbitChain(target); } } - if (target->target->player->kartstuff[k_itemamount] < 0) - target->target->player->kartstuff[k_itemamount] = 0; - - if (!target->target->player->kartstuff[k_itemamount]) - target->target->player->kartstuff[k_itemheld] = 0; + if (!target->target->player->ktemp_itemamount) + target->target->player->pflags &= ~PF_ITEMOUT; if (target->target->hnext == target) P_SetTarget(&target->target->hnext, NULL); @@ -1158,7 +1003,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget UINT8 i; P_SetTarget(&target->target, source); - source->player->numboxes++; for (i = 0; i < MAXPLAYERS; i++) { @@ -1763,11 +1607,10 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, break; } - K_DropEmeraldsFromPlayer(player, player->powers[pw_emeralds]); + K_DropEmeraldsFromPlayer(player, player->ktemp_emeralds); K_SetHitLagForObjects(player->mo, inflictor, 15); - player->pflags &= ~PF_SLIDING; - player->powers[pw_carry] = CR_NONE; + player->ktemp_carry = CR_NONE; player->mo->color = player->skincolor; player->mo->colorized = false; @@ -1797,7 +1640,7 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, } K_DestroyBumpers(player, player->bumpers); - player->eliminated = true; + player->pflags |= PF_ELIMINATED; } return true; @@ -1922,7 +1765,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da { if (gametyperules & GTR_BUMPERS) { - if ((player->bumpers <= 0 && player->karmadelay) || (player->kartstuff[k_comebackmode] == 1)) + if (player->bumpers <= 0 && player->karmadelay) { // No bumpers & in WAIT, can't be hurt K_DoInstashield(player); @@ -1939,7 +1782,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } } - if (player->kartstuff[k_invincibilitytimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_hyudorotimer] > 0) + if (player->ktemp_invincibilitytimer > 0 || player->ktemp_growshrinktimer > 0 || player->ktemp_hyudorotimer > 0) { // Full invulnerability K_DoInstashield(player); @@ -1948,7 +1791,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (combo == false) { - if (player->powers[pw_flashing] > 0) + if (player->ktemp_flashing > 0) { // Post-hit invincibility K_DoInstashield(player); @@ -1983,11 +1826,11 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (source && source != player->mo && source->player) { // Extend the invincibility if the hit was a direct hit. - if (inflictor == source && source->player->kartstuff[k_invincibilitytimer]) + if (inflictor == source && source->player->ktemp_invincibilitytimer) { - kinvextend = (source->player->kartstuff[k_invincibilitytimer])+5*TICRATE; - //CONS_Printf("extend k_invincibilitytimer for %s - old value %d new value %d\n", player_names[source->player - players], source->player->kartstuff[k_invincibilitytimer]/TICRATE, kinvextend/TICRATE); - source->player->kartstuff[k_invincibilitytimer] = kinvextend; + kinvextend = (source->player->ktemp_invincibilitytimer)+5*TICRATE; + //CONS_Printf("extend k_invincibilitytimer for %s - old value %d new value %d\n", player_names[source->player - players], source->player->ktemp_invincibilitytimer/TICRATE, kinvextend/TICRATE); + source->player->ktemp_invincibilitytimer = kinvextend; } K_PlayHitEmSound(source); @@ -2004,8 +1847,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (damagetype & DMG_STEAL) { // Give them ALL of your emeralds instantly :) - source->player->powers[pw_emeralds] |= player->powers[pw_emeralds]; - player->powers[pw_emeralds] = 0; + source->player->ktemp_emeralds |= player->ktemp_emeralds; + player->ktemp_emeralds = 0; K_CheckEmeralds(source->player); } } @@ -2017,13 +1860,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (!(damagetype & DMG_STEAL)) { // Drop all of your emeralds - K_DropEmeraldsFromPlayer(player, player->powers[pw_emeralds]); + K_DropEmeraldsFromPlayer(player, player->ktemp_emeralds); } } - player->kartstuff[k_sneakertimer] = player->kartstuff[k_numsneakers] = 0; - player->kartstuff[k_driftboost] = 0; - player->kartstuff[k_ringboost] = 0; + player->ktemp_sneakertimer = player->ktemp_numsneakers = 0; + player->ktemp_driftboost = 0; + player->ktemp_ringboost = 0; switch (type) { @@ -2054,7 +1897,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (type != DMG_STING) { - player->powers[pw_flashing] = K_GetKartFlashing(player); + player->ktemp_flashing = K_GetKartFlashing(player); } P_PlayRinglossSound(player->mo); @@ -2075,7 +1918,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da K_DropHnextList(player, false); } - player->kartstuff[k_instashield] = 15; + player->ktemp_instashield = 15; K_SetHitLagForObjects(target, inflictor, laglength); return true; } @@ -2193,7 +2036,7 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) return; // Have a shield? You get hit, but don't lose your rings! - if (K_GetShieldFromItem(player->kartstuff[k_itemtype]) != KSHIELD_NONE) + if (K_GetShieldFromItem(player->ktemp_itemtype) != KSHIELD_NONE) return; // 20 is the maximum number of rings that can be taken from you at once - half the span of your counter diff --git a/src/p_local.h b/src/p_local.h index 7c71c7ebf..a143ba9ab 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -169,8 +169,6 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff); void P_SetObjectMomZ(mobj_t *mo, fixed_t value, boolean relative); void P_RestoreMusic(player_t *player); boolean P_EndingMusic(player_t *player); -void P_SpawnShieldOrb(player_t *player); -void P_SwitchShield(player_t *player, UINT16 shieldtype); mobj_t *P_SpawnGhostMobj(mobj_t *mobj); INT32 P_GivePlayerRings(player_t *player, INT32 num_rings); void P_GivePlayerSpheres(player_t *player, INT32 num_spheres); @@ -178,11 +176,6 @@ void P_GivePlayerLives(player_t *player, INT32 numlives); UINT8 P_GetNextEmerald(void); void P_GiveEmerald(boolean spawnObj); void P_GiveFinishFlags(player_t *player); -#if 0 -void P_ResetScore(player_t *player); -#else -#define P_ResetScore(player) player->scoreadd = 0 -#endif boolean P_AutoPause(void); void P_ElementalFire(player_t *player, boolean cropcircle); @@ -287,7 +280,6 @@ boolean P_MobjWasRemoved(mobj_t *th); void P_RemoveSavegameMobj(mobj_t *th); boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state); boolean P_SetMobjState(mobj_t *mobj, statenum_t state); -void P_RunShields(void); void P_RunOverlays(void); void P_HandleMinecartSegments(mobj_t *mobj); void P_MobjThinker(mobj_t *mobj); diff --git a/src/p_map.c b/src/p_map.c index ab4f13b82..c780cafaa 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -350,7 +350,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) // Less friction when hitting horizontal springs if (!vertispeed) { - if (!object->player->kartstuff[k_tiregrease]) + if (!object->player->ktemp_tiregrease) { UINT8 i; for (i = 0; i < 2; i++) @@ -363,7 +363,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) } } - object->player->kartstuff[k_tiregrease] = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS + object->player->ktemp_tiregrease = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS } } @@ -387,8 +387,8 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) P_ResetPlayer(object->player); - object->player->kartstuff[k_springstars] = max(vertispeed, horizspeed) / FRACUNIT / 2; - object->player->kartstuff[k_springcolor] = starcolor; + object->player->ktemp_springstars = max(vertispeed, horizspeed) / FRACUNIT / 2; + object->player->ktemp_springcolor = starcolor; } return true; @@ -427,8 +427,6 @@ static void P_DoFanAndGasJet(mobj_t *spring, mobj_t *object) break; if (flipval*object->momz >= FixedMul(speed, spring->scale)) // if object's already moving faster than your best, don't bother break; - if (p && (p->climbing || p->pflags & PF_GLIDING)) // doesn't affect Knux when he's using his abilities! - break; object->momz += flipval*FixedMul(speed/4, spring->scale); @@ -450,7 +448,7 @@ static void P_DoFanAndGasJet(mobj_t *spring, mobj_t *object) if (object->player) { object->player->trickpanel = 1; - object->player->trickdelay = 1; + object->player->pflags |= PF_TRICKDELAY; } K_DoPogoSpring(object, 32<type == MT_BUBBLESHIELD && thing->target->player && thing->target->player->kartstuff[k_bubbleblowup]) - || (thing->player && thing->player->kartstuff[k_bubbleblowup])) + if (((thing->type == MT_BUBBLESHIELD && thing->target->player && thing->target->player->ktemp_bubbleblowup) + || (thing->player && thing->player->ktemp_bubbleblowup)) && (tmthing->type == MT_ORBINAUT || tmthing->type == MT_JAWZ || tmthing->type == MT_JAWZ_DUD || tmthing->type == MT_BANANA || tmthing->type == MT_EGGMANITEM || tmthing->type == MT_BALLHOG || tmthing->type == MT_SSMINE || tmthing->type == MT_LANDMINE || tmthing->type == MT_SINK @@ -724,8 +722,8 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetTarget(&tmthing, oldtmthing);*/ if (P_PlayerInPain(tmthing->player) - || tmthing->player->powers[pw_flashing] || tmthing->player->kartstuff[k_hyudorotimer] - || tmthing->player->kartstuff[k_justbumped] || tmthing->scale > thing->scale + (mapobjectscale/8)) + || tmthing->player->ktemp_flashing || tmthing->player->ktemp_hyudorotimer + || tmthing->player->ktemp_justbumped || tmthing->scale > thing->scale + (mapobjectscale/8)) return true; // Player Damage @@ -757,8 +755,8 @@ static boolean PIT_CheckThing(mobj_t *thing) // no interaction return true; } - else if (((tmthing->type == MT_BUBBLESHIELD && tmthing->target->player && tmthing->target->player->kartstuff[k_bubbleblowup]) - || (tmthing->player && tmthing->player->kartstuff[k_bubbleblowup])) + else if (((tmthing->type == MT_BUBBLESHIELD && tmthing->target->player && tmthing->target->player->ktemp_bubbleblowup) + || (tmthing->player && tmthing->player->ktemp_bubbleblowup)) && (thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD || thing->type == MT_BANANA || thing->type == MT_EGGMANITEM || thing->type == MT_BALLHOG || thing->type == MT_SSMINE || tmthing->type == MT_LANDMINE || thing->type == MT_SINK @@ -782,8 +780,8 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetTarget(&tmthing, oldtmthing);*/ if (P_PlayerInPain(thing->player) - || thing->player->powers[pw_flashing] || thing->player->kartstuff[k_hyudorotimer] - || thing->player->kartstuff[k_justbumped] || thing->scale > tmthing->scale + (mapobjectscale/8)) + || thing->player->ktemp_flashing || thing->player->ktemp_hyudorotimer + || thing->player->ktemp_justbumped || thing->scale > tmthing->scale + (mapobjectscale/8)) return true; // Player Damage @@ -1237,7 +1235,7 @@ static boolean PIT_CheckThing(mobj_t *thing) if (tmthing->z + tmthing->height < thing->z) return true; // underneath - if (thing->player->kartstuff[k_hyudorotimer] || tmthing->player->kartstuff[k_hyudorotimer]) + if (thing->player->ktemp_hyudorotimer || tmthing->player->ktemp_hyudorotimer) { return true; } @@ -1291,8 +1289,8 @@ static boolean PIT_CheckThing(mobj_t *thing) if (!thing->health) return true; // dead - if (tmthing->player->kartstuff[k_invincibilitytimer] > 0 - || tmthing->player->kartstuff[k_growshrinktimer] > 0) + if (tmthing->player->ktemp_invincibilitytimer > 0 + || tmthing->player->ktemp_growshrinktimer > 0) { if (thing->type == MT_BLUEROBRA_JOINT) P_KillMobj(thing->target, tmthing, tmthing, DMG_NORMAL); @@ -1317,8 +1315,8 @@ static boolean PIT_CheckThing(mobj_t *thing) if (!thing->health) return true; // dead - if (tmthing->player->kartstuff[k_invincibilitytimer] > 0 - || tmthing->player->kartstuff[k_growshrinktimer] > 0) + if (tmthing->player->ktemp_invincibilitytimer > 0 + || tmthing->player->ktemp_growshrinktimer > 0) { P_KillMobj(thing, tmthing, tmthing, DMG_NORMAL); return true; // kill @@ -1348,15 +1346,15 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; // underneath // kill - if (tmthing->player->kartstuff[k_invincibilitytimer] > 0 - || tmthing->player->kartstuff[k_growshrinktimer] > 0) + if (tmthing->player->ktemp_invincibilitytimer > 0 + || tmthing->player->ktemp_growshrinktimer > 0) { P_KillMobj(thing, tmthing, tmthing, DMG_NORMAL); return true; } // no interaction - if (tmthing->player->powers[pw_flashing] > 0 || tmthing->player->kartstuff[k_hyudorotimer] > 0 || tmthing->player->kartstuff[k_spinouttimer] > 0) + if (tmthing->player->ktemp_flashing > 0 || tmthing->player->ktemp_hyudorotimer > 0 || tmthing->player->ktemp_spinouttimer > 0) return true; // collide @@ -2252,7 +2250,7 @@ boolean P_TryCameraMove(fixed_t x, fixed_t y, camera_t *thiscam) #ifndef NOCLIPCAM if ((players[displayplayers[i]].pflags & PF_NOCLIP) || (leveltime < introtime)) // Noclipping player camera noclips too!! #else - if (!(players[displayplayers[i]].pflags & PF_GAMETYPEOVER)) // Time Over should not clip through walls + if (!(players[displayplayers[i]].pflags & PF_NOCONTEST)) // Time Over should not clip through walls #endif { floatok = true; @@ -2466,7 +2464,7 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff) const fixed_t maxstepmove = FixedMul(MAXSTEPMOVE, mapobjectscale); fixed_t maxstep = maxstepmove; - if (thing->player && thing->player->kartstuff[k_waterskip]) + if (thing->player && thing->player->ktemp_waterskip) maxstep += maxstepmove; // Add some extra stepmove when waterskipping // If using type Section1:13, double the maxstep. @@ -3158,7 +3156,7 @@ static boolean PTR_SlideTraverse(intercept_t *in) P_ProcessSpecialSector(slidemo->player, slidemo->subsector->sector, li->polyobj->lines[0]->backsector); } - if (in->frac < bestslidefrac && (!slidemo->player || !slidemo->player->climbing)) + if (in->frac < bestslidefrac) { secondslidefrac = bestslidefrac; secondslideline = bestslideline; diff --git a/src/p_mobj.c b/src/p_mobj.c index 49165162d..49adc2d88 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -191,7 +191,7 @@ static void P_CyclePlayerMobjState(mobj_t *mobj) // P_SetPlayerMobjState // Returns true if the mobj is still present. // -// Separate from P_SetMobjState because of the pw_flashing check and Super states +// Separate from P_SetMobjState because of the ktemp_flashing check and Super states // boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) { @@ -285,7 +285,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) if (skin) { - spr2 = P_GetSkinSprite2(skin, ((player->powers[pw_super] ? FF_SPR2SUPER : 0)|st->frame) & FF_FRAMEMASK, mobj->player); + spr2 = P_GetSkinSprite2(skin, st->frame & FF_FRAMEMASK, mobj->player); numframes = skin->sprites[spr2].numframes; } else @@ -1093,7 +1093,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (mo->player) { - if (!(mo->flags2 & MF2_OBJECTFLIP) != !(mo->player->powers[pw_gravityboots])) // negated to turn numeric into bool - would be double negated, but not needed if both would be + if (mo->flags2 & MF2_OBJECTFLIP) { gravityadd = -gravityadd; mo->eflags ^= MFE_VERTICALFLIP; @@ -1104,7 +1104,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) P_PlayerFlip(mo); } - if (mo->player->kartstuff[k_waterskip]) + if (mo->player->ktemp_waterskip) { gravityadd = (4*gravityadd)/3; } @@ -1657,8 +1657,6 @@ void P_XYMovement(mobj_t *mo) P_SlideMove(mo); - if (player) - player->powers[pw_pushing] = 3; xmove = ymove = 0; if (mo->momx || mo->momy) // "Guess" the angle of the wall you hit using new momentum @@ -1677,10 +1675,6 @@ void P_XYMovement(mobj_t *mo) transferslope->xydirection + (transferslope->zangle & ANGLE_180)); - if (player) - { - player->powers[pw_justlaunched] = 2; - } } } } @@ -1809,13 +1803,13 @@ void P_XYMovement(mobj_t *mo) if (mo->type == MT_FLINGRING || mo->type == MT_BALLHOG || mo->type == MT_BUBBLESHIELDTRAP) return; - if (player && (player->kartstuff[k_spinouttimer] && !player->kartstuff[k_wipeoutslow]) - && player->speed <= FixedDiv(20*mapobjectscale, player->kartstuff[k_offroad] + FRACUNIT)) + if (player && (player->ktemp_spinouttimer && !player->ktemp_wipeoutslow) + && player->speed <= FixedDiv(20*mapobjectscale, player->ktemp_offroad + FRACUNIT)) return; //} if (((!(mo->eflags & MFE_VERTICALFLIP) && mo->z > mo->floorz) || (mo->eflags & MFE_VERTICALFLIP && mo->z+mo->height < mo->ceilingz)) - && !(player && player->pflags & PF_SLIDING)) + && !(player && player->ktemp_carry == CR_SLIDING)) return; // no friction when airborne P_XYFriction(mo, oldx, oldy); @@ -2723,7 +2717,7 @@ void P_PlayerZMovement(mobj_t *mo) mo->z = mo->floorz; // Get up if you fell. - if (mo->player->panim == PA_HURT && mo->player->kartstuff[k_spinouttimer] == 0 && mo->player->tumbleBounces == 0) + if (mo->player->panim == PA_HURT && mo->player->ktemp_spinouttimer == 0 && mo->player->tumbleBounces == 0) P_SetPlayerMobjState(mo, S_KART_STILL); if (!mo->standingslope && (mo->eflags & MFE_VERTICALFLIP ? tmceilingslope : tmfloorslope)) { @@ -2780,8 +2774,7 @@ void P_PlayerZMovement(mobj_t *mo) if (CheckForMarioBlocks) P_CheckMarioBlocks(mo); - if (!mo->player->climbing) - mo->momz = 0; + mo->momz = 0; } } } @@ -2953,7 +2946,7 @@ void P_MobjCheckWater(mobj_t *mobj) ffloor_t *rover; player_t *p = mobj->player; // Will just be null if not a player. fixed_t height = mobj->height; - boolean wasgroundpounding = (p && ((p->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL || (p->powers[pw_shield] & SH_NOSTACK) == SH_BUBBLEWRAP) && (p->pflags & PF_SHIELDABILITY)); + boolean wasgroundpounding = false; // Default if no water exists. mobj->watertop = mobj->waterbottom = mobj->z - 1000*FRACUNIT; @@ -3013,30 +3006,6 @@ void P_MobjCheckWater(mobj_t *mobj) if (p && (p->spectator || p->playerstate != PST_LIVE)) return; - // Specific things for underwater players - if (p && (mobj->eflags & MFE_UNDERWATER) == MFE_UNDERWATER) - { - if (!((p->powers[pw_super]) || (p->powers[pw_invulnerability]))) - { - boolean electric = !!(p->powers[pw_shield] & SH_PROTECTELECTRIC); - if (electric || ((p->powers[pw_shield] & SH_PROTECTFIRE) && !(p->powers[pw_shield] & SH_PROTECTWATER) && !(mobj->eflags & MFE_TOUCHLAVA))) - { // Water removes electric and non-water fire shields... - P_FlashPal(p, - electric - ? PAL_WHITE - : PAL_NUKE, - 1); - p->powers[pw_shield] = p->powers[pw_shield] & SH_STACK; - } - } - - if ((wasgroundpounding = ((mobj->eflags & MFE_GOOWATER) && wasgroundpounding))) - { - p->pflags &= ~PF_SHIELDABILITY; - mobj->momz >>= 1; - } - } - // The rest of this code only executes on a water state change. if (waterwasnotset || !!(mobj->eflags & MFE_UNDERWATER) == wasinwater) return; @@ -3089,9 +3058,9 @@ void P_MobjCheckWater(mobj_t *mobj) } // skipping stone! - if (p && p->kartstuff[k_waterskip] < 2 + if (p && p->ktemp_waterskip < 2 && ((p->speed/3 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water. - || (p->speed > 20*mapobjectscale && p->kartstuff[k_waterskip])) // Already skipped once, so you can skip once more! + || (p->speed > 20*mapobjectscale && p->ktemp_waterskip)) // Already skipped once, so you can skip once more! && ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop) || ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom))) { @@ -3105,7 +3074,7 @@ void P_MobjCheckWater(mobj_t *mobj) else mobj->momz = FixedMul(hop, mobj->scale); - p->kartstuff[k_waterskip]++; + p->ktemp_waterskip++; } } @@ -3390,7 +3359,7 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled dummy.z = thiscam->z; dummy.height = thiscam->height; - if ((player->pflags & PF_GAMETYPEOVER) && (gametyperules & GTR_CIRCUIT)) + if ((player->pflags & PF_NOCONTEST) && (gametyperules & GTR_CIRCUIT)) { player->karthud[khud_timeovercam] = (2*TICRATE)+1; } @@ -3556,7 +3525,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj) mobj->eflags &= ~MFE_JUSTSTEPPEDDOWN; // Zoom tube - if ((mobj->player->powers[pw_carry] == CR_ZOOMTUBE && mobj->tracer && !P_MobjWasRemoved(mobj->tracer)) + if ((mobj->player->ktemp_carry == CR_ZOOMTUBE && mobj->tracer && !P_MobjWasRemoved(mobj->tracer)) || mobj->player->respawn.state == RESPAWNST_MOVE) { P_HitSpecialLines(mobj, mobj->x, mobj->y, mobj->momx, mobj->momy); @@ -3574,7 +3543,6 @@ static void P_PlayerMobjThinker(mobj_t *mobj) // Needed for gravity boots P_CheckGravity(mobj, false); - mobj->player->powers[pw_justlaunched] = 0; if (mobj->momx || mobj->momy) { P_XYMovement(mobj); @@ -3813,7 +3781,7 @@ boolean P_BossTargetPlayer(mobj_t *actor, boolean closest) player = &players[actor->lastlook]; - if (player->pflags & PF_INVIS || player->bot || player->spectator) + if (player->bot || player->spectator) continue; // ignore notarget if (!player->mo || P_MobjWasRemoved(player->mo)) @@ -3851,9 +3819,6 @@ boolean P_SupermanLook4Players(mobj_t *actor) { if (playeringame[c] && !players[c].spectator) { - if (players[c].pflags & PF_INVIS) - continue; // ignore notarget - if (!players[c].mo || players[c].bot) continue; @@ -4467,125 +4432,6 @@ cont: } } -static boolean P_ShieldLook(mobj_t *thing, shieldtype_t shield) -{ - if (!thing->target || thing->target->health <= 0 || !thing->target->player - || (thing->target->player->powers[pw_shield] & SH_NOSTACK) == SH_NONE || thing->target->player->powers[pw_super] - || thing->target->player->powers[pw_invulnerability] > 1) - { - P_RemoveMobj(thing); - return false; - } - - // TODO: Make an MT_SHIELDORB which changes color/states to always match the appropriate shield, - // instead of having completely seperate mobjtypes. - if (!(shield & SH_FORCE)) - { // Regular shields check for themselves only - if ((shieldtype_t)(thing->target->player->powers[pw_shield] & SH_NOSTACK) != shield) - { - P_RemoveMobj(thing); - return false; - } - } - else if (!(thing->target->player->powers[pw_shield] & SH_FORCE)) - { // Force shields check for any force shield - P_RemoveMobj(thing); - return false; - } - - if (shield & SH_FORCE && thing->movecount != (thing->target->player->powers[pw_shield] & SH_FORCEHP)) - { - thing->movecount = (thing->target->player->powers[pw_shield] & SH_FORCEHP); - if (thing->movecount < 1) - { - if (thing->info->painstate) - P_SetMobjState(thing,thing->info->painstate); - else - thing->renderflags |= RF_GHOSTLY; - } - else - { - if (thing->info->painstate) - P_SetMobjState(thing,thing->info->spawnstate); - else - thing->renderflags &= ~(RF_TRANSMASK|RF_BRIGHTMASK); - } - } - - thing->flags |= MF_NOCLIPHEIGHT; - thing->eflags = (thing->eflags & ~MFE_VERTICALFLIP)|(thing->target->eflags & MFE_VERTICALFLIP); - - P_SetScale(thing, thing->target->scale); - thing->destscale = thing->scale; - P_UnsetThingPosition(thing); - thing->x = thing->target->x; - thing->y = thing->target->y; - if (thing->eflags & MFE_VERTICALFLIP) - thing->z = thing->target->z + (thing->target->height - thing->height - FixedMul(2*FRACUNIT, thing->target->scale)); - else - thing->z = thing->target->z + FixedMul(2*FRACUNIT, thing->target->scale); - P_SetThingPosition(thing); - P_CheckPosition(thing, thing->x, thing->y); - - if (P_MobjWasRemoved(thing)) - return false; - -// if (thing->z < thing->floorz) -// thing->z = thing->floorz; - - return true; -} - -mobj_t *shields[MAXPLAYERS*2]; -INT32 numshields = 0; - -void P_RunShields(void) -{ - INT32 i; - - // run shields - for (i = 0; i < numshields; i++) - { - P_ShieldLook(shields[i], shields[i]->threshold); - P_SetTarget(&shields[i], NULL); - } - numshields = 0; -} - -static boolean P_AddShield(mobj_t *thing) -{ - shieldtype_t shield = thing->threshold; - - if (!thing->target || thing->target->health <= 0 || !thing->target->player - || (thing->target->player->powers[pw_shield] & SH_NOSTACK) == SH_NONE || thing->target->player->powers[pw_super] - || thing->target->player->powers[pw_invulnerability] > 1) - { - P_RemoveMobj(thing); - return false; - } - - if (!(shield & SH_FORCE)) - { // Regular shields check for themselves only - if ((shieldtype_t)(thing->target->player->powers[pw_shield] & SH_NOSTACK) != shield) - { - P_RemoveMobj(thing); - return false; - } - } - else if (!(thing->target->player->powers[pw_shield] & SH_FORCE)) - { // Force shields check for any force shield - P_RemoveMobj(thing); - return false; - } - - // Queue has been hit... why?!? - if (numshields >= MAXPLAYERS*2) - return P_ShieldLook(thing, thing->info->speed); - - P_SetTarget(&shields[numshields++], thing); - return true; -} - // Kartitem stuff. boolean P_IsKartItem(INT32 type) { @@ -5018,9 +4864,6 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (P_MobjWasRemoved(mobj)) return; - if ((mobj->flags2 & MF2_SHIELD) && !P_AddShield(mobj)) - return; - switch (mobj->type) { case MT_BOSSJUNK: @@ -5089,123 +4932,6 @@ static void P_MobjSceneryThink(mobj_t *mobj) else P_AddOverlay(mobj); break; - case MT_PITY_ORB: - case MT_WHIRLWIND_ORB: - case MT_ARMAGEDDON_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - break; - case MT_ATTRACT_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if (/*(mobj->target) -- the following is implicit by P_AddShield - && (mobj->target->player) - && */ (mobj->target->player->homing) && (mobj->target->player->pflags & PF_SHIELDABILITY)) - { - P_SetMobjState(mobj, mobj->info->painstate); - mobj->tics++; - } - break; - case MT_ELEMENTAL_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if (mobj->tracer - /* && mobj->target -- the following is implicit by P_AddShield - && mobj->target->player - && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL */ - && mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate - || (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1))) - { - P_SetMobjState(mobj, mobj->info->painstate); - mobj->tics++; - P_SetMobjState(mobj->tracer, mobj->info->raisestate); - mobj->tracer->tics++; - } - break; - case MT_FORCE_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if (/* - && mobj->target -- the following is implicit by P_AddShield - && mobj->target->player - && (mobj->target->player->powers[pw_shield] & SH_FORCE) - && */ (mobj->target->player->pflags & PF_SHIELDABILITY)) - { - mobj_t *whoosh = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_GHOST); // done here so the offset is correct - P_SetMobjState(whoosh, mobj->info->raisestate); - whoosh->destscale = whoosh->scale << 1; - whoosh->scalespeed = FixedMul(whoosh->scalespeed, whoosh->scale); - whoosh->height = 38*whoosh->scale; - whoosh->fuse = 10; - whoosh->flags |= MF_NOCLIPHEIGHT; - whoosh->momz = mobj->target->momz; // Stay reasonably centered for a few frames - mobj->target->player->pflags &= ~PF_SHIELDABILITY; // prevent eternal whoosh - } - /* FALLTHRU */ - case MT_FLAMEAURA_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if ((statenum_t)(mobj->state - states) < mobj->info->painstate) - mobj->angle = mobj->target->angle; // implicitly okay because of P_AddShield - if (mobj->tracer - /* && mobj->target -- the following is implicit by P_AddShield - && mobj->target->player - && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_FLAMEAURA */ - && mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate - || (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1))) - { - P_SetMobjState(mobj, mobj->info->painstate); - mobj->tics++; - P_SetMobjState(mobj->tracer, mobj->info->raisestate); - mobj->tracer->tics++; - } - break; - case MT_BUBBLEWRAP_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if (mobj->tracer - /* && mobj->target -- the following is implicit by P_AddShield - && mobj->target->player - && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_BUBBLEWRAP */ - ) - { - if (mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->state - states) < mobj->info->painstate - || (mobj->state->nextstate < mobj->info->painstate && mobj->tics == 1))) - { - P_SetMobjState(mobj, mobj->info->painstate); - mobj->tics++; - P_SetMobjState(mobj->tracer, mobj->info->raisestate); - mobj->tracer->tics++; - } - else if (mobj->target->eflags & MFE_JUSTHITFLOOR - && (statenum_t)(mobj->state - states) == mobj->info->painstate) - { - P_SetMobjState(mobj, mobj->info->painstate + 1); - mobj->tics++; - P_SetMobjState(mobj->tracer, mobj->info->raisestate + 1); - mobj->tracer->tics++; - } - } - break; - case MT_THUNDERCOIN_ORB: - if (!(mobj->flags2 & MF2_SHIELD)) - return; - if (mobj->tracer - /* && mobj->target -- the following is implicit by P_AddShield - && mobj->target->player - && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_THUNDERCOIN */ - && (mobj->target->player->pflags & PF_SHIELDABILITY)) - { - P_SetMobjState(mobj, mobj->info->painstate); - mobj->tics++; - P_SetMobjState(mobj->tracer, mobj->info->raisestate); - mobj->tracer->tics++; - mobj->target->player->pflags &= ~PF_SHIELDABILITY; // prevent eternal spark - } - break; case MT_WATERDROP: P_SceneryCheckWater(mobj); if ((mobj->z <= mobj->floorz || mobj->z <= mobj->watertop) @@ -5658,7 +5384,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) } // Do this in an easy way - if (mobj->target->player->kartstuff[k_itemroulette]) + if (mobj->target->player->ktemp_itemroulette) { mobj->tracer->color = mobj->target->player->skincolor; mobj->tracer->colorized = true; @@ -5671,17 +5397,17 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (!(mobj->renderflags & RF_DONTDRAW)) { - const INT32 numberdisplaymin = ((mobj->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT) ? 5 : 2); + const INT32 numberdisplaymin = ((mobj->target->player->ktemp_itemtype == KITEM_ORBINAUT) ? 5 : 2); // Set it to use the correct states for its condition - if (mobj->target->player->kartstuff[k_itemroulette]) + if (mobj->target->player->ktemp_itemroulette) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; - mobj->tracer->frame = FF_FULLBRIGHT|(((mobj->target->player->kartstuff[k_itemroulette] % (13*3)) / 3) + 1); + mobj->tracer->frame = FF_FULLBRIGHT|(((mobj->target->player->ktemp_itemroulette % (13*3)) / 3) + 1); mobj->tracer->renderflags &= ~RF_DONTDRAW; } - else if (mobj->target->player->kartstuff[k_stolentimer] > 0) + else if (mobj->target->player->ktemp_stealingtimer < 0) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; @@ -5691,14 +5417,14 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if ((mobj->target->player->kartstuff[k_stealingtimer] > 0) && (leveltime & 2)) + else if ((mobj->target->player->ktemp_stealingtimer > 0) && (leveltime & 2)) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; mobj->tracer->frame = FF_FULLBRIGHT|KITEM_HYUDORO; mobj->tracer->renderflags &= ~RF_DONTDRAW; } - else if (mobj->target->player->kartstuff[k_eggmanexplode] > 1) + else if (mobj->target->player->ktemp_eggmanexplode > 1) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; @@ -5708,9 +5434,9 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if (mobj->target->player->kartstuff[k_rocketsneakertimer] > 1) + else if (mobj->target->player->ktemp_rocketsneakertimer > 1) { - //itembar = mobj->target->player->kartstuff[k_rocketsneakertimer]; -- not today satan + //itembar = mobj->target->player->ktemp_rocketsneakertimer; -- not today satan P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; mobj->tracer->frame = FF_FULLBRIGHT|KITEM_ROCKETSNEAKER; @@ -5719,15 +5445,15 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if (mobj->target->player->kartstuff[k_itemtype] && mobj->target->player->kartstuff[k_itemamount] > 0) + else if (mobj->target->player->ktemp_itemtype && mobj->target->player->ktemp_itemamount > 0) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); - switch (mobj->target->player->kartstuff[k_itemtype]) + switch (mobj->target->player->ktemp_itemtype) { case KITEM_ORBINAUT: mobj->tracer->sprite = SPR_ITMO; - mobj->tracer->frame = FF_FULLBRIGHT|(min(mobj->target->player->kartstuff[k_itemamount]-1, 3)); + mobj->tracer->frame = FF_FULLBRIGHT|(min(mobj->target->player->ktemp_itemamount-1, 3)); break; case KITEM_INVINCIBILITY: mobj->tracer->sprite = SPR_ITMI; @@ -5739,11 +5465,11 @@ static void P_MobjSceneryThink(mobj_t *mobj) break; default: mobj->tracer->sprite = SPR_ITEM; - mobj->tracer->frame = FF_FULLBRIGHT|(mobj->target->player->kartstuff[k_itemtype]); + mobj->tracer->frame = FF_FULLBRIGHT|(mobj->target->player->ktemp_itemtype); break; } - if (mobj->target->player->kartstuff[k_itemheld]) + if (mobj->target->player->pflags & PF_ITEMOUT) { if (leveltime & 1) mobj->tracer->renderflags &= ~RF_DONTDRAW; @@ -5761,8 +5487,8 @@ static void P_MobjSceneryThink(mobj_t *mobj) mobj->tracer->destscale = scale; - if (mobj->target->player->kartstuff[k_itemamount] >= numberdisplaymin - && mobj->target->player->kartstuff[k_itemamount] <= 10) // Meh, too difficult to support greater than this; convert this to a decent HUD object and then maybe :V + if (mobj->target->player->ktemp_itemamount >= numberdisplaymin + && mobj->target->player->ktemp_itemamount <= 10) // Meh, too difficult to support greater than this; convert this to a decent HUD object and then maybe :V { mobj_t *number = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_OVERLAY); mobj_t *numx = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_OVERLAY); @@ -5771,7 +5497,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) P_SetMobjState(number, S_PLAYERARROW_NUMBER); P_SetScale(number, mobj->scale); number->destscale = scale; - number->frame = FF_FULLBRIGHT|(mobj->target->player->kartstuff[k_itemamount]); + number->frame = FF_FULLBRIGHT|(mobj->target->player->ktemp_itemamount); P_SetTarget(&numx->target, mobj); P_SetMobjState(numx, S_PLAYERARROW_X); @@ -6779,12 +6505,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (p) { - if (p->kartstuff[k_driftboost] > mobj->movecount) + if (p->ktemp_driftboost > mobj->movecount) { ; // reset animation } - mobj->movecount = p->kartstuff[k_driftboost]; + mobj->movecount = p->ktemp_driftboost; } } break; @@ -6812,9 +6538,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (p) { - if (p->kartstuff[k_sneakertimer] > mobj->movecount) + if (p->ktemp_sneakertimer > mobj->movecount) P_SetMobjState(mobj, S_BOOSTFLAME); - mobj->movecount = p->kartstuff[k_sneakertimer]; + mobj->movecount = p->ktemp_sneakertimer; } } @@ -6843,7 +6569,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->colorized = mobj->target->colorized; break; case MT_INVULNFLASH: - if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->kartstuff[k_invincibilitytimer])) + if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->ktemp_invincibilitytimer)) { P_RemoveMobj(mobj); return false; @@ -6852,7 +6578,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_BRAKEDRIFT: if ((!mobj->target || !mobj->target->health || !mobj->target->player || !P_IsObjectOnGround(mobj->target)) - || !mobj->target->player->kartstuff[k_drift] || !mobj->target->player->kartstuff[k_brakedrift] + || !mobj->target->player->ktemp_drift || !(mobj->target->player->pflags & PF_BRAKEDRIFT) || !((mobj->target->player->cmd.buttons & BT_BRAKE) || (K_GetKartButtons(mobj->target->player) & BT_ACCELERATE))) // Letting go of accel functions about the same as brake-drifting { @@ -6861,17 +6587,17 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } else { - UINT8 driftcolor = K_DriftSparkColor(mobj->target->player, mobj->target->player->kartstuff[k_driftcharge]); + UINT8 driftcolor = K_DriftSparkColor(mobj->target->player, mobj->target->player->ktemp_driftcharge); fixed_t newx, newy; angle_t travelangle; - travelangle = mobj->target->angle - ((ANGLE_45/5)*mobj->target->player->kartstuff[k_drift]); + travelangle = mobj->target->angle - ((ANGLE_45/5)*mobj->target->player->ktemp_drift); newx = mobj->target->x + P_ReturnThrustX(mobj->target, travelangle+ANGLE_180, 24*mobj->target->scale); newy = mobj->target->y + P_ReturnThrustY(mobj->target, travelangle+ANGLE_180, 24*mobj->target->scale); P_TeleportMove(mobj, newx, newy, mobj->target->z); - mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->kartstuff[k_drift]); + mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->ktemp_drift); P_SetScale(mobj, (mobj->destscale = mobj->target->scale)); if (driftcolor != SKINCOLOR_NONE) @@ -6900,7 +6626,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) K_MatchGenericExtraFlags(mobj, mobj->target); /* FALLTHRU */ case MT_INSTASHIELDA: - if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->kartstuff[k_instashield])) + if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->ktemp_instashield)) { P_RemoveMobj(mobj); return false; @@ -6971,7 +6697,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_TIREGREASE: if (!mobj->target || P_MobjWasRemoved(mobj->target) || !mobj->target->player - || !mobj->target->player->kartstuff[k_tiregrease]) + || !mobj->target->player->ktemp_tiregrease) { P_RemoveMobj(mobj); return false; @@ -6983,7 +6709,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) const angle_t off = FixedAngle(40*FRACUNIT); angle_t ang = K_MomentumAngle(mobj->target); fixed_t z; - UINT8 trans = (mobj->target->player->kartstuff[k_tiregrease] * (NUMTRANSMAPS+1)) / greasetics; + UINT8 trans = (mobj->target->player->ktemp_tiregrease * (NUMTRANSMAPS+1)) / greasetics; if (trans > NUMTRANSMAPS) trans = NUMTRANSMAPS; @@ -7020,7 +6746,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) { fixed_t destx, desty; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->kartstuff[k_curshield] != KSHIELD_THUNDER) + || mobj->target->player->ktemp_curshield != KSHIELD_THUNDER) { P_RemoveMobj(mobj); return false; @@ -7061,7 +6787,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) statenum_t curstate; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->kartstuff[k_curshield] != KSHIELD_BUBBLE) + || mobj->target->player->ktemp_curshield != KSHIELD_BUBBLE) { P_RemoveMobj(mobj); return false; @@ -7070,9 +6796,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) scale = (5*mobj->target->scale)>>2; curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); - if (mobj->target->player->kartstuff[k_bubbleblowup]) + if (mobj->target->player->ktemp_bubbleblowup) { - INT32 blow = mobj->target->player->kartstuff[k_bubbleblowup]; + INT32 blow = mobj->target->player->ktemp_bubbleblowup; if (blow > bubbletime) blow = bubbletime; @@ -7084,7 +6810,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) scale += (blow * (3*scale)) / bubbletime; mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + mobj->extravalue1); - if ((mobj->target->player->kartstuff[k_bubbleblowup] > bubbletime) && (leveltime & 1)) + if ((mobj->target->player->ktemp_bubbleblowup > bubbletime) && (leveltime & 1)) mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + 5); if (mobj->extravalue1 < 4 && mobj->extravalue2 < blow && !mobj->cvmem && (leveltime & 1)) // Growing @@ -7149,14 +6875,14 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } else { - if (mobj->target->player->kartstuff[k_bubblecool] && ((curstate-S_BUBBLESHIELD1) & 1)) + if (mobj->target->player->ktemp_bubblecool && ((curstate-S_BUBBLESHIELD1) & 1)) mobj->renderflags |= RF_GHOSTLY; else mobj->renderflags &= ~RF_GHOSTLYMASK; } } - mobj->extravalue2 = mobj->target->player->kartstuff[k_bubbleblowup]; + mobj->extravalue2 = mobj->target->player->ktemp_bubbleblowup; P_SetScale(mobj, (mobj->destscale = scale)); if (!splitscreen /*&& rendermode != render_soft*/) @@ -7190,19 +6916,19 @@ static boolean P_MobjRegularThink(mobj_t *mobj) INT32 flamemax = 0; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->kartstuff[k_curshield] != KSHIELD_FLAME) + || mobj->target->player->ktemp_curshield != KSHIELD_FLAME) { P_RemoveMobj(mobj); return false; } - flamemax = mobj->target->player->kartstuff[k_flamelength] * flameseg; + flamemax = mobj->target->player->ktemp_flamelength * flameseg; P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); - if (mobj->target->player->kartstuff[k_flamedash]) + if (mobj->target->player->ktemp_flamedash) { if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12)) P_SetMobjState(mobj, S_FLAMESHIELDDASH1); @@ -7221,7 +6947,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) UINT8 i; UINT8 nl = 2; - if (mobj->target->player->kartstuff[k_flamedash] > mobj->extravalue1) + if (mobj->target->player->ktemp_flamedash > mobj->extravalue1) nl = 3; for (i = 0; i < nl; i++) @@ -7247,9 +6973,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_SetMobjState(mobj, S_FLAMESHIELD1); } - mobj->extravalue1 = mobj->target->player->kartstuff[k_flamedash]; + mobj->extravalue1 = mobj->target->player->ktemp_flamedash; - if (mobj->target->player->kartstuff[k_flamemeter] > flamemax) + if (mobj->target->player->ktemp_flamemeter > flamemax) { mobj_t *flash = P_SpawnMobj(mobj->x + mobj->target->momx, mobj->y + mobj->target->momy, mobj->z + mobj->target->momz, MT_THOK); P_SetMobjState(flash, S_FLAMESHIELDFLASH); @@ -7304,7 +7030,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_RemoveMobj(mobj); return false; } - if (mobj->target->player && !mobj->target->player->kartstuff[k_rocketsneakertimer]) + if (mobj->target->player && !mobj->target->player->ktemp_rocketsneakertimer) { mobj->flags &= ~MF_NOGRAVITY; mobj->angle += ANGLE_45; @@ -7339,11 +7065,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->color = mobj->target->color; mobj->colorized = true; - // Give items an item-sized hitbox - if (mobj->target->player->kartstuff[k_comebackmode] == 1) - mobj->radius = 48*mobj->target->scale; - else - mobj->radius = 24*mobj->target->scale; + mobj->radius = 24*mobj->target->scale; mobj->height = 2*mobj->radius; if (mobj->target->player->karmadelay > 0) @@ -7357,17 +7079,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } else { - if (!mobj->target->player->kartstuff[k_comebackmode] - && (state < S_PLAYERBOMB1 || state > S_PLAYERBOMB20)) + if (state < S_PLAYERBOMB1 || state > S_PLAYERBOMB20) P_SetMobjState(mobj, S_PLAYERBOMB1); - else if (mobj->target->player->kartstuff[k_comebackmode] == 1 - && (state < S_PLAYERITEM1 || state > S_PLAYERITEM12)) - P_SetMobjState(mobj, S_PLAYERITEM1); - else if (mobj->target->player->kartstuff[k_comebackmode] == 2 - && (state < S_PLAYERFAKE1 || state > S_PLAYERFAKE12)) - P_SetMobjState(mobj, S_PLAYERFAKE1); - if (mobj->target->player->powers[pw_flashing] && (leveltime & 1)) + if (mobj->target->player->ktemp_flashing && (leveltime & 1)) mobj->renderflags |= RF_DONTDRAW; else mobj->renderflags &= ~RF_DONTDRAW; @@ -7937,7 +7652,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) player_t *player = mobj->target->player; mobj->extravalue1 = 1; - player->kartstuff[k_offroad] += 2<ktemp_offroad += 2<mo->x + P_ReturnThrustX(NULL, player->mo->angle, player->mo->radius) @@ -9146,7 +8861,7 @@ void P_SceneryThinker(mobj_t *mobj) if (!playeringame[mobj->threshold] || players[mobj->threshold].spectator) // focused on a valid player? return; - if (!(players[mobj->threshold].exiting) && !(players[mobj->threshold].pflags & PF_GAMETYPEOVER)) // not finished yet? + if (!(players[mobj->threshold].exiting) && !(players[mobj->threshold].pflags & PF_NOCONTEST)) // not finished yet? return; if (K_IsPlayerLosing(&players[mobj->threshold])) @@ -10480,7 +10195,7 @@ void P_SpawnPlayer(INT32 playernum) } if (leveltime > introtime) - p->powers[pw_flashing] = K_GetKartFlashing(p); // Babysitting deterrent + p->ktemp_flashing = K_GetKartFlashing(p); // Babysitting deterrent mobj = P_SpawnMobj(0, 0, 0, MT_PLAYER); (mobj->player = p)->mo = mobj; @@ -10499,7 +10214,6 @@ void P_SpawnPlayer(INT32 playernum) mobj->health = 1; p->playerstate = PST_LIVE; - p->bonustime = false; p->realtime = leveltime; p->followitem = skins[p->skin].followitem; @@ -12286,7 +12000,7 @@ void P_SpawnHoop(mapthing_t *mthing) P_SpawnHoopInternal(mthing, 8 + (4*(mthing->options & 0xF)), 4*FRACUNIT); } -static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t* itemtypes, UINT8 numitemtypes, INT32 numitems, fixed_t horizontalspacing, fixed_t verticalspacing, INT16 fixedangle, boolean bonustime) +static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t* itemtypes, UINT8 numitemtypes, INT32 numitems, fixed_t horizontalspacing, fixed_t verticalspacing, INT16 fixedangle) { mapthing_t dummything; mobj_t *mobj = NULL; @@ -12297,8 +12011,6 @@ static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t* itemtypes, UINT8 numi angle_t angle = FixedAngle(fixedangle << FRACBITS); angle_t fineangle = (angle >> ANGLETOFINESHIFT) & FINEMASK; - (void)bonustime; - for (r = 0; r < numitemtypes; r++) { dummything = *mthing; @@ -12337,13 +12049,13 @@ static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t* itemtypes, UINT8 numi } } -static void P_SpawnSingularItemRow(mapthing_t* mthing, mobjtype_t itemtype, INT32 numitems, fixed_t horizontalspacing, fixed_t verticalspacing, INT16 fixedangle, boolean bonustime) +static void P_SpawnSingularItemRow(mapthing_t* mthing, mobjtype_t itemtype, INT32 numitems, fixed_t horizontalspacing, fixed_t verticalspacing, INT16 fixedangle) { mobjtype_t itemtypes[1] = { itemtype }; - return P_SpawnItemRow(mthing, itemtypes, 1, numitems, horizontalspacing, verticalspacing, fixedangle, bonustime); + return P_SpawnItemRow(mthing, itemtypes, 1, numitems, horizontalspacing, verticalspacing, fixedangle); } -static void P_SpawnItemCircle(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 numitemtypes, INT32 numitems, fixed_t size, boolean bonustime) +static void P_SpawnItemCircle(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 numitemtypes, INT32 numitems, fixed_t size) { mapthing_t dummything; mobj_t* mobj = NULL; @@ -12355,8 +12067,6 @@ static void P_SpawnItemCircle(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 n INT32 i; TVector v, *res; - (void)bonustime; - for (i = 0; i < numitemtypes; i++) { dummything = *mthing; @@ -12401,22 +12111,22 @@ static void P_SpawnItemCircle(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 n } } -void P_SpawnItemPattern(mapthing_t *mthing, boolean bonustime) +void P_SpawnItemPattern(mapthing_t *mthing) { switch (mthing->type) { // Special placement patterns case 600: // 5 vertical rings (yellow spring) - P_SpawnSingularItemRow(mthing, MT_RING, 5, 0, 64*FRACUNIT, 0, bonustime); + P_SpawnSingularItemRow(mthing, MT_RING, 5, 0, 64*FRACUNIT, 0); return; case 601: // 5 vertical rings (red spring) - P_SpawnSingularItemRow(mthing, MT_RING, 5, 0, 128*FRACUNIT, 0, bonustime); + P_SpawnSingularItemRow(mthing, MT_RING, 5, 0, 128*FRACUNIT, 0); return; case 602: // 5 diagonal rings (yellow spring) - P_SpawnSingularItemRow(mthing, MT_RING, 5, 64*FRACUNIT, 64*FRACUNIT, mthing->angle, bonustime); + P_SpawnSingularItemRow(mthing, MT_RING, 5, 64*FRACUNIT, 64*FRACUNIT, mthing->angle); return; case 603: // 10 diagonal rings (red spring) - P_SpawnSingularItemRow(mthing, MT_RING, 10, 64*FRACUNIT, 64*FRACUNIT, mthing->angle, bonustime); + P_SpawnSingularItemRow(mthing, MT_RING, 10, 64*FRACUNIT, 64*FRACUNIT, mthing->angle); return; case 604: // Circle of rings (8 items) case 605: // Circle of rings (16 items) @@ -12424,7 +12134,7 @@ void P_SpawnItemPattern(mapthing_t *mthing, boolean bonustime) INT32 numitems = (mthing->type & 1) ? 16 : 8; fixed_t size = (mthing->type & 1) ? 192*FRACUNIT : 96*FRACUNIT; mobjtype_t itemtypes[1] = { MT_RING }; - P_SpawnItemCircle(mthing, itemtypes, 1, numitems, size, bonustime); + P_SpawnItemCircle(mthing, itemtypes, 1, numitems, size); return; } default: diff --git a/src/p_mobj.h b/src/p_mobj.h index f9b87db97..997b00f65 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -487,7 +487,7 @@ fixed_t P_GetMapThingSpawnHeight(const mobjtype_t mobjtype, const mapthing_t* mt mobj_t *P_SpawnMapThing(mapthing_t *mthing); void P_SpawnHoop(mapthing_t *mthing); -void P_SpawnItemPattern(mapthing_t *mthing, boolean bonustime); +void P_SpawnItemPattern(mapthing_t *mthing); void P_SpawnHoopOfSomething(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle); void P_SpawnPrecipitation(void); void P_SpawnParaloop(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, statenum_t nstate, angle_t rotangle, boolean spawncenter); diff --git a/src/p_saveg.c b/src/p_saveg.c index 87646d225..d5865fa3c 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -73,7 +73,6 @@ static inline void P_ArchivePlayer(void) WRITEUINT8(save_p, numgameovers); WRITESINT8(save_p, pllives); WRITEUINT32(save_p, player->score); - WRITEINT32(save_p, player->continues); } static inline void P_UnArchivePlayer(void) @@ -84,7 +83,6 @@ static inline void P_UnArchivePlayer(void) savedata.numgameovers = READUINT8(save_p); savedata.lives = READSINT8(save_p); savedata.score = READUINT32(save_p); - savedata.continues = READINT32(save_p); } static void P_NetArchivePlayers(void) @@ -129,18 +127,15 @@ static void P_NetArchivePlayers(void) WRITEANGLE(save_p, players[i].aiming); WRITEANGLE(save_p, players[i].drawangle); WRITEANGLE(save_p, players[i].viewrollangle); + WRITEANGLE(save_p, players[i].tilt); WRITEANGLE(save_p, players[i].awayviewaiming); WRITEINT32(save_p, players[i].awayviewtics); - WRITEINT16(save_p, players[i].rings); - WRITEINT16(save_p, players[i].spheres); - - for (j = 0; j < NUMPOWERS; j++) - WRITEUINT16(save_p, players[i].powers[j]); WRITEUINT8(save_p, players[i].playerstate); WRITEUINT32(save_p, players[i].pflags); WRITEUINT8(save_p, players[i].panim); WRITEUINT8(save_p, players[i].spectator); + WRITEUINT32(save_p, players[i].ktemp_spectatewait); WRITEUINT16(save_p, players[i].flashpal); WRITEUINT16(save_p, players[i].flashcount); @@ -149,23 +144,12 @@ static void P_NetArchivePlayers(void) WRITEINT32(save_p, players[i].skin); WRITEUINT32(save_p, players[i].availabilities); WRITEUINT32(save_p, players[i].score); - WRITEFIXED(save_p, players[i].dashspeed); WRITESINT8(save_p, players[i].lives); - WRITEUINT8(save_p, players[i].lostlife); - WRITESINT8(save_p, players[i].continues); WRITESINT8(save_p, players[i].xtralife); - WRITEUINT8(save_p, players[i].gotcontinue); WRITEFIXED(save_p, players[i].speed); - WRITEUINT8(save_p, players[i].secondjump); - WRITEUINT8(save_p, players[i].fly1); - WRITEUINT8(save_p, players[i].scoreadd); - WRITEUINT32(save_p, players[i].glidetime); - WRITEUINT8(save_p, players[i].climbing); + WRITEFIXED(save_p, players[i].lastspeed); WRITEINT32(save_p, players[i].deadtimer); WRITEUINT32(save_p, players[i].exiting); - WRITEUINT8(save_p, players[i].homing); - WRITEUINT32(save_p, players[i].dashmode); - WRITEUINT32(save_p, players[i].skidtime); //////////////////////////// // Conveyor Belt Movement // @@ -175,59 +159,14 @@ static void P_NetArchivePlayers(void) WRITEFIXED(save_p, players[i].rmomx); // "Real" momx (momx - cmomx) WRITEFIXED(save_p, players[i].rmomy); // "Real" momy (momy - cmomy) - ///////////////////// - // Race Mode Stuff // - ///////////////////// - WRITEINT16(save_p, players[i].numboxes); WRITEINT16(save_p, players[i].totalring); WRITEUINT32(save_p, players[i].realtime); WRITEUINT8(save_p, players[i].laps); WRITEINT32(save_p, players[i].starpostnum); - //////////////////// - // CTF Mode Stuff // - //////////////////// - WRITEINT32(save_p, players[i].ctfteam); - WRITEUINT16(save_p, players[i].gotflag); + WRITEUINT8(save_p, players[i].ctfteam); - WRITEINT32(save_p, players[i].weapondelay); - WRITEINT32(save_p, players[i].tossdelay); - - WRITEANGLE(save_p, players[i].angle_pos); - WRITEANGLE(save_p, players[i].old_angle_pos); - - WRITEINT32(save_p, players[i].flyangle); - WRITEUINT32(save_p, players[i].drilltimer); - WRITEINT32(save_p, players[i].linkcount); - WRITEUINT32(save_p, players[i].linktimer); - WRITEINT32(save_p, players[i].anotherflyangle); - WRITEUINT32(save_p, players[i].nightstime); - WRITEUINT32(save_p, players[i].bumpertime); - WRITEINT32(save_p, players[i].drillmeter); - WRITEUINT8(save_p, players[i].drilldelay); - WRITEUINT8(save_p, players[i].bonustime); - WRITEFIXED(save_p, players[i].oldscale); - WRITEUINT8(save_p, players[i].mare); - WRITEUINT8(save_p, players[i].marelap); - WRITEUINT8(save_p, players[i].marebonuslap); - WRITEUINT32(save_p, players[i].marebegunat); - WRITEUINT32(save_p, players[i].startedtime); - WRITEUINT32(save_p, players[i].finishedtime); - WRITEUINT32(save_p, players[i].lapbegunat); - WRITEUINT32(save_p, players[i].lapstartedtime); - WRITEINT16(save_p, players[i].finishedspheres); - WRITEINT16(save_p, players[i].finishedrings); - WRITEUINT32(save_p, players[i].marescore); - WRITEUINT32(save_p, players[i].lastmarescore); - WRITEUINT32(save_p, players[i].totalmarescore); - WRITEUINT8(save_p, players[i].lastmare); - WRITEUINT8(save_p, players[i].lastmarelap); - WRITEUINT8(save_p, players[i].lastmarebonuslap); - WRITEUINT8(save_p, players[i].totalmarelap); - WRITEUINT8(save_p, players[i].totalmarebonuslap); - WRITEINT32(save_p, players[i].maxlink); - WRITEUINT8(save_p, players[i].texttimer); - WRITEUINT8(save_p, players[i].textvar); + WRITEUINT8(save_p, players[i].checkskip); if (players[i].awayviewmobj) flags |= AWAYVIEW; @@ -241,10 +180,6 @@ static void P_NetArchivePlayers(void) WRITEINT16(save_p, players[i].lastsidehit); WRITEINT16(save_p, players[i].lastlinehit); - WRITEUINT32(save_p, players[i].losstime); - - WRITEUINT8(save_p, players[i].timeshit); - WRITEINT32(save_p, players[i].onconveyor); WRITEUINT32(save_p, players[i].jointime); @@ -274,30 +209,110 @@ static void P_NetArchivePlayers(void) if (flags & FOLLOWER) WRITEUINT32(save_p, players[i].follower->mobjnum); - for (j = 0; j < NUMKARTSTUFF; j++) - WRITEINT32(save_p, players[i].kartstuff[j]); + WRITEUINT16(save_p, players[i].ktemp_nocontrol); + WRITEUINT8(save_p, players[i].ktemp_carry); + WRITEUINT16(save_p, players[i].ktemp_dye); + WRITEUINT8(save_p, players[i].ktemp_position); + WRITEUINT8(save_p, players[i].ktemp_oldposition); + WRITEUINT8(save_p, players[i].ktemp_positiondelay); WRITEUINT32(save_p, players[i].distancetofinish); WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].nextwaypoint)); - WRITEUINT32(save_p, players[i].airtime); - WRITEUINT8(save_p, players[i].driftInput); - WRITEUINT8(save_p, players[i].airFailsafe); + WRITEUINT8(save_p, players[i].ktemp_startboost); + + WRITEUINT16(save_p, players[i].ktemp_flashing); + WRITEUINT16(save_p, players[i].ktemp_spinouttimer); + WRITEUINT8(save_p, players[i].ktemp_spinouttype); + WRITEUINT8(save_p, players[i].ktemp_instashield); + WRITEUINT8(save_p, players[i].ktemp_wipeoutslow); + WRITEUINT8(save_p, players[i].ktemp_justbumped); + WRITEUINT8(save_p, players[i].tumbleBounces); + WRITEUINT16(save_p, players[i].tumbleHeight); + + WRITESINT8(save_p, players[i].ktemp_drift); + WRITEFIXED(save_p, players[i].ktemp_driftcharge); + WRITEUINT8(save_p, players[i].ktemp_driftboost); + + WRITESINT8(save_p, players[i].ktemp_aizdriftstrat); + WRITEINT32(save_p, players[i].aizdrifttilt); + WRITEINT32(save_p, players[i].aizdriftturn); + + WRITEFIXED(save_p, players[i].ktemp_offroad); + WRITEUINT8(save_p, players[i].ktemp_waterskip); + + WRITEUINT16(save_p, players[i].ktemp_tiregrease); + WRITEUINT16(save_p, players[i].ktemp_springstars); + WRITEUINT16(save_p, players[i].ktemp_springcolor); + WRITEUINT8(save_p, players[i].ktemp_dashpadcooldown); + + WRITEUINT16(save_p, players[i].ktemp_spindash); + WRITEFIXED(save_p, players[i].ktemp_spindashspeed); + WRITEUINT8(save_p, players[i].ktemp_spindashboost); + + WRITEUINT8(save_p, players[i].ktemp_numboosts); + WRITEFIXED(save_p, players[i].ktemp_boostpower); + WRITEFIXED(save_p, players[i].ktemp_speedboost); + WRITEFIXED(save_p, players[i].ktemp_accelboost); + WRITEFIXED(save_p, players[i].ktemp_handleboost); + WRITEANGLE(save_p, players[i].ktemp_boostangle); + + WRITEFIXED(save_p, players[i].ktemp_draftpower); + WRITEUINT16(save_p, players[i].ktemp_draftleeway); + WRITESINT8(save_p, players[i].ktemp_lastdraft); + + WRITEUINT16(save_p, players[i].ktemp_itemroulette); + WRITEUINT8(save_p, players[i].ktemp_roulettetype); + + WRITESINT8(save_p, players[i].ktemp_itemtype); + WRITEUINT8(save_p, players[i].ktemp_itemamount); + WRITESINT8(save_p, players[i].ktemp_throwdir); + + WRITEUINT8(save_p, players[i].ktemp_sadtimer); + + WRITEINT16(save_p, players[i].rings); + WRITEUINT8(save_p, players[i].ktemp_pickuprings); + WRITEUINT8(save_p, players[i].ktemp_ringdelay); + WRITEUINT16(save_p, players[i].ktemp_ringboost); + WRITEUINT8(save_p, players[i].ktemp_sparkleanim); + WRITEUINT8(save_p, players[i].ktemp_superring); + + WRITEUINT8(save_p, players[i].ktemp_curshield); + WRITEUINT8(save_p, players[i].ktemp_bubblecool); + WRITEUINT8(save_p, players[i].ktemp_bubbleblowup); + WRITEUINT16(save_p, players[i].ktemp_flamedash); + WRITEUINT16(save_p, players[i].ktemp_flamemeter); + WRITEUINT8(save_p, players[i].ktemp_flamelength); + + WRITEUINT16(save_p, players[i].ktemp_hyudorotimer); + WRITESINT8(save_p, players[i].ktemp_stealingtimer); + + WRITEUINT16(save_p, players[i].ktemp_sneakertimer); + WRITEUINT8(save_p, players[i].ktemp_numsneakers); + WRITEUINT8(save_p, players[i].ktemp_floorboost); + + WRITEINT16(save_p, players[i].ktemp_growshrinktimer); + WRITEUINT16(save_p, players[i].ktemp_rocketsneakertimer); + WRITEUINT16(save_p, players[i].ktemp_invincibilitytimer); + + WRITEUINT8(save_p, players[i].ktemp_eggmanexplode); + WRITESINT8(save_p, players[i].ktemp_eggmanblame); + + WRITEUINT8(save_p, players[i].ktemp_bananadrag); + + WRITESINT8(save_p, players[i].ktemp_lastjawztarget); + WRITEUINT8(save_p, players[i].ktemp_jawztargetdelay); WRITEUINT8(save_p, players[i].trickpanel); - WRITEUINT8(save_p, players[i].trickdelay); WRITEUINT32(save_p, players[i].trickmomx); WRITEUINT32(save_p, players[i].trickmomy); WRITEUINT32(save_p, players[i].trickmomz); + WRITEUINT32(save_p, players[i].roundscore); + WRITEUINT8(save_p, players[i].ktemp_emeralds); WRITEUINT8(save_p, players[i].bumpers); WRITEINT16(save_p, players[i].karmadelay); - WRITEUINT8(save_p, players[i].eliminated); - - WRITEUINT8(save_p, players[i].tumbleBounces); - WRITEUINT16(save_p, players[i].tumbleHeight); - WRITEUINT8(save_p, players[i].tumbleLastBounce); - WRITEUINT8(save_p, players[i].tumbleSound); + WRITEINT16(save_p, players[i].spheres); WRITESINT8(save_p, players[i].glanceDir); @@ -370,18 +385,15 @@ static void P_NetUnArchivePlayers(void) players[i].aiming = READANGLE(save_p); players[i].drawangle = READANGLE(save_p); players[i].viewrollangle = READANGLE(save_p); + players[i].tilt = READANGLE(save_p); players[i].awayviewaiming = READANGLE(save_p); players[i].awayviewtics = READINT32(save_p); - players[i].rings = READINT16(save_p); - players[i].spheres = READINT16(save_p); - - for (j = 0; j < NUMPOWERS; j++) - players[i].powers[j] = READUINT16(save_p); players[i].playerstate = READUINT8(save_p); players[i].pflags = READUINT32(save_p); players[i].panim = READUINT8(save_p); players[i].spectator = READUINT8(save_p); + players[i].ktemp_spectatewait = READUINT32(save_p); players[i].flashpal = READUINT16(save_p); players[i].flashcount = READUINT16(save_p); @@ -390,23 +402,12 @@ static void P_NetUnArchivePlayers(void) players[i].skin = READINT32(save_p); players[i].availabilities = READUINT32(save_p); players[i].score = READUINT32(save_p); - players[i].dashspeed = READFIXED(save_p); // dashing speed players[i].lives = READSINT8(save_p); - players[i].lostlife = (boolean)READUINT8(save_p); - players[i].continues = READSINT8(save_p); // continues that player has acquired players[i].xtralife = READSINT8(save_p); // Ring Extra Life counter - players[i].gotcontinue = READUINT8(save_p); // got continue from stage players[i].speed = READFIXED(save_p); // Player's speed (distance formula of MOMX and MOMY values) - players[i].secondjump = READUINT8(save_p); - players[i].fly1 = READUINT8(save_p); // Tails flying - players[i].scoreadd = READUINT8(save_p); // Used for multiple enemy attack bonus - players[i].glidetime = READUINT32(save_p); // Glide counter for thrust - players[i].climbing = READUINT8(save_p); // Climbing on the wall + players[i].lastspeed = READFIXED(save_p); players[i].deadtimer = READINT32(save_p); // End game if game over lasts too long players[i].exiting = READUINT32(save_p); // Exitlevel timer - players[i].homing = READUINT8(save_p); // Are you homing? - players[i].dashmode = READUINT32(save_p); // counter for dashmode ability - players[i].skidtime = READUINT32(save_p); // Skid timer //////////////////////////// // Conveyor Belt Movement // @@ -416,67 +417,18 @@ static void P_NetUnArchivePlayers(void) players[i].rmomx = READFIXED(save_p); // "Real" momx (momx - cmomx) players[i].rmomy = READFIXED(save_p); // "Real" momy (momy - cmomy) - ///////////////////// - // Race Mode Stuff // - ///////////////////// - players[i].numboxes = READINT16(save_p); // Number of item boxes obtained for Race Mode - players[i].totalring = READINT16(save_p); // Total number of rings obtained for Race Mode + players[i].totalring = READINT16(save_p); // Total number of rings obtained for GP players[i].realtime = READUINT32(save_p); // integer replacement for leveltime players[i].laps = READUINT8(save_p); // Number of laps (optional) players[i].starpostnum = READINT32(save_p); - //////////////////// - // CTF Mode Stuff // - //////////////////// - players[i].ctfteam = READINT32(save_p); // 1 == Red, 2 == Blue - players[i].gotflag = READUINT16(save_p); // 1 == Red, 2 == Blue Do you have the flag? + players[i].ctfteam = READUINT8(save_p); // 1 == Red, 2 == Blue - players[i].weapondelay = READINT32(save_p); - players[i].tossdelay = READINT32(save_p); - - players[i].angle_pos = READANGLE(save_p); - players[i].old_angle_pos = READANGLE(save_p); - - players[i].flyangle = READINT32(save_p); - players[i].drilltimer = READUINT32(save_p); - players[i].linkcount = READINT32(save_p); - players[i].linktimer = READUINT32(save_p); - players[i].anotherflyangle = READINT32(save_p); - players[i].nightstime = READUINT32(save_p); - players[i].bumpertime = READUINT32(save_p); - players[i].drillmeter = READINT32(save_p); - players[i].drilldelay = READUINT8(save_p); - players[i].bonustime = (boolean)READUINT8(save_p); - players[i].oldscale = READFIXED(save_p); - players[i].mare = READUINT8(save_p); - players[i].marelap = READUINT8(save_p); - players[i].marebonuslap = READUINT8(save_p); - players[i].marebegunat = READUINT32(save_p); - players[i].startedtime = READUINT32(save_p); - players[i].finishedtime = READUINT32(save_p); - players[i].lapbegunat = READUINT32(save_p); - players[i].lapstartedtime = READUINT32(save_p); - players[i].finishedspheres = READINT16(save_p); - players[i].finishedrings = READINT16(save_p); - players[i].marescore = READUINT32(save_p); - players[i].lastmarescore = READUINT32(save_p); - players[i].totalmarescore = READUINT32(save_p); - players[i].lastmare = READUINT8(save_p); - players[i].lastmarelap = READUINT8(save_p); - players[i].lastmarebonuslap = READUINT8(save_p); - players[i].totalmarelap = READUINT8(save_p); - players[i].totalmarebonuslap = READUINT8(save_p); - players[i].maxlink = READINT32(save_p); - players[i].texttimer = READUINT8(save_p); - players[i].textvar = READUINT8(save_p); + players[i].checkskip = READUINT8(save_p); players[i].lastsidehit = READINT16(save_p); players[i].lastlinehit = READINT16(save_p); - players[i].losstime = READUINT32(save_p); - - players[i].timeshit = READUINT8(save_p); - players[i].onconveyor = READINT32(save_p); players[i].jointime = READUINT32(save_p); @@ -507,30 +459,110 @@ static void P_NetUnArchivePlayers(void) if (flags & FOLLOWER) players[i].follower = (mobj_t *)(size_t)READUINT32(save_p); - for (j = 0; j < NUMKARTSTUFF; j++) - players[i].kartstuff[j] = READINT32(save_p); + players[i].ktemp_nocontrol = READUINT16(save_p); + players[i].ktemp_carry = READUINT8(save_p); + players[i].ktemp_dye = READUINT16(save_p); + players[i].ktemp_position = READUINT8(save_p); + players[i].ktemp_oldposition = READUINT8(save_p); + players[i].ktemp_positiondelay = READUINT8(save_p); players[i].distancetofinish = READUINT32(save_p); players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save_p); - players[i].airtime = READUINT32(save_p); - players[i].driftInput = (boolean)READUINT8(save_p); - players[i].airFailsafe = (boolean)READUINT8(save_p); + players[i].ktemp_startboost = READUINT8(save_p); + + players[i].ktemp_flashing = READUINT16(save_p); + players[i].ktemp_spinouttimer = READUINT16(save_p); + players[i].ktemp_spinouttype = READUINT8(save_p); + players[i].ktemp_instashield = READUINT8(save_p); + players[i].ktemp_wipeoutslow = READUINT8(save_p); + players[i].ktemp_justbumped = READUINT8(save_p); + players[i].tumbleBounces = READUINT8(save_p); + players[i].tumbleHeight = READUINT16(save_p); + + players[i].ktemp_drift = READSINT8(save_p); + players[i].ktemp_driftcharge = READFIXED(save_p); + players[i].ktemp_driftboost = READUINT8(save_p); + + players[i].ktemp_aizdriftstrat = READSINT8(save_p); + players[i].aizdrifttilt = READINT32(save_p); + players[i].aizdriftturn = READINT32(save_p); + + players[i].ktemp_offroad = READFIXED(save_p); + players[i].ktemp_waterskip = READUINT8(save_p); + + players[i].ktemp_tiregrease = READUINT16(save_p); + players[i].ktemp_springstars = READUINT16(save_p); + players[i].ktemp_springcolor = READUINT16(save_p); + players[i].ktemp_dashpadcooldown = READUINT8(save_p); + + players[i].ktemp_spindash = READUINT16(save_p); + players[i].ktemp_spindashspeed = READFIXED(save_p); + players[i].ktemp_spindashboost = READUINT8(save_p); + + players[i].ktemp_numboosts = READUINT8(save_p); + players[i].ktemp_boostpower = READFIXED(save_p); + players[i].ktemp_speedboost = READFIXED(save_p); + players[i].ktemp_accelboost = READFIXED(save_p); + players[i].ktemp_handleboost = READFIXED(save_p); + players[i].ktemp_boostangle = READANGLE(save_p); + + players[i].ktemp_draftpower = READFIXED(save_p); + players[i].ktemp_draftleeway = READUINT16(save_p); + players[i].ktemp_lastdraft = READSINT8(save_p); + + players[i].ktemp_itemroulette = READUINT16(save_p); + players[i].ktemp_roulettetype = READUINT8(save_p); + + players[i].ktemp_itemtype = READSINT8(save_p); + players[i].ktemp_itemamount = READUINT8(save_p); + players[i].ktemp_throwdir = READSINT8(save_p); + + players[i].ktemp_sadtimer = READUINT8(save_p); + + players[i].rings = READSINT8(save_p); + players[i].ktemp_pickuprings = READUINT8(save_p); + players[i].ktemp_ringdelay = READUINT8(save_p); + players[i].ktemp_ringboost = READUINT16(save_p); + players[i].ktemp_sparkleanim = READUINT8(save_p); + players[i].ktemp_superring = READUINT8(save_p); + + players[i].ktemp_curshield = READUINT8(save_p); + players[i].ktemp_bubblecool = READUINT8(save_p); + players[i].ktemp_bubbleblowup = READUINT8(save_p); + players[i].ktemp_flamedash = READUINT16(save_p); + players[i].ktemp_flamemeter = READUINT16(save_p); + players[i].ktemp_flamelength = READUINT8(save_p); + + players[i].ktemp_hyudorotimer = READUINT16(save_p); + players[i].ktemp_stealingtimer = READSINT8(save_p); + + players[i].ktemp_sneakertimer = READUINT16(save_p); + players[i].ktemp_numsneakers = READUINT8(save_p); + players[i].ktemp_floorboost = READUINT8(save_p); + + players[i].ktemp_growshrinktimer = READINT16(save_p); + players[i].ktemp_rocketsneakertimer = READUINT16(save_p); + players[i].ktemp_invincibilitytimer = READUINT16(save_p); + + players[i].ktemp_eggmanexplode = READUINT8(save_p); + players[i].ktemp_eggmanblame = READSINT8(save_p); + + players[i].ktemp_bananadrag = READUINT8(save_p); + + players[i].ktemp_lastjawztarget = READSINT8(save_p); + players[i].ktemp_jawztargetdelay = READUINT8(save_p); players[i].trickpanel = READUINT8(save_p); - players[i].trickdelay = READUINT8(save_p); players[i].trickmomx = READUINT32(save_p); players[i].trickmomy = READUINT32(save_p); players[i].trickmomz = READUINT32(save_p); + players[i].roundscore = READUINT32(save_p); + players[i].ktemp_emeralds = READUINT8(save_p); players[i].bumpers = READUINT8(save_p); players[i].karmadelay = READINT16(save_p); - players[i].eliminated = (boolean)READUINT8(save_p); - - players[i].tumbleBounces = READUINT8(save_p); - players[i].tumbleHeight = READUINT16(save_p); - players[i].tumbleLastBounce = (boolean)READUINT8(save_p); - players[i].tumbleSound = (boolean)READUINT8(save_p); + players[i].spheres = READINT16(save_p); players[i].glanceDir = READSINT8(save_p); diff --git a/src/p_saveg.h b/src/p_saveg.h index a938b4791..27865bf50 100644 --- a/src/p_saveg.h +++ b/src/p_saveg.h @@ -33,7 +33,6 @@ typedef struct UINT8 skin; INT32 score; INT32 lives; - INT32 continues; UINT16 emeralds; UINT8 numgameovers; } savedata_t; diff --git a/src/p_setup.c b/src/p_setup.c index 9ce5ca374..87bcc9595 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -758,7 +758,7 @@ void P_ReloadRings(void) else if (mt->type >= 600 && mt->type <= 609) // Item patterns { mt->mobj = NULL; - P_SpawnItemPattern(mt, true); + P_SpawnItemPattern(mt); } } for (i = 0; i < numHoops; i++) @@ -867,7 +867,7 @@ static void P_SpawnMapThings(boolean spawnemblems) mt->mobj = NULL; if (mt->type >= 600 && mt->type <= 609) // item patterns - P_SpawnItemPattern(mt, false); + P_SpawnItemPattern(mt); else if (mt->type == 1705 || mt->type == 1713) // hoops P_SpawnHoop(mt); else // Everything else @@ -1277,7 +1277,6 @@ static void P_LoadSidedefs(UINT8 *data) case 335: // Trigger linedef executor: Object dye - Each time case 336: // Trigger linedef executor: Object dye - Once case 425: // Calls P_SetMobjState on calling mobj - case 434: // Custom Power case 442: // Calls P_SetMobjState on mobjs of a given type in the tagged sectors case 461: // Spawns an object on the map based on texture offsets case 463: // Colorizes an object @@ -3449,42 +3448,13 @@ static void P_InitLevelSettings(void) p++; if (grandprixinfo.gp == false) - { players[i].lives = 3; - players[i].xtralife = 0; - players[i].totalring = 0; - } - players[i].realtime = racecountdown = exitcountdown = 0; - curlap = bestlap = 0; // SRB2Kart - - players[i].lostlife = false; - players[i].gotcontinue = false; - - players[i].deadtimer = players[i].numboxes = players[i].laps = 0; - players[i].aiming = 0; - players[i].pflags &= ~PF_GAMETYPEOVER; + G_PlayerReborn(i, true); } racecountdown = exitcountdown = exitfadestarted = 0; - - for (i = 0; i < MAXPLAYERS; i++) - { - G_PlayerReborn(i, true); - - // obliteration station... - players[i].numboxes = players[i].totalring =\ - players[i].laps = players[i].marescore = players[i].lastmarescore =\ - players[i].mare = players[i].exiting = 0; - - players[i].drillmeter = 40*20; - - // hit these too - players[i].pflags &= ~(PF_GAMETYPEOVER); - - // Wipe follower from existence to avoid crashes - players[i].follower = NULL; - } + curlap = bestlap = 0; // SRB2Kart // SRB2Kart: map load variables if (grandprixinfo.gp == true) @@ -4044,7 +4014,6 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) if (!fromnetsave && savedata.lives > 0) { numgameovers = savedata.numgameovers; - players[consoleplayer].continues = savedata.continues; players[consoleplayer].lives = savedata.lives; players[consoleplayer].score = savedata.score; emeralds = savedata.emeralds; diff --git a/src/p_setup.h b/src/p_setup.h index 6caa453e4..0a7587ec0 100644 --- a/src/p_setup.h +++ b/src/p_setup.h @@ -116,7 +116,6 @@ void P_DeleteFlickies(INT16 i); // Needed for NiGHTS void P_ReloadRings(void); -void P_SwitchSpheresBonusMode(boolean bonustime); void P_DeleteGrades(INT16 i); void P_AddGradesForMare(INT16 i, UINT8 mare, char *gtext); UINT8 P_GetGrade(UINT32 pscore, INT16 map, UINT8 mare); diff --git a/src/p_slopes.c b/src/p_slopes.c index 80b1a79e1..1749e2369 100644 --- a/src/p_slopes.c +++ b/src/p_slopes.c @@ -848,9 +848,6 @@ void P_SlopeLaunch(mobj_t *mo) //CONS_Printf("Launched off of slope.\n"); mo->standingslope = NULL; - - if (mo->player) - mo->player->powers[pw_justlaunched] = 1; } // @@ -895,9 +892,7 @@ void P_HandleSlopeLanding(mobj_t *thing, pslope_t *slope) { thing->standingslope = slope; P_SetPitchRollFromSlope(thing, slope); - - if (!thing->player || !(thing->player->pflags & PF_BOUNCING)) - thing->momz = -P_MobjFlip(thing); + thing->momz = -P_MobjFlip(thing); } return; } @@ -913,8 +908,7 @@ void P_HandleSlopeLanding(mobj_t *thing, pslope_t *slope) thing->momy = mom.y; thing->standingslope = slope; P_SetPitchRollFromSlope(thing, slope); - if (!thing->player || !(thing->player->pflags & PF_BOUNCING)) - thing->momz = -P_MobjFlip(thing); + thing->momz = -P_MobjFlip(thing); } } diff --git a/src/p_spec.c b/src/p_spec.c index 063d7e23e..a87ecb467 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1552,7 +1552,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller case 336: // object dye - once { INT32 triggercolor = (INT32)sides[triggerline->sidenum[0]].toptexture; - UINT16 color = (actor->player ? actor->player->powers[pw_dye] : actor->color); + UINT16 color = (actor->player ? actor->player->ktemp_dye : actor->color); boolean invert = (triggerline->flags & ML_NOCLIMB ? true : false); if (invert ^ (triggercolor != color)) @@ -1872,7 +1872,7 @@ static void K_HandleLapIncrement(player_t *player) player->karthud[khud_laphand] = 3; else { - if (nump > 2 && player->kartstuff[k_position] == 1) // 1st place in 1v1 uses thumbs up + if (nump > 2 && player->ktemp_position == 1) // 1st place in 1v1 uses thumbs up player->karthud[khud_laphand] = 1; else player->karthud[khud_laphand] = 2; @@ -1895,7 +1895,7 @@ static void K_HandleLapIncrement(player_t *player) if (rainbowstartavailable == true) { S_StartSound(player->mo, sfx_s23c); - player->kartstuff[k_startboost] = 125; + player->ktemp_startboost = 125; K_SpawnDriftBoostExplosion(player, 3); rainbowstartavailable = false; } @@ -1920,7 +1920,7 @@ static void K_HandleLapIncrement(player_t *player) } else { - if ((player->laps > (UINT8)(cv_numlaps.value)) && (player->kartstuff[k_position] == 1)) + if ((player->laps > (UINT8)(cv_numlaps.value)) && (player->ktemp_position == 1)) { // opponent finished S_StartSound(NULL, sfx_s253); @@ -2011,7 +2011,7 @@ static void K_HandleLapDecrement(player_t *player) void P_CrossSpecialLine(line_t *line, INT32 side, mobj_t *thing) { // only used for the players currently - if (!(thing && thing->player && !thing->player->spectator && !(thing->player->pflags & PF_GAMETYPEOVER))) + if (!(thing && thing->player && !thing->player->spectator && !(thing->player->pflags & PF_NOCONTEST))) return; { player_t *player = thing->player; @@ -2779,27 +2779,6 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) mo->flags2 |= MF2_OBJECTFLIP; break; - case 434: // Custom Power - if (mo && mo->player) - { - mobj_t *dummy = P_SpawnMobj(mo->x, mo->y, mo->z, MT_NULL); - - var1 = sides[line->sidenum[0]].toptexture; //(line->dx>>FRACBITS)-1; - - if (line->sidenum[1] != 0xffff && line->flags & ML_BLOCKPLAYERS) // read power from back sidedef - var2 = sides[line->sidenum[1]].toptexture; - else if (line->flags & ML_NOCLIMB) // 'Infinite' - var2 = UINT16_MAX; - else - var2 = sides[line->sidenum[0]].textureoffset>>FRACBITS; - - P_SetTarget(&dummy->target, mo); - A_CustomPower(dummy); - - P_RemoveMobj(dummy); - } - break; - case 435: // Change scroller direction { scroll_t *scroller; @@ -2865,7 +2844,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) fractime = 1; //instantly wears off upon leaving if (line->flags & ML_NOCLIMB) fractime |= 1<<15; //more crazy &ing, as if music stuff wasn't enough - mo->player->powers[pw_nocontrol] = fractime; + mo->player->ktemp_nocontrol = fractime; } break; @@ -3896,7 +3875,7 @@ void P_SetupSignExit(player_t *player) thinker_t *think; INT32 numfound = 0; - if (player->kartstuff[k_position] != 1) + if (player->ktemp_position != 1) return; for (; node; node = node->m_thinglist_next) @@ -4538,7 +4517,7 @@ DoneSection2: } player->trickpanel = 1; - player->trickdelay = 1; + player->pflags |= PF_TRICKDELAY; K_DoPogoSpring(player->mo, upwards, 1); // Reduce speed @@ -4560,9 +4539,9 @@ DoneSection2: break; case 5: // Speed pad - if (player->kartstuff[k_floorboost] != 0) + if (player->ktemp_floorboost != 0) { - player->kartstuff[k_floorboost] = 2; + player->ktemp_floorboost = 2; break; } @@ -4594,9 +4573,9 @@ DoneSection2: P_InstaThrust(player->mo, lineangle, max(linespeed, 2*playerspeed)); - player->kartstuff[k_dashpadcooldown] = TICRATE/3; + player->ktemp_dashpadcooldown = TICRATE/3; player->trickpanel = 0; - player->kartstuff[k_floorboost] = 2; + player->ktemp_floorboost = 2; S_StartSound(player->mo, sfx_cdfm62); } break; @@ -4669,10 +4648,10 @@ DoneSection2: case 6: // SRB2kart 190117 - Sneaker Panel if (roversector || P_MobjReadyToTrigger(player->mo, sector)) { - if (!player->kartstuff[k_floorboost]) - player->kartstuff[k_floorboost] = 3; + if (!player->ktemp_floorboost) + player->ktemp_floorboost = 3; else - player->kartstuff[k_floorboost] = 2; + player->ktemp_floorboost = 2; K_DoSneaker(player, 0); } break; @@ -4688,10 +4667,7 @@ DoneSection2: mobj_t *waypoint = NULL; angle_t an; - if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->powers[pw_carry] == CR_ZOOMTUBE) - break; - - if (player->powers[pw_ignorelatch] & (1<<15)) + if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->ktemp_carry == CR_ZOOMTUBE) break; // Find line #3 tagged to this sector @@ -4731,10 +4707,8 @@ DoneSection2: break; // behind back P_SetTarget(&player->mo->tracer, waypoint); - player->powers[pw_carry] = CR_ZOOMTUBE; + player->ktemp_carry = CR_ZOOMTUBE; player->speed = speed; - - player->pflags &= ~(PF_SLIDING); } break; @@ -4746,7 +4720,7 @@ DoneSection2: mobj_t *waypoint = NULL; angle_t an; - if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->powers[pw_carry] == CR_ZOOMTUBE) + if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->ktemp_carry == CR_ZOOMTUBE) break; // Find line #11 tagged to this sector @@ -4786,7 +4760,7 @@ DoneSection2: break; // behind back P_SetTarget(&player->mo->tracer, waypoint); - player->powers[pw_carry] = CR_ZOOMTUBE; + player->ktemp_carry = CR_ZOOMTUBE; player->speed = speed; } break; @@ -8527,8 +8501,8 @@ void T_Pusher(pusher_t *p) continue; if (thing->player && (thing->state == &states[thing->info->painstate]) - && (thing->player->powers[pw_flashing] > (K_GetKartFlashing(thing->player)/4)*3 - && thing->player->powers[pw_flashing] <= K_GetKartFlashing(thing->player))) + && (thing->player->ktemp_flashing > (K_GetKartFlashing(thing->player)/4)*3 + && thing->player->ktemp_flashing <= K_GetKartFlashing(thing->player))) continue; inFOF = touching = moved = false; @@ -8656,11 +8630,11 @@ void T_Pusher(pusher_t *p) if (moved) { - if (p->slider && thing->player) + if (p->slider && thing->player && !thing->player->ktemp_carry) { P_ResetPlayer (thing->player); - thing->player->pflags |= PF_SLIDING; + thing->player->ktemp_carry = CR_SLIDING; thing->angle = R_PointToAngle2 (0, 0, xspeed<<(FRACBITS-PUSH_FACTOR), yspeed<<(FRACBITS-PUSH_FACTOR)); if (!demo.playback) diff --git a/src/p_tick.c b/src/p_tick.c index b79a1fa29..6157d0bda 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -355,7 +355,7 @@ static void P_DoAutobalanceTeams(void) INT32 i=0; INT32 red=0, blue=0; INT32 redarray[MAXPLAYERS], bluearray[MAXPLAYERS]; - INT32 redflagcarrier = 0, blueflagcarrier = 0; + //INT32 redflagcarrier = 0, blueflagcarrier = 0; INT32 totalred = 0, totalblue = 0; NetPacket.value.l = NetPacket.value.b = 0; @@ -375,29 +375,29 @@ static void P_DoAutobalanceTeams(void) { if (players[i].ctfteam == 1) { - if (!players[i].gotflag) + //if (!players[i].gotflag) { redarray[red] = i; //store the player's node. red++; } - else - redflagcarrier++; + /*else + redflagcarrier++;*/ } else { - if (!players[i].gotflag) + //if (!players[i].gotflag) { bluearray[blue] = i; //store the player's node. blue++; } - else - blueflagcarrier++; + /*else + blueflagcarrier++;*/ } } } - totalred = red + redflagcarrier; - totalblue = blue + blueflagcarrier; + totalred = red;// + redflagcarrier; + totalblue = blue;// + blueflagcarrier; if ((abs(totalred - totalblue) > max(1, (totalred + totalblue) / 8))) { @@ -609,7 +609,6 @@ void P_Ticker(boolean run) } // Run shield positioning - P_RunShields(); P_RunOverlays(); P_UpdateSpecials(); @@ -772,7 +771,6 @@ void P_PreTicker(INT32 frames) LUAh_ThinkFrame(); // Run shield positioning - P_RunShields(); P_RunOverlays(); P_UpdateSpecials(); diff --git a/src/p_user.c b/src/p_user.c index 0ea75e3bf..9ee66800c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -338,7 +338,7 @@ void P_GiveEmerald(boolean spawnObj) P_SetMobjState(emmo, mobjinfo[MT_GOTEMERALD].meleestate + em); // Make sure we're not being carried before our tracer is changed - players[i].powers[pw_carry] = CR_NONE; + players[i].ktemp_carry = CR_NONE; P_SetTarget(&players[i].mo->tracer, emmo); @@ -386,19 +386,6 @@ void P_GiveFinishFlags(player_t *player) } } -#if 0 -// -// P_ResetScore -// -// This is called when your chain is reset. -void P_ResetScore(player_t *player) -{ - // Formally a host for Chaos mode behavior - - player->scoreadd = 0; -} -#endif - // // P_FindLowestLap // @@ -457,11 +444,11 @@ UINT8 P_FindHighestLap(void) // P_PlayerInPain // // Is player in pain?? -// Checks for painstate and pw_flashing, if both found return true +// Checks for painstate and ktemp_flashing, if both found return true // boolean P_PlayerInPain(player_t *player) { - if (player->kartstuff[k_spinouttimer] || (player->tumbleBounces > 0) || (player->pflags & PF_FAULT)) + if (player->ktemp_spinouttimer || (player->tumbleBounces > 0) || (player->pflags & PF_FAULT)) return true; return false; @@ -475,10 +462,10 @@ void P_ResetPlayer(player_t *player) { //player->pflags &= ~(PF_); - player->powers[pw_carry] = CR_NONE; + player->ktemp_carry = CR_NONE; player->onconveyor = 0; - //player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0; + //player->ktemp_drift = player->ktemp_driftcharge = 0; player->trickpanel = 0; } @@ -531,21 +518,17 @@ void P_GivePlayerLives(player_t *player, INT32 numlives) // Adds to the player's score void P_AddPlayerScore(player_t *player, UINT32 amount) { - //UINT32 oldscore; - if (!((gametyperules & GTR_BUMPERS))) return; if (player->exiting) // srb2kart return; - //oldscore = player->score; - // Don't go above MAXSCORE. - if (player->marescore + amount < MAXSCORE) - player->marescore += amount; + if (player->roundscore + amount < MAXSCORE) + player->roundscore += amount; else - player->marescore = MAXSCORE; + player->roundscore = MAXSCORE; } // @@ -561,8 +544,6 @@ void P_PlayLivesJingle(player_t *player) else { P_PlayJingle(player, JT_1UP); - if (player) - player->powers[pw_extralife] = extralifetics + 1; strlcpy(S_sfx[sfx_None].caption, "One-up", 7); S_StartCaption(sfx_None, -1, extralifetics+1); } @@ -613,38 +594,38 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) switch(status) { case JT_1UP: // Extra life - result = (players[i].powers[pw_extralife] > 1); + result = false; //(players[i].powers[pw_extralife] > 1); break; case JT_SHOES: // Speed shoes - if (players[i].powers[pw_sneakers] > 1 && !players[i].powers[pw_super]) + /*if (players[i].powers[pw_sneakers] > 1 && !players[i].powers[pw_super]) { //strlcpy(S_sfx[sfx_None].caption, "Speed shoes", 12); //S_StartCaption(sfx_None, -1, players[i].powers[pw_sneakers]); result = true; } - else + else*/ result = false; break; case JT_INV: // Invincibility case JT_MINV: // Mario Invincibility - if (players[i].powers[pw_invulnerability] > 1) + /*if (players[i].powers[pw_invulnerability] > 1) { //strlcpy(S_sfx[sfx_None].caption, "Invincibility", 14); //S_StartCaption(sfx_None, -1, players[i].powers[pw_invulnerability]); result = true; } - else + else*/ result = false; break; case JT_DROWN: // Drowning - result = (players[i].powers[pw_underwater] && players[i].powers[pw_underwater] <= 11*TICRATE + 1); + result = false; //(players[i].powers[pw_underwater] && players[i].powers[pw_underwater] <= 11*TICRATE + 1); break; case JT_SUPER: // Super Sonic - result = (players[i].powers[pw_super]); + result = false; //(players[i].powers[pw_super]); break; case JT_GOVER: // Game Over @@ -653,7 +634,7 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) case JT_NIGHTSTIMEOUT: // NiGHTS Time Out (10 seconds) case JT_SSTIMEOUT: - result = (players[i].nightstime && players[i].nightstime <= 10*TICRATE); + result = false; //(players[i].nightstime && players[i].nightstime <= 10*TICRATE); break; case JT_OTHER: // Other state @@ -675,7 +656,7 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) void P_PlayRinglossSound(mobj_t *source) { - if (source->player && K_GetShieldFromItem(source->player->kartstuff[k_itemtype]) != KSHIELD_NONE) + if (source->player && K_GetShieldFromItem(source->player->ktemp_itemtype) != KSHIELD_NONE) S_StartSound(source, sfx_s1a3); // Shield hit (no ring loss) else if (source->player && source->player->rings <= 0) S_StartSound(source, sfx_s1a6); // Ring debt (lessened ring loss) @@ -716,19 +697,19 @@ boolean P_EndingMusic(player_t *player) // Check for if this is valid or not if (r_splitscreen) { - if (!((players[displayplayers[0]].exiting || (players[displayplayers[0]].pflags & PF_GAMETYPEOVER)) - || (players[displayplayers[1]].exiting || (players[displayplayers[1]].pflags & PF_GAMETYPEOVER)) - || ((r_splitscreen < 2) && (players[displayplayers[2]].exiting || (players[displayplayers[2]].pflags & PF_GAMETYPEOVER))) - || ((r_splitscreen < 3) && (players[displayplayers[3]].exiting || (players[displayplayers[3]].pflags & PF_GAMETYPEOVER))))) + if (!((players[displayplayers[0]].exiting || (players[displayplayers[0]].pflags & PF_NOCONTEST)) + || (players[displayplayers[1]].exiting || (players[displayplayers[1]].pflags & PF_NOCONTEST)) + || ((r_splitscreen < 2) && (players[displayplayers[2]].exiting || (players[displayplayers[2]].pflags & PF_NOCONTEST))) + || ((r_splitscreen < 3) && (players[displayplayers[3]].exiting || (players[displayplayers[3]].pflags & PF_NOCONTEST))))) return false; bestlocalplayer = &players[displayplayers[0]]; - bestlocalpos = ((players[displayplayers[0]].pflags & PF_GAMETYPEOVER) ? MAXPLAYERS+1 : players[displayplayers[0]].kartstuff[k_position]); + bestlocalpos = ((players[displayplayers[0]].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[displayplayers[0]].ktemp_position); #define setbests(p) \ - if (((players[p].pflags & PF_GAMETYPEOVER) ? MAXPLAYERS+1 : players[p].kartstuff[k_position]) < bestlocalpos) \ + if (((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].ktemp_position) < bestlocalpos) \ { \ bestlocalplayer = &players[p]; \ - bestlocalpos = ((players[p].pflags & PF_GAMETYPEOVER) ? MAXPLAYERS+1 : players[p].kartstuff[k_position]); \ + bestlocalpos = ((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].ktemp_position); \ } setbests(displayplayers[1]); if (r_splitscreen > 1) @@ -739,11 +720,11 @@ boolean P_EndingMusic(player_t *player) } else { - if (!(player->exiting || (player->pflags & PF_GAMETYPEOVER))) + if (!(player->exiting || (player->pflags & PF_NOCONTEST))) return false; bestlocalplayer = player; - bestlocalpos = ((player->pflags & PF_GAMETYPEOVER) ? MAXPLAYERS+1 : player->kartstuff[k_position]); + bestlocalpos = ((player->pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : player->ktemp_position); } if ((gametyperules & GTR_CIRCUIT) && bestlocalpos == MAXPLAYERS+1) @@ -814,10 +795,10 @@ void P_RestoreMusic(player_t *player) #define setbests(p) \ if (players[p].playerstate == PST_LIVE) \ { \ - if (players[p].kartstuff[k_invincibilitytimer] > bestlocaltimer) \ - { wantedmus = 1; bestlocaltimer = players[p].kartstuff[k_invincibilitytimer]; } \ - else if (players[p].kartstuff[k_growshrinktimer] > bestlocaltimer) \ - { wantedmus = 2; bestlocaltimer = players[p].kartstuff[k_growshrinktimer]; } \ + if (players[p].ktemp_invincibilitytimer > bestlocaltimer) \ + { wantedmus = 1; bestlocaltimer = players[p].ktemp_invincibilitytimer; } \ + else if (players[p].ktemp_growshrinktimer > bestlocaltimer) \ + { wantedmus = 2; bestlocaltimer = players[p].ktemp_growshrinktimer; } \ } setbests(displayplayers[0]); setbests(displayplayers[1]); @@ -831,9 +812,9 @@ void P_RestoreMusic(player_t *player) { if (player->playerstate == PST_LIVE) { - if (player->kartstuff[k_invincibilitytimer] > 1) + if (player->ktemp_invincibilitytimer > 1) wantedmus = 1; - else if (player->kartstuff[k_growshrinktimer] > 1) + else if (player->ktemp_growshrinktimer > 1) wantedmus = 2; } } @@ -897,7 +878,7 @@ boolean P_IsObjectInGoop(mobj_t *mo) // boolean P_IsObjectOnGround(mobj_t *mo) { - if (P_IsObjectInGoop(mo) && !(mo->player && mo->player->pflags & PF_BOUNCING)) + if (P_IsObjectInGoop(mo)) { /* // It's a crazy hack that checking if you're on the ground @@ -1104,170 +1085,6 @@ boolean P_IsDisplayPlayer(player_t *player) return false; } -// -// P_SpawnShieldOrb -// -// Spawns the shield orb on the player -// depending on which shield they are -// supposed to have. -// -void P_SpawnShieldOrb(player_t *player) -{ - mobjtype_t orbtype; - thinker_t *th; - mobj_t *shieldobj, *ov; - -#ifdef PARANOIA - if (!player->mo) - I_Error("P_SpawnShieldOrb: player->mo is NULL!\n"); -#endif - - // SRB2Kart - // TODO: Make our shields use this system - - if (LUAh_ShieldSpawn(player)) - return; - - if (player->powers[pw_shield] & SH_FORCE) - orbtype = MT_FORCE_ORB; - else switch (player->powers[pw_shield] & SH_NOSTACK) - { - case SH_WHIRLWIND: - orbtype = MT_WHIRLWIND_ORB; - break; - case SH_ATTRACT: - orbtype = MT_ATTRACT_ORB; - break; - case SH_ELEMENTAL: - orbtype = MT_ELEMENTAL_ORB; - break; - case SH_ARMAGEDDON: - orbtype = MT_ARMAGEDDON_ORB; - break; - case SH_PITY: - case SH_PINK: // PITY IN PINK - orbtype = MT_PITY_ORB; - break; - case SH_FLAMEAURA: - orbtype = MT_FLAMEAURA_ORB; - break; - case SH_BUBBLEWRAP: - orbtype = MT_BUBBLEWRAP_ORB; - break; - case SH_THUNDERCOIN: - orbtype = MT_THUNDERCOIN_ORB; - break; - default: - return; - } - - // blaze through the thinkers to see if an orb already exists! - for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) - { - if (th->function.acp1 == (actionf_p1)P_RemoveThinkerDelayed) - continue; - - shieldobj = (mobj_t *)th; - - if (shieldobj->type == orbtype && shieldobj->target == player->mo) - P_RemoveMobj(shieldobj); //kill the old one(s) - } - - shieldobj = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, orbtype); - shieldobj->flags2 |= MF2_SHIELD; - P_SetTarget(&shieldobj->target, player->mo); - if ((player->powers[pw_shield] & SH_NOSTACK) == SH_PINK) - { - shieldobj->color = SKINCOLOR_PINK; - shieldobj->colorized = true; - } - else - shieldobj->color = (UINT16)shieldobj->info->painchance; - shieldobj->threshold = (player->powers[pw_shield] & SH_FORCE) ? SH_FORCE : (player->powers[pw_shield] & SH_NOSTACK); - - if (shieldobj->info->seestate) - { - ov = P_SpawnMobj(shieldobj->x, shieldobj->y, shieldobj->z, MT_OVERLAY); - P_SetTarget(&ov->target, shieldobj); - P_SetMobjState(ov, shieldobj->info->seestate); - P_SetTarget(&shieldobj->tracer, ov); - } - if (shieldobj->info->meleestate) - { - ov = P_SpawnMobj(shieldobj->x, shieldobj->y, shieldobj->z, MT_OVERLAY); - P_SetTarget(&ov->target, shieldobj); - P_SetMobjState(ov, shieldobj->info->meleestate); - } - if (shieldobj->info->missilestate) - { - ov = P_SpawnMobj(shieldobj->x, shieldobj->y, shieldobj->z, MT_OVERLAY); - P_SetTarget(&ov->target, shieldobj); - P_SetMobjState(ov, shieldobj->info->missilestate); - } - if (player->powers[pw_shield] & SH_FORCE) - { - //Copy and pasted from P_ShieldLook in p_mobj.c - shieldobj->movecount = (player->powers[pw_shield] & SH_FORCEHP); - if (shieldobj->movecount < 1) - { - if (shieldobj->info->painstate) - P_SetMobjState(shieldobj,shieldobj->info->painstate); - else - shieldobj->renderflags |= RF_GHOSTLY; - } - } -} - -// -// P_SwitchShield -// -// Handles the possibility of switching between -// the non-stack layer of shields thoroughly, -// then adds the desired one. -// -void P_SwitchShield(player_t *player, UINT16 shieldtype) -{ - boolean donthavealready; - - donthavealready = (shieldtype & SH_FORCE) - ? (!(player->powers[pw_shield] & SH_FORCE) || (player->powers[pw_shield] & SH_FORCEHP) < (shieldtype & ~SH_FORCE)) - : ((player->powers[pw_shield] & SH_NOSTACK) != shieldtype); - - if (donthavealready) - { - boolean stopshieldability = (shieldtype & SH_FORCE) - ? (!(player->powers[pw_shield] & SH_FORCE)) - : true; - - // Just in case. - if (stopshieldability && player->pflags & PF_SHIELDABILITY) - { - player->pflags &= ~(PF_SPINNING|PF_SHIELDABILITY); // They'll still have PF_THOKKED... - player->homing = 0; - } - - player->powers[pw_shield] = shieldtype|(player->powers[pw_shield] & SH_STACK); - P_SpawnShieldOrb(player); - - if (shieldtype & SH_PROTECTWATER) - { - if (player->powers[pw_underwater] && player->powers[pw_underwater] <= 12*TICRATE + 1) - { - player->powers[pw_underwater] = 0; - P_RestoreMusic(player); - } - else - player->powers[pw_underwater] = 0; - - if (player->powers[pw_spacetime] > 1) - { - player->powers[pw_spacetime] = 0; - P_RestoreMusic(player); - } - } - } -} - // // P_SpawnGhostMobj // @@ -1414,8 +1231,6 @@ void P_DoPlayerExit(player_t *player) } } - player->powers[pw_underwater] = 0; - player->powers[pw_spacetime] = 0; player->karthud[khud_cardanimation] = 0; // srb2kart: reset battle animation if (player == &players[consoleplayer]) @@ -1779,19 +1594,16 @@ static void P_CheckQuicksand(player_t *player) // static void P_CheckInvincibilityTimer(player_t *player) { - if (!player->powers[pw_invulnerability] && !player->kartstuff[k_invincibilitytimer]) + if (!player->ktemp_invincibilitytimer) return; player->mo->color = (UINT16)(SKINCOLOR_PINK + (leveltime % (numskincolors - SKINCOLOR_PINK))); // Resume normal music stuff. - if (player->powers[pw_invulnerability] == 1 || player->kartstuff[k_invincibilitytimer] == 1) + if (player->ktemp_invincibilitytimer == 1) { - if (!player->powers[pw_super]) - { - player->mo->color = player->skincolor; - G_GhostAddColor((INT32) (player - players), GHC_NORMAL); - } + player->mo->color = player->skincolor; + G_GhostAddColor((INT32) (player - players), GHC_NORMAL); P_RestoreMusic(player); } @@ -1809,12 +1621,12 @@ static void P_DoBubbleBreath(player_t *player) fixed_t z = player->mo->z; mobj_t *bubble = NULL; - if (!(player->mo->eflags & MFE_UNDERWATER) || (player->powers[pw_shield] & SH_PROTECTWATER) || player->spectator) + if (!(player->mo->eflags & MFE_UNDERWATER) || player->spectator) return; if (player->charflags & SF_MACHINE) { - if (player->powers[pw_underwater] && P_RandomChance((128-(player->powers[pw_underwater]/4))*FRACUNIT/256)) + if (P_RandomChance(FRACUNIT/5)) { fixed_t r = player->mo->radius>>FRACBITS; x += (P_RandomRange(r, -r)<mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0); - if (player->kartstuff[k_drift] != 0) - movepushangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift]; - else if (player->kartstuff[k_spinouttimer] || player->kartstuff[k_wipeoutslow]) // if spun out, use the boost angle - movepushangle = (angle_t)player->kartstuff[k_boostangle]; + if (player->ktemp_drift != 0) + movepushangle = player->mo->angle-(ANGLE_45/5)*player->ktemp_drift; + else if (player->ktemp_spinouttimer || player->ktemp_wipeoutslow) // if spun out, use the boost angle + movepushangle = (angle_t)player->ktemp_boostangle; else movepushangle = player->mo->angle; @@ -1907,7 +1719,7 @@ static void P_3dMovement(player_t *player) //{ SRB2kart 220217 - Toaster Code for misplaced thrust #if 0 - if (!player->kartstuff[k_drift]) // Not Drifting + if (!player->ktemp_drift) // Not Drifting { angle_t difference = dangle/2; boolean reverse = (dangle >= ANGLE_90); @@ -2125,7 +1937,7 @@ void P_MovePlayer(player_t *player) runspd = FixedMul(runspd, player->mo->movefactor); // Control relinquishing stuff! - if (player->powers[pw_nocontrol]) + if (player->ktemp_nocontrol) player->pflags |= PF_STASIS; // note: don't unset stasis here @@ -2159,7 +1971,7 @@ void P_MovePlayer(player_t *player) UINT8 rollSpeed = max(1, min(8, player->tumbleHeight / 10)); - if (player->tumbleLastBounce == true) + if (player->pflags & PF_TUMBLELASTBOUNCE) spinSpeed = 2; P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); @@ -2167,7 +1979,7 @@ void P_MovePlayer(player_t *player) player->mo->rollangle -= (ANGLE_11hh * rollSpeed); - if (player->tumbleLastBounce == true) + if (player->pflags & PF_TUMBLELASTBOUNCE) { if (abs((signed)(player->mo->angle - player->drawangle)) < ANGLE_22h) player->drawangle = player->mo->angle; @@ -2176,15 +1988,15 @@ void P_MovePlayer(player_t *player) player->mo->rollangle = 0; } } - else if (player->pflags & PF_SLIDING) + else if (player->ktemp_carry == CR_SLIDING) { P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); player->drawangle -= ANGLE_22h; player->mo->rollangle = 0; } - else if ((player->pflags & PF_FAULT) || (player->kartstuff[k_spinouttimer] > 0)) + else if ((player->pflags & PF_FAULT) || (player->ktemp_spinouttimer > 0)) { - UINT16 speed = ((player->pflags & PF_FAULT) ? player->powers[pw_nocontrol] : player->kartstuff[k_spinouttimer])/8; + UINT16 speed = ((player->pflags & PF_FAULT) ? player->ktemp_nocontrol : player->ktemp_spinouttimer)/8; if (speed > 8) speed = 8; else if (speed < 1) @@ -2203,7 +2015,7 @@ void P_MovePlayer(player_t *player) { P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); - if (((player->powers[pw_nocontrol] + 5) % 20) < 10) + if (((player->ktemp_nocontrol + 5) % 20) < 10) player->drawangle += ANGLE_11hh; else player->drawangle -= ANGLE_11hh; @@ -2226,13 +2038,13 @@ void P_MovePlayer(player_t *player) { player->drawangle = player->mo->angle; - if (player->aizDriftTurn) + if (player->aizdriftturn) { - player->drawangle += player->aizDriftTurn; + player->drawangle += player->aizdriftturn; } - else if (player->kartstuff[k_drift] != 0) + else if (player->ktemp_drift != 0) { - INT32 a = (ANGLE_45 / 5) * player->kartstuff[k_drift]; + INT32 a = (ANGLE_45 / 5) * player->ktemp_drift; player->drawangle += a; } } @@ -2246,13 +2058,13 @@ void P_MovePlayer(player_t *player) // Drifting sound // Start looping the sound now. - if (leveltime % 50 == 0 && onground && player->kartstuff[k_drift] != 0) + if (leveltime % 50 == 0 && onground && player->ktemp_drift != 0) S_StartSound(player->mo, sfx_drift); // Leveltime being 50 might take a while at times. We'll start it up once, isntantly. - else if (!S_SoundPlaying(player->mo, sfx_drift) && onground && player->kartstuff[k_drift] != 0) + else if (!S_SoundPlaying(player->mo, sfx_drift) && onground && player->ktemp_drift != 0) S_StartSound(player->mo, sfx_drift); // Ok, we'll stop now. - else if (player->kartstuff[k_drift] == 0) + else if (player->ktemp_drift == 0) S_StopSoundByID(player->mo, sfx_drift); K_MoveKartPlayer(player, onground); @@ -2262,38 +2074,10 @@ void P_MovePlayer(player_t *player) //GAMEPLAY STUFF// ////////////////// - // If you're running fast enough, you can create splashes as you run in shallow water. -#if 0 - if (!player->climbing - && ((!(player->mo->eflags & MFE_VERTICALFLIP) && player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop) + if (((!(player->mo->eflags & MFE_VERTICALFLIP) && player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop) || (player->mo->eflags & MFE_VERTICALFLIP && player->mo->z + player->mo->height >= player->mo->waterbottom && player->mo->z <= player->mo->waterbottom)) - && (player->speed > runspd || (player->pflags & PF_STARTDASH)) - && leveltime % (TICRATE/7) == 0 && player->mo->momz == 0 && !(player->pflags & PF_SLIDING) && !player->spectator) - { - mobjtype_t splishtype = (player->mo->eflags & MFE_TOUCHLAVA) ? MT_LAVASPLISH : MT_SPLISH; - mobj_t *water = P_SpawnMobj(player->mo->x - P_ReturnThrustX(NULL, player->mo->angle, player->mo->radius), player->mo->y - P_ReturnThrustY(NULL, player->mo->angle, player->mo->radius), - ((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[splishtype].height, player->mo->scale) : player->mo->watertop), splishtype); - if (player->mo->eflags & MFE_GOOWATER) - S_StartSound(water, sfx_ghit); - else if (player->mo->eflags & MFE_TOUCHLAVA) - S_StartSound(water, sfx_splash); - else - S_StartSound(water, sfx_wslap); - if (player->mo->eflags & MFE_VERTICALFLIP) - { - water->flags2 |= MF2_OBJECTFLIP; - water->eflags |= MFE_VERTICALFLIP; - } - water->destscale = player->mo->scale; - P_SetScale(water, player->mo->scale); - } -#endif - - if (!player->climbing - && ((!(player->mo->eflags & MFE_VERTICALFLIP) && player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop) - || (player->mo->eflags & MFE_VERTICALFLIP && player->mo->z + player->mo->height >= player->mo->waterbottom && player->mo->z <= player->mo->waterbottom)) - && (player->speed > runspd || (player->pflags & PF_STARTDASH)) - && player->mo->momz == 0 && !(player->pflags & PF_SLIDING) && !player->spectator) + && (player->speed > runspd) + && player->mo->momz == 0 && player->ktemp_carry != CR_SLIDING && !player->spectator) { fixed_t trailScale = FixedMul(FixedDiv(player->speed - runspd, K_GetKartSpeed(player, false) - runspd), mapobjectscale); fixed_t playerTopSpeed = K_GetKartSpeed(player, false); @@ -2377,14 +2161,14 @@ void P_MovePlayer(player_t *player) //////////////////////////// // SRB2kart - Drifting smoke and fire - if ((player->kartstuff[k_sneakertimer] || player->kartstuff[k_flamedash]) + if ((player->ktemp_sneakertimer || player->ktemp_flamedash) && onground && (leveltime & 1)) K_SpawnBoostTrail(player); - if (player->kartstuff[k_invincibilitytimer] > 0) + if (player->ktemp_invincibilitytimer > 0) K_SpawnSparkleTrail(player->mo); - if (player->kartstuff[k_wipeoutslow] > 1 && (leveltime & 1)) + if (player->ktemp_wipeoutslow > 1 && (leveltime & 1)) K_SpawnWipeoutTrail(player->mo, false); K_DriftDustHandling(player->mo); @@ -2437,7 +2221,7 @@ static void P_DoZoomTube(player_t *player) else reverse = true; - player->powers[pw_flashing] = 1; + player->ktemp_flashing = 1; speed = abs(player->speed); @@ -2495,7 +2279,7 @@ static void P_DoZoomTube(player_t *player) else { P_SetTarget(&player->mo->tracer, NULL); // Else, we just let them fly. - player->powers[pw_carry] = CR_NONE; + player->ktemp_carry = CR_NONE; CONS_Debug(DBG_GAMELOGIC, "Next waypoint not found, releasing from track...\n"); } @@ -2645,7 +2429,7 @@ static void P_DeathThink(player_t *player) if (player->deadtimer < INT32_MAX) player->deadtimer++; - if ((player->pflags & PF_GAMETYPEOVER) && (gametyperules & GTR_CIRCUIT)) + if ((player->pflags & PF_NOCONTEST) && (gametyperules & GTR_CIRCUIT)) { player->karthud[khud_timeovercam]++; @@ -2660,13 +2444,13 @@ static void P_DeathThink(player_t *player) K_KartPlayerHUDUpdate(player); - if (player->lives > 0 && !(player->pflags & PF_GAMETYPEOVER) && player->deadtimer > TICRATE) + if (player->lives > 0 && !(player->pflags & PF_NOCONTEST) && player->deadtimer > TICRATE) { player->playerstate = PST_REBORN; } // Keep time rolling - if (!(exitcountdown && !racecountdown) && !(player->exiting || mapreset) && !(player->pflags & PF_GAMETYPEOVER) && !stoppedclock) + if (!(exitcountdown && !racecountdown) && !(player->exiting || mapreset) && !(player->pflags & PF_NOCONTEST) && !stoppedclock) { if (leveltime >= starttime) { @@ -3094,7 +2878,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall || (leveltime < introtime)); // Kart intro cam #endif - if ((player->pflags & PF_GAMETYPEOVER) && (gametyperules & GTR_CIRCUIT)) // 1 for momentum keep, 2 for turnaround + if ((player->pflags & PF_NOCONTEST) && (gametyperules & GTR_CIRCUIT)) // 1 for momentum keep, 2 for turnaround timeover = (player->karthud[khud_timeovercam] > 2*TICRATE ? 2 : 1); else timeover = 0; @@ -3288,11 +3072,11 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall pan = xpan = ypan = 0; else { - if (player->kartstuff[k_drift] != 0) + if (player->ktemp_drift != 0) { fixed_t panmax = (dist/5); INT32 driftval = K_GetKartDriftSparkValue(player); - INT32 dc = player->kartstuff[k_driftcharge]; + INT32 dc = player->ktemp_driftcharge; if (dc > driftval || dc < 0) dc = driftval; @@ -3301,7 +3085,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall if (pan > panmax) pan = panmax; - if (player->kartstuff[k_drift] < 0) + if (player->ktemp_drift < 0) pan *= -1; } else @@ -3636,7 +3420,7 @@ boolean P_SpectatorJoinGame(player_t *player) { if (P_IsLocalPlayer(player)) CONS_Printf(M_GetText("Server does not allow team change.\n")); - //player->powers[pw_flashing] = TICRATE + 1; //to prevent message spam. + //player->ktemp_flashing = TICRATE + 1; //to prevent message spam. } // Team changing in Team Match and CTF // Pressing fire assigns you to a team that needs players if allowed. @@ -3678,7 +3462,7 @@ boolean P_SpectatorJoinGame(player_t *player) } player->spectator = false; player->pflags &= ~PF_WANTSTOJOIN; - player->kartstuff[k_spectatewait] = 0; + player->ktemp_spectatewait = 0; player->ctfteam = changeto; player->playerstate = PST_REBORN; @@ -3708,7 +3492,7 @@ boolean P_SpectatorJoinGame(player_t *player) } player->spectator = false; player->pflags &= ~PF_WANTSTOJOIN; - player->kartstuff[k_spectatewait] = 0; + player->ktemp_spectatewait = 0; player->playerstate = PST_REBORN; //Reset away view @@ -3839,7 +3623,7 @@ static void P_CalcPostImg(player_t *player) void P_DoTimeOver(player_t *player) { - if (player->pflags & PF_GAMETYPEOVER) + if (player->pflags & PF_NOCONTEST) { // NO! Don't do this! return; @@ -3855,7 +3639,7 @@ void P_DoTimeOver(player_t *player) CON_LogMessage(va(M_GetText("%s ran out of time.\n"), player_names[player-players])); } - player->pflags |= PF_GAMETYPEOVER; + player->pflags |= PF_NOCONTEST; if (G_GametypeUsesLives()) { @@ -4143,7 +3927,7 @@ static void P_HandleFollower(player_t *player) player->follower->renderflags = player->mo->renderflags; // Make the follower invisible if we no contest'd rather than removing it. No one will notice the diff seriously. - if (player->pflags & PF_GAMETYPEOVER) + if (player->pflags & PF_NOCONTEST) player->follower->renderflags |= RF_DONTDRAW; if (player->speed && (player->follower->momx || player->follower->momy)) @@ -4182,7 +3966,7 @@ static void P_HandleFollower(player_t *player) // handle follower animations. Could probably be better... // hurt or dead - if (player->kartstuff[k_spinouttimer] || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0) + if (player->ktemp_spinouttimer || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0) { player->follower->movecount = 0; // cancel hit confirm. player->follower->angle = player->drawangle; // spin out @@ -4394,15 +4178,15 @@ void P_PlayerThink(player_t *player) // to allow items to be thrown forward or backward. if (cmd->buttons & BT_FORWARD) { - player->kartstuff[k_throwdir] = 1; + player->ktemp_throwdir = 1; } else if (cmd->buttons & BT_BACKWARD) { - player->kartstuff[k_throwdir] = -1; + player->ktemp_throwdir = -1; } else { - player->kartstuff[k_throwdir] = 0; + player->ktemp_throwdir = 0; } // Accessibility - kickstart your acceleration @@ -4434,7 +4218,7 @@ void P_PlayerThink(player_t *player) { if (playeringame[i] && !players[i].spectator) { - if (!players[i].exiting && !(players[i].pflags & PF_GAMETYPEOVER) && players[i].lives > 0) + if (!players[i].exiting && !(players[i].pflags & PF_NOCONTEST) && players[i].lives > 0) break; } } @@ -4455,7 +4239,7 @@ void P_PlayerThink(player_t *player) // If you've hit the countdown and you haven't made // it to the exit, you're a goner! - if (racecountdown == 1 && !player->spectator && !player->exiting && !(player->pflags & PF_GAMETYPEOVER) && player->lives > 0) + if (racecountdown == 1 && !player->spectator && !player->exiting && !(player->pflags & PF_NOCONTEST) && player->lives > 0) { P_DoTimeOver(player); @@ -4525,11 +4309,11 @@ void P_PlayerThink(player_t *player) // SRB2kart 010217 if (leveltime < introtime) { - player->powers[pw_nocontrol] = 2; + player->ktemp_nocontrol = 2; } // Synchronizes the "real" amount of time spent in the level. - if (!(exitcountdown && !racecountdown) && !(player->exiting || mapreset) && !(player->pflags & PF_GAMETYPEOVER) && !stoppedclock) + if (!(exitcountdown && !racecountdown) && !(player->exiting || mapreset) && !(player->pflags & PF_NOCONTEST) && !stoppedclock) { if (leveltime >= starttime) { @@ -4550,20 +4334,14 @@ void P_PlayerThink(player_t *player) } } - if ((netgame || multiplayer) && player->spectator && cmd->buttons & BT_ATTACK && !player->powers[pw_flashing]) + if ((netgame || multiplayer) && player->spectator && cmd->buttons & BT_ATTACK && !player->ktemp_flashing) { player->pflags ^= PF_WANTSTOJOIN; - player->powers[pw_flashing] = TICRATE/2 + 1; + player->ktemp_flashing = TICRATE/2 + 1; /*if (P_SpectatorJoinGame(player)) return; // player->mo was removed.*/ } - if (player->linktimer && !player->powers[pw_nights_linkfreeze]) - { - if (--player->linktimer <= 0) // Link timer - player->linkcount = 0; - } - if (player->respawn.state != RESPAWNST_NONE) { K_RespawnChecker(player); @@ -4585,7 +4363,6 @@ void P_PlayerThink(player_t *player) { P_DoZoomTube(player); player->rmomx = player->rmomy = 0; - P_ResetScore(player); } else { @@ -4608,42 +4385,6 @@ void P_PlayerThink(player_t *player) P_DoBubbleBreath(player); // Spawn Sonic's bubbles P_CheckInvincibilityTimer(player); // Spawn Invincibility Sparkles -#if 1 - // "Blur" a bit when you have speed shoes and are going fast enough - if ((player->powers[pw_super] || player->powers[pw_sneakers]) - && (player->speed + abs(player->mo->momz)) > FixedMul(20*FRACUNIT,player->mo->scale)) - { - UINT8 i; - mobj_t *gmobj = P_SpawnGhostMobj(player->mo); - - gmobj->fuse = 2; - if (gmobj->tracer) - gmobj->tracer->fuse = 2; - if (leveltime & 1) - { - gmobj->frame &= ~FF_TRANSMASK; - gmobj->frame |= tr_trans70<tracer) - { - gmobj->tracer->frame &= ~FF_TRANSMASK; - gmobj->tracer->frame |= tr_trans70<renderflags |= RF_DONTDRAW; - break; - } - } - } -#endif - // check for buttons if (cmd->buttons & BT_ACCELERATE) player->pflags |= PF_ACCELDOWN; @@ -4659,32 +4400,28 @@ void P_PlayerThink(player_t *player) // Time Bonus & Ring Bonus count settings // Strength counts up to diminish fade. - if (player->powers[pw_flashing] && player->powers[pw_flashing] < UINT16_MAX && + if (player->ktemp_flashing && player->ktemp_flashing < UINT16_MAX && (player->spectator || !P_PlayerInPain(player))) { - player->powers[pw_flashing]--; + player->ktemp_flashing--; } - if (player->powers[pw_nocontrol] && player->powers[pw_nocontrol] < UINT16_MAX) + if (player->ktemp_nocontrol && player->ktemp_nocontrol < UINT16_MAX) { - if (!(--player->powers[pw_nocontrol])) + if (!(--player->ktemp_nocontrol)) player->pflags &= ~PF_FAULT; } else - player->powers[pw_nocontrol] = 0; - - //pw_super acts as a timer now - if (player->powers[pw_super]) - player->powers[pw_super]++; + player->ktemp_nocontrol = 0; // Flash player after being hit. - if (!(player->kartstuff[k_hyudorotimer] // SRB2kart - fixes Hyudoro not flashing when it should. - || player->kartstuff[k_growshrinktimer] > 0 // Grow doesn't flash either. + if (!(player->ktemp_hyudorotimer // SRB2kart - fixes Hyudoro not flashing when it should. + || player->ktemp_growshrinktimer > 0 // Grow doesn't flash either. || (player->respawn.state != RESPAWNST_NONE) // Respawn timer (for drop dash effect) - || (player->pflags & PF_GAMETYPEOVER) // NO CONTEST explosion + || (player->pflags & PF_NOCONTEST) // NO CONTEST explosion || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay))) { - if (player->powers[pw_flashing] > 0 && player->powers[pw_flashing] < K_GetKartFlashing(player) + if (player->ktemp_flashing > 0 && player->ktemp_flashing < K_GetKartFlashing(player) && (leveltime & 1)) player->mo->renderflags |= RF_DONTDRAW; else @@ -4749,13 +4486,14 @@ void P_PlayerThink(player_t *player) player->typing_duration = 0; } - player->pflags &= ~PF_SLIDING; - K_KartPlayerThink(player, cmd); // SRB2kart DoABarrelRoll(player); LUAh_PlayerThink(player); + + if (player->ktemp_carry == CR_SLIDING) + player->ktemp_carry = CR_NONE; } // @@ -4804,9 +4542,6 @@ void P_PlayerAfterThink(player_t *player) return; } - if (player->pflags & PF_SLIDING) - P_SetPlayerMobjState(player->mo, player->mo->info->painstate); - if (thiscam) { if (!thiscam->chase) // bob view only if looking through the player's eyes @@ -4839,12 +4574,6 @@ void P_PlayerAfterThink(player_t *player) K_KartPlayerAfterThink(player); - if (player->powers[pw_dye]) - { - player->mo->colorized = true; - player->mo->color = player->powers[pw_dye]; - } - if (player->followmobj && (player->spectator || player->mo->health <= 0 || player->followmobj->type != player->followitem)) { P_RemoveMobj(player->followmobj); @@ -4923,5 +4652,5 @@ void P_ForceLocalAngle(player_t *player, angle_t angle) boolean P_PlayerFullbright(player_t *player) { - return (player->kartstuff[k_invincibilitytimer] > 0); + return (player->ktemp_invincibilitytimer > 0); } diff --git a/src/r_patchrotation.c b/src/r_patchrotation.c index 6149bab24..ad401d91d 100644 --- a/src/r_patchrotation.c +++ b/src/r_patchrotation.c @@ -38,7 +38,7 @@ angle_t R_SpriteRotationAngle(mobj_t *mobj) angle_t angleDelta = (viewingAngle - mobj->angle); angle_t sliptideLift = mobj->player - ? mobj->player->aizDriftTilt : 0; + ? mobj->player->aizdrifttilt : 0; angle_t rollOrPitch = R_GetPitchRollAngle(mobj); angle_t rollAngle = (rollOrPitch + mobj->rollangle); diff --git a/src/st_stuff.c b/src/st_stuff.c index aa7a39259..3b0a3d9ef 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -909,7 +909,7 @@ static void ST_overlayDrawer(void) { const char *itemtxt = M_GetText("Item - Join Game"); - if (stplyr->powers[pw_flashing]) + if (stplyr->ktemp_flashing) itemtxt = M_GetText("Item - . . ."); else if (stplyr->pflags & PF_WANTSTOJOIN) itemtxt = M_GetText("Item - Cancel Join"); diff --git a/src/y_inter.c b/src/y_inter.c index e9c3fcf51..68a6019ad 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -165,7 +165,7 @@ static void Y_UnloadVoteData(void); // static void Y_CompareTime(INT32 i) { - UINT32 val = ((players[i].pflags & PF_GAMETYPEOVER || players[i].realtime == UINT32_MAX) + UINT32 val = ((players[i].pflags & PF_NOCONTEST || players[i].realtime == UINT32_MAX) ? (UINT32_MAX-1) : players[i].realtime); if (!(val < data.val[data.numplayers])) @@ -177,11 +177,11 @@ static void Y_CompareTime(INT32 i) static void Y_CompareScore(INT32 i) { - UINT32 val = ((players[i].pflags & PF_GAMETYPEOVER) - ? (UINT32_MAX-1) : players[i].marescore); + UINT32 val = ((players[i].pflags & PF_NOCONTEST) + ? (UINT32_MAX-1) : players[i].roundscore); if (!(data.val[data.numplayers] == UINT32_MAX - || (!(players[i].pflags & PF_GAMETYPEOVER) && val > data.val[data.numplayers]))) + || (!(players[i].pflags & PF_NOCONTEST) && val > data.val[data.numplayers]))) return; data.val[data.numplayers] = val; @@ -310,7 +310,7 @@ static void Y_CalculateMatchData(UINT8 rankingsmode, void (*comparison)(INT32)) if ((powertype == PWRLV_DISABLED) && (!rankingsmode) - && !(players[i].pflags & PF_GAMETYPEOVER) + && !(players[i].pflags & PF_NOCONTEST) && (data.pos[data.numplayers] < (numplayersingame + numgriefers))) { // Online rank is handled further below in this file. From 2ead3f7ee5353ad80a0ff6674cd525b350219cb5 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 17 Apr 2021 10:58:58 +0100 Subject: [PATCH 2/6] forgot to commit --- src/info.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/info.h b/src/info.h index bfd02ab4d..a5499cafb 100644 --- a/src/info.h +++ b/src/info.h @@ -40,7 +40,6 @@ enum actionnum A_FACETRACER, A_SCREAM, A_BOSSDEATH, - A_CUSTOMPOWER, A_RINGBOX, A_BUNNYHOP, A_BUBBLESPAWN, @@ -307,7 +306,6 @@ void A_FaceTarget(); void A_FaceTracer(); void A_Scream(); void A_BossDeath(); -void A_CustomPower(); // Use this for a custom power void A_RingBox(); // Obtained Ring Box Tails void A_BunnyHop(); // have bunny hop tails void A_BubbleSpawn(); // Randomly spawn bubbles From 00972a83d2de3201d287bbd5f6110a1084b76488 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 17 Apr 2021 11:30:08 +0100 Subject: [PATCH 3/6] remove the prefix since everything seems to function --- src/d_clisrv.c | 2 +- src/d_netcmd.c | 14 +- src/d_player.h | 140 ++--- src/f_finale.c | 4 +- src/g_demo.c | 16 +- src/g_game.c | 30 +- src/hu_stuff.c | 4 +- src/k_battle.c | 12 +- src/k_bot.c | 16 +- src/k_botitem.c | 60 +- src/k_botsearch.c | 24 +- src/k_collide.c | 50 +- src/k_grandprix.c | 2 +- src/k_hud.c | 96 ++-- src/k_kart.c | 1308 +++++++++++++++++++++---------------------- src/k_respawn.c | 20 +- src/lua_playerlib.c | 512 ++++++++--------- src/m_cheat.c | 2 +- src/p_enemy.c | 74 +-- src/p_floor.c | 2 +- src/p_inter.c | 104 ++-- src/p_map.c | 42 +- src/p_mobj.c | 110 ++-- src/p_saveg.c | 268 ++++----- src/p_spec.c | 42 +- src/p_user.c | 126 ++--- src/st_stuff.c | 2 +- 27 files changed, 1541 insertions(+), 1541 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 76606bcd4..5beca1173 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -4781,7 +4781,7 @@ static INT16 Consistancy(void) { ret += players[i].mo->x; ret -= players[i].mo->y; - ret += players[i].ktemp_itemtype; + ret += players[i].itemtype; ret *= i+1; } } diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 121822f3b..4ed110f35 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1417,7 +1417,7 @@ static void SendNameAndColor(UINT8 n) player->skincolor = cv_playercolor[n].value; - if (player->mo && !player->ktemp_dye) + if (player->mo && !player->dye) player->mo->color = player->skincolor; // Update follower for local games: @@ -1878,7 +1878,7 @@ static INT32 FindPlayerByPlace(INT32 place) for (playernum = 0; playernum < MAXPLAYERS; ++playernum) if (playeringame[playernum]) { - if (players[playernum].ktemp_position == place) + if (players[playernum].position == place) { return playernum; } @@ -1902,7 +1902,7 @@ static void GetViewablePlayerPlaceRange(INT32 *first, INT32 *last) for (i = 0; i < MAXPLAYERS; ++i) if (G_CouldView(i)) { - place = players[i].ktemp_position; + place = players[i].position; if (place < (*first)) (*first) = place; if (place > (*last)) @@ -2973,7 +2973,7 @@ static void Command_Respawn(void) } // todo: this probably isnt necessary anymore with v2 - if (players[consoleplayer].mo && (P_PlayerInPain(&players[consoleplayer]) || spbplace == players[consoleplayer].ktemp_position)) // KART: Nice try, but no, you won't be cheesing spb anymore (x2) + if (players[consoleplayer].mo && (P_PlayerInPain(&players[consoleplayer]) || spbplace == players[consoleplayer].position)) // KART: Nice try, but no, you won't be cheesing spb anymore (x2) { CONS_Printf(M_GetText("Nice try.\n")); return; @@ -2988,7 +2988,7 @@ static void Got_Respawn(UINT8 **cp, INT32 playernum) INT32 respawnplayer = READINT32(*cp); // You can't respawn someone else. Nice try, there. - if (respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].ktemp_position) // srb2kart: "|| (!(gametyperules & GTR_CIRCUIT))" + if (respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].position) // srb2kart: "|| (!(gametyperules & GTR_CIRCUIT))" { CONS_Alert(CONS_WARNING, M_GetText("Illegal respawn command received from %s\n"), player_names[playernum]); if (server) @@ -4876,8 +4876,8 @@ static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum) return; } - players[playernum].ktemp_itemtype = item; - players[playernum].ktemp_itemamount = amt; + players[playernum].itemtype = item; + players[playernum].itemamount = amt; } /** Prints the number of displayplayers[0]. diff --git a/src/d_player.h b/src/d_player.h index 2ce713289..62f80cd03 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -119,7 +119,7 @@ typedef enum // Specific level gimmicks. CR_SLIDING, CR_ZOOMTUBE, -} carrytype_t; // ktemp_carry +} carrytype_t; // carry /* To use: #define FOREACH( name, number ) @@ -236,7 +236,7 @@ typedef enum } karthudtype_t; // QUICKLY GET RING TOTAL, INCLUDING RINGS CURRENTLY IN THE PICKUP ANIMATION -#define RINGTOTAL(p) (p->rings + p->ktemp_pickuprings) +#define RINGTOTAL(p) (p->rings + p->pickuprings) // CONSTANTS FOR TRICK PANELS #define TRICKMOMZRAMP (30) @@ -345,106 +345,106 @@ typedef struct player_s UINT32 score; // player score - UINT16 ktemp_nocontrol; //for linedef exec 427 - UINT8 ktemp_carry; - UINT16 ktemp_dye; + UINT16 nocontrol; //for linedef exec 427 + UINT8 carry; + UINT16 dye; // SRB2kart stuff INT32 karthud[NUMKARTHUD]; // Basic gameplay things - UINT8 ktemp_position; // Used for Kart positions, mostly for deterministic stuff - UINT8 ktemp_oldposition; // Used for taunting when you pass someone - UINT8 ktemp_positiondelay; // Used for position number, so it can grow when passing/being passed + UINT8 position; // Used for Kart positions, mostly for deterministic stuff + UINT8 oldposition; // Used for taunting when you pass someone + UINT8 positiondelay; // Used for position number, so it can grow when passing/being passed UINT32 distancetofinish; waypoint_t *nextwaypoint; respawnvars_t respawn; // Respawn info - tic_t airtime; // Keep track of how long you've been in the air - UINT8 ktemp_startboost; // (0 to 125) - Boost you get from start of race or respawn drop dash + tic_t airtime; // Keep track of how long you've been in the air + UINT8 startboost; // (0 to 125) - Boost you get from start of race or respawn drop dash - UINT16 ktemp_flashing; - UINT16 ktemp_spinouttimer; // Spin-out from a banana peel or oil slick (was "pw_bananacam") - UINT8 ktemp_spinouttype; // Determines the mode of spinout/wipeout, see kartspinoutflags_t - UINT8 ktemp_instashield; // Instashield no-damage animation timer - UINT8 ktemp_wipeoutslow; // Timer before you slowdown when getting wiped out - UINT8 ktemp_justbumped; // Prevent players from endlessly bumping into each other + UINT16 flashing; + UINT16 spinouttimer; // Spin-out from a banana peel or oil slick (was "pw_bananacam") + UINT8 spinouttype; // Determines the mode of spinout/wipeout, see kartspinoutflags_t + UINT8 instashield; // Instashield no-damage animation timer + UINT8 wipeoutslow; // Timer before you slowdown when getting wiped out + UINT8 justbumped; // Prevent players from endlessly bumping into each other UINT8 tumbleBounces; UINT16 tumbleHeight; - SINT8 ktemp_drift; // (-5 to 5) - Drifting Left or Right, plus a bigger counter = sharper turn - fixed_t ktemp_driftcharge; // Charge your drift so you can release a burst of speed - UINT8 ktemp_driftboost; // (0 to 125) - Boost you get from drifting + SINT8 drift; // (-5 to 5) - Drifting Left or Right, plus a bigger counter = sharper turn + fixed_t driftcharge; // Charge your drift so you can release a burst of speed + UINT8 driftboost; // (0 to 125) - Boost you get from drifting - SINT8 ktemp_aizdriftstrat; // (-1 to 1) - Let go of your drift while boosting? Helper for the SICK STRATZ (sliptiding!) you have just unlocked + SINT8 aizdriftstrat; // (-1 to 1) - Let go of your drift while boosting? Helper for the SICK STRATZ (sliptiding!) you have just unlocked INT32 aizdrifttilt; INT32 aizdriftturn; - fixed_t ktemp_offroad; // In Super Mario Kart, going offroad has lee-way of about 1 second before you start losing speed - UINT8 ktemp_waterskip; // Water skipping counter + fixed_t offroad; // In Super Mario Kart, going offroad has lee-way of about 1 second before you start losing speed + UINT8 waterskip; // Water skipping counter - UINT16 ktemp_tiregrease; // Reduced friction timer after hitting a horizontal spring - UINT16 ktemp_springstars; // Spawn stars around a player when they hit a spring - UINT16 ktemp_springcolor; // Color of spring stars - UINT8 ktemp_dashpadcooldown; // Separate the vanilla SA-style dash pads from using ktemp_flashing + UINT16 tiregrease; // Reduced friction timer after hitting a horizontal spring + UINT16 springstars; // Spawn stars around a player when they hit a spring + UINT16 springcolor; // Color of spring stars + UINT8 dashpadcooldown; // Separate the vanilla SA-style dash pads from using flashing - UINT16 ktemp_spindash; // Spindash charge timer - fixed_t ktemp_spindashspeed; // Spindash release speed - UINT8 ktemp_spindashboost; // Spindash release boost timer + UINT16 spindash; // Spindash charge timer + fixed_t spindashspeed; // Spindash release speed + UINT8 spindashboost; // Spindash release boost timer - UINT8 ktemp_numboosts; // Count of how many boosts are being stacked, for after image spawning - fixed_t ktemp_boostpower; // Base boost value, for offroad - fixed_t ktemp_speedboost; // Boost value smoothing for max speed - fixed_t ktemp_accelboost; // Boost value smoothing for acceleration - fixed_t ktemp_handleboost; // Boost value smoothing for handling - angle_t ktemp_boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted. + UINT8 numboosts; // Count of how many boosts are being stacked, for after image spawning + fixed_t boostpower; // Base boost value, for offroad + fixed_t speedboost; // Boost value smoothing for max speed + fixed_t accelboost; // Boost value smoothing for acceleration + fixed_t handleboost; // Boost value smoothing for handling + angle_t boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted. - fixed_t ktemp_draftpower; // (0 to FRACUNIT) - Drafting power, doubles your top speed & acceleration at max - UINT16 ktemp_draftleeway; // Leniency timer before removing draft power - SINT8 ktemp_lastdraft; // (-1 to 15) - Last player being drafted + fixed_t draftpower; // (0 to FRACUNIT) - Drafting power, doubles your top speed & acceleration at max + UINT16 draftleeway; // Leniency timer before removing draft power + SINT8 lastdraft; // (-1 to 15) - Last player being drafted - UINT16 ktemp_itemroulette; // Used for the roulette when deciding what item to give you (was "pw_kartitem") - UINT8 ktemp_roulettetype; // Used for the roulette, for deciding type (0 = normal, 1 = better, 2 = eggman mark) + UINT16 itemroulette; // Used for the roulette when deciding what item to give you (was "pw_kartitem") + UINT8 roulettetype; // Used for the roulette, for deciding type (0 = normal, 1 = better, 2 = eggman mark) // Item held stuff - SINT8 ktemp_itemtype; // KITEM_ constant for item number - UINT8 ktemp_itemamount; // Amount of said item - SINT8 ktemp_throwdir; // Held dir of controls; 1 = forward, 0 = none, -1 = backward (was "player->heldDir") + SINT8 itemtype; // KITEM_ constant for item number + UINT8 itemamount; // Amount of said item + SINT8 throwdir; // Held dir of controls; 1 = forward, 0 = none, -1 = backward (was "player->heldDir") - UINT8 ktemp_sadtimer; // How long you've been sad + UINT8 sadtimer; // How long you've been sad // player's ring count SINT8 rings; - UINT8 ktemp_pickuprings; // Number of rings being picked up before added to the counter (prevents rings from being deleted forever over 20) - UINT8 ktemp_ringdelay; // (0 to 3) - 3 tic delay between every ring usage - UINT16 ktemp_ringboost; // Ring boost timer - UINT8 ktemp_sparkleanim; // (0 to 19) - Angle offset for ring sparkle animation - UINT8 ktemp_superring; // Spawn rings on top of you every tic! + UINT8 pickuprings; // Number of rings being picked up before added to the counter (prevents rings from being deleted forever over 20) + UINT8 ringdelay; // (0 to 3) - 3 tic delay between every ring usage + UINT16 ringboost; // Ring boost timer + UINT8 sparkleanim; // (0 to 19) - Angle offset for ring sparkle animation + UINT8 superring; // Spawn rings on top of you every tic! - UINT8 ktemp_curshield; // see kartshields_t - UINT8 ktemp_bubblecool; // Bubble Shield use cooldown - UINT8 ktemp_bubbleblowup; // Bubble Shield usage blowup - UINT16 ktemp_flamedash; // Flame Shield dash power - UINT16 ktemp_flamemeter; // Flame Shield dash meter left - UINT8 ktemp_flamelength; // Flame Shield dash meter, number of segments + UINT8 curshield; // see kartshields_t + UINT8 bubblecool; // Bubble Shield use cooldown + UINT8 bubbleblowup; // Bubble Shield usage blowup + UINT16 flamedash; // Flame Shield dash power + UINT16 flamemeter; // Flame Shield dash meter left + UINT8 flamelength; // Flame Shield dash meter, number of segments - UINT16 ktemp_hyudorotimer; // Duration of the Hyudoro offroad effect itself - SINT8 ktemp_stealingtimer; // if >0 you are stealing, if <0 you are being stolen from + UINT16 hyudorotimer; // Duration of the Hyudoro offroad effect itself + SINT8 stealingtimer; // if >0 you are stealing, if <0 you are being stolen from - UINT16 ktemp_sneakertimer; // Duration of a Sneaker Boost (from Sneakers or level boosters) - UINT8 ktemp_numsneakers; // Number of stacked sneaker effects - UINT8 ktemp_floorboost; // (0 to 3) - Prevents Sneaker sounds for a brief duration when triggered by a floor panel + UINT16 sneakertimer; // Duration of a Sneaker Boost (from Sneakers or level boosters) + UINT8 numsneakers; // Number of stacked sneaker effects + UINT8 floorboost; // (0 to 3) - Prevents Sneaker sounds for a brief duration when triggered by a floor panel - INT16 ktemp_growshrinktimer; // > 0 = Big, < 0 = small - UINT16 ktemp_rocketsneakertimer; // Rocket Sneaker duration timer - UINT16 ktemp_invincibilitytimer; // Invincibility timer + INT16 growshrinktimer; // > 0 = Big, < 0 = small + UINT16 rocketsneakertimer; // Rocket Sneaker duration timer + UINT16 invincibilitytimer; // Invincibility timer - UINT8 ktemp_eggmanexplode; // Fake item recieved, explode in a few seconds - SINT8 ktemp_eggmanblame; // (-1 to 15) - Fake item recieved, who set this fake + UINT8 eggmanexplode; // Fake item recieved, explode in a few seconds + SINT8 eggmanblame; // (-1 to 15) - Fake item recieved, who set this fake - UINT8 ktemp_bananadrag; // After a second of holding a banana behind you, you start to slow down + UINT8 bananadrag; // After a second of holding a banana behind you, you start to slow down - SINT8 ktemp_lastjawztarget; // (-1 to 15) - Last person you target with jawz, for playing the target switch sfx - UINT8 ktemp_jawztargetdelay; // (0 to 5) - Delay for Jawz target switching, to make it less twitchy + SINT8 lastjawztarget; // (-1 to 15) - Last person you target with jawz, for playing the target switch sfx + UINT8 jawztargetdelay; // (0 to 5) - Delay for Jawz target switching, to make it less twitchy UINT8 trickpanel; // Trick panel state fixed_t trickmomx; @@ -452,7 +452,7 @@ typedef struct player_s fixed_t trickmomz; UINT32 roundscore; // battle score this round - UINT8 ktemp_emeralds; + UINT8 emeralds; UINT8 bumpers; INT16 karmadelay; INT16 spheres; @@ -499,7 +499,7 @@ typedef struct player_s angle_t awayviewaiming; // Used for cut-away view boolean spectator; - tic_t ktemp_spectatewait; // reimplementable as UINT8 queue - How long have you been waiting as a spectator + tic_t spectatewait; // reimplementable as UINT8 queue - How long have you been waiting as a spectator boolean bot; botvars_t botvars; diff --git a/src/f_finale.c b/src/f_finale.c index 25d1ea98d..099fa422d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2909,7 +2909,7 @@ void F_TextPromptDrawer(void) } #define nocontrolallowed(j) {\ - players[j].ktemp_nocontrol = 1;\ + players[j].nocontrol = 1;\ if (players[j].mo)\ {\ if (players[j].mo->state == states+S_KART_STILL && players[j].mo->tics != -1)\ @@ -2980,7 +2980,7 @@ void F_TextPromptTicker(void) { UINT8 j; - players[i].ktemp_nocontrol = 1; + players[i].nocontrol = 1; // Both players' controls are locked, // But only the triggering player can advance the prompt. diff --git a/src/g_demo.c b/src/g_demo.c index e2b9a0c0e..fb764e268 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -748,14 +748,14 @@ void G_WriteGhostTic(mobj_t *ghost, INT32 playernum) } if (ghost->player && ( - ghostext[playernum].kartitem != ghost->player->ktemp_itemtype || - ghostext[playernum].kartamount != ghost->player->ktemp_itemamount || + ghostext[playernum].kartitem != ghost->player->itemtype || + ghostext[playernum].kartamount != ghost->player->itemamount || ghostext[playernum].kartbumpers != ghost->player->bumpers )) { ghostext[playernum].flags |= EZT_KART; - ghostext[playernum].kartitem = ghost->player->ktemp_itemtype; - ghostext[playernum].kartamount = ghost->player->ktemp_itemamount; + ghostext[playernum].kartitem = ghost->player->itemtype; + ghostext[playernum].kartamount = ghost->player->itemamount; ghostext[playernum].kartbumpers = ghost->player->bumpers; } @@ -1035,16 +1035,16 @@ void G_ConsGhostTic(INT32 playernum) else ghostext[playernum].desyncframes = 0; - if (players[playernum].ktemp_itemtype != ghostext[playernum].kartitem - || players[playernum].ktemp_itemamount != ghostext[playernum].kartamount + if (players[playernum].itemtype != ghostext[playernum].kartitem + || players[playernum].itemamount != ghostext[playernum].kartamount || players[playernum].bumpers != ghostext[playernum].kartbumpers) { if (demosynced) CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced!\n")); demosynced = false; - players[playernum].ktemp_itemtype = ghostext[playernum].kartitem; - players[playernum].ktemp_itemamount = ghostext[playernum].kartamount; + players[playernum].itemtype = ghostext[playernum].kartitem; + players[playernum].itemamount = ghostext[playernum].kartamount; players[playernum].bumpers = ghostext[playernum].kartbumpers; } } diff --git a/src/g_game.c b/src/g_game.c index c9118b235..514e99424 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2179,8 +2179,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) } else { - itemroulette = (players[player].ktemp_itemroulette > 0 ? 1 : 0); - roulettetype = players[player].ktemp_roulettetype; + itemroulette = (players[player].itemroulette > 0 ? 1 : 0); + roulettetype = players[player].roulettetype; if (players[player].pflags & PF_ITEMOUT) { @@ -2189,13 +2189,13 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) } else { - itemtype = players[player].ktemp_itemtype; - itemamount = players[player].ktemp_itemamount; + itemtype = players[player].itemtype; + itemamount = players[player].itemamount; } // Keep Shrink status, remove Grow status - if (players[player].ktemp_growshrinktimer < 0) - growshrinktimer = players[player].ktemp_growshrinktimer; + if (players[player].growshrinktimer < 0) + growshrinktimer = players[player].growshrinktimer; else growshrinktimer = 0; @@ -2205,7 +2205,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) kickstartaccel = players[player].kickstartaccel; khudfault = players[player].karthud[khud_fault]; - nocontrol = players[player].ktemp_nocontrol; + nocontrol = players[player].nocontrol; laps = players[player].laps; totalring = players[player].totalring; @@ -2270,17 +2270,17 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) p->xtralife = xtralife; // SRB2kart - p->ktemp_itemroulette = itemroulette; - p->ktemp_roulettetype = roulettetype; - p->ktemp_itemtype = itemtype; - p->ktemp_itemamount = itemamount; - p->ktemp_growshrinktimer = growshrinktimer; + p->itemroulette = itemroulette; + p->roulettetype = roulettetype; + p->itemtype = itemtype; + p->itemamount = itemamount; + p->growshrinktimer = growshrinktimer; p->bumpers = bumper; p->karmadelay = comebacktime; - p->ktemp_eggmanblame = -1; - p->ktemp_lastdraft = -1; + p->eggmanblame = -1; + p->lastdraft = -1; p->karthud[khud_fault] = khudfault; - p->ktemp_nocontrol = nocontrol; + p->nocontrol = nocontrol; p->kickstartaccel = kickstartaccel; memcpy(&p->respawn, &respawn, sizeof (p->respawn)); diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 12b072146..3358f2fd3 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -2353,11 +2353,11 @@ static void HU_DrawRankings(void) if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo) continue; - if (players[i].ktemp_position >= lowestposition) + if (players[i].position >= lowestposition) continue; tab[scorelines].num = i; - lowestposition = players[i].ktemp_position; + lowestposition = players[i].position; } i = tab[scorelines].num; diff --git a/src/k_battle.c b/src/k_battle.c index f039dad0d..5fc7cc05a 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -41,7 +41,7 @@ INT32 K_StartingBumperCount(void) boolean K_IsPlayerWanted(player_t *player) { - return (player->ktemp_position == 1); + return (player->position == 1); } void K_SpawnBattlePoints(player_t *source, player_t *victim, UINT8 amount) @@ -146,7 +146,7 @@ void K_CheckEmeralds(player_t *player) { UINT8 i; - if (!ALLCHAOSEMERALDS(player->ktemp_emeralds)) + if (!ALLCHAOSEMERALDS(player->emeralds)) { return; } @@ -238,12 +238,12 @@ void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType) { UINT32 emeraldFlag = (1 << i); - if ((player->ktemp_emeralds & emeraldFlag) && (emeraldFlag & emeraldType)) + if ((player->emeralds & emeraldFlag) && (emeraldFlag & emeraldType)) { mobj_t *emerald = K_SpawnChaosEmerald(player->mo->x, player->mo->y, player->mo->z, player->mo->angle - ANGLE_90, flip, emeraldFlag); P_SetTarget(&emerald->target, player->mo); - player->ktemp_emeralds &= ~emeraldFlag; + player->emeralds &= ~emeraldFlag; } } } @@ -257,7 +257,7 @@ UINT8 K_NumEmeralds(player_t *player) { UINT32 emeraldFlag = (1 << i); - if (player->ktemp_emeralds & emeraldFlag) + if (player->emeralds & emeraldFlag) { num++; } @@ -310,7 +310,7 @@ void K_RunPaperItemSpawners(void) continue; } - emeraldsSpawned |= players[i].ktemp_emeralds; + emeraldsSpawned |= players[i].emeralds; if ((players[i].exiting > 0 || (players[i].pflags & PF_ELIMINATED)) || ((gametyperules & GTR_BUMPERS) && players[i].bumpers <= 0)) diff --git a/src/k_bot.c b/src/k_bot.c index 043f3ba39..4822a2ce3 100644 --- a/src/k_bot.c +++ b/src/k_bot.c @@ -274,10 +274,10 @@ boolean K_PlayerUsesBotMovement(player_t *player) boolean K_BotCanTakeCut(player_t *player) { if (!K_ApplyOffroad(player) - || player->ktemp_itemtype == KITEM_SNEAKER - || player->ktemp_itemtype == KITEM_ROCKETSNEAKER - || player->ktemp_itemtype == KITEM_INVINCIBILITY - || player->ktemp_itemtype == KITEM_HYUDORO) + || player->itemtype == KITEM_SNEAKER + || player->itemtype == KITEM_ROCKETSNEAKER + || player->itemtype == KITEM_INVINCIBILITY + || player->itemtype == KITEM_HYUDORO) return true; return false; @@ -716,7 +716,7 @@ static UINT8 K_TrySpindash(player_t *player) { const tic_t difficultyModifier = (TICRATE/6); - if (player->ktemp_spindashboost || player->ktemp_tiregrease) + if (player->spindashboost || player->tiregrease) { // You just released a spindash, you don't need to try again yet, jeez. return 0; @@ -749,7 +749,7 @@ static UINT8 K_TrySpindash(player_t *player) } // Logic for normal racing. - if (player->ktemp_flashing > 0) + if (player->flashing > 0) { // Don't bother trying to spindash. // Trying to spindash while flashing is fine during POSITION, but not during the actual race. @@ -757,7 +757,7 @@ static UINT8 K_TrySpindash(player_t *player) } if (player->speed < 10*mapobjectscale // Below the speed threshold - && player->ktemp_speedboost < (FRACUNIT/8)) // If you have other boosts, you can probably trust it. + && player->speedboost < (FRACUNIT/8)) // If you have other boosts, you can probably trust it. { INT32 chargingPoint = (K_GetSpindashChargeTime(player) + difficultyModifier); @@ -765,7 +765,7 @@ static UINT8 K_TrySpindash(player_t *player) // Sounds counter-productive, but that's actually the best strategy after the race has started. chargingPoint -= player->botvars.difficulty * difficultyModifier; - if (player->ktemp_spindash > chargingPoint) + if (player->spindash > chargingPoint) { // Time to release. return 0; diff --git a/src/k_botitem.c b/src/k_botitem.c index 1d2c0c9c9..212a84929 100644 --- a/src/k_botitem.c +++ b/src/k_botitem.c @@ -64,7 +64,7 @@ static boolean K_BotUseItemNearPlayer(player_t *player, ticcmd_t *cmd, fixed_t r if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->ktemp_flashing) + || target->flashing) { continue; } @@ -117,7 +117,7 @@ static boolean K_PlayerNearSpot(player_t *player, fixed_t x, fixed_t y, fixed_t if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->ktemp_flashing) + || target->flashing) { continue; } @@ -190,7 +190,7 @@ static boolean K_PlayerInCone(player_t *player, fixed_t radius, UINT16 cone, boo if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->ktemp_flashing + || target->flashing || !P_CheckSight(player->mo, target->mo)) { continue; @@ -401,13 +401,13 @@ static void K_BotItemGenericOrbitShield(player_t *player, ticcmd_t *cmd) --------------------------------------------------*/ static void K_BotItemSneaker(player_t *player, ticcmd_t *cmd) { - if ((player->ktemp_offroad && K_ApplyOffroad(player)) // Stuck in offroad, use it NOW + if ((player->offroad && K_ApplyOffroad(player)) // Stuck in offroad, use it NOW || K_GetWaypointIsShortcut(player->nextwaypoint) == true // Going toward a shortcut! || player->speed < K_GetKartSpeed(player, false)/2 // Being slowed down too much - || player->ktemp_speedboost > (FRACUNIT/8) // Have another type of boost (tethering) + || player->speedboost > (FRACUNIT/8) // Have another type of boost (tethering) || player->botvars.itemconfirm > 4*TICRATE) // Held onto it for too long { - if (!player->ktemp_sneakertimer && !(player->pflags & PF_ATTACKDOWN)) + if (!player->sneakertimer && !(player->pflags & PF_ATTACKDOWN)) { cmd->buttons |= BT_ATTACK; player->botvars.itemconfirm = 2*TICRATE; @@ -435,7 +435,7 @@ static void K_BotItemRocketSneaker(player_t *player, ticcmd_t *cmd) { if (player->botvars.itemconfirm > TICRATE) { - if (!player->ktemp_sneakertimer && !(player->pflags & PF_ATTACKDOWN)) + if (!player->sneakertimer && !(player->pflags & PF_ATTACKDOWN)) { cmd->buttons |= BT_ATTACK; player->botvars.itemconfirm = 0; @@ -487,7 +487,7 @@ static void K_BotItemBanana(player_t *player, ticcmd_t *cmd, INT16 turnamt) throwdir = -1; } - if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -540,7 +540,7 @@ static void K_BotItemMine(player_t *player, ticcmd_t *cmd, INT16 turnamt) - if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -577,13 +577,13 @@ static void K_BotItemEggman(player_t *player, ticcmd_t *cmd) throwdir = -1; } - if (stealth > 1 || player->ktemp_itemroulette > 0) + if (stealth > 1 || player->itemroulette > 0) { player->botvars.itemconfirm += player->botvars.difficulty * 4; throwdir = -1; } - if (player->botvars.itemconfirm > 2*TICRATE || player->ktemp_bananadrag >= TICRATE) + if (player->botvars.itemconfirm > 2*TICRATE || player->bananadrag >= TICRATE) { K_BotGenericPressItem(player, cmd, throwdir); } @@ -664,7 +664,7 @@ static void K_BotItemEggmanShield(player_t *player, ticcmd_t *cmd) --------------------------------------------------*/ static void K_BotItemEggmanExplosion(player_t *player, ticcmd_t *cmd) { - if (player->ktemp_position == 1) + if (player->position == 1) { cmd->forwardmove /= 2; cmd->buttons |= BT_BRAKE; @@ -746,7 +746,7 @@ static void K_BotItemJawz(player_t *player, ticcmd_t *cmd) throwdir = -1; } - if (player->ktemp_lastjawztarget != -1) + if (player->lastjawztarget != -1) { player->botvars.itemconfirm += player->botvars.difficulty * 2; throwdir = 1; @@ -801,13 +801,13 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) { boolean hold = false; - if (player->ktemp_bubbleblowup <= 0) + if (player->bubbleblowup <= 0) { UINT8 i; player->botvars.itemconfirm++; - if (player->ktemp_bubblecool <= 0) + if (player->bubblecool <= 0) { const fixed_t radius = 192 * player->mo->scale; @@ -825,7 +825,7 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) if (target->mo == NULL || P_MobjWasRemoved(target->mo) || player == target || target->spectator - || target->ktemp_flashing) + || target->flashing) { continue; } @@ -844,14 +844,14 @@ static void K_BotItemBubble(player_t *player, ticcmd_t *cmd) } } } - else if (player->ktemp_bubbleblowup >= bubbletime) + else if (player->bubbleblowup >= bubbletime) { if (player->botvars.itemconfirm >= 10*TICRATE) { hold = true; } } - else if (player->ktemp_bubbleblowup < bubbletime) + else if (player->bubbleblowup < bubbletime) { hold = true; } @@ -882,9 +882,9 @@ static void K_BotItemFlame(player_t *player, ticcmd_t *cmd) } else if (player->pflags & PF_HOLDREADY) { - INT32 flamemax = player->ktemp_flamelength * flameseg; + INT32 flamemax = player->flamelength * flameseg; - if (player->ktemp_flamemeter < flamemax || flamemax == 0) + if (player->flamemeter < flamemax || flamemax == 0) { cmd->buttons |= BT_ATTACK; } @@ -912,7 +912,7 @@ static void K_BotItemRings(player_t *player, ticcmd_t *cmd) INT32 saferingsval = 16 - K_GetKartRingPower(player, false); if (player->speed < K_GetKartSpeed(player, false)/2 // Being slowed down too much - || player->ktemp_speedboost > (FRACUNIT/5)) // Have another type of boost (tethering) + || player->speedboost > (FRACUNIT/5)) // Have another type of boost (tethering) { saferingsval -= 5; } @@ -985,16 +985,16 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) return; } - if (player->ktemp_itemroulette) + if (player->itemroulette) { // Mashing behaviors K_BotItemRouletteMash(player, cmd); return; } - if (player->ktemp_stealingtimer == 0) + if (player->stealingtimer == 0) { - if (player->ktemp_eggmanexplode) + if (player->eggmanexplode) { K_BotItemEggmanExplosion(player, cmd); } @@ -1002,16 +1002,16 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) { K_BotItemEggman(player, cmd); } - else if (player->ktemp_rocketsneakertimer > 0) + else if (player->rocketsneakertimer > 0) { K_BotItemRocketSneaker(player, cmd); } else { - switch (player->ktemp_itemtype) + switch (player->itemtype) { default: - if (player->ktemp_itemtype != KITEM_NONE) + if (player->itemtype != KITEM_NONE) { K_BotItemGenericTap(player, cmd); } @@ -1027,7 +1027,7 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) K_BotItemGenericTap(player, cmd); break; case KITEM_ROCKETSNEAKER: - if (player->ktemp_rocketsneakertimer <= 0) + if (player->rocketsneakertimer <= 0) { K_BotItemGenericTap(player, cmd); } @@ -1054,7 +1054,7 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) { K_BotItemGenericOrbitShield(player, cmd); } - else if (player->ktemp_position != 1) // Hold onto orbiting items when in 1st :) + else if (player->position != 1) // Hold onto orbiting items when in 1st :) /* FALL-THRU */ case KITEM_BALLHOG: { @@ -1066,7 +1066,7 @@ void K_BotItemUsage(player_t *player, ticcmd_t *cmd, INT16 turnamt) { K_BotItemGenericOrbitShield(player, cmd); } - else if (player->ktemp_position != 1) // Hold onto orbiting items when in 1st :) + else if (player->position != 1) // Hold onto orbiting items when in 1st :) { K_BotItemJawz(player, cmd); } diff --git a/src/k_botsearch.c b/src/k_botsearch.c index af793f0ee..55533d02a 100644 --- a/src/k_botsearch.c +++ b/src/k_botsearch.c @@ -322,7 +322,7 @@ static boolean K_FindBlockingWalls(line_t *line) // set openrange, opentop, openbottom P_LineOpening(line, globalsmuggle.botmo); - if (globalsmuggle.botmo->player->ktemp_waterskip) + if (globalsmuggle.botmo->player->waterskip) maxstep += maxstepmove; if (P_MobjTouchingSectorSpecial(globalsmuggle.botmo, 1, 13, false)) @@ -651,15 +651,15 @@ static boolean K_FindObjectsForNudging(mobj_t *thing) if ((RINGTOTAL(globalsmuggle.botmo->player) < 20 && !(globalsmuggle.botmo->player->pflags & PF_RINGLOCK) && P_CanPickupItem(globalsmuggle.botmo->player, 0)) && !thing->extravalue1 - && (globalsmuggle.botmo->player->ktemp_itemtype != KITEM_THUNDERSHIELD)) + && (globalsmuggle.botmo->player->itemtype != KITEM_THUNDERSHIELD)) { K_AddAttackObject(thing, side, (RINGTOTAL(globalsmuggle.botmo->player) < 3) ? 5 : 1); } break; case MT_PLAYER: if (thing->player - && !thing->player->ktemp_hyudorotimer - && !globalsmuggle.botmo->player->ktemp_hyudorotimer) + && !thing->player->hyudorotimer + && !globalsmuggle.botmo->player->hyudorotimer) { // There REALLY ought to be a better way to handle this logic, right?! // Squishing @@ -672,32 +672,32 @@ static boolean K_FindObjectsForNudging(mobj_t *thing) } // Invincibility else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->ktemp_invincibilitytimer, - thing->player->ktemp_invincibilitytimer + globalsmuggle.botmo->player->invincibilitytimer, + thing->player->invincibilitytimer )) { break; } // Thunder Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->ktemp_itemtype == KITEM_THUNDERSHIELD, - thing->player->ktemp_itemtype == KITEM_THUNDERSHIELD + globalsmuggle.botmo->player->itemtype == KITEM_THUNDERSHIELD, + thing->player->itemtype == KITEM_THUNDERSHIELD )) { break; } // Bubble Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->ktemp_itemtype == KITEM_BUBBLESHIELD, - thing->player->ktemp_itemtype == KITEM_BUBBLESHIELD + globalsmuggle.botmo->player->itemtype == KITEM_BUBBLESHIELD, + thing->player->itemtype == KITEM_BUBBLESHIELD )) { break; } // Flame Shield else if (K_PlayerAttackSteer(thing, side, 20, - globalsmuggle.botmo->player->ktemp_itemtype == KITEM_FLAMESHIELD, - thing->player->ktemp_itemtype == KITEM_FLAMESHIELD + globalsmuggle.botmo->player->itemtype == KITEM_FLAMESHIELD, + thing->player->itemtype == KITEM_FLAMESHIELD )) { break; diff --git a/src/k_collide.c b/src/k_collide.c index 5b148eb35..7413804d9 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -30,14 +30,14 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if ((t2->player->ktemp_flashing > 0 && t2->hitlag == 0) + if ((t2->player->flashing > 0 && t2->hitlag == 0) && !(t1->type == MT_ORBINAUT || t1->type == MT_JAWZ || t1->type == MT_JAWZ_DUD)) return true; - if (t2->player->ktemp_hyudorotimer) + if (t2->player->hyudorotimer) return true; // no interaction - if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && t2->player->itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -123,14 +123,14 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0 && t2->hitlag == 0) return true; // Banana snipe! if (t1->type == MT_BANANA && t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && t2->player->itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -212,11 +212,11 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) { K_DropItems(t2->player); //K_StripItems(t2->player); //K_StripOther(t2->player); - t2->player->ktemp_itemroulette = 1; - t2->player->ktemp_roulettetype = 2; + t2->player->itemroulette = 1; + t2->player->roulettetype = 2; } - if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && t2->player->itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -237,9 +237,9 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) if (t1->target && t1->target->player) { if ((gametyperules & GTR_CIRCUIT) || t1->target->player->bumpers > 0) - t2->player->ktemp_eggmanblame = t1->target->player-players; + t2->player->eggmanblame = t1->target->player-players; else - t2->player->ktemp_eggmanblame = t2->player-players; + t2->player->eggmanblame = t2->player-players; if (t1->target->hnext == t1) { @@ -266,7 +266,7 @@ boolean K_MineCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0 && t2->hitlag == 0) return true; // Bomb punting @@ -308,7 +308,7 @@ boolean K_MineExplosionCollide(mobj_t *t1, mobj_t *t2) { if (t2->player) { - if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0 && t2->hitlag == 0) return true; if (t1->state == &states[S_MINEEXPLOSION1]) @@ -339,14 +339,14 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->ktemp_flashing) + if (t2->player->flashing) return true; // Banana snipe! if (t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->ktemp_flamedash && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && t2->player->itemtype == KITEM_FLAMESHIELD) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -403,7 +403,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->ktemp_flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0 && t2->hitlag == 0) return true; S_StartSound(NULL, sfx_bsnipe); // let all players hear it. @@ -452,8 +452,8 @@ boolean K_SMKIceBlockCollide(mobj_t *t1, mobj_t *t2) P_KillMobj(t1, t2, t2, DMG_NORMAL); /* - if (t2->player && (t2->player->ktemp_invincibilitytimer > 0 - || t2->player->ktemp_growshrinktimer > 0)) + if (t2->player && (t2->player->invincibilitytimer > 0 + || t2->player->growshrinktimer > 0)) return true; */ @@ -483,8 +483,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Invincibility damage - t1Condition = (t1->player->ktemp_invincibilitytimer > 0); - t2Condition = (t2->player->ktemp_invincibilitytimer > 0); + t1Condition = (t1->player->invincibilitytimer > 0); + t2Condition = (t2->player->invincibilitytimer > 0); if (t1Condition == true && t2Condition == false) { @@ -498,8 +498,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Flame Shield dash damage - t1Condition = (t1->player->ktemp_flamedash > 0 && t1->player->ktemp_itemtype == KITEM_FLAMESHIELD); - t2Condition = (t2->player->ktemp_flamedash > 0 && t2->player->ktemp_itemtype == KITEM_FLAMESHIELD); + t1Condition = (t1->player->flamedash > 0 && t1->player->itemtype == KITEM_FLAMESHIELD); + t2Condition = (t2->player->flamedash > 0 && t2->player->itemtype == KITEM_FLAMESHIELD); if (t1Condition == true && t2Condition == false) { @@ -516,8 +516,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) // (Pogo Spring damage is handled in head-stomping code) if (gametyperules & GTR_BUMPERS) { - t1Condition = (t1->player->ktemp_sneakertimer > 0 && t1->player->ktemp_flashing != 0); - t2Condition = (t2->player->ktemp_sneakertimer > 0 && t2->player->ktemp_flashing != 0); + t1Condition = (t1->player->sneakertimer > 0 && t1->player->flashing != 0); + t2Condition = (t2->player->sneakertimer > 0 && t2->player->flashing != 0); if (t1Condition == true && t2Condition == false) { @@ -532,8 +532,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) } // Ring sting, this is a bit more unique - t1Condition = (K_GetShieldFromItem(t2->player->ktemp_itemtype) == KSHIELD_NONE); - t2Condition = (K_GetShieldFromItem(t1->player->ktemp_itemtype) == KSHIELD_NONE); + t1Condition = (K_GetShieldFromItem(t2->player->itemtype) == KSHIELD_NONE); + t2Condition = (K_GetShieldFromItem(t1->player->itemtype) == KSHIELD_NONE); if (t1Condition == true) { diff --git a/src/k_grandprix.c b/src/k_grandprix.c index d2c786ce0..c9e6b391b 100644 --- a/src/k_grandprix.c +++ b/src/k_grandprix.c @@ -472,7 +472,7 @@ void K_IncreaseBotDifficulty(player_t *bot) // Increment bot difficulty based on what position you were meant to come in! expectedstanding = K_BotExpectedStanding(bot); - standingdiff = expectedstanding - bot->ktemp_position; + standingdiff = expectedstanding - bot->position; if (standingdiff >= -2) { diff --git a/src/k_hud.c b/src/k_hud.c index 5a7ffde9a..c2b29fe3d 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -1045,7 +1045,7 @@ static void K_drawKartItem(void) patch_t *localbg = ((offset) ? kp_itembg[2] : kp_itembg[0]); patch_t *localinv = ((offset) ? kp_invincibility[((leveltime % (6*3)) / 3) + 7] : kp_invincibility[(leveltime % (7*3)) / 3]); INT32 fx = 0, fy = 0, fflags = 0; // final coords for hud and flags... - const INT32 numberdisplaymin = ((!offset && stplyr->ktemp_itemtype == KITEM_ORBINAUT) ? 5 : 2); + const INT32 numberdisplaymin = ((!offset && stplyr->itemtype == KITEM_ORBINAUT) ? 5 : 2); INT32 itembar = 0; INT32 maxl = 0; // itembar's normal highest value const INT32 barlength = (r_splitscreen > 1 ? 12 : 26); @@ -1054,12 +1054,12 @@ static void K_drawKartItem(void) UINT8 *colmap = NULL; boolean flipamount = false; // Used for 3P/4P splitscreen to flip item amount stuff - if (stplyr->ktemp_itemroulette) + if (stplyr->itemroulette) { if (stplyr->skincolor) localcolor = stplyr->skincolor; - switch((stplyr->ktemp_itemroulette % (15*3)) / 3) + switch((stplyr->itemroulette % (15*3)) / 3) { // Each case is handled in threes, to give three frames of in-game time to see the item on the roulette case 0: // Sneaker @@ -1144,27 +1144,27 @@ static void K_drawKartItem(void) // The only actual reason is to make sneakers line up this way in the code below // This shouldn't have any actual baring over how it functions // Hyudoro is first, because we're drawing it on top of the player's current item - if (stplyr->ktemp_stealingtimer < 0) + if (stplyr->stealingtimer < 0) { if (leveltime & 2) localpatch = kp_hyudoro[offset]; else localpatch = kp_nodraw; } - else if ((stplyr->ktemp_stealingtimer > 0) && (leveltime & 2)) + else if ((stplyr->stealingtimer > 0) && (leveltime & 2)) { localpatch = kp_hyudoro[offset]; } - else if (stplyr->ktemp_eggmanexplode > 1) + else if (stplyr->eggmanexplode > 1) { if (leveltime & 1) localpatch = kp_eggman[offset]; else localpatch = kp_nodraw; } - else if (stplyr->ktemp_rocketsneakertimer > 1) + else if (stplyr->rocketsneakertimer > 1) { - itembar = stplyr->ktemp_rocketsneakertimer; + itembar = stplyr->rocketsneakertimer; maxl = (itemtime*3) - barlength; if (leveltime & 1) @@ -1172,7 +1172,7 @@ static void K_drawKartItem(void) else localpatch = kp_nodraw; } - else if (stplyr->ktemp_sadtimer > 0) + else if (stplyr->sadtimer > 0) { if (leveltime & 2) localpatch = kp_sadface[offset]; @@ -1181,10 +1181,10 @@ static void K_drawKartItem(void) } else { - if (stplyr->ktemp_itemamount <= 0) + if (stplyr->itemamount <= 0) return; - switch(stplyr->ktemp_itemtype) + switch(stplyr->itemtype) { case KITEM_SNEAKER: localpatch = kp_sneaker[offset]; @@ -1203,7 +1203,7 @@ static void K_drawKartItem(void) localpatch = kp_eggman[offset]; break; case KITEM_ORBINAUT: - localpatch = kp_orbinaut[(offset ? 4 : min(stplyr->ktemp_itemamount-1, 3))]; + localpatch = kp_orbinaut[(offset ? 4 : min(stplyr->itemamount-1, 3))]; break; case KITEM_JAWZ: localpatch = kp_jawz[offset]; @@ -1311,19 +1311,19 @@ static void K_drawKartItem(void) V_DrawScaledPatch(fx, fy, V_HUDTRANS|V_SLIDEIN|fflags, localbg); // Then, the numbers: - if (stplyr->ktemp_itemamount >= numberdisplaymin && !stplyr->ktemp_itemroulette) + if (stplyr->itemamount >= numberdisplaymin && !stplyr->itemroulette) { V_DrawScaledPatch(fx + (flipamount ? 48 : 0), fy, V_HUDTRANS|V_SLIDEIN|fflags|(flipamount ? V_FLIP : 0), kp_itemmulsticker[offset]); // flip this graphic for p2 and p4 in split and shift it. V_DrawFixedPatch(fx<ktemp_itemamount)); + V_DrawString(fx+2, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount)); else - V_DrawString(fx+24, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->ktemp_itemamount)); + V_DrawString(fx+24, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount)); else { V_DrawScaledPatch(fy+28, fy+41, V_HUDTRANS|V_SLIDEIN|fflags, kp_itemx); - V_DrawKartString(fx+38, fy+36, V_HUDTRANS|V_SLIDEIN|fflags, va("%d", stplyr->ktemp_itemamount)); + V_DrawKartString(fx+38, fy+36, V_HUDTRANS|V_SLIDEIN|fflags, va("%d", stplyr->itemamount)); } } else @@ -1351,17 +1351,17 @@ static void K_drawKartItem(void) } // Quick Eggman numbers - if (stplyr->ktemp_eggmanexplode > 1) - V_DrawScaledPatch(fx+17, fy+13-offset, V_HUDTRANS|V_SLIDEIN|fflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->ktemp_eggmanexplode))]); + if (stplyr->eggmanexplode > 1) + V_DrawScaledPatch(fx+17, fy+13-offset, V_HUDTRANS|V_SLIDEIN|fflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->eggmanexplode))]); - if (stplyr->ktemp_itemtype == KITEM_FLAMESHIELD && stplyr->ktemp_flamelength > 0) + if (stplyr->itemtype == KITEM_FLAMESHIELD && stplyr->flamelength > 0) { INT32 numframes = 104; INT32 absolutemax = 16 * flameseg; - INT32 flamemax = stplyr->ktemp_flamelength * flameseg; - INT32 flamemeter = min(stplyr->ktemp_flamemeter, flamemax); + INT32 flamemax = stplyr->flamelength * flameseg; + INT32 flamemeter = min(stplyr->flamemeter, flamemax); - INT32 bf = 16 - stplyr->ktemp_flamelength; + INT32 bf = 16 - stplyr->flamelength; INT32 ff = numframes - ((flamemeter * numframes) / absolutemax); INT32 fmin = (8 * (bf-1)); @@ -1385,9 +1385,9 @@ static void K_drawKartItem(void) if (bf >= 0 && bf < 16) V_DrawScaledPatch(fx-xo, fy-yo, V_HUDTRANS|V_SLIDEIN|fflags|flip, kp_flameshieldmeter_bg[bf][offset]); - if (ff >= 0 && ff < numframes && stplyr->ktemp_flamemeter > 0) + if (ff >= 0 && ff < numframes && stplyr->flamemeter > 0) { - if ((stplyr->ktemp_flamemeter > flamemax) && (leveltime & 1)) + if ((stplyr->flamemeter > flamemax) && (leveltime & 1)) { UINT8 *fsflash = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_WHITE, GTC_CACHE); V_DrawMappedPatch(fx-xo, fy-yo, V_HUDTRANS|V_SLIDEIN|fflags|flip, kp_flameshieldmeter[ff][offset], fsflash); @@ -1572,7 +1572,7 @@ static void K_DrawKartPositionNum(INT32 num) addOrSub = V_SUBTRACT; } - if (stplyr->ktemp_positiondelay || stplyr->exiting) + if (stplyr->positiondelay || stplyr->exiting) { scale *= 2; overtake = true; // this is used for splitscreen stuff in conjunction with flipdraw. @@ -1735,11 +1735,11 @@ static boolean K_drawKartPositionFaces(void) if (completed[i] || !playeringame[i] || players[i].spectator || !players[i].mo) continue; - if (players[i].ktemp_position >= lowestposition) + if (players[i].position >= lowestposition) continue; rankplayer[ranklines] = i; - lowestposition = players[i].ktemp_position; + lowestposition = players[i].position; } i = rankplayer[ranklines]; @@ -1816,7 +1816,7 @@ static boolean K_drawKartPositionFaces(void) UINT32 emeraldFlag = (1 << j); UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + j; - if (players[rankplayer[i]].ktemp_emeralds & emeraldFlag) + if (players[rankplayer[i]].emeralds & emeraldFlag) { colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE); V_DrawMappedPatch(emeraldx, Y+7, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_rankemerald, colormap); @@ -1831,7 +1831,7 @@ static boolean K_drawKartPositionFaces(void) V_DrawScaledPatch(FACE_X-4, Y-3, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_ranknobumpers); else { - INT32 pos = players[rankplayer[i]].ktemp_position; + INT32 pos = players[rankplayer[i]].position; if (pos < 0 || pos > MAXPLAYERS) pos = 0; // Draws the little number over the face @@ -1868,7 +1868,7 @@ static void K_drawKartEmeralds(void) UINT32 emeraldFlag = (1 << i); UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + i; - if (stplyr->ktemp_emeralds & emeraldFlag) + if (stplyr->emeralds & emeraldFlag) { boolean whiteFlash = (leveltime & 1); UINT8 *colormap; @@ -1997,7 +1997,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN V_DrawScaledPatch(x-4, y-7, 0, kp_ranknobumpers); else { - INT32 pos = players[tab[i].num].ktemp_position; + INT32 pos = players[tab[i].num].position; if (pos < 0 || pos > MAXPLAYERS) pos = 0; // Draws the little number over the face @@ -2602,16 +2602,16 @@ static void K_drawKartPlayerCheck(void) continue; } - if ((checkplayer->ktemp_invincibilitytimer <= 0) && (leveltime & 2)) + if ((checkplayer->invincibilitytimer <= 0) && (leveltime & 2)) { pnum++; // white frames } - if (checkplayer->ktemp_itemtype == KITEM_GROW || checkplayer->ktemp_growshrinktimer > 0) + if (checkplayer->itemtype == KITEM_GROW || checkplayer->growshrinktimer > 0) { pnum += 4; } - else if (checkplayer->ktemp_itemtype == KITEM_INVINCIBILITY || checkplayer->ktemp_invincibilitytimer) + else if (checkplayer->itemtype == KITEM_INVINCIBILITY || checkplayer->invincibilitytimer) { pnum += 2; } @@ -2645,8 +2645,8 @@ static boolean K_ShowPlayerNametag(player_t *p) if (gametyperules & GTR_CIRCUIT) { - if ((p->ktemp_position < stplyr->ktemp_position-2) - || (p->ktemp_position > stplyr->ktemp_position+2)) + if ((p->position < stplyr->position-2) + || (p->position > stplyr->position+2)) { return false; } @@ -3144,10 +3144,10 @@ static void K_drawKartMinimap(void) if (gametype == GT_BATTLE && players[i].bumpers <= 0) continue; - if (players[i].ktemp_hyudorotimer > 0) + if (players[i].hyudorotimer > 0) { - if (!((players[i].ktemp_hyudorotimer < TICRATE/2 - || players[i].ktemp_hyudorotimer > hyu-(TICRATE/2)) + if (!((players[i].hyudorotimer < TICRATE/2 + || players[i].hyudorotimer > hyu-(TICRATE/2)) && !(leveltime & 1))) continue; } @@ -3178,7 +3178,7 @@ static void K_drawKartMinimap(void) K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, faceprefix[skin][FACE_MINIMAP], colormap, AutomapPic); // Target reticule - if ((gametype == GT_RACE && players[i].ktemp_position == spbplace) + if ((gametype == GT_RACE && players[i].position == spbplace) || (gametype == GT_BATTLE && K_IsPlayerWanted(&players[i]))) K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic); } @@ -3231,7 +3231,7 @@ static void K_drawKartMinimap(void) K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, faceprefix[skin][FACE_MINIMAP], colormap, AutomapPic); // Target reticule - if ((gametype == GT_RACE && players[localplayers[i]].ktemp_position == spbplace) + if ((gametype == GT_RACE && players[localplayers[i]].position == spbplace) || (gametype == GT_BATTLE && K_IsPlayerWanted(&players[localplayers[i]]))) K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic); } @@ -3569,7 +3569,7 @@ static void K_drawBattleFullscreen(void) if (K_IsPlayerLosing(stplyr)) p = kp_battlelose; - else if (stplyr->ktemp_position == 1) + else if (stplyr->position == 1) p = kp_battlewin; V_DrawFixedPatch(x<steering/50) tn -= (tn - (stplyr->steering/50))/8; - if (dr != stplyr->ktemp_drift*16) - dr -= (dr - (stplyr->ktemp_drift*16))/8; + if (dr != stplyr->drift*16) + dr -= (dr - (stplyr->drift*16))/8; if (r_splitscreen == 1) { @@ -3721,7 +3721,7 @@ static void K_drawKartFirstPerson(void) if (stplyr->mo) { - UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->ktemp_driftcharge); + UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->driftcharge); const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->drawangle; // yes, the following is correct. no, you do not need to swap the x and y. fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2); @@ -4054,7 +4054,7 @@ static void K_drawDistributionDebugger(void) for (i = 0; i < MAXPLAYERS; i++) { if (playeringame[i] && !players[i].spectator - && players[i].ktemp_position == 1) + && players[i].position == 1) { // This player is first! Yay! pdis = stplyr->distancetofinish - players[i].distancetofinish; @@ -4065,7 +4065,7 @@ static void K_drawDistributionDebugger(void) if (franticitems) // Frantic items make the distances between everyone artifically higher, for crazier items pdis = (15 * pdis) / 14; - if (spbplace != -1 && stplyr->ktemp_position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell + if (spbplace != -1 && stplyr->position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell { pdis = (3 * pdis) / 2; spbrush = true; @@ -4255,7 +4255,7 @@ void K_drawKartHUD(void) { // Draw the numerical position if (LUA_HudEnabled(hud_position)) - K_DrawKartPositionNum(stplyr->ktemp_position); + K_DrawKartPositionNum(stplyr->position); } else //if (!(demo.playback && hu_showscores)) { diff --git a/src/k_kart.c b/src/k_kart.c index 7aed2c800..fd9aa2efa 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -269,15 +269,15 @@ boolean K_IsPlayerLosing(player_t *player) if (battlecapsules && player->bumpers <= 0) return true; // DNF in break the capsules - if (player->ktemp_position == 1) + if (player->position == 1) return false; for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || players[i].spectator) continue; - if (players[i].ktemp_position > pcount) - pcount = players[i].ktemp_position; + if (players[i].position > pcount) + pcount = players[i].position; } if (pcount <= 1) @@ -287,7 +287,7 @@ boolean K_IsPlayerLosing(player_t *player) if (pcount % 2) // any remainder? winningpos++; - return (player->ktemp_position > winningpos); + return (player->position > winningpos); } fixed_t K_GetKartGameSpeedScalar(SINT8 value) @@ -450,43 +450,43 @@ static void K_KartGetItemResult(player_t *player, SINT8 getitem) { // Special roulettes first, then the generic ones are handled by default case KRITEM_DUALSNEAKER: // Sneaker x2 - player->ktemp_itemtype = KITEM_SNEAKER; - player->ktemp_itemamount = 2; + player->itemtype = KITEM_SNEAKER; + player->itemamount = 2; break; case KRITEM_TRIPLESNEAKER: // Sneaker x3 - player->ktemp_itemtype = KITEM_SNEAKER; - player->ktemp_itemamount = 3; + player->itemtype = KITEM_SNEAKER; + player->itemamount = 3; break; case KRITEM_TRIPLEBANANA: // Banana x3 - player->ktemp_itemtype = KITEM_BANANA; - player->ktemp_itemamount = 3; + player->itemtype = KITEM_BANANA; + player->itemamount = 3; break; case KRITEM_TENFOLDBANANA: // Banana x10 - player->ktemp_itemtype = KITEM_BANANA; - player->ktemp_itemamount = 10; + player->itemtype = KITEM_BANANA; + player->itemamount = 10; break; case KRITEM_TRIPLEORBINAUT: // Orbinaut x3 - player->ktemp_itemtype = KITEM_ORBINAUT; - player->ktemp_itemamount = 3; + player->itemtype = KITEM_ORBINAUT; + player->itemamount = 3; break; case KRITEM_QUADORBINAUT: // Orbinaut x4 - player->ktemp_itemtype = KITEM_ORBINAUT; - player->ktemp_itemamount = 4; + player->itemtype = KITEM_ORBINAUT; + player->itemamount = 4; break; case KRITEM_DUALJAWZ: // Jawz x2 - player->ktemp_itemtype = KITEM_JAWZ; - player->ktemp_itemamount = 2; + player->itemtype = KITEM_JAWZ; + player->itemamount = 2; break; default: if (getitem <= 0 || getitem >= NUMKARTRESULTS) // Sad (Fallback) { if (getitem != 0) CONS_Printf("ERROR: P_KartGetItemResult - Item roulette gave bad item (%d) :(\n", getitem); - player->ktemp_itemtype = KITEM_SAD; + player->itemtype = KITEM_SAD; } else - player->ktemp_itemtype = getitem; - player->ktemp_itemamount = 1; + player->itemtype = getitem; + player->itemamount = 1; break; } } @@ -540,7 +540,7 @@ INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush, if (players[i].exiting) pexiting++; - if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].ktemp_itemtype)) + if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].itemtype)) { // Don't allow more than one of each shield type at a time return 0; @@ -548,9 +548,9 @@ INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush, if (players[i].mo && gametype == GT_RACE) { - if (players[i].ktemp_position == 1 && first == -1) + if (players[i].position == 1 && first == -1) first = i; - if (players[i].ktemp_position == 2 && second == -1) + if (players[i].position == 2 && second == -1) second = i; } } @@ -738,7 +738,7 @@ UINT8 K_FindUseodds(player_t *player, fixed_t mashed, UINT32 pdis, UINT8 bestbum if (gametype == GT_BATTLE) // Battle Mode { - if (player->ktemp_roulettetype == 1 && oddsvalid[1] == true) + if (player->roulettetype == 1 && oddsvalid[1] == true) { // 1 is the extreme odds of player-controlled "Karma" items useodds = 1; @@ -802,9 +802,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) boolean spbrush = false; // This makes the roulette cycle through items - if this is 0, you shouldn't be here. - if (!player->ktemp_itemroulette) + if (!player->itemroulette) return; - player->ktemp_itemroulette++; + player->itemroulette++; // Gotta check how many players are active at this moment. for (i = 0; i < MAXPLAYERS; i++) @@ -823,29 +823,29 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) dontforcespb = true; // This makes the roulette produce the random noises. - if ((player->ktemp_itemroulette % 3) == 1 && P_IsDisplayPlayer(player) && !demo.freecam) + if ((player->itemroulette % 3) == 1 && P_IsDisplayPlayer(player) && !demo.freecam) { -#define PLAYROULETTESND S_StartSound(NULL, sfx_itrol1 + ((player->ktemp_itemroulette / 3) % 8)) +#define PLAYROULETTESND S_StartSound(NULL, sfx_itrol1 + ((player->itemroulette / 3) % 8)) for (i = 0; i <= r_splitscreen; i++) { - if (player == &players[displayplayers[i]] && players[displayplayers[i]].ktemp_itemroulette) + if (player == &players[displayplayers[i]] && players[displayplayers[i]].itemroulette) PLAYROULETTESND; } #undef PLAYROULETTESND } - roulettestop = TICRATE + (3*(pingame - player->ktemp_position)); + roulettestop = TICRATE + (3*(pingame - player->position)); // If the roulette finishes or the player presses BT_ATTACK, stop the roulette and calculate the item. // I'm returning via the exact opposite, however, to forgo having another bracket embed. Same result either way, I think. // Finally, if you get past this check, now you can actually start calculating what item you get. - if ((cmd->buttons & BT_ATTACK) && (player->ktemp_itemroulette >= roulettestop) + if ((cmd->buttons & BT_ATTACK) && (player->itemroulette >= roulettestop) && !(player->pflags & (PF_ITEMOUT|PF_EGGMANOUT|PF_USERINGS))) { // Mashing reduces your chances for the good items - mashed = FixedDiv((player->ktemp_itemroulette)*FRACUNIT, ((TICRATE*3)+roulettestop)*FRACUNIT) - FRACUNIT; + mashed = FixedDiv((player->itemroulette)*FRACUNIT, ((TICRATE*3)+roulettestop)*FRACUNIT) - FRACUNIT; } - else if (!(player->ktemp_itemroulette >= (TICRATE*3))) + else if (!(player->itemroulette >= (TICRATE*3))) return; if (cmd->buttons & BT_ATTACK) @@ -854,7 +854,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) for (i = 0; i < MAXPLAYERS; i++) { if (playeringame[i] && !players[i].spectator - && players[i].ktemp_position == 1) + && players[i].position == 1) { // This player is first! Yay! @@ -880,7 +880,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) pdis = (15 * pdis) / 14; } - if (spbplace != -1 && player->ktemp_position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell + if (spbplace != -1 && player->position == spbplace+1) // SPB Rush Mode: It's 2nd place's job to catch-up items and make 1st place's job hell { pdis = (3 * pdis) / 2; spbrush = true; @@ -896,13 +896,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) // SPECIAL CASE No. 1: // Fake Eggman items - if (player->ktemp_roulettetype == 2) + if (player->roulettetype == 2) { - player->ktemp_eggmanexplode = 4*TICRATE; + player->eggmanexplode = 4*TICRATE; //player->karthud[khud_itemblink] = TICRATE; //player->karthud[khud_itemblinkmode] = 1; - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; if (P_IsDisplayPlayer(player) && !demo.freecam) S_StartSound(NULL, sfx_itrole); return; @@ -913,11 +913,11 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) if (cv_kartdebugitem.value != 0 && !modeattacking) { K_KartGetItemResult(player, cv_kartdebugitem.value); - player->ktemp_itemamount = cv_kartdebugamount.value; + player->itemamount = cv_kartdebugamount.value; player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = 2; - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; if (P_IsDisplayPlayer(player) && !demo.freecam) S_StartSound(NULL, sfx_dbgsal); return; @@ -969,8 +969,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } player->karthud[khud_itemblink] = TICRATE; - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; return; } @@ -984,8 +984,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) K_KartGetItemResult(player, KITEM_SUPERRING); player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = 1; - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; if (P_IsDisplayPlayer(player)) S_StartSound(NULL, sfx_itrolm); return; @@ -994,15 +994,15 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) // SPECIAL CASE No. 5: // Force SPB onto 2nd if they get too far behind - if ((gametyperules & GTR_CIRCUIT) && player->ktemp_position == 2 && pdis > (DISTVAR*8) + if ((gametyperules & GTR_CIRCUIT) && player->position == 2 && pdis > (DISTVAR*8) && spbplace == -1 && !indirectitemcooldown && !dontforcespb && cv_selfpropelledbomb.value) { K_KartGetItemResult(player, KITEM_SPB); player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = (mashed ? 1 : 0); - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; if (P_IsDisplayPlayer(player)) S_StartSound(NULL, (mashed ? sfx_itrolm : sfx_itrolf)); return; @@ -1029,18 +1029,18 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } else { - player->ktemp_itemtype = KITEM_SAD; - player->ktemp_itemamount = 1; + player->itemtype = KITEM_SAD; + player->itemamount = 1; } if (P_IsDisplayPlayer(player) && !demo.freecam) - S_StartSound(NULL, ((player->ktemp_roulettetype == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf))); + S_StartSound(NULL, ((player->roulettetype == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf))); player->karthud[khud_itemblink] = TICRATE; - player->karthud[khud_itemblinkmode] = ((player->ktemp_roulettetype == 1) ? 2 : (mashed ? 1 : 0)); + player->karthud[khud_itemblinkmode] = ((player->roulettetype == 1) ? 2 : (mashed ? 1 : 0)); - player->ktemp_itemroulette = 0; // Since we're done, clear the roulette number - player->ktemp_roulettetype = 0; // This too + player->itemroulette = 0; // Since we're done, clear the roulette number + player->roulettetype = 0; // This too } //} @@ -1056,7 +1056,7 @@ static fixed_t K_PlayerWeight(mobj_t *mobj, mobj_t *against) if (against && !P_MobjWasRemoved(against) && against->player && ((!P_PlayerInPain(against->player) && P_PlayerInPain(mobj->player)) // You're hurt - || (against->player->ktemp_itemtype == KITEM_BUBBLESHIELD && mobj->player->ktemp_itemtype != KITEM_BUBBLESHIELD))) // They have a Bubble Shield + || (against->player->itemtype == KITEM_BUBBLESHIELD && mobj->player->itemtype != KITEM_BUBBLESHIELD))) // They have a Bubble Shield { weight = 0; // This player does not cause any bump action } @@ -1065,7 +1065,7 @@ static fixed_t K_PlayerWeight(mobj_t *mobj, mobj_t *against) weight = (mobj->player->kartweight) * FRACUNIT; if (mobj->player->speed > K_GetKartSpeed(mobj->player, false)) weight += (mobj->player->speed - K_GetKartSpeed(mobj->player, false))/8; - if (mobj->player->ktemp_itemtype == KITEM_BUBBLESHIELD) + if (mobj->player->itemtype == KITEM_BUBBLESHIELD) weight += 9*FRACUNIT; } @@ -1097,7 +1097,7 @@ fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against) case MT_FALLINGROCK: if (against->player) { - if (against->player->ktemp_invincibilitytimer || against->player->ktemp_growshrinktimer > 0) + if (against->player->invincibilitytimer || against->player->growshrinktimer > 0) weight = 0; else weight = K_PlayerWeight(against, NULL); @@ -1147,32 +1147,32 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol INT32 flash; flash = K_GetKartFlashing(mobj1->player); - if (mobj1->player && mobj1->player->ktemp_flashing > 0 && mobj1->player->ktemp_flashing < flash) + if (mobj1->player && mobj1->player->flashing > 0 && mobj1->player->flashing < flash) { - if (mobj1->player->ktemp_flashing < flash-1) - mobj1->player->ktemp_flashing++; + if (mobj1->player->flashing < flash-1) + mobj1->player->flashing++; return false; } flash = K_GetKartFlashing(mobj2->player); - if (mobj2->player && mobj2->player->ktemp_flashing > 0 && mobj2->player->ktemp_flashing < flash) + if (mobj2->player && mobj2->player->flashing > 0 && mobj2->player->flashing < flash) { - if (mobj2->player->ktemp_flashing < flash-1) - mobj2->player->ktemp_flashing++; + if (mobj2->player->flashing < flash-1) + mobj2->player->flashing++; return false; } } // Don't bump if you've recently bumped - if (mobj1->player && mobj1->player->ktemp_justbumped) + if (mobj1->player && mobj1->player->justbumped) { - mobj1->player->ktemp_justbumped = bumptime; + mobj1->player->justbumped = bumptime; return false; } - if (mobj2->player && mobj2->player->ktemp_justbumped) + if (mobj2->player && mobj2->player->justbumped) { - mobj2->player->ktemp_justbumped = bumptime; + mobj2->player->justbumped = bumptime; return false; } @@ -1260,7 +1260,7 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol } // Do the bump fx when we've CONFIRMED we can bump. - if ((mobj1->player && mobj1->player->ktemp_itemtype == KITEM_BUBBLESHIELD) || (mobj2->player && mobj2->player->ktemp_itemtype == KITEM_BUBBLESHIELD)) + if ((mobj1->player && mobj1->player->itemtype == KITEM_BUBBLESHIELD) || (mobj2->player && mobj2->player->itemtype == KITEM_BUBBLESHIELD)) S_StartSound(mobj1, sfx_s3k44); else S_StartSound(mobj1, sfx_s3k49); @@ -1279,14 +1279,14 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol { mobj1->player->rmomx = mobj1->momx - mobj1->player->cmomx; mobj1->player->rmomy = mobj1->momy - mobj1->player->cmomy; - mobj1->player->ktemp_justbumped = bumptime; - mobj1->player->ktemp_spindash = 0; + mobj1->player->justbumped = bumptime; + mobj1->player->spindash = 0; - if (mobj1->player->ktemp_spinouttimer) + if (mobj1->player->spinouttimer) { - mobj1->player->ktemp_wipeoutslow = wipeoutslowtime+1; - mobj1->player->ktemp_spinouttimer = max(wipeoutslowtime+1, mobj1->player->ktemp_spinouttimer); - //mobj1->player->ktemp_spinouttype = KSPIN_WIPEOUT; // Enforce type + mobj1->player->wipeoutslow = wipeoutslowtime+1; + mobj1->player->spinouttimer = max(wipeoutslowtime+1, mobj1->player->spinouttimer); + //mobj1->player->spinouttype = KSPIN_WIPEOUT; // Enforce type } } @@ -1294,14 +1294,14 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol { mobj2->player->rmomx = mobj2->momx - mobj2->player->cmomx; mobj2->player->rmomy = mobj2->momy - mobj2->player->cmomy; - mobj2->player->ktemp_justbumped = bumptime; - mobj2->player->ktemp_spindash = 0; + mobj2->player->justbumped = bumptime; + mobj2->player->spindash = 0; - if (mobj2->player->ktemp_spinouttimer) + if (mobj2->player->spinouttimer) { - mobj2->player->ktemp_wipeoutslow = wipeoutslowtime+1; - mobj2->player->ktemp_spinouttimer = max(wipeoutslowtime+1, mobj2->player->ktemp_spinouttimer); - //mobj2->player->ktemp_spinouttype = KSPIN_WIPEOUT; // Enforce type + mobj2->player->wipeoutslow = wipeoutslowtime+1; + mobj2->player->spinouttimer = max(wipeoutslowtime+1, mobj2->player->spinouttimer); + //mobj2->player->spinouttype = KSPIN_WIPEOUT; // Enforce type } } @@ -1389,14 +1389,14 @@ static void K_UpdateOffroad(player_t *player) // If you are in offroad, a timer starts. if (offroadstrength) { - if (player->ktemp_offroad < offroadstrength) - player->ktemp_offroad += offroadstrength / TICRATE; + if (player->offroad < offroadstrength) + player->offroad += offroadstrength / TICRATE; - if (player->ktemp_offroad > offroadstrength) - player->ktemp_offroad = offroadstrength; + if (player->offroad > offroadstrength) + player->offroad = offroadstrength; } else - player->ktemp_offroad = 0; + player->offroad = 0; } static void K_DrawDraftCombiring(player_t *player, player_t *victim, fixed_t curdist, fixed_t maxdist, boolean transparent) @@ -1480,7 +1480,7 @@ static void K_UpdateDraft(player_t *player) UINT8 leniency; UINT8 i; - if (player->ktemp_itemtype == KITEM_FLAMESHIELD) + if (player->itemtype == KITEM_FLAMESHIELD) { // Flame Shield gets infinite draft distance as its passive effect. draftdistance = 0; @@ -1526,7 +1526,7 @@ static void K_UpdateDraft(player_t *player) continue; // No tethering off of the guy who got the starting bonus :P - if (players[i].ktemp_startboost > 0) + if (players[i].startboost > 0) continue; #ifndef EASYDRAFTTEST @@ -1562,21 +1562,21 @@ static void K_UpdateDraft(player_t *player) continue; #endif - olddraft = player->ktemp_draftpower; + olddraft = player->draftpower; - player->ktemp_draftleeway = leniency; - player->ktemp_lastdraft = i; + player->draftleeway = leniency; + player->lastdraft = i; // Draft power is used later in K_GetKartBoostPower, ranging from 0 for normal speed and FRACUNIT for max draft speed. // How much this increments every tic biases toward acceleration! (min speed gets 1.5% per tic, max speed gets 0.5% per tic) - if (player->ktemp_draftpower < FRACUNIT) - player->ktemp_draftpower += (FRACUNIT/200) + ((9 - player->kartspeed) * ((3*FRACUNIT)/1600)); + if (player->draftpower < FRACUNIT) + player->draftpower += (FRACUNIT/200) + ((9 - player->kartspeed) * ((3*FRACUNIT)/1600)); - if (player->ktemp_draftpower > FRACUNIT) - player->ktemp_draftpower = FRACUNIT; + if (player->draftpower > FRACUNIT) + player->draftpower = FRACUNIT; // Play draft finish noise - if (olddraft < FRACUNIT && player->ktemp_draftpower >= FRACUNIT) + if (olddraft < FRACUNIT && player->draftpower >= FRACUNIT) S_StartSound(player->mo, sfx_cdfm62); // Spawn in the visual! @@ -1587,24 +1587,24 @@ static void K_UpdateDraft(player_t *player) } // No one to draft off of? Then you can knock that off. - if (player->ktemp_draftleeway) // Prevent small disruptions from stopping your draft. + if (player->draftleeway) // Prevent small disruptions from stopping your draft. { - player->ktemp_draftleeway--; - if (player->ktemp_lastdraft >= 0 - && player->ktemp_lastdraft < MAXPLAYERS - && playeringame[player->ktemp_lastdraft] - && !players[player->ktemp_lastdraft].spectator - && players[player->ktemp_lastdraft].mo) + player->draftleeway--; + if (player->lastdraft >= 0 + && player->lastdraft < MAXPLAYERS + && playeringame[player->lastdraft] + && !players[player->lastdraft].spectator + && players[player->lastdraft].mo) { - player_t *victim = &players[player->ktemp_lastdraft]; + player_t *victim = &players[player->lastdraft]; fixed_t dist = P_AproxDistance(P_AproxDistance(victim->mo->x - player->mo->x, victim->mo->y - player->mo->y), victim->mo->z - player->mo->z); K_DrawDraftCombiring(player, victim, dist, draftdistance, true); } } else // Remove draft speed boost. { - player->ktemp_draftpower = 0; - player->ktemp_lastdraft = -1; + player->draftpower = 0; + player->lastdraft = -1; } } @@ -1716,13 +1716,13 @@ void K_SpawnDashDustRelease(player_t *player) if (!P_IsObjectOnGround(player->mo)) return; - if (!player->speed && !player->ktemp_startboost && !player->ktemp_spindash) + if (!player->speed && !player->startboost && !player->spindash) return; travelangle = player->mo->angle; - if (player->ktemp_drift || (player->pflags & PF_DRIFTEND)) - travelangle -= (ANGLE_45/5)*player->ktemp_drift; + if (player->drift || (player->pflags & PF_DRIFTEND)) + travelangle -= (ANGLE_45/5)*player->drift; for (i = 0; i < 2; i++) { @@ -1823,7 +1823,7 @@ void K_SpawnNormalSpeedLines(player_t *player) K_MatchGenericExtraFlags(fast, player->mo); // Make it red when you have the eggman speed boost - if (player->ktemp_eggmanexplode) + if (player->eggmanexplode) { fast->color = SKINCOLOR_RED; fast->colorized = true; @@ -1848,8 +1848,8 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo) fast->colorized = true; K_MatchGenericExtraFlags(fast, mo); P_SetMobjState(fast, S_KARTINVLINES1); - if (mo->player->ktemp_invincibilitytimer < 10*TICRATE) - fast->destscale = 6*((mo->player->ktemp_invincibilitytimer/TICRATE)*FRACUNIT)/8; + if (mo->player->invincibilitytimer < 10*TICRATE) + fast->destscale = 6*((mo->player->invincibilitytimer/TICRATE)*FRACUNIT)/8; } static SINT8 K_GlanceAtPlayers(player_t *glancePlayer) @@ -1890,7 +1890,7 @@ static SINT8 K_GlanceAtPlayers(player_t *glancePlayer) continue; } - if (p->spectator || p->ktemp_hyudorotimer > 0) + if (p->spectator || p->hyudorotimer > 0) { // Not playing / invisible continue; @@ -1969,7 +1969,7 @@ void K_KartMoveAnimation(player_t *player) SINT8 turndir = 0; SINT8 destGlanceDir = 0; - SINT8 drift = player->ktemp_drift; + SINT8 drift = player->drift; if (player->cmd.turning < -minturn) { @@ -2412,14 +2412,14 @@ void K_MomentumToFacing(player_t *player) boolean K_ApplyOffroad(player_t *player) { - if (player->ktemp_invincibilitytimer || player->ktemp_hyudorotimer || player->ktemp_sneakertimer) + if (player->invincibilitytimer || player->hyudorotimer || player->sneakertimer) return false; return true; } boolean K_SlopeResistance(player_t *player) { - if (player->ktemp_invincibilitytimer || player->ktemp_sneakertimer || player->ktemp_tiregrease) + if (player->invincibilitytimer || player->sneakertimer || player->tiregrease) return true; return false; } @@ -2461,17 +2461,17 @@ static void K_GetKartBoostPower(player_t *player) fixed_t speedboost = 0, accelboost = 0, handleboost = 0; UINT8 numboosts = 0; - if (player->ktemp_spinouttimer && player->ktemp_wipeoutslow == 1) // Slow down after you've been bumped + if (player->spinouttimer && player->wipeoutslow == 1) // Slow down after you've been bumped { - player->ktemp_boostpower = player->ktemp_speedboost = player->ktemp_accelboost = 0; + player->boostpower = player->speedboost = player->accelboost = 0; return; } // Offroad is separate, it's difficult to factor it in with a variable value anyway. - if (K_ApplyOffroad(player) && player->ktemp_offroad >= 0) - boostpower = FixedDiv(boostpower, FixedMul(player->ktemp_offroad, K_GetKartGameSpeedScalar(gamespeed)) + FRACUNIT); + if (K_ApplyOffroad(player) && player->offroad >= 0) + boostpower = FixedDiv(boostpower, FixedMul(player->offroad, K_GetKartGameSpeedScalar(gamespeed)) + FRACUNIT); - if (player->ktemp_bananadrag > TICRATE) + if (player->bananadrag > TICRATE) boostpower = (4*boostpower)/5; // Note: Handling will ONLY stack when sliptiding! @@ -2480,34 +2480,34 @@ static void K_GetKartBoostPower(player_t *player) numboosts++; \ speedboost += FixedDiv(s, FRACUNIT + (metabolism * (numboosts-1))); \ accelboost += FixedDiv(a, FRACUNIT + (metabolism * (numboosts-1))); \ - if (player->ktemp_aizdriftstrat) \ + if (player->aizdriftstrat) \ handleboost += FixedDiv(h, FRACUNIT + (metabolism * (numboosts-1))); \ else \ handleboost = max(h, handleboost); \ } - if (player->ktemp_sneakertimer) // Sneaker + if (player->sneakertimer) // Sneaker { UINT8 i; - for (i = 0; i < player->ktemp_numsneakers; i++) + for (i = 0; i < player->numsneakers; i++) { ADDBOOST(FRACUNIT/2, 8*FRACUNIT, sliptidehandling); // + 50% top speed, + 800% acceleration, +50% handling } } - if (player->ktemp_invincibilitytimer) // Invincibility + if (player->invincibilitytimer) // Invincibility { ADDBOOST(3*FRACUNIT/8, 3*FRACUNIT, sliptidehandling/2); // + 37.5% top speed, + 300% acceleration, +25% handling } - if (player->ktemp_growshrinktimer > 0) // Grow + if (player->growshrinktimer > 0) // Grow { ADDBOOST(0, 0, sliptidehandling/2); // + 0% top speed, + 0% acceleration, +25% handling } - if (player->ktemp_flamedash) // Flame Shield dash + if (player->flamedash) // Flame Shield dash { - fixed_t dash = K_FlameShieldDashVar(player->ktemp_flamedash); + fixed_t dash = K_FlameShieldDashVar(player->flamedash); ADDBOOST( dash, // + infinite top speed 3*FRACUNIT, // + 300% acceleration @@ -2515,10 +2515,10 @@ static void K_GetKartBoostPower(player_t *player) ); } - if (player->ktemp_spindashboost) // Spindash boost + if (player->spindashboost) // Spindash boost { const fixed_t MAXCHARGESPEED = K_GetSpindashChargeSpeed(player); - const fixed_t exponent = FixedMul(player->ktemp_spindashspeed, player->ktemp_spindashspeed); + const fixed_t exponent = FixedMul(player->spindashspeed, player->spindashspeed); // character & charge dependent ADDBOOST( @@ -2528,50 +2528,50 @@ static void K_GetKartBoostPower(player_t *player) ); } - if (player->ktemp_startboost) // Startup Boost + if (player->startboost) // Startup Boost { ADDBOOST(FRACUNIT/2, 4*FRACUNIT, 0); // + 50% top speed, + 400% acceleration, +0% handling } - if (player->ktemp_driftboost) // Drift Boost + if (player->driftboost) // Drift Boost { ADDBOOST(FRACUNIT/4, 4*FRACUNIT, 0); // + 25% top speed, + 400% acceleration, +0% handling } - if (player->ktemp_ringboost) // Ring Boost + if (player->ringboost) // Ring Boost { ADDBOOST(FRACUNIT/5, 4*FRACUNIT, 0); // + 20% top speed, + 400% acceleration, +0% handling } - if (player->ktemp_eggmanexplode) // Ready-to-explode + if (player->eggmanexplode) // Ready-to-explode { ADDBOOST(3*FRACUNIT/20, FRACUNIT, 0); // + 15% top speed, + 100% acceleration, +0% handling } - if (player->ktemp_draftpower > 0) // Drafting + if (player->draftpower > 0) // Drafting { // 30% - 44%, each point of speed adds 1.75% fixed_t draftspeed = ((3*FRACUNIT)/10) + ((player->kartspeed-1) * ((7*FRACUNIT)/400)); - speedboost += FixedMul(draftspeed, player->ktemp_draftpower); // (Drafting suffers no boost stack penalty.) + speedboost += FixedMul(draftspeed, player->draftpower); // (Drafting suffers no boost stack penalty.) numboosts++; } - player->ktemp_boostpower = boostpower; + player->boostpower = boostpower; // value smoothing - if (speedboost > player->ktemp_speedboost) + if (speedboost > player->speedboost) { - player->ktemp_speedboost = speedboost; + player->speedboost = speedboost; } else { - player->ktemp_speedboost += (speedboost - player->ktemp_speedboost) / (TICRATE/2); + player->speedboost += (speedboost - player->speedboost) / (TICRATE/2); } - player->ktemp_accelboost = accelboost; - player->ktemp_handleboost = handleboost; + player->accelboost = accelboost; + player->handleboost = handleboost; - player->ktemp_numboosts = numboosts; + player->numboosts = numboosts; } // Returns kart speed from a stat. Boost power and scale are NOT taken into account, no player or object is necessary. @@ -2623,7 +2623,7 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower) finalspeed = FixedMul(finalspeed, K_BotTopSpeedRubberband(player)); } - return FixedMul(finalspeed, player->ktemp_boostpower+player->ktemp_speedboost); + return FixedMul(finalspeed, player->boostpower+player->speedboost); } return finalspeed; @@ -2641,7 +2641,7 @@ fixed_t K_GetKartAccel(player_t *player) k_accel = FixedMul(k_accel, FRACUNIT + (sphereAdd * player->spheres)); } - return FixedMul(k_accel, (FRACUNIT + player->ktemp_accelboost) / 4); + return FixedMul(k_accel, (FRACUNIT + player->accelboost) / 4); } UINT16 K_GetKartFlashing(player_t *player) @@ -2673,17 +2673,17 @@ SINT8 K_GetForwardMove(player_t *player) { SINT8 forwardmove = player->cmd.forwardmove; - if ((player->pflags & PF_STASIS) || (player->ktemp_carry == CR_SLIDING)) + if ((player->pflags & PF_STASIS) || (player->carry == CR_SLIDING)) { return 0; } - if (player->ktemp_sneakertimer || player->ktemp_spindashboost) + if (player->sneakertimer || player->spindashboost) { return MAXPLMOVE; } - if (player->ktemp_spinouttimer || K_PlayerEBrake(player)) + if (player->spinouttimer || K_PlayerEBrake(player)) { return 0; } @@ -2826,10 +2826,10 @@ void K_DoInstashield(player_t *player) mobj_t *layera; mobj_t *layerb; - if (player->ktemp_instashield > 0) + if (player->instashield > 0) return; - player->ktemp_instashield = 15; // length of instashield animation + player->instashield = 15; // length of instashield animation S_StartSound(player->mo, sfx_cdpcm9); layera = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INSTASHIELDA); @@ -2891,9 +2891,9 @@ void K_SpinPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 typ (void)inflictor; (void)source; - player->ktemp_spinouttype = type; + player->spinouttype = type; - if (( player->ktemp_spinouttype & KSPIN_THRUST )) + if (( player->spinouttype & KSPIN_THRUST )) { // At spinout, player speed is increased to 1/4 their regular speed, moving them forward if (player->speed < K_GetKartSpeed(player, true)/4) @@ -2901,7 +2901,7 @@ void K_SpinPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 typ S_StartSound(player->mo, sfx_slip); } - player->ktemp_spinouttimer = (3*TICRATE/2)+2; + player->spinouttimer = (3*TICRATE/2)+2; P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } @@ -2909,12 +2909,12 @@ static void K_RemoveGrowShrink(player_t *player) { if (player->mo && !P_MobjWasRemoved(player->mo)) { - if (player->ktemp_growshrinktimer > 0) // Play Shrink noise + if (player->growshrinktimer > 0) // Play Shrink noise S_StartSound(player->mo, sfx_kc59); - else if (player->ktemp_growshrinktimer < 0) // Play Grow noise + else if (player->growshrinktimer < 0) // Play Grow noise S_StartSound(player->mo, sfx_kc5a); - if (player->ktemp_invincibilitytimer == 0) + if (player->invincibilitytimer == 0) player->mo->color = player->skincolor; player->mo->scalespeed = mapobjectscale/TICRATE; @@ -2923,7 +2923,7 @@ static void K_RemoveGrowShrink(player_t *player) player->mo->destscale = (6*player->mo->destscale)/8; } - player->ktemp_growshrinktimer = 0; + player->growshrinktimer = 0; P_RestoreMusic(player); } @@ -3047,14 +3047,14 @@ INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A player->mo->momz = 18*mapobjectscale*P_MobjFlip(player->mo); // please stop forgetting mobjflip checks!!!! player->mo->momx = player->mo->momy = 0; - player->ktemp_spinouttype = KSPIN_EXPLOSION; - player->ktemp_spinouttimer = (3*TICRATE/2)+2; + player->spinouttype = KSPIN_EXPLOSION; + player->spinouttimer = (3*TICRATE/2)+2; if (inflictor && !P_MobjWasRemoved(inflictor)) { if (inflictor->type == MT_SPBEXPLOSION && inflictor->extravalue1) { - player->ktemp_spinouttimer = ((5*player->ktemp_spinouttimer)/2)+1; + player->spinouttimer = ((5*player->spinouttimer)/2)+1; player->mo->momz *= 2; ringburst = 20; } @@ -3081,9 +3081,9 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) length += (4 * (source->player->kartweight - player->kartweight)); } - player->ktemp_spinouttype = KSPIN_STUNG; - player->ktemp_spinouttimer = length; - player->ktemp_wipeoutslow = min(length-1, wipeoutslowtime+1); + player->spinouttype = KSPIN_STUNG; + player->spinouttimer = length; + player->wipeoutslow = min(length-1, wipeoutslowtime+1); P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } @@ -3483,7 +3483,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I case MT_JAWZ: if (source && source->player) { - INT32 lasttarg = source->player->ktemp_lastjawztarget; + INT32 lasttarg = source->player->lastjawztarget; th->cvmem = source->player->skincolor; if ((lasttarg >= 0 && lasttarg < MAXPLAYERS) && playeringame[lasttarg] @@ -3594,11 +3594,11 @@ static void K_SpawnDriftSparks(player_t *player) if (leveltime % 2 == 1) return; - if (!player->ktemp_drift - || (player->ktemp_driftcharge < ds && !(player->ktemp_driftcharge < 0))) + if (!player->drift + || (player->driftcharge < ds && !(player->driftcharge < 0))) return; - travelangle = player->mo->angle-(ANGLE_45/5)*player->ktemp_drift; + travelangle = player->mo->angle-(ANGLE_45/5)*player->drift; for (i = 0; i < 2; i++) { @@ -3610,7 +3610,7 @@ static void K_SpawnDriftSparks(player_t *player) spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK); P_SetTarget(&spark->target, player->mo); - spark->angle = travelangle-(ANGLE_45/5)*player->ktemp_drift; + spark->angle = travelangle-(ANGLE_45/5)*player->drift; spark->destscale = player->mo->scale; P_SetScale(spark, player->mo->scale); @@ -3618,20 +3618,20 @@ static void K_SpawnDriftSparks(player_t *player) spark->momy = player->mo->momy/2; //spark->momz = player->mo->momz/2; - spark->color = K_DriftSparkColor(player, player->ktemp_driftcharge); + spark->color = K_DriftSparkColor(player, player->driftcharge); - if (player->ktemp_driftcharge < 0) + if (player->driftcharge < 0) { // Stage 0: Yellow size = 0; } - else if (player->ktemp_driftcharge >= ds*4) + else if (player->driftcharge >= ds*4) { // Stage 3: Rainbow size = 2; trail = 2; - if (player->ktemp_driftcharge <= (ds*4)+(32*3)) + if (player->driftcharge <= (ds*4)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*3/2)); @@ -3642,13 +3642,13 @@ static void K_SpawnDriftSparks(player_t *player) spark->colorized = true; } } - else if (player->ktemp_driftcharge >= ds*2) + else if (player->driftcharge >= ds*2) { // Stage 2: Blue size = 2; trail = 1; - if (player->ktemp_driftcharge <= (ds*2)+(32*3)) + if (player->driftcharge <= (ds*2)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*3/2)); @@ -3659,37 +3659,37 @@ static void K_SpawnDriftSparks(player_t *player) // Stage 1: Red size = 1; - if (player->ktemp_driftcharge <= (ds)+(32*3)) + if (player->driftcharge <= (ds)+(32*3)) { // transition P_SetScale(spark, (spark->destscale = spark->scale*2)); } } - if ((player->ktemp_drift > 0 && player->cmd.turning > 0) // Inward drifts - || (player->ktemp_drift < 0 && player->cmd.turning < 0)) + if ((player->drift > 0 && player->cmd.turning > 0) // Inward drifts + || (player->drift < 0 && player->cmd.turning < 0)) { - if ((player->ktemp_drift < 0 && (i & 1)) - || (player->ktemp_drift > 0 && !(i & 1))) + if ((player->drift < 0 && (i & 1)) + || (player->drift > 0 && !(i & 1))) { size++; } - else if ((player->ktemp_drift < 0 && !(i & 1)) - || (player->ktemp_drift > 0 && (i & 1))) + else if ((player->drift < 0 && !(i & 1)) + || (player->drift > 0 && (i & 1))) { size--; } } - else if ((player->ktemp_drift > 0 && player->cmd.turning < 0) // Outward drifts - || (player->ktemp_drift < 0 && player->cmd.turning > 0)) + else if ((player->drift > 0 && player->cmd.turning < 0) // Outward drifts + || (player->drift < 0 && player->cmd.turning > 0)) { - if ((player->ktemp_drift < 0 && (i & 1)) - || (player->ktemp_drift > 0 && !(i & 1))) + if ((player->drift < 0 && (i & 1)) + || (player->drift > 0 && !(i & 1))) { size--; } - else if ((player->ktemp_drift < 0 && !(i & 1)) - || (player->ktemp_drift > 0 && (i & 1))) + else if ((player->drift < 0 && !(i & 1)) + || (player->drift > 0 && (i & 1))) { size++; } @@ -3733,11 +3733,11 @@ static void K_SpawnAIZDust(player_t *player) //S_StartSound(player->mo, sfx_s3k47); { - newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle - (player->ktemp_aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); - newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->ktemp_aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); + newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle - (player->aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); + newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); spark = P_SpawnMobj(newx, newy, player->mo->z, MT_AIZDRIFTSTRAT); - spark->angle = travelangle+(player->ktemp_aizdriftstrat*ANGLE_90); + spark->angle = travelangle+(player->aizdriftstrat*ANGLE_90); P_SetScale(spark, (spark->destscale = (3*player->mo->scale)>>2)); spark->momx = (6*player->mo->momx)/5; @@ -3761,7 +3761,7 @@ void K_SpawnBoostTrail(player_t *player) I_Assert(!P_MobjWasRemoved(player->mo)); if (!P_IsObjectOnGround(player->mo) - || player->ktemp_hyudorotimer != 0 + || player->hyudorotimer != 0 || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay)) return; @@ -3770,7 +3770,7 @@ void K_SpawnBoostTrail(player_t *player) else ground = player->mo->floorz; - if (player->ktemp_drift != 0) + if (player->drift != 0) travelangle = player->mo->angle; else travelangle = K_MomentumAngle(player->mo); @@ -3824,9 +3824,9 @@ void K_SpawnSparkleTrail(mobj_t *mo) I_Assert(mo != NULL); I_Assert(!P_MobjWasRemoved(mo)); - if ((mo->player->ktemp_sneakertimer - || mo->player->ktemp_ringboost || mo->player->ktemp_driftboost - || mo->player->ktemp_startboost || mo->player->ktemp_eggmanexplode)) + if ((mo->player->sneakertimer + || mo->player->ringboost || mo->player->driftboost + || mo->player->startboost || mo->player->eggmanexplode)) { return; } @@ -3834,7 +3834,7 @@ void K_SpawnSparkleTrail(mobj_t *mo) if (leveltime & 2) index = 2; - invtime = mo->player->ktemp_invincibilitytimer/TICRATE+1; + invtime = mo->player->invincibilitytimer/TICRATE+1; //CONS_Printf("%d\n", index); @@ -3925,17 +3925,17 @@ void K_SpawnDraftDust(mobj_t *mo) ang = mo->player->drawangle; - if (mo->player->ktemp_drift != 0) + if (mo->player->drift != 0) { drifting = true; - ang += (mo->player->ktemp_drift * ((ANGLE_270 + ANGLE_22h) / 5)); // -112.5 doesn't work. I fucking HATE SRB2 angles - if (mo->player->ktemp_drift < 0) + ang += (mo->player->drift * ((ANGLE_270 + ANGLE_22h) / 5)); // -112.5 doesn't work. I fucking HATE SRB2 angles + if (mo->player->drift < 0) sign = 1; else sign = -1; } - foff = 5 - ((mo->player->ktemp_draftleeway * 5) / leniency); + foff = 5 - ((mo->player->draftleeway * 5) / leniency); // this shouldn't happen if (foff > 4) @@ -4046,11 +4046,11 @@ void K_DriftDustHandling(mobj_t *spawner) K_MatchGenericExtraFlags(dust, spawner); // Sparkle-y warning for when you're about to change drift sparks! - if (spawner->player && spawner->player->ktemp_drift) + if (spawner->player && spawner->player->drift) { INT32 driftval = K_GetKartDriftSparkValue(spawner->player); INT32 warntime = driftval/3; - INT32 dc = spawner->player->ktemp_driftcharge; + INT32 dc = spawner->player->driftcharge; UINT8 c = SKINCOLOR_NONE; boolean rainbow = false; @@ -4124,14 +4124,14 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map if (altthrow == 2) // Kitchen sink throwing { #if 0 - if (player->ktemp_throwdir == 1) + if (player->throwdir == 1) dir = 3; - else if (player->ktemp_throwdir == -1) + else if (player->throwdir == -1) dir = 1; else dir = 2; #else - if (player->ktemp_throwdir == 1) + if (player->throwdir == 1) dir = 2; else dir = 1; @@ -4139,9 +4139,9 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - if (player->ktemp_throwdir == 1) + if (player->throwdir == 1) dir = 2; - else if (player->ktemp_throwdir == -1) + else if (player->throwdir == -1) dir = -1; else dir = 1; @@ -4149,8 +4149,8 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - if (player->ktemp_throwdir != 0) - dir = player->ktemp_throwdir; + if (player->throwdir != 0) + dir = player->throwdir; else dir = defaultDir; } @@ -4194,7 +4194,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map } else { - player->ktemp_bananadrag = 0; // RESET timer, for multiple bananas + player->bananadrag = 0; // RESET timer, for multiple bananas if (dir > 0) { @@ -4350,17 +4350,17 @@ void K_PuntMine(mobj_t *origMine, mobj_t *punter) // Since we aren't using P_KillMobj, we need to clean up the hnext reference P_SetTarget(&mineOwner->hnext, NULL); - mineOwner->player->ktemp_bananadrag = 0; + mineOwner->player->bananadrag = 0; mineOwner->player->pflags &= ~PF_ITEMOUT; - if (mineOwner->player->ktemp_itemamount) + if (mineOwner->player->itemamount) { - mineOwner->player->ktemp_itemamount--; + mineOwner->player->itemamount--; } - if (!mineOwner->player->ktemp_itemamount) + if (!mineOwner->player->itemamount) { - mineOwner->player->ktemp_itemtype = KITEM_NONE; + mineOwner->player->itemtype = KITEM_NONE; } P_RemoveMobj(origMine); @@ -4485,12 +4485,12 @@ static void K_DoHyudoroSteal(player_t *player) && player != &players[i] && !players[i].exiting && !players[i].spectator // Player in-game // Can steal from this player - && (gametype == GT_RACE //&& players[i].ktemp_position < player->ktemp_position) + && (gametype == GT_RACE //&& players[i].position < player->position) || ((gametyperules & GTR_BUMPERS) && players[i].bumpers > 0)) // Has an item - && (players[i].ktemp_itemtype - && players[i].ktemp_itemamount + && (players[i].itemtype + && players[i].itemamount && !(players[i].pflags & PF_ITEMOUT) && !players[i].karthud[khud_itemblink])) { @@ -4504,18 +4504,18 @@ static void K_DoHyudoroSteal(player_t *player) if (sink && numplayers > 0 && cv_kitchensink.value) // BEHOLD THE KITCHEN SINK { - player->ktemp_hyudorotimer = hyu; - player->ktemp_stealingtimer = stealtime; + player->hyudorotimer = hyu; + player->stealingtimer = stealtime; - player->ktemp_itemtype = KITEM_KITCHENSINK; - player->ktemp_itemamount = 1; + player->itemtype = KITEM_KITCHENSINK; + player->itemamount = 1; player->pflags &= ~PF_ITEMOUT; return; } - else if ((gametype == GT_RACE && player->ktemp_position == 1) || numplayers == 0) // No-one can be stolen from? Oh well... + else if ((gametype == GT_RACE && player->position == 1) || numplayers == 0) // No-one can be stolen from? Oh well... { - player->ktemp_hyudorotimer = hyu; - player->ktemp_stealingtimer = stealtime; + player->hyudorotimer = hyu; + player->stealingtimer = stealtime; return; } else if (numplayers == 1) // With just 2 players, we just need to set the other player to be the one to steal from @@ -4529,16 +4529,16 @@ static void K_DoHyudoroSteal(player_t *player) if (stealplayer > -1) // Now here's where we do the stealing, has to be done here because we still know the player we're stealing from { - player->ktemp_hyudorotimer = hyu; - player->ktemp_stealingtimer = stealtime; - players[stealplayer].ktemp_stealingtimer = -stealtime; + player->hyudorotimer = hyu; + player->stealingtimer = stealtime; + players[stealplayer].stealingtimer = -stealtime; - player->ktemp_itemtype = players[stealplayer].ktemp_itemtype; - player->ktemp_itemamount = players[stealplayer].ktemp_itemamount; + player->itemtype = players[stealplayer].itemtype; + player->itemamount = players[stealplayer].itemamount; player->pflags &= ~PF_ITEMOUT; - players[stealplayer].ktemp_itemtype = KITEM_NONE; - players[stealplayer].ktemp_itemamount = 0; + players[stealplayer].itemtype = KITEM_NONE; + players[stealplayer].itemamount = 0; players[stealplayer].pflags &= ~PF_ITEMOUT; if (P_IsDisplayPlayer(&players[stealplayer]) && !r_splitscreen) @@ -4550,13 +4550,13 @@ void K_DoSneaker(player_t *player, INT32 type) { const fixed_t intendedboost = FRACUNIT/2; - if (!player->ktemp_floorboost || player->ktemp_floorboost == 3) + if (!player->floorboost || player->floorboost == 3) { const sfxenum_t normalsfx = sfx_cdfm01; const sfxenum_t smallsfx = sfx_cdfm40; sfxenum_t sfx = normalsfx; - if (player->ktemp_numsneakers) + if (player->numsneakers) { // Use a less annoying sound when stacking sneakers. sfx = smallsfx; @@ -4567,13 +4567,13 @@ void K_DoSneaker(player_t *player, INT32 type) S_StartSound(player->mo, sfx); K_SpawnDashDustRelease(player); - if (intendedboost > player->ktemp_speedboost) - player->karthud[khud_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->ktemp_speedboost), intendedboost)); + if (intendedboost > player->speedboost) + player->karthud[khud_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->speedboost), intendedboost)); - player->ktemp_numsneakers++; + player->numsneakers++; } - if (!player->ktemp_sneakertimer) + if (!player->sneakertimer) { if (type == 2) { @@ -4610,10 +4610,10 @@ void K_DoSneaker(player_t *player, INT32 type) } - player->ktemp_sneakertimer = sneakertime; + player->sneakertimer = sneakertime; // set angle for spun out players: - player->ktemp_boostangle = (INT32)player->mo->angle; + player->boostangle = (INT32)player->mo->angle; } static void K_DoShrink(player_t *user) @@ -4630,18 +4630,18 @@ static void K_DoShrink(player_t *user) continue; if (&players[i] == user) continue; - if (players[i].ktemp_position < user->ktemp_position) + if (players[i].position < user->position) { //P_FlashPal(&players[i], PAL_NUKE, 10); // Grow should get taken away. - if (players[i].ktemp_growshrinktimer > 0) + if (players[i].growshrinktimer > 0) K_RemoveGrowShrink(&players[i]); else { // Start shrinking! K_DropItems(&players[i]); - players[i].ktemp_growshrinktimer = -(15*TICRATE); + players[i].growshrinktimer = -(15*TICRATE); if (players[i].mo && !P_MobjWasRemoved(players[i].mo)) { @@ -4669,7 +4669,7 @@ static void K_DoShrink(player_t *user) { if (mobj->target && mobj->target->player) { - if (mobj->target->player->ktemp_position > user->ktemp_position) + if (mobj->target->player->position > user->position) continue; // this guy's behind us, don't take his stuff away! } } @@ -4710,11 +4710,11 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound) if (mo->player) { - if (mo->player->ktemp_sneakertimer) + if (mo->player->sneakertimer) { thrust = FixedMul(thrust, 5*FRACUNIT/4); } - else if (mo->player->ktemp_invincibilitytimer) + else if (mo->player->invincibilitytimer) { thrust = FixedMul(thrust, 9*FRACUNIT/8); } @@ -4809,7 +4809,7 @@ void K_UpdateHnextList(player_t *player, boolean clean) { nextwork = work->hnext; - if (!clean && (!work->movedir || work->movedir <= (UINT16)player->ktemp_itemamount)) + if (!clean && (!work->movedir || work->movedir <= (UINT16)player->itemamount)) { continue; } @@ -4832,7 +4832,7 @@ void K_DropHnextList(player_t *player, boolean keepshields) INT32 flip; mobjtype_t type; boolean orbit, ponground, dropall = true; - INT32 shield = K_GetShieldFromItem(player->ktemp_itemtype); + INT32 shield = K_GetShieldFromItem(player->itemtype); if (work == NULL || P_MobjWasRemoved(work)) { @@ -4849,9 +4849,9 @@ void K_DropHnextList(player_t *player, boolean keepshields) K_DoThunderShield(player); } - player->ktemp_curshield = KSHIELD_NONE; - player->ktemp_itemtype = KITEM_NONE; - player->ktemp_itemamount = 0; + player->curshield = KSHIELD_NONE; + player->itemtype = KITEM_NONE; + player->itemamount = 0; player->pflags &= ~PF_ITEMOUT; } @@ -4974,18 +4974,18 @@ void K_DropHnextList(player_t *player, boolean keepshields) // we need this here too because this is done in afterthink - pointers are cleaned up at the START of each tic... P_SetTarget(&player->mo->hnext, NULL); - player->ktemp_bananadrag = 0; + player->bananadrag = 0; if (player->pflags & PF_EGGMANOUT) { player->pflags &= ~PF_EGGMANOUT; } else if ((player->pflags & PF_ITEMOUT) - && (dropall || (--player->ktemp_itemamount <= 0))) + && (dropall || (--player->itemamount <= 0))) { - player->ktemp_itemamount = 0; + player->itemamount = 0; player->pflags &= ~PF_ITEMOUT; - player->ktemp_itemtype = KITEM_NONE; + player->itemtype = KITEM_NONE; } } @@ -5106,12 +5106,12 @@ void K_DropItems(player_t *player) { K_DropHnextList(player, true); - if (player->mo && !P_MobjWasRemoved(player->mo) && player->ktemp_itemamount > 0) + if (player->mo && !P_MobjWasRemoved(player->mo) && player->itemamount > 0) { mobj_t *drop = K_CreatePaperItem( player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, player->mo->angle + ANGLE_90, P_MobjFlip(player->mo), - player->ktemp_itemtype, player->ktemp_itemamount + player->itemtype, player->itemamount ); K_FlipFromObject(drop, player->mo); @@ -5160,7 +5160,7 @@ void K_DropRocketSneaker(player_t *player) leftshoe = false; } P_SetTarget(&player->mo->hnext, NULL); - player->ktemp_rocketsneakertimer = 0; + player->rocketsneakertimer = 0; } void K_DropKitchenSink(player_t *player) @@ -5206,14 +5206,14 @@ void K_RepairOrbitChain(mobj_t *orbit) { prev = cur; cur = cur->hnext; - if (++num > orbit->target->player->ktemp_itemamount) + if (++num > orbit->target->player->itemamount) P_RemoveMobj(prev); else prev->movedir = num; } - if (orbit->target->player->ktemp_itemamount != num) - orbit->target->player->ktemp_itemamount = num; + if (orbit->target->player->itemamount != num) + orbit->target->player->itemamount = num; } } @@ -5356,14 +5356,14 @@ static void K_MoveHeldObjects(player_t *player) if (!player->mo->hnext) { - player->ktemp_bananadrag = 0; + player->bananadrag = 0; if (player->pflags & PF_EGGMANOUT) player->pflags &= ~PF_EGGMANOUT; else if (player->pflags & PF_ITEMOUT) { - player->ktemp_itemamount = 0; + player->itemamount = 0; player->pflags &= ~PF_ITEMOUT; - player->ktemp_itemtype = KITEM_NONE; + player->itemtype = KITEM_NONE; } return; } @@ -5372,14 +5372,14 @@ static void K_MoveHeldObjects(player_t *player) { // we need this here too because this is done in afterthink - pointers are cleaned up at the START of each tic... P_SetTarget(&player->mo->hnext, NULL); - player->ktemp_bananadrag = 0; + player->bananadrag = 0; if (player->pflags & PF_EGGMANOUT) player->pflags &= ~PF_EGGMANOUT; else if (player->pflags & PF_ITEMOUT) { - player->ktemp_itemamount = 0; + player->itemamount = 0; player->pflags &= ~PF_ITEMOUT; - player->ktemp_itemtype = KITEM_NONE; + player->itemtype = KITEM_NONE; } return; } @@ -5390,9 +5390,9 @@ static void K_MoveHeldObjects(player_t *player) case MT_JAWZ_SHIELD: { mobj_t *cur = player->mo->hnext; - fixed_t speed = ((8 - min(4, player->ktemp_itemamount)) * cur->info->speed) / 7; + fixed_t speed = ((8 - min(4, player->itemamount)) * cur->info->speed) / 7; - player->ktemp_bananadrag = 0; // Just to make sure + player->bananadrag = 0; // Just to make sure while (cur && !P_MobjWasRemoved(cur)) { @@ -5472,7 +5472,7 @@ static void K_MoveHeldObjects(player_t *player) mobj_t *targ = player->mo; if (P_IsObjectOnGround(player->mo) && player->speed > 0) - player->ktemp_bananadrag++; + player->bananadrag++; while (cur && !P_MobjWasRemoved(cur)) { @@ -5528,7 +5528,7 @@ static void K_MoveHeldObjects(player_t *player) cur->angle = R_PointToAngle2(cur->x, cur->y, targx, targy); - /*if (P_IsObjectOnGround(player->mo) && player->speed > 0 && player->ktemp_bananadrag > TICRATE + /*if (P_IsObjectOnGround(player->mo) && player->speed > 0 && player->bananadrag > TICRATE && P_RandomChance(min(FRACUNIT/2, FixedDiv(player->speed, K_GetKartSpeed(player, false))/2))) { if (leveltime & 1) @@ -5569,7 +5569,7 @@ static void K_MoveHeldObjects(player_t *player) cur->flags &= ~MF_NOCLIPTHING; - if (player->ktemp_rocketsneakertimer <= TICRATE && (leveltime & 1)) + if (player->rocketsneakertimer <= TICRATE && (leveltime & 1)) cur->renderflags |= RF_DONTDRAW; else cur->renderflags &= ~RF_DONTDRAW; @@ -5579,7 +5579,7 @@ static void K_MoveHeldObjects(player_t *player) else P_SetMobjStateNF(cur, (vibrate ? S_ROCKETSNEAKER_RVIBRATE : S_ROCKETSNEAKER_R)); - if (!player->ktemp_rocketsneakertimer || cur->extravalue2 || !cur->health) + if (!player->rocketsneakertimer || cur->extravalue2 || !cur->health) { num = (num+1) % 2; cur = cur->hnext; @@ -5688,7 +5688,7 @@ player_t *K_FindJawzTarget(mobj_t *actor, player_t *source) continue; // Invisible, don't bother - if (player->ktemp_hyudorotimer) + if (player->hyudorotimer) continue; // Find the angle, see who's got the best. @@ -5703,12 +5703,12 @@ player_t *K_FindJawzTarget(mobj_t *actor, player_t *source) if (thisang > ANGLE_67h) continue; // Don't pay attention to people who aren't above your position - if (player->ktemp_position >= source->ktemp_position) + if (player->position >= source->position) continue; - if ((best == -1) || (player->ktemp_position > best)) + if ((best == -1) || (player->position > best)) { wtarg = player; - best = player->ktemp_position; + best = player->position; } } else @@ -5901,16 +5901,16 @@ static void K_UpdateInvincibilitySounds(player_t *player) { if (cv_kartinvinsfx.value) { - if (player->ktemp_invincibilitytimer > 0) // Prioritize invincibility + if (player->invincibilitytimer > 0) // Prioritize invincibility sfxnum = sfx_alarmi; - else if (player->ktemp_growshrinktimer > 0) + else if (player->growshrinktimer > 0) sfxnum = sfx_alarmg; } else { - if (player->ktemp_invincibilitytimer > 0) + if (player->invincibilitytimer > 0) sfxnum = sfx_kinvnc; - else if (player->ktemp_growshrinktimer > 0) + else if (player->growshrinktimer > 0) sfxnum = sfx_kgrow; } } @@ -5950,10 +5950,10 @@ void K_KartPlayerHUDUpdate(player_t *player) if (gametype == GT_RACE) { // 0 is the fast spin animation, set at 30 tics of ring boost or higher! - if (player->ktemp_ringboost >= 30) + if (player->ringboost >= 30) player->karthud[khud_ringdelay] = 0; else - player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->ktemp_ringboost)) / 30; + player->karthud[khud_ringdelay] = ((RINGANIM_DELAYMAX+1) * (30 - player->ringboost)) / 30; if (player->karthud[khud_ringframe] == 0 && player->karthud[khud_ringdelay] > RINGANIM_DELAYMAX) { @@ -6111,43 +6111,43 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) K_UpdateEngineSounds(player); // Thanks, VAda! // update boost angle if not spun out - if (!player->ktemp_spinouttimer && !player->ktemp_wipeoutslow) - player->ktemp_boostangle = (INT32)player->mo->angle; + if (!player->spinouttimer && !player->wipeoutslow) + player->boostangle = (INT32)player->mo->angle; K_GetKartBoostPower(player); // Special effect objects! if (player->mo && !player->spectator) { - if (player->ktemp_dashpadcooldown) // Twinkle Circuit afterimages + if (player->dashpadcooldown) // Twinkle Circuit afterimages { mobj_t *ghost; ghost = P_SpawnGhostMobj(player->mo); - ghost->fuse = player->ktemp_dashpadcooldown+1; - ghost->momx = player->mo->momx / (player->ktemp_dashpadcooldown+1); - ghost->momy = player->mo->momy / (player->ktemp_dashpadcooldown+1); - ghost->momz = player->mo->momz / (player->ktemp_dashpadcooldown+1); - player->ktemp_dashpadcooldown--; + ghost->fuse = player->dashpadcooldown+1; + ghost->momx = player->mo->momx / (player->dashpadcooldown+1); + ghost->momy = player->mo->momy / (player->dashpadcooldown+1); + ghost->momz = player->mo->momz / (player->dashpadcooldown+1); + player->dashpadcooldown--; } if (player->speed > 0) { // Speed lines - if (player->ktemp_sneakertimer || player->ktemp_ringboost - || player->ktemp_driftboost || player->ktemp_startboost - || player->ktemp_eggmanexplode) + if (player->sneakertimer || player->ringboost + || player->driftboost || player->startboost + || player->eggmanexplode) { - if (player->ktemp_invincibilitytimer) + if (player->invincibilitytimer) K_SpawnInvincibilitySpeedLines(player->mo); else K_SpawnNormalSpeedLines(player); } - if (player->ktemp_numboosts > 0) // Boosting after images + if (player->numboosts > 0) // Boosting after images { mobj_t *ghost; ghost = P_SpawnGhostMobj(player->mo); - ghost->extravalue1 = player->ktemp_numboosts+1; + ghost->extravalue1 = player->numboosts+1; ghost->extravalue2 = (leveltime % ghost->extravalue1); ghost->fuse = ghost->extravalue1; ghost->frame |= FF_FULLBRIGHT; @@ -6163,7 +6163,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (P_IsObjectOnGround(player->mo)) { // Offroad dust - if (player->ktemp_boostpower < FRACUNIT) + if (player->boostpower < FRACUNIT) { K_SpawnWipeoutTrail(player->mo, true); if (leveltime % 6 == 0) @@ -6171,7 +6171,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } // Draft dust - if (player->ktemp_draftpower >= FRACUNIT) + if (player->draftpower >= FRACUNIT) { K_SpawnDraftDust(player->mo); /*if (leveltime % 23 == 0 || !S_SoundPlaying(player->mo, sfx_s265)) @@ -6200,7 +6200,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) debtflag->renderflags = K_GetPlayerDontDrawFlag(player); } - if (player->ktemp_springstars && (leveltime & 1)) + if (player->springstars && (leveltime & 1)) { fixed_t randx = P_RandomRange(-40, 40) * player->mo->scale; fixed_t randy = P_RandomRange(-40, 40) * player->mo->scale; @@ -6211,7 +6211,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->mo->z + randz, MT_KARMAFIREWORK); - star->color = player->ktemp_springcolor; + star->color = player->springcolor; star->flags |= MF_NOGRAVITY; star->momx = player->mo->momx / 2; star->momy = player->mo->momy / 2; @@ -6220,24 +6220,24 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) star->scale = player->mo->scale; star->destscale = star->scale / 2; - player->ktemp_springstars--; + player->springstars--; } } if (player->playerstate == PST_DEAD || (player->respawn.state == RESPAWNST_MOVE)) // Ensure these are set correctly here { - player->mo->colorized = (player->ktemp_dye != 0); - player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; + player->mo->colorized = (player->dye != 0); + player->mo->color = player->dye ? player->dye : player->skincolor; } - else if (player->ktemp_eggmanexplode) // You're gonna diiiiie + else if (player->eggmanexplode) // You're gonna diiiiie { - const INT32 flashtime = 4<<(player->ktemp_eggmanexplode/TICRATE); - if (player->ktemp_eggmanexplode == 1 || (player->ktemp_eggmanexplode % (flashtime/2) != 0)) + const INT32 flashtime = 4<<(player->eggmanexplode/TICRATE); + if (player->eggmanexplode == 1 || (player->eggmanexplode % (flashtime/2) != 0)) { - player->mo->colorized = (player->ktemp_dye != 0); - player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; + player->mo->colorized = (player->dye != 0); + player->mo->color = player->dye ? player->dye : player->skincolor; } - else if (player->ktemp_eggmanexplode % flashtime == 0) + else if (player->eggmanexplode % flashtime == 0) { player->mo->colorized = true; player->mo->color = SKINCOLOR_BLACK; @@ -6248,33 +6248,33 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->mo->color = SKINCOLOR_CRIMSON; } } - else if (player->ktemp_invincibilitytimer) // setting players to use the star colormap and spawning afterimages + else if (player->invincibilitytimer) // setting players to use the star colormap and spawning afterimages { player->mo->colorized = true; } - else if (player->ktemp_growshrinktimer) // Ditto, for grow/shrink + else if (player->growshrinktimer) // Ditto, for grow/shrink { - if (player->ktemp_growshrinktimer % 5 == 0) + if (player->growshrinktimer % 5 == 0) { player->mo->colorized = true; - player->mo->color = (player->ktemp_growshrinktimer < 0 ? SKINCOLOR_CREAMSICLE : SKINCOLOR_PERIWINKLE); + player->mo->color = (player->growshrinktimer < 0 ? SKINCOLOR_CREAMSICLE : SKINCOLOR_PERIWINKLE); } else { - player->mo->colorized = (player->ktemp_dye != 0); - player->mo->color = player->ktemp_dye ? player->ktemp_dye : player->skincolor; + player->mo->colorized = (player->dye != 0); + player->mo->color = player->dye ? player->dye : player->skincolor; } } - else if (player->ktemp_ringboost && (leveltime & 1)) // ring boosting + else if (player->ringboost && (leveltime & 1)) // ring boosting { player->mo->colorized = true; } else { - player->mo->colorized = (player->ktemp_dye != 0); + player->mo->colorized = (player->dye != 0); } - if (player->ktemp_itemtype == KITEM_NONE) + if (player->itemtype == KITEM_NONE) player->pflags &= ~PF_HOLDREADY; // DKR style camera for boosting @@ -6299,30 +6299,30 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->karthud[khud_timeovercam] = 0; // Make ABSOLUTELY SURE that your flashing tics don't get set WHILE you're still in hit animations. - if (player->ktemp_spinouttimer != 0 || player->ktemp_wipeoutslow != 0) + if (player->spinouttimer != 0 || player->wipeoutslow != 0) { - if (( player->ktemp_spinouttype & KSPIN_IFRAMES ) == 0) - player->ktemp_flashing = 0; + if (( player->spinouttype & KSPIN_IFRAMES ) == 0) + player->flashing = 0; else - player->ktemp_flashing = K_GetKartFlashing(player); + player->flashing = K_GetKartFlashing(player); } - if (player->ktemp_spinouttimer) + if (player->spinouttimer) { if ((P_IsObjectOnGround(player->mo) - || ( player->ktemp_spinouttype & KSPIN_AIRTIMER )) - && (!player->ktemp_sneakertimer)) + || ( player->spinouttype & KSPIN_AIRTIMER )) + && (!player->sneakertimer)) { - player->ktemp_spinouttimer--; - if (player->ktemp_wipeoutslow > 1) - player->ktemp_wipeoutslow--; + player->spinouttimer--; + if (player->wipeoutslow > 1) + player->wipeoutslow--; } } else { - if (player->ktemp_wipeoutslow >= 1) + if (player->wipeoutslow >= 1) player->mo->friction = ORIG_FRICTION; - player->ktemp_wipeoutslow = 0; + player->wipeoutslow = 0; } if (player->rings > 20) @@ -6358,99 +6358,99 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) comebackshowninfo = true; // client has already seen the message } - if (player->ktemp_ringdelay) - player->ktemp_ringdelay--; + if (player->ringdelay) + player->ringdelay--; if (P_PlayerInPain(player)) - player->ktemp_ringboost = 0; - else if (player->ktemp_ringboost) - player->ktemp_ringboost--; + player->ringboost = 0; + else if (player->ringboost) + player->ringboost--; - if (player->ktemp_sneakertimer) + if (player->sneakertimer) { - player->ktemp_sneakertimer--; + player->sneakertimer--; - if (player->ktemp_sneakertimer <= 0) + if (player->sneakertimer <= 0) { - player->ktemp_numsneakers = 0; + player->numsneakers = 0; } } - if (player->ktemp_flamedash) - player->ktemp_flamedash--; + if (player->flamedash) + player->flamedash--; - if (player->ktemp_sneakertimer && player->ktemp_wipeoutslow > 0 && player->ktemp_wipeoutslow < wipeoutslowtime+1) - player->ktemp_wipeoutslow = wipeoutslowtime+1; + if (player->sneakertimer && player->wipeoutslow > 0 && player->wipeoutslow < wipeoutslowtime+1) + player->wipeoutslow = wipeoutslowtime+1; - if (player->ktemp_floorboost) - player->ktemp_floorboost--; + if (player->floorboost) + player->floorboost--; - if (player->ktemp_driftboost) - player->ktemp_driftboost--; + if (player->driftboost) + player->driftboost--; - if (player->ktemp_startboost) - player->ktemp_startboost--; + if (player->startboost) + player->startboost--; - if (player->ktemp_spindashboost) + if (player->spindashboost) { - player->ktemp_spindashboost--; + player->spindashboost--; - if (player->ktemp_spindashboost <= 0) + if (player->spindashboost <= 0) { - player->ktemp_spindashspeed = player->ktemp_spindashboost = 0; + player->spindashspeed = player->spindashboost = 0; } } - if (player->ktemp_invincibilitytimer) - player->ktemp_invincibilitytimer--; + if (player->invincibilitytimer) + player->invincibilitytimer--; - if ((player->respawn.state == RESPAWNST_NONE) && player->ktemp_growshrinktimer != 0) + if ((player->respawn.state == RESPAWNST_NONE) && player->growshrinktimer != 0) { - if (player->ktemp_growshrinktimer > 0) - player->ktemp_growshrinktimer--; - if (player->ktemp_growshrinktimer < 0) - player->ktemp_growshrinktimer++; + if (player->growshrinktimer > 0) + player->growshrinktimer--; + if (player->growshrinktimer < 0) + player->growshrinktimer++; // Back to normal - if (player->ktemp_growshrinktimer == 0) + if (player->growshrinktimer == 0) K_RemoveGrowShrink(player); } - if (player->ktemp_superring) + if (player->superring) { - if (player->ktemp_superring % 3 == 0) + if (player->superring % 3 == 0) { mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); ring->extravalue1 = 1; // Ring collect animation timer ring->angle = player->mo->angle; // animation angle P_SetTarget(&ring->target, player->mo); // toucher for thinker - player->ktemp_pickuprings++; - if (player->ktemp_superring <= 3) + player->pickuprings++; + if (player->superring <= 3) ring->cvmem = 1; // play caching when collected } - player->ktemp_superring--; + player->superring--; } - if (player->ktemp_stealingtimer == 0 - && player->ktemp_rocketsneakertimer) - player->ktemp_rocketsneakertimer--; + if (player->stealingtimer == 0 + && player->rocketsneakertimer) + player->rocketsneakertimer--; - if (player->ktemp_hyudorotimer) - player->ktemp_hyudorotimer--; + if (player->hyudorotimer) + player->hyudorotimer--; - if (player->ktemp_sadtimer) - player->ktemp_sadtimer--; + if (player->sadtimer) + player->sadtimer--; - if (player->ktemp_stealingtimer > 0) - player->ktemp_stealingtimer--; - else if (player->ktemp_stealingtimer < 0) - player->ktemp_stealingtimer++; + if (player->stealingtimer > 0) + player->stealingtimer--; + else if (player->stealingtimer < 0) + player->stealingtimer++; - if (player->ktemp_justbumped > 0) - player->ktemp_justbumped--; + if (player->justbumped > 0) + player->justbumped--; - if (player->ktemp_tiregrease) - player->ktemp_tiregrease--; + if (player->tiregrease) + player->tiregrease--; if (player->tumbleBounces > 0) { @@ -6484,53 +6484,53 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } if (P_IsObjectOnGround(player->mo)) - player->ktemp_waterskip = 0; + player->waterskip = 0; - if (player->ktemp_instashield) - player->ktemp_instashield--; + if (player->instashield) + player->instashield--; - if (player->ktemp_eggmanexplode) + if (player->eggmanexplode) { if (player->spectator || (gametype == GT_BATTLE && !player->bumpers)) - player->ktemp_eggmanexplode = 0; + player->eggmanexplode = 0; else { - player->ktemp_eggmanexplode--; - if (player->ktemp_eggmanexplode <= 0) + player->eggmanexplode--; + if (player->eggmanexplode <= 0) { mobj_t *eggsexplode; - //player->ktemp_flashing = 0; + //player->flashing = 0; eggsexplode = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SPBEXPLOSION); - if (player->ktemp_eggmanblame >= 0 - && player->ktemp_eggmanblame < MAXPLAYERS - && playeringame[player->ktemp_eggmanblame] - && !players[player->ktemp_eggmanblame].spectator - && players[player->ktemp_eggmanblame].mo) - P_SetTarget(&eggsexplode->target, players[player->ktemp_eggmanblame].mo); + if (player->eggmanblame >= 0 + && player->eggmanblame < MAXPLAYERS + && playeringame[player->eggmanblame] + && !players[player->eggmanblame].spectator + && players[player->eggmanblame].mo) + P_SetTarget(&eggsexplode->target, players[player->eggmanblame].mo); } } } - if (player->ktemp_itemtype == KITEM_THUNDERSHIELD) + if (player->itemtype == KITEM_THUNDERSHIELD) { if (RINGTOTAL(player) < 20 && !(player->pflags & PF_RINGLOCK)) K_LookForRings(player->mo); } - if (player->ktemp_itemtype == KITEM_BUBBLESHIELD) + if (player->itemtype == KITEM_BUBBLESHIELD) { - if (player->ktemp_bubblecool) - player->ktemp_bubblecool--; + if (player->bubblecool) + player->bubblecool--; } else { - player->ktemp_bubbleblowup = 0; - player->ktemp_bubblecool = 0; + player->bubbleblowup = 0; + player->bubblecool = 0; } - if (player->ktemp_itemtype != KITEM_FLAMESHIELD) + if (player->itemtype != KITEM_FLAMESHIELD) { - if (player->ktemp_flamedash) + if (player->flamedash) K_FlameDashLeftoverSmoke(player->mo); } @@ -6572,9 +6572,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) void K_KartPlayerAfterThink(player_t *player) { - if (player->ktemp_curshield - || player->ktemp_invincibilitytimer - || (player->ktemp_growshrinktimer != 0 && player->ktemp_growshrinktimer % 5 == 4)) // 4 instead of 0 because this is afterthink! + if (player->curshield + || player->invincibilitytimer + || (player->growshrinktimer != 0 && player->growshrinktimer % 5 == 4)) // 4 instead of 0 because this is afterthink! { player->mo->frame |= FF_FULLBRIGHT; } @@ -6588,24 +6588,24 @@ void K_KartPlayerAfterThink(player_t *player) K_MoveHeldObjects(player); // Jawz reticule (seeking) - if (player->ktemp_itemtype == KITEM_JAWZ && (player->pflags & PF_ITEMOUT)) + if (player->itemtype == KITEM_JAWZ && (player->pflags & PF_ITEMOUT)) { - INT32 lasttarg = player->ktemp_lastjawztarget; + INT32 lasttarg = player->lastjawztarget; player_t *targ; mobj_t *ret; - if (player->ktemp_jawztargetdelay && playeringame[lasttarg] && !players[lasttarg].spectator) + if (player->jawztargetdelay && playeringame[lasttarg] && !players[lasttarg].spectator) { targ = &players[lasttarg]; - player->ktemp_jawztargetdelay--; + player->jawztargetdelay--; } else targ = K_FindJawzTarget(player->mo, player); if (!targ || !targ->mo || P_MobjWasRemoved(targ->mo)) { - player->ktemp_lastjawztarget = -1; - player->ktemp_jawztargetdelay = 0; + player->lastjawztarget = -1; + player->jawztargetdelay = 0; return; } @@ -6622,14 +6622,14 @@ void K_KartPlayerAfterThink(player_t *player) else S_StartSound(targ->mo, sfx_s3k89); - player->ktemp_lastjawztarget = targ-players; - player->ktemp_jawztargetdelay = 5; + player->lastjawztarget = targ-players; + player->jawztargetdelay = 5; } } else { - player->ktemp_lastjawztarget = -1; - player->ktemp_jawztargetdelay = 0; + player->lastjawztarget = -1; + player->jawztargetdelay = 0; } } @@ -7034,7 +7034,7 @@ static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer) INT16 basedrift, driftadjust; fixed_t driftweight = player->kartweight*14; // 12 - if (player->ktemp_drift == 0 || !P_IsObjectOnGround(player->mo)) + if (player->drift == 0 || !P_IsObjectOnGround(player->mo)) { // If they aren't drifting or on the ground, this doesn't apply return 0; @@ -7043,15 +7043,15 @@ static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer) if (player->pflags & PF_DRIFTEND) { // Drift has ended and we are tweaking their angle back a bit - return -266*player->ktemp_drift; + return -266*player->drift; } - basedrift = (83 * player->ktemp_drift) - (((driftweight - 14) * player->ktemp_drift) / 5); // 415 - 303 - driftadjust = abs((252 - driftweight) * player->ktemp_drift / 5); + basedrift = (83 * player->drift) - (((driftweight - 14) * player->drift) / 5); // 415 - 303 + driftadjust = abs((252 - driftweight) * player->drift / 5); - if (player->ktemp_tiregrease > 0) // Buff drift-steering while in greasemode + if (player->tiregrease > 0) // Buff drift-steering while in greasemode { - basedrift += (basedrift / greasetics) * player->ktemp_tiregrease; + basedrift += (basedrift / greasetics) * player->tiregrease; } if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)) @@ -7142,7 +7142,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue) turnfixed = FixedMul(turnfixed, K_BotRubberband(player)); } - if (player->ktemp_drift != 0 && P_IsObjectOnGround(player->mo)) + if (player->drift != 0 && P_IsObjectOnGround(player->mo)) { fixed_t countersteer = FixedDiv(turnfixed, KART_FULLTURN*FRACUNIT); @@ -7156,9 +7156,9 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue) return K_GetKartDriftValue(player, countersteer); } - if (player->ktemp_handleboost > 0) + if (player->handleboost > 0) { - turnfixed = FixedMul(turnfixed, FRACUNIT + player->ktemp_handleboost); + turnfixed = FixedMul(turnfixed, FRACUNIT + player->handleboost); } if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)) @@ -7237,95 +7237,95 @@ static void K_KartDrift(player_t *player, boolean onground) // (This comment is extremely funny) // Drift Release (Moved here so you can't "chain" drifts) - if (player->ktemp_drift != -5 && player->ktemp_drift != 5) + if (player->drift != -5 && player->drift != 5) { - if (player->ktemp_driftcharge < 0 || player->ktemp_driftcharge >= dsone) + if (player->driftcharge < 0 || player->driftcharge >= dsone) { angle_t pushdir = K_MomentumAngle(player->mo); S_StartSound(player->mo, sfx_s23c); //K_SpawnDashDustRelease(player); - if (player->ktemp_driftcharge < 0) + if (player->driftcharge < 0) { // Stage 0: Yellow sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 8); - if (player->ktemp_driftboost < 15) - player->ktemp_driftboost = 15; + if (player->driftboost < 15) + player->driftboost = 15; } - else if (player->ktemp_driftcharge >= dsone && player->ktemp_driftcharge < dstwo) + else if (player->driftcharge >= dsone && player->driftcharge < dstwo) { // Stage 1: Red sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 4); - if (player->ktemp_driftboost < 20) - player->ktemp_driftboost = 20; + if (player->driftboost < 20) + player->driftboost = 20; K_SpawnDriftBoostExplosion(player, 1); } - else if (player->ktemp_driftcharge < dsthree) + else if (player->driftcharge < dsthree) { // Stage 2: Blue sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 3); - if (player->ktemp_driftboost < 50) - player->ktemp_driftboost = 50; + if (player->driftboost < 50) + player->driftboost = 50; K_SpawnDriftBoostExplosion(player, 2); } - else if (player->ktemp_driftcharge >= dsthree) + else if (player->driftcharge >= dsthree) { // Stage 3: Rainbow sparks if (!onground) P_Thrust(player->mo, pushdir, player->speed / 2); - if (player->ktemp_driftboost < 125) - player->ktemp_driftboost = 125; + if (player->driftboost < 125) + player->driftboost = 125; K_SpawnDriftBoostExplosion(player, 3); } } // Remove charge - player->ktemp_driftcharge = 0; + player->driftcharge = 0; } // Drifting: left or right? if (!(player->pflags & PF_DRIFTINPUT)) { // drift is not being performed so if we're just finishing set driftend and decrement counters - if (player->ktemp_drift > 0) + if (player->drift > 0) { - player->ktemp_drift--; + player->drift--; player->pflags |= PF_DRIFTEND; } - else if (player->ktemp_drift < 0) + else if (player->drift < 0) { - player->ktemp_drift++; + player->drift++; player->pflags |= PF_DRIFTEND; } else player->pflags &= ~PF_DRIFTEND; } else if (player->speed > minspeed - && (player->ktemp_drift == 0 || (player->pflags & PF_DRIFTEND))) + && (player->drift == 0 || (player->pflags & PF_DRIFTEND))) { if (player->cmd.turning > 0) { // Starting left drift - player->ktemp_drift = 1; - player->ktemp_driftcharge = 0; + player->drift = 1; + player->driftcharge = 0; player->pflags &= ~PF_DRIFTEND; } else if (player->cmd.turning < 0) { // Starting right drift - player->ktemp_drift = -1; - player->ktemp_driftcharge = 0; + player->drift = -1; + player->driftcharge = 0; player->pflags &= ~PF_DRIFTEND; } } @@ -7333,10 +7333,10 @@ static void K_KartDrift(player_t *player, boolean onground) if (P_PlayerInPain(player) || player->speed <= 0) { // Stop drifting - player->ktemp_drift = player->ktemp_driftcharge = player->ktemp_aizdriftstrat = 0; + player->drift = player->driftcharge = player->aizdriftstrat = 0; player->pflags &= ~(PF_BRAKEDRIFT|PF_GETSPARKS); } - else if ((player->pflags & PF_DRIFTINPUT) && player->ktemp_drift != 0) + else if ((player->pflags & PF_DRIFTINPUT) && player->drift != 0) { // Incease/decrease the drift value to continue drifting in that direction fixed_t driftadditive = 24; @@ -7344,22 +7344,22 @@ static void K_KartDrift(player_t *player, boolean onground) if (onground) { - if (player->ktemp_drift >= 1) // Drifting to the left + if (player->drift >= 1) // Drifting to the left { - player->ktemp_drift++; - if (player->ktemp_drift > 5) - player->ktemp_drift = 5; + player->drift++; + if (player->drift > 5) + player->drift = 5; if (player->cmd.turning > 0) // Inward driftadditive += abs(player->cmd.turning)/100; if (player->cmd.turning < 0) // Outward driftadditive -= abs(player->cmd.turning)/75; } - else if (player->ktemp_drift <= -1) // Drifting to the right + else if (player->drift <= -1) // Drifting to the right { - player->ktemp_drift--; - if (player->ktemp_drift < -5) - player->ktemp_drift = -5; + player->drift--; + if (player->drift < -5) + player->drift = -5; if (player->cmd.turning < 0) // Inward driftadditive += abs(player->cmd.turning)/100; @@ -7369,7 +7369,7 @@ static void K_KartDrift(player_t *player, boolean onground) // Disable drift-sparks until you're going fast enough if (!(player->pflags & PF_GETSPARKS) - || (player->ktemp_offroad && K_ApplyOffroad(player))) + || (player->offroad && K_ApplyOffroad(player))) driftadditive = 0; // Inbetween minspeed and minspeed*2, it'll keep your previous drift-spark state. @@ -7377,9 +7377,9 @@ static void K_KartDrift(player_t *player, boolean onground) { player->pflags |= PF_GETSPARKS; - if (player->ktemp_driftcharge <= -1) + if (player->driftcharge <= -1) { - player->ktemp_driftcharge = dsone; // Back to red + player->driftcharge = dsone; // Back to red playsound = true; } } @@ -7388,9 +7388,9 @@ static void K_KartDrift(player_t *player, boolean onground) player->pflags &= ~PF_GETSPARKS; driftadditive = 0; - if (player->ktemp_driftcharge >= dsone) + if (player->driftcharge >= dsone) { - player->ktemp_driftcharge = -1; // Set yellow sparks + player->driftcharge = -1; // Set yellow sparks playsound = true; } } @@ -7401,15 +7401,15 @@ static void K_KartDrift(player_t *player, boolean onground) } // This spawns the drift sparks - if ((player->ktemp_driftcharge + driftadditive >= dsone) - || (player->ktemp_driftcharge < 0)) + if ((player->driftcharge + driftadditive >= dsone) + || (player->driftcharge < 0)) { K_SpawnDriftSparks(player); } - if ((player->ktemp_driftcharge < dsone && player->ktemp_driftcharge+driftadditive >= dsone) - || (player->ktemp_driftcharge < dstwo && player->ktemp_driftcharge+driftadditive >= dstwo) - || (player->ktemp_driftcharge < dsthree && player->ktemp_driftcharge+driftadditive >= dsthree)) + if ((player->driftcharge < dsone && player->driftcharge+driftadditive >= dsone) + || (player->driftcharge < dstwo && player->driftcharge+driftadditive >= dstwo) + || (player->driftcharge < dsthree && player->driftcharge+driftadditive >= dsthree)) { playsound = true; } @@ -7417,27 +7417,27 @@ static void K_KartDrift(player_t *player, boolean onground) // Sound whenever you get a different tier of sparks if (playsound && P_IsDisplayPlayer(player)) { - if (player->ktemp_driftcharge == -1) + if (player->driftcharge == -1) S_StartSoundAtVolume(player->mo, sfx_sploss, 192); // Yellow spark sound else S_StartSoundAtVolume(player->mo, sfx_s3ka2, 192); } - player->ktemp_driftcharge += driftadditive; + player->driftcharge += driftadditive; player->pflags &= ~PF_DRIFTEND; } - if ((player->ktemp_handleboost == 0) + if ((player->handleboost == 0) || (!player->cmd.turning) - || (!player->ktemp_aizdriftstrat) - || (player->cmd.turning > 0) != (player->ktemp_aizdriftstrat > 0)) + || (!player->aizdriftstrat) + || (player->cmd.turning > 0) != (player->aizdriftstrat > 0)) { - if (!player->ktemp_drift) - player->ktemp_aizdriftstrat = 0; + if (!player->drift) + player->aizdriftstrat = 0; else - player->ktemp_aizdriftstrat = ((player->ktemp_drift > 0) ? 1 : -1); + player->aizdriftstrat = ((player->drift > 0) ? 1 : -1); } - else if (player->ktemp_aizdriftstrat && !player->ktemp_drift) + else if (player->aizdriftstrat && !player->drift) { K_SpawnAIZDust(player); @@ -7445,14 +7445,14 @@ static void K_KartDrift(player_t *player, boolean onground) { player->aizdrifttilt = (abs(player->aizdrifttilt) + ANGLE_11hh / 4) * - player->ktemp_aizdriftstrat; + player->aizdriftstrat; } if (abs(player->aizdriftturn) < ANGLE_112h) { player->aizdriftturn = (abs(player->aizdriftturn) + ANGLE_11hh) * - player->ktemp_aizdriftstrat; + player->aizdriftstrat; } } @@ -7467,7 +7467,7 @@ static void K_KartDrift(player_t *player, boolean onground) player->aizdriftturn = 0; } - if (player->ktemp_drift + if (player->drift && ((buttons & BT_BRAKE) || !(buttons & BT_ACCELERATE)) && P_IsObjectOnGround(player->mo)) @@ -7485,14 +7485,14 @@ static void K_KartDrift(player_t *player, boolean onground) void K_KartUpdatePosition(player_t *player) { fixed_t position = 1; - fixed_t oldposition = player->ktemp_position; + fixed_t oldposition = player->position; fixed_t i; if (player->spectator || !player->mo) { // Ensure these are reset for spectators - player->ktemp_position = 0; - player->ktemp_positiondelay = 0; + player->position = 0; + player->positiondelay = 0; return; } @@ -7562,9 +7562,9 @@ void K_KartUpdatePosition(player_t *player) oldposition = position; if (oldposition != position) // Changed places? - player->ktemp_positiondelay = 10; // Position number growth + player->positiondelay = 10; // Position number growth - player->ktemp_position = position; + player->position = position; } // @@ -7574,39 +7574,39 @@ void K_StripItems(player_t *player) { K_DropRocketSneaker(player); K_DropKitchenSink(player); - player->ktemp_itemtype = KITEM_NONE; - player->ktemp_itemamount = 0; + player->itemtype = KITEM_NONE; + player->itemamount = 0; player->pflags &= ~(PF_ITEMOUT|PF_EGGMANOUT); - if (!player->ktemp_itemroulette || player->ktemp_roulettetype != 2) + if (!player->itemroulette || player->roulettetype != 2) { - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; } - player->ktemp_hyudorotimer = 0; - player->ktemp_stealingtimer = 0; + player->hyudorotimer = 0; + player->stealingtimer = 0; - player->ktemp_curshield = KSHIELD_NONE; - player->ktemp_bananadrag = 0; + player->curshield = KSHIELD_NONE; + player->bananadrag = 0; - player->ktemp_sadtimer = 0; + player->sadtimer = 0; K_UpdateHnextList(player, true); } void K_StripOther(player_t *player) { - player->ktemp_itemroulette = 0; - player->ktemp_roulettetype = 0; + player->itemroulette = 0; + player->roulettetype = 0; - player->ktemp_invincibilitytimer = 0; + player->invincibilitytimer = 0; K_RemoveGrowShrink(player); - if (player->ktemp_eggmanexplode) + if (player->eggmanexplode) { - player->ktemp_eggmanexplode = 0; - player->ktemp_eggmanblame = -1; + player->eggmanexplode = 0; + player->eggmanblame = -1; } } @@ -7621,7 +7621,7 @@ static INT32 K_FlameShieldMax(player_t *player) { if (playeringame[i] && !players[i].spectator) numplayers++; - if (players[i].ktemp_position == 1) + if (players[i].position == 1) disttofinish = players[i].distancetofinish; } @@ -7629,7 +7629,7 @@ static INT32 K_FlameShieldMax(player_t *player) { return 16; // max when alone, for testing } - else if (player->ktemp_position == 1) + else if (player->position == 1) { return 0; // minimum for first } @@ -7643,16 +7643,16 @@ boolean K_PlayerEBrake(player_t *player) { return (K_GetKartButtons(player) & BT_EBRAKEMASK) == BT_EBRAKEMASK && P_IsObjectOnGround(player->mo) == true - && player->ktemp_drift == 0 - && player->ktemp_spinouttimer == 0 - && player->ktemp_justbumped == 0 - && player->ktemp_spindashboost == 0 - && player->ktemp_nocontrol == 0; + && player->drift == 0 + && player->spinouttimer == 0 + && player->justbumped == 0 + && player->spindashboost == 0 + && player->nocontrol == 0; } SINT8 K_Sliptiding(player_t *player) { - return player->ktemp_drift ? 0 : player->ktemp_aizdriftstrat; + return player->drift ? 0 : player->aizdriftstrat; } static void K_KartSpindashDust(mobj_t *parent) @@ -7719,15 +7719,15 @@ static void K_KartSpindash(player_t *player) if (player->mo->hitlag > 0 || P_PlayerInPain(player)) { - player->ktemp_spindash = 0; + player->spindash = 0; } - if (player->ktemp_spindash > 0 && (cmd->buttons & (BT_DRIFT|BT_BRAKE)) != (BT_DRIFT|BT_BRAKE)) + if (player->spindash > 0 && (cmd->buttons & (BT_DRIFT|BT_BRAKE)) != (BT_DRIFT|BT_BRAKE)) { - player->ktemp_spindashspeed = (player->ktemp_spindash * FRACUNIT) / MAXCHARGETIME; - player->ktemp_spindashboost = TICRATE; + player->spindashspeed = (player->spindash * FRACUNIT) / MAXCHARGETIME; + player->spindashboost = TICRATE; - if (!player->ktemp_tiregrease) + if (!player->tiregrease) { UINT8 i; for (i = 0; i < 2; i++) @@ -7740,26 +7740,26 @@ static void K_KartSpindash(player_t *player) } } - player->ktemp_tiregrease = 2*TICRATE; + player->tiregrease = 2*TICRATE; - player->ktemp_spindash = 0; + player->spindash = 0; S_StartSound(player->mo, sfx_s23c); } - if ((player->ktemp_spindashboost > 0) && (spawnWind == true)) + if ((player->spindashboost > 0) && (spawnWind == true)) { K_KartSpindashWind(player->mo); } - if (player->ktemp_spindashboost > (TICRATE/2)) + if (player->spindashboost > (TICRATE/2)) { K_KartSpindashDust(player->mo); } if (K_PlayerEBrake(player) == false) { - player->ktemp_spindash = 0; + player->spindash = 0; return; } @@ -7773,7 +7773,7 @@ static void K_KartSpindash(player_t *player) { if ((cmd->buttons & (BT_DRIFT|BT_BRAKE)) == (BT_DRIFT|BT_BRAKE)) { - INT16 chargetime = MAXCHARGETIME - ++player->ktemp_spindash; + INT16 chargetime = MAXCHARGETIME - ++player->spindash; boolean spawnOldEffect = true; if (chargetime <= (MAXCHARGETIME / 2)) @@ -7787,7 +7787,7 @@ static void K_KartSpindash(player_t *player) K_KartSpindashWind(player->mo); } - if (player->ktemp_flashing > 0 && (leveltime & 1) && player->ktemp_hyudorotimer == 0) + if (player->flashing > 0 && (leveltime & 1) && player->hyudorotimer == 0) { // Every frame that you're invisible from flashing, spill a ring. // Intentionally a lop-sided trade-off, so the game doesn't become @@ -7867,9 +7867,9 @@ void K_AdjustPlayerFriction(player_t *player) } // Reduce friction after hitting a horizontal spring - if (player->ktemp_tiregrease) + if (player->tiregrease) { - player->mo->friction += ((FRACUNIT - prevfriction) / greasetics) * player->ktemp_tiregrease; + player->mo->friction += ((FRACUNIT - prevfriction) / greasetics) * player->tiregrease; } /* @@ -7890,11 +7890,11 @@ void K_AdjustPlayerFriction(player_t *player) } // Wipeout slowdown - if (player->ktemp_spinouttimer && player->ktemp_wipeoutslow) + if (player->spinouttimer && player->wipeoutslow) { - if (player->ktemp_offroad) + if (player->offroad) player->mo->friction -= 4912; - if (player->ktemp_wipeoutslow == 1) + if (player->wipeoutslow == 1) player->mo->friction -= 9824; } @@ -7931,36 +7931,36 @@ void K_MoveKartPlayer(player_t *player, boolean onground) ticcmd_t *cmd = &player->cmd; boolean ATTACK_IS_DOWN = ((cmd->buttons & BT_ATTACK) && !(player->pflags & PF_ATTACKDOWN)); boolean HOLDING_ITEM = (player->pflags & (PF_ITEMOUT|PF_EGGMANOUT)); - boolean NO_HYUDORO = (player->ktemp_stealingtimer == 0); + boolean NO_HYUDORO = (player->stealingtimer == 0); player->pflags &= ~PF_HITFINISHLINE; if (!player->exiting) { - if (player->ktemp_oldposition < player->ktemp_position) // But first, if you lost a place, + if (player->oldposition < player->position) // But first, if you lost a place, { - player->ktemp_oldposition = player->ktemp_position; // then the other player taunts. + player->oldposition = player->position; // then the other player taunts. K_RegularVoiceTimers(player); // and you can't for a bit } - else if (player->ktemp_oldposition > player->ktemp_position) // Otherwise, + else if (player->oldposition > player->position) // Otherwise, { K_PlayOvertakeSound(player->mo); // Say "YOU'RE TOO SLOW!" - player->ktemp_oldposition = player->ktemp_position; // Restore the old position, + player->oldposition = player->position; // Restore the old position, } } - if (player->ktemp_positiondelay) - player->ktemp_positiondelay--; + if (player->positiondelay) + player->positiondelay--; // Prevent ring misfire if (!(cmd->buttons & BT_ATTACK)) { - if (player->ktemp_itemtype == KITEM_NONE + if (player->itemtype == KITEM_NONE && NO_HYUDORO && !(HOLDING_ITEM - || player->ktemp_itemamount - || player->ktemp_itemroulette - || player->ktemp_rocketsneakertimer - || player->ktemp_eggmanexplode)) + || player->itemamount + || player->itemroulette + || player->rocketsneakertimer + || player->eggmanexplode)) player->pflags |= PF_USERINGS; else player->pflags &= ~PF_USERINGS; @@ -7978,7 +7978,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // Ring boosting if (player->pflags & PF_USERINGS) { - if ((player->pflags & PF_ATTACKDOWN) && !player->ktemp_ringdelay && player->rings > 0) + if ((player->pflags & PF_ATTACKDOWN) && !player->ringdelay && player->rings > 0) { mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); P_SetMobjState(ring, S_FASTRING1); @@ -7987,17 +7987,17 @@ void K_MoveKartPlayer(player_t *player, boolean onground) ring->shadowscale = 0; P_SetTarget(&ring->target, player->mo); // user player->rings--; - player->ktemp_ringdelay = 3; + player->ringdelay = 3; } } // Other items else { // Eggman Monitor exploding - if (player->ktemp_eggmanexplode) + if (player->eggmanexplode) { - if (ATTACK_IS_DOWN && player->ktemp_eggmanexplode <= 3*TICRATE && player->ktemp_eggmanexplode > 1) - player->ktemp_eggmanexplode = 1; + if (ATTACK_IS_DOWN && player->eggmanexplode <= 3*TICRATE && player->eggmanexplode > 1) + player->eggmanexplode = 1; } // Eggman Monitor throwing else if (player->pflags & PF_EGGMANOUT) @@ -8011,36 +8011,36 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } } // Rocket Sneaker usage - else if (player->ktemp_rocketsneakertimer > 1) + else if (player->rocketsneakertimer > 1) { if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO) { K_DoSneaker(player, 2); K_PlayBoostTaunt(player->mo); - player->ktemp_rocketsneakertimer -= 3*TICRATE; - if (player->ktemp_rocketsneakertimer < 1) - player->ktemp_rocketsneakertimer = 1; + player->rocketsneakertimer -= 3*TICRATE; + if (player->rocketsneakertimer < 1) + player->rocketsneakertimer = 1; } } - else if (player->ktemp_itemamount == 0) + else if (player->itemamount == 0) { player->pflags &= ~PF_ITEMOUT; } else { - switch (player->ktemp_itemtype) + switch (player->itemtype) { case KITEM_SNEAKER: if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO) { K_DoSneaker(player, 1); K_PlayBoostTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; } break; case KITEM_ROCKETSNEAKER: if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO - && player->ktemp_rocketsneakertimer == 0) + && player->rocketsneakertimer == 0) { INT32 moloop; mobj_t *mo = NULL; @@ -8051,8 +8051,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground) //K_DoSneaker(player, 2); - player->ktemp_rocketsneakertimer = (itemtime*3); - player->ktemp_itemamount--; + player->rocketsneakertimer = (itemtime*3); + player->itemamount--; K_UpdateHnextList(player, true); for (moloop = 0; moloop < 2; moloop++) @@ -8074,21 +8074,21 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_INVINCIBILITY: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) // Doesn't hold your item slot hostage normally, so you're free to waste it if you have multiple { - if (!player->ktemp_invincibilitytimer) + if (!player->invincibilitytimer) { mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INVULNFLASH); P_SetTarget(&overlay->target, player->mo); overlay->destscale = player->mo->scale; P_SetScale(overlay, player->mo->scale); } - player->ktemp_invincibilitytimer = itemtime+(2*TICRATE); // 10 seconds + player->invincibilitytimer = itemtime+(2*TICRATE); // 10 seconds if (P_IsLocalPlayer(player)) S_ChangeMusicSpecial("kinvnc"); if (! P_IsDisplayPlayer(player)) S_StartSound(player->mo, (cv_kartinvinsfx.value ? sfx_alarmg : sfx_kinvnc)); P_RestoreMusic(player); K_PlayPowerGloatSound(player->mo); - player->ktemp_itemamount--; + player->itemamount--; } break; case KITEM_BANANA: @@ -8102,17 +8102,17 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s254); - for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) + for (moloop = 0; moloop < player->itemamount; moloop++) { mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BANANA_SHIELD); if (!mo) { - player->ktemp_itemamount = moloop; + player->itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->threshold = 10; - mo->movecount = player->ktemp_itemamount; + mo->movecount = player->itemamount; mo->movedir = moloop+1; P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->hprev, prev); @@ -8124,7 +8124,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_ThrowKartItem(player, false, MT_BANANA, -1, 0); K_PlayAttackTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; K_UpdateHnextList(player, false); } break; @@ -8132,7 +8132,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { mobj_t *mo; - player->ktemp_itemamount--; + player->itemamount--; player->pflags |= PF_EGGMANOUT; S_StartSound(player->mo, sfx_s254); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_EGGMANITEM_SHIELD); @@ -8160,19 +8160,19 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s3k3a); - for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) + for (moloop = 0; moloop < player->itemamount; moloop++) { - newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->ktemp_itemamount) * moloop) << FRACBITS) + ANGLE_90; + newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->itemamount) * moloop) << FRACBITS) + ANGLE_90; mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_ORBINAUT_SHIELD); if (!mo) { - player->ktemp_itemamount = moloop; + player->itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->angle = newangle; mo->threshold = 10; - mo->movecount = player->ktemp_itemamount; + mo->movecount = player->itemamount; mo->movedir = mo->lastlook = moloop+1; mo->color = player->skincolor; P_SetTarget(&mo->target, player->mo); @@ -8185,7 +8185,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_ThrowKartItem(player, true, MT_ORBINAUT, 1, 0); K_PlayAttackTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; K_UpdateHnextList(player, false); } break; @@ -8201,19 +8201,19 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->pflags |= PF_ITEMOUT; S_StartSound(player->mo, sfx_s3k3a); - for (moloop = 0; moloop < player->ktemp_itemamount; moloop++) + for (moloop = 0; moloop < player->itemamount; moloop++) { - newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->ktemp_itemamount) * moloop) << FRACBITS) + ANGLE_90; + newangle = (player->mo->angle + ANGLE_157h) + FixedAngle(((360 / player->itemamount) * moloop) << FRACBITS) + ANGLE_90; mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_JAWZ_SHIELD); if (!mo) { - player->ktemp_itemamount = moloop; + player->itemamount = moloop; break; } mo->flags |= MF_NOCLIPTHING; mo->angle = newangle; mo->threshold = 10; - mo->movecount = player->ktemp_itemamount; + mo->movecount = player->itemamount; mo->movedir = mo->lastlook = moloop+1; P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->hprev, prev); @@ -8223,12 +8223,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } else if (ATTACK_IS_DOWN && HOLDING_ITEM && (player->pflags & PF_ITEMOUT)) // Jawz thrown { - if (player->ktemp_throwdir == 1 || player->ktemp_throwdir == 0) + if (player->throwdir == 1 || player->throwdir == 0) K_ThrowKartItem(player, true, MT_JAWZ, 1, 0); - else if (player->ktemp_throwdir == -1) // Throwing backward gives you a dud that doesn't home in + else if (player->throwdir == -1) // Throwing backward gives you a dud that doesn't home in K_ThrowKartItem(player, true, MT_JAWZ_DUD, -1, 0); K_PlayAttackTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; K_UpdateHnextList(player, false); } break; @@ -8253,7 +8253,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_ThrowKartItem(player, false, MT_SSMINE, 1, 1); K_PlayAttackTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; player->pflags &= ~PF_ITEMOUT; K_UpdateHnextList(player, true); } @@ -8261,7 +8261,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_LANDMINE: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->ktemp_itemamount--; + player->itemamount--; K_ThrowLandMine(player); K_PlayAttackTaunt(player->mo); } @@ -8269,7 +8269,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_BALLHOG: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->ktemp_itemamount--; + player->itemamount--; K_ThrowKartItem(player, true, MT_BALLHOG, 1, 0); K_PlayAttackTaunt(player->mo); } @@ -8277,7 +8277,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_SPB: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->ktemp_itemamount--; + player->itemamount--; K_ThrowKartItem(player, true, MT_SPB, 1, 0); K_PlayAttackTaunt(player->mo); } @@ -8285,7 +8285,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) case KITEM_GROW: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - if (player->ktemp_growshrinktimer < 0) // If you're shrunk, then "grow" will just make you normal again. + if (player->growshrinktimer < 0) // If you're shrunk, then "grow" will just make you normal again. K_RemoveGrowShrink(player); else { @@ -8294,7 +8294,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->mo->destscale = (3*mapobjectscale)/2; if (cv_kartdebugshrink.value && !modeattacking && !player->bot) player->mo->destscale = (6*player->mo->destscale)/8; - player->ktemp_growshrinktimer = itemtime+(4*TICRATE); // 12 seconds + player->growshrinktimer = itemtime+(4*TICRATE); // 12 seconds if (P_IsLocalPlayer(player)) S_ChangeMusicSpecial("kgrow"); if (! P_IsDisplayPlayer(player)) @@ -8302,73 +8302,73 @@ void K_MoveKartPlayer(player_t *player, boolean onground) P_RestoreMusic(player); S_StartSound(player->mo, sfx_kc5a); } - player->ktemp_itemamount--; + player->itemamount--; } break; case KITEM_SHRINK: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { K_DoShrink(player); - player->ktemp_itemamount--; + player->itemamount--; K_PlayPowerGloatSound(player->mo); } break; case KITEM_THUNDERSHIELD: - if (player->ktemp_curshield != KSHIELD_THUNDER) + if (player->curshield != KSHIELD_THUNDER) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THUNDERSHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k41); - player->ktemp_curshield = KSHIELD_THUNDER; + player->curshield = KSHIELD_THUNDER; } if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { K_DoThunderShield(player); - player->ktemp_itemamount--; + player->itemamount--; K_PlayAttackTaunt(player->mo); } break; case KITEM_BUBBLESHIELD: - if (player->ktemp_curshield != KSHIELD_BUBBLE) + if (player->curshield != KSHIELD_BUBBLE) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BUBBLESHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k3f); - player->ktemp_curshield = KSHIELD_BUBBLE; + player->curshield = KSHIELD_BUBBLE; } if (!HOLDING_ITEM && NO_HYUDORO) { if ((cmd->buttons & BT_ATTACK) && (player->pflags & PF_HOLDREADY)) { - if (player->ktemp_bubbleblowup == 0) + if (player->bubbleblowup == 0) S_StartSound(player->mo, sfx_s3k75); - player->ktemp_bubbleblowup++; - player->ktemp_bubblecool = player->ktemp_bubbleblowup*4; + player->bubbleblowup++; + player->bubblecool = player->bubbleblowup*4; - if (player->ktemp_bubbleblowup > bubbletime*2) + if (player->bubbleblowup > bubbletime*2) { - K_ThrowKartItem(player, (player->ktemp_throwdir > 0), MT_BUBBLESHIELDTRAP, -1, 0); + K_ThrowKartItem(player, (player->throwdir > 0), MT_BUBBLESHIELDTRAP, -1, 0); K_PlayAttackTaunt(player->mo); - player->ktemp_bubbleblowup = 0; - player->ktemp_bubblecool = 0; + player->bubbleblowup = 0; + player->bubblecool = 0; player->pflags &= ~PF_HOLDREADY; - player->ktemp_itemamount--; + player->itemamount--; } } else { - if (player->ktemp_bubbleblowup > bubbletime) - player->ktemp_bubbleblowup = bubbletime; + if (player->bubbleblowup > bubbletime) + player->bubbleblowup = bubbletime; - if (player->ktemp_bubbleblowup) - player->ktemp_bubbleblowup--; + if (player->bubbleblowup) + player->bubbleblowup--; - if (player->ktemp_bubblecool) + if (player->bubblecool) player->pflags &= ~PF_HOLDREADY; else player->pflags |= PF_HOLDREADY; @@ -8376,13 +8376,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } break; case KITEM_FLAMESHIELD: - if (player->ktemp_curshield != KSHIELD_FLAME) + if (player->curshield != KSHIELD_FLAME) { mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_FLAMESHIELD); P_SetScale(shield, (shield->destscale = (5*shield->destscale)>>2)); P_SetTarget(&shield->target, player->mo); S_StartSound(player->mo, sfx_s3k3e); - player->ktemp_curshield = KSHIELD_FLAME; + player->curshield = KSHIELD_FLAME; } if (!HOLDING_ITEM && NO_HYUDORO) @@ -8390,23 +8390,23 @@ void K_MoveKartPlayer(player_t *player, boolean onground) INT32 destlen = K_FlameShieldMax(player); INT32 flamemax = 0; - if (player->ktemp_flamelength < destlen) - player->ktemp_flamelength++; // Can always go up! + if (player->flamelength < destlen) + player->flamelength++; // Can always go up! - flamemax = player->ktemp_flamelength * flameseg; + flamemax = player->flamelength * flameseg; if (flamemax > 0) flamemax += TICRATE; // leniency period if ((cmd->buttons & BT_ATTACK) && (player->pflags & PF_HOLDREADY)) { - if (player->ktemp_flamedash == 0) + if (player->flamedash == 0) { S_StartSound(player->mo, sfx_s3k43); K_PlayBoostTaunt(player->mo); } - player->ktemp_flamedash += 2; - player->ktemp_flamemeter += 2; + player->flamedash += 2; + player->flamemeter += 2; if (!onground) { @@ -8416,44 +8416,44 @@ void K_MoveKartPlayer(player_t *player, boolean onground) ); } - if (player->ktemp_flamemeter > flamemax) + if (player->flamemeter > flamemax) { P_Thrust( player->mo, player->mo->angle, FixedMul((50*player->mo->scale), K_GetKartGameSpeedScalar(gamespeed)) ); - player->ktemp_flamemeter = 0; - player->ktemp_flamelength = 0; + player->flamemeter = 0; + player->flamelength = 0; player->pflags &= ~PF_HOLDREADY; - player->ktemp_itemamount--; + player->itemamount--; } } else { player->pflags |= PF_HOLDREADY; - if (player->ktemp_flamemeter > 0) - player->ktemp_flamemeter--; + if (player->flamemeter > 0) + player->flamemeter--; - if (player->ktemp_flamelength > destlen) + if (player->flamelength > destlen) { - player->ktemp_flamelength--; // Can ONLY go down if you're not using it + player->flamelength--; // Can ONLY go down if you're not using it - flamemax = player->ktemp_flamelength * flameseg; + flamemax = player->flamelength * flameseg; if (flamemax > 0) flamemax += TICRATE; // leniency period } - if (player->ktemp_flamemeter > flamemax) - player->ktemp_flamemeter = flamemax; + if (player->flamemeter > flamemax) + player->flamemeter = flamemax; } } break; case KITEM_HYUDORO: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - player->ktemp_itemamount--; + player->itemamount--; K_DoHyudoroSteal(player); // yes. yes they do. } break; @@ -8464,14 +8464,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) K_DoPogoSpring(player->mo, 32<trickpanel = 1; player->pflags |= PF_TRICKDELAY; - player->ktemp_itemamount--; + player->itemamount--; } break; case KITEM_SUPERRING: - if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO && player->ktemp_superring < (UINT8_MAX - (10*3))) + if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO && player->superring < (UINT8_MAX - (10*3))) { - player->ktemp_superring += (10*3); - player->ktemp_itemamount--; + player->superring += (10*3); + player->itemamount--; } break; case KITEM_KITCHENSINK: @@ -8495,17 +8495,17 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_ThrowKartItem(player, false, MT_SINK, 1, 2); K_PlayAttackTaunt(player->mo); - player->ktemp_itemamount--; + player->itemamount--; player->pflags &= ~PF_ITEMOUT; K_UpdateHnextList(player, true); } break; case KITEM_SAD: if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO - && !player->ktemp_sadtimer) + && !player->sadtimer) { - player->ktemp_sadtimer = stealtime; - player->ktemp_itemamount--; + player->sadtimer = stealtime; + player->itemamount--; } break; default: @@ -8516,30 +8516,30 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // No more! - if (!player->ktemp_itemamount) + if (!player->itemamount) { player->pflags &= ~PF_ITEMOUT; - player->ktemp_itemtype = KITEM_NONE; + player->itemtype = KITEM_NONE; } - if (K_GetShieldFromItem(player->ktemp_itemtype) == KSHIELD_NONE) + if (K_GetShieldFromItem(player->itemtype) == KSHIELD_NONE) { - player->ktemp_curshield = KSHIELD_NONE; // RESET shield type - player->ktemp_bubbleblowup = 0; - player->ktemp_bubblecool = 0; - player->ktemp_flamelength = 0; - player->ktemp_flamemeter = 0; + player->curshield = KSHIELD_NONE; // RESET shield type + player->bubbleblowup = 0; + player->bubblecool = 0; + player->flamelength = 0; + player->flamemeter = 0; } - if (spbplace == -1 || player->ktemp_position != spbplace) + if (spbplace == -1 || player->position != spbplace) player->pflags &= ~PF_RINGLOCK; // reset ring lock - if (player->ktemp_itemtype == KITEM_SPB - || player->ktemp_itemtype == KITEM_SHRINK - || player->ktemp_growshrinktimer < 0) + if (player->itemtype == KITEM_SPB + || player->itemtype == KITEM_SHRINK + || player->growshrinktimer < 0) indirectitemcooldown = 20*TICRATE; - if (player->ktemp_hyudorotimer > 0) + if (player->hyudorotimer > 0) { INT32 hyu = hyudorotime; @@ -8552,15 +8552,15 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } else { - if (player->ktemp_hyudorotimer >= (TICRATE/2) && player->ktemp_hyudorotimer <= hyu-(TICRATE/2)) + if (player->hyudorotimer >= (TICRATE/2) && player->hyudorotimer <= hyu-(TICRATE/2)) player->mo->renderflags &= ~K_GetPlayerDontDrawFlag(player); else player->mo->renderflags &= ~RF_DONTDRAW; } - player->ktemp_flashing = player->ktemp_hyudorotimer; // We'll do this for now, let's people know about the invisible people through subtle hints + player->flashing = player->hyudorotimer; // We'll do this for now, let's people know about the invisible people through subtle hints } - else if (player->ktemp_hyudorotimer == 0) + else if (player->hyudorotimer == 0) { player->mo->renderflags &= ~RF_DONTDRAW; } @@ -8570,7 +8570,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) K_DropItems(player); //K_StripItems(player); K_StripOther(player); player->mo->renderflags |= RF_GHOSTLY; - player->ktemp_flashing = player->karmadelay; + player->flashing = player->karmadelay; } else if (gametype == GT_RACE || player->bumpers > 0) { @@ -8626,7 +8626,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->trickpanel = 3; player->mo->hitlag = TRICKLAG; } - else if (player->ktemp_throwdir == 1) + else if (player->throwdir == 1) { if (player->mo->momz * P_MobjFlip(player->mo) > 0) { @@ -8644,7 +8644,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->trickpanel = 2; player->mo->hitlag = TRICKLAG; } - else if (player->ktemp_throwdir == -1) + else if (player->throwdir == -1) { boolean relative = true; @@ -8681,7 +8681,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // Wait until we let go off the control stick to remove the delay - if ((player->pflags & PF_TRICKDELAY) && !player->ktemp_throwdir && !cmd->turning) + if ((player->pflags & PF_TRICKDELAY) && !player->throwdir && !cmd->turning) { player->pflags &= ~PF_TRICKDELAY; } @@ -8723,9 +8723,9 @@ void K_CheckSpectateStatus(void) if (!playeringame[i]) continue; if (players[i].spectator && (players[i].pflags & PF_WANTSTOJOIN)) - players[i].ktemp_spectatewait++; + players[i].spectatewait++; else - players[i].ktemp_spectatewait = 0; + players[i].spectatewait = 0; } // No one's allowed to join @@ -8773,11 +8773,11 @@ void K_CheckSpectateStatus(void) for (i = 0; i < numjoiners; i++) { UINT8 pos = 0; - INT32 ispecwait = players[oldrespawnlist[i]].ktemp_spectatewait; + INT32 ispecwait = players[oldrespawnlist[i]].spectatewait; for (j = 0; j < numjoiners; j++) { - INT32 jspecwait = players[oldrespawnlist[j]].ktemp_spectatewait; + INT32 jspecwait = players[oldrespawnlist[j]].spectatewait; if (j == i) continue; if (jspecwait > ispecwait) diff --git a/src/k_respawn.c b/src/k_respawn.c index d9315f4fa..61d872e62 100644 --- a/src/k_respawn.c +++ b/src/k_respawn.c @@ -113,7 +113,7 @@ static void K_RespawnAtWaypoint(player_t *player, waypoint_t *waypoint) void K_DoFault(player_t *player) { - player->ktemp_nocontrol = (starttime - leveltime) + 50; + player->nocontrol = (starttime - leveltime) + 50; if (!(player->pflags & PF_FAULT)) { S_StartSound(player->mo, sfx_s3k83); @@ -149,8 +149,8 @@ void K_DoIngameRespawn(player_t *player) if (leveltime < starttime) K_DoFault(player); - player->ktemp_ringboost = 0; - player->ktemp_driftboost = 0; + player->ringboost = 0; + player->driftboost = 0; // If player was tumbling, set variables so that they don't tumble like crazy after they're done respawning if (player->tumbleBounces > 0) @@ -329,8 +329,8 @@ static void K_MovePlayerToRespawnPoint(player_t *player) player->mo->momx = player->mo->momy = player->mo->momz = 0; - player->ktemp_flashing = 2; - player->ktemp_nocontrol = max(2, player->ktemp_nocontrol); + player->flashing = 2; + player->nocontrol = max(2, player->nocontrol); if (leveltime % 8 == 0 && !mapreset) { @@ -589,7 +589,7 @@ static void K_MovePlayerToRespawnPoint(player_t *player) --------------------------------------------------*/ static void K_DropDashWait(player_t *player) { - if (player->ktemp_nocontrol == 0) + if (player->nocontrol == 0) player->respawn.timer--; if (leveltime % 8 == 0) @@ -656,7 +656,7 @@ static void K_HandleDropDash(player_t *player) { const UINT16 buttons = K_GetKartButtons(player); - if (player->ktemp_growshrinktimer < 0) + if (player->growshrinktimer < 0) { player->mo->scalespeed = mapobjectscale/TICRATE; player->mo->destscale = (6*mapobjectscale)/8; @@ -674,12 +674,12 @@ static void K_HandleDropDash(player_t *player) return; } - player->ktemp_flashing = K_GetKartFlashing(player); + player->flashing = K_GetKartFlashing(player); // The old behavior was stupid and prone to accidental usage. // Let's rip off Mania instead, and turn this into a Drop Dash! - if ((buttons & BT_ACCELERATE) && !player->ktemp_spinouttimer) // Since we're letting players spin out on respawn, don't let them charge a dropdash in this state. (It wouldn't work anyway) + if ((buttons & BT_ACCELERATE) && !player->spinouttimer) // Since we're letting players spin out on respawn, don't let them charge a dropdash in this state. (It wouldn't work anyway) { player->respawn.dropdash++; } @@ -707,7 +707,7 @@ static void K_HandleDropDash(player_t *player) if ((buttons & BT_ACCELERATE) && (player->respawn.dropdash >= TICRATE/4)) { S_StartSound(player->mo, sfx_s23c); - player->ktemp_startboost = 50; + player->startboost = 50; K_SpawnDashDustRelease(player); } diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 84c4cebc6..6ec909300 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -208,146 +208,146 @@ static int player_get(lua_State *L) lua_pushangle(L, plr->drawangle); else if (fastcmp(field,"karthud")) LUA_PushUserdata(L, plr->karthud, META_KARTHUD); - else if (fastcmp(field,"ktemp_nocontrol")) - lua_pushinteger(L, plr->ktemp_nocontrol); - else if (fastcmp(field,"ktemp_carry")) - lua_pushinteger(L, plr->ktemp_carry); - else if (fastcmp(field,"ktemp_dye")) - lua_pushinteger(L, plr->ktemp_dye); - else if (fastcmp(field,"ktemp_position")) - lua_pushinteger(L, plr->ktemp_position); - else if (fastcmp(field,"ktemp_oldposition")) - lua_pushinteger(L, plr->ktemp_oldposition); - else if (fastcmp(field,"ktemp_positiondelay")) - lua_pushinteger(L, plr->ktemp_positiondelay); + else if (fastcmp(field,"nocontrol")) + lua_pushinteger(L, plr->nocontrol); + else if (fastcmp(field,"carry")) + lua_pushinteger(L, plr->carry); + else if (fastcmp(field,"dye")) + lua_pushinteger(L, plr->dye); + else if (fastcmp(field,"position")) + lua_pushinteger(L, plr->position); + else if (fastcmp(field,"oldposition")) + lua_pushinteger(L, plr->oldposition); + else if (fastcmp(field,"positiondelay")) + lua_pushinteger(L, plr->positiondelay); else if (fastcmp(field,"distancetofinish")) lua_pushinteger(L, plr->distancetofinish); else if (fastcmp(field,"airtime")) lua_pushinteger(L, plr->airtime); - else if (fastcmp(field,"ktemp_flashing")) - lua_pushinteger(L, plr->ktemp_flashing); - else if (fastcmp(field,"ktemp_spinouttimer")) - lua_pushinteger(L, plr->ktemp_spinouttimer); - else if (fastcmp(field,"ktemp_instashield")) - lua_pushinteger(L, plr->ktemp_instashield); - else if (fastcmp(field,"ktemp_wipeoutslow")) - lua_pushinteger(L, plr->ktemp_wipeoutslow); - else if (fastcmp(field,"ktemp_justbumped")) - lua_pushinteger(L, plr->ktemp_justbumped); + else if (fastcmp(field,"flashing")) + lua_pushinteger(L, plr->flashing); + else if (fastcmp(field,"spinouttimer")) + lua_pushinteger(L, plr->spinouttimer); + else if (fastcmp(field,"instashield")) + lua_pushinteger(L, plr->instashield); + else if (fastcmp(field,"wipeoutslow")) + lua_pushinteger(L, plr->wipeoutslow); + else if (fastcmp(field,"justbumped")) + lua_pushinteger(L, plr->justbumped); else if (fastcmp(field,"tumbleBounces")) lua_pushinteger(L, plr->tumbleBounces); else if (fastcmp(field,"tumbleHeight")) lua_pushinteger(L, plr->tumbleHeight); - else if (fastcmp(field,"ktemp_drift")) - lua_pushinteger(L, plr->ktemp_drift); - else if (fastcmp(field,"ktemp_driftcharge")) - lua_pushinteger(L, plr->ktemp_driftcharge); - else if (fastcmp(field,"ktemp_driftboost")) - lua_pushinteger(L, plr->ktemp_driftboost); - else if (fastcmp(field,"ktemp_aizdriftstraft")) - lua_pushinteger(L, plr->ktemp_aizdriftstrat); + else if (fastcmp(field,"drift")) + lua_pushinteger(L, plr->drift); + else if (fastcmp(field,"driftcharge")) + lua_pushinteger(L, plr->driftcharge); + else if (fastcmp(field,"driftboost")) + lua_pushinteger(L, plr->driftboost); + else if (fastcmp(field,"aizdriftstraft")) + lua_pushinteger(L, plr->aizdriftstrat); else if (fastcmp(field,"aizdrifttilt")) lua_pushinteger(L, plr->aizdrifttilt); else if (fastcmp(field,"aizdriftturn")) lua_pushinteger(L, plr->aizdriftturn); - else if (fastcmp(field,"ktemp_offroad")) - lua_pushinteger(L, plr->ktemp_offroad); - else if (fastcmp(field,"ktemp_waterskip")) - lua_pushinteger(L, plr->ktemp_waterskip); - else if (fastcmp(field,"ktemp_tiregrease")) - lua_pushinteger(L, plr->ktemp_tiregrease); - else if (fastcmp(field,"ktemp_springstars")) - lua_pushinteger(L, plr->ktemp_springstars); - else if (fastcmp(field,"ktemp_springcolor")) - lua_pushinteger(L, plr->ktemp_springcolor); - else if (fastcmp(field,"ktemp_dashpadcooldown")) - lua_pushinteger(L, plr->ktemp_dashpadcooldown); - else if (fastcmp(field,"ktemp_spindash")) - lua_pushinteger(L, plr->ktemp_spindash); - else if (fastcmp(field,"ktemp_spindashspeed")) - lua_pushinteger(L, plr->ktemp_spindashspeed); - else if (fastcmp(field,"ktemp_spindashboost")) - lua_pushinteger(L, plr->ktemp_spindashboost); - else if (fastcmp(field,"ktemp_numboosts")) - lua_pushinteger(L, plr->ktemp_numboosts); - else if (fastcmp(field,"ktemp_boostpower")) - lua_pushinteger(L, plr->ktemp_boostpower); - else if (fastcmp(field,"ktemp_speedboost")) - lua_pushinteger(L, plr->ktemp_speedboost); - else if (fastcmp(field,"ktemp_accelboost")) - lua_pushinteger(L, plr->ktemp_accelboost); - else if (fastcmp(field,"ktemp_handleboost")) - lua_pushinteger(L, plr->ktemp_handleboost); - else if (fastcmp(field,"ktemp_boostangle")) - lua_pushinteger(L, plr->ktemp_boostangle); - else if (fastcmp(field,"ktemp_draftpower")) - lua_pushinteger(L, plr->ktemp_draftpower); - else if (fastcmp(field,"ktemp_draftleeway")) - lua_pushinteger(L, plr->ktemp_draftleeway); - else if (fastcmp(field,"ktemp_lastdraft")) - lua_pushinteger(L, plr->ktemp_lastdraft); - else if (fastcmp(field,"ktemp_itemroulette")) - lua_pushinteger(L, plr->ktemp_itemroulette); - else if (fastcmp(field,"ktemp_roulettetype")) - lua_pushinteger(L, plr->ktemp_roulettetype); - else if (fastcmp(field,"ktemp_itemtype")) - lua_pushinteger(L, plr->ktemp_itemtype); - else if (fastcmp(field,"ktemp_itemamount")) - lua_pushinteger(L, plr->ktemp_itemamount); - else if (fastcmp(field,"ktemp_throwdir")) - lua_pushinteger(L, plr->ktemp_throwdir); - else if (fastcmp(field,"ktemp_sadtimer")) - lua_pushinteger(L, plr->ktemp_sadtimer); + else if (fastcmp(field,"offroad")) + lua_pushinteger(L, plr->offroad); + else if (fastcmp(field,"waterskip")) + lua_pushinteger(L, plr->waterskip); + else if (fastcmp(field,"tiregrease")) + lua_pushinteger(L, plr->tiregrease); + else if (fastcmp(field,"springstars")) + lua_pushinteger(L, plr->springstars); + else if (fastcmp(field,"springcolor")) + lua_pushinteger(L, plr->springcolor); + else if (fastcmp(field,"dashpadcooldown")) + lua_pushinteger(L, plr->dashpadcooldown); + else if (fastcmp(field,"spindash")) + lua_pushinteger(L, plr->spindash); + else if (fastcmp(field,"spindashspeed")) + lua_pushinteger(L, plr->spindashspeed); + else if (fastcmp(field,"spindashboost")) + lua_pushinteger(L, plr->spindashboost); + else if (fastcmp(field,"numboosts")) + lua_pushinteger(L, plr->numboosts); + else if (fastcmp(field,"boostpower")) + lua_pushinteger(L, plr->boostpower); + else if (fastcmp(field,"speedboost")) + lua_pushinteger(L, plr->speedboost); + else if (fastcmp(field,"accelboost")) + lua_pushinteger(L, plr->accelboost); + else if (fastcmp(field,"handleboost")) + lua_pushinteger(L, plr->handleboost); + else if (fastcmp(field,"boostangle")) + lua_pushinteger(L, plr->boostangle); + else if (fastcmp(field,"draftpower")) + lua_pushinteger(L, plr->draftpower); + else if (fastcmp(field,"draftleeway")) + lua_pushinteger(L, plr->draftleeway); + else if (fastcmp(field,"lastdraft")) + lua_pushinteger(L, plr->lastdraft); + else if (fastcmp(field,"itemroulette")) + lua_pushinteger(L, plr->itemroulette); + else if (fastcmp(field,"roulettetype")) + lua_pushinteger(L, plr->roulettetype); + else if (fastcmp(field,"itemtype")) + lua_pushinteger(L, plr->itemtype); + else if (fastcmp(field,"itemamount")) + lua_pushinteger(L, plr->itemamount); + else if (fastcmp(field,"throwdir")) + lua_pushinteger(L, plr->throwdir); + else if (fastcmp(field,"sadtimer")) + lua_pushinteger(L, plr->sadtimer); else if (fastcmp(field,"rings")) lua_pushinteger(L, plr->rings); - else if (fastcmp(field,"ktemp_pickuprings")) - lua_pushinteger(L, plr->ktemp_pickuprings); - else if (fastcmp(field,"ktemp_ringdelay")) - lua_pushinteger(L, plr->ktemp_ringdelay); - else if (fastcmp(field,"ktemp_ringboost")) - lua_pushinteger(L, plr->ktemp_ringboost); - else if (fastcmp(field,"ktemp_sparkleanim")) - lua_pushinteger(L, plr->ktemp_sparkleanim); - else if (fastcmp(field,"ktemp_superring")) - lua_pushinteger(L, plr->ktemp_superring); - else if (fastcmp(field,"ktemp_curshield")) - lua_pushinteger(L, plr->ktemp_curshield); - else if (fastcmp(field,"ktemp_bubblecool")) - lua_pushinteger(L, plr->ktemp_bubblecool); - else if (fastcmp(field,"ktemp_bubbleblowup")) - lua_pushinteger(L, plr->ktemp_bubbleblowup); - else if (fastcmp(field,"ktemp_flamedash")) - lua_pushinteger(L, plr->ktemp_flamedash); - else if (fastcmp(field,"ktemp_flamemeter")) - lua_pushinteger(L, plr->ktemp_flamemeter); - else if (fastcmp(field,"ktemp_flamelength")) - lua_pushinteger(L, plr->ktemp_flamelength); - else if (fastcmp(field,"ktemp_hyudorotimer")) - lua_pushinteger(L, plr->ktemp_hyudorotimer); - else if (fastcmp(field,"ktemp_stealingtimer")) - lua_pushinteger(L, plr->ktemp_stealingtimer); - else if (fastcmp(field,"ktemp_sneakertimer")) - lua_pushinteger(L, plr->ktemp_sneakertimer); - else if (fastcmp(field,"ktemp_numsneakers")) - lua_pushinteger(L, plr->ktemp_numsneakers); - else if (fastcmp(field,"ktemp_floorboost")) - lua_pushinteger(L, plr->ktemp_floorboost); - else if (fastcmp(field,"ktemp_growshrinktimer")) - lua_pushinteger(L, plr->ktemp_growshrinktimer); - else if (fastcmp(field,"ktemp_rocketsneakertimer")) - lua_pushinteger(L, plr->ktemp_rocketsneakertimer); - else if (fastcmp(field,"ktemp_invincibilitytimer")) - lua_pushinteger(L, plr->ktemp_invincibilitytimer); - else if (fastcmp(field,"ktemp_eggmanexplode")) - lua_pushinteger(L, plr->ktemp_eggmanexplode); - else if (fastcmp(field,"ktemp_eggmanblame")) - lua_pushinteger(L, plr->ktemp_eggmanblame); - else if (fastcmp(field,"ktemp_bananadrag")) - lua_pushinteger(L, plr->ktemp_bananadrag); - else if (fastcmp(field,"ktemp_lastjawztarget")) - lua_pushinteger(L, plr->ktemp_lastjawztarget); - else if (fastcmp(field,"ktemp_jawztargetdelay")) - lua_pushinteger(L, plr->ktemp_jawztargetdelay); + else if (fastcmp(field,"pickuprings")) + lua_pushinteger(L, plr->pickuprings); + else if (fastcmp(field,"ringdelay")) + lua_pushinteger(L, plr->ringdelay); + else if (fastcmp(field,"ringboost")) + lua_pushinteger(L, plr->ringboost); + else if (fastcmp(field,"sparkleanim")) + lua_pushinteger(L, plr->sparkleanim); + else if (fastcmp(field,"superring")) + lua_pushinteger(L, plr->superring); + else if (fastcmp(field,"curshield")) + lua_pushinteger(L, plr->curshield); + else if (fastcmp(field,"bubblecool")) + lua_pushinteger(L, plr->bubblecool); + else if (fastcmp(field,"bubbleblowup")) + lua_pushinteger(L, plr->bubbleblowup); + else if (fastcmp(field,"flamedash")) + lua_pushinteger(L, plr->flamedash); + else if (fastcmp(field,"flamemeter")) + lua_pushinteger(L, plr->flamemeter); + else if (fastcmp(field,"flamelength")) + lua_pushinteger(L, plr->flamelength); + else if (fastcmp(field,"hyudorotimer")) + lua_pushinteger(L, plr->hyudorotimer); + else if (fastcmp(field,"stealingtimer")) + lua_pushinteger(L, plr->stealingtimer); + else if (fastcmp(field,"sneakertimer")) + lua_pushinteger(L, plr->sneakertimer); + else if (fastcmp(field,"numsneakers")) + lua_pushinteger(L, plr->numsneakers); + else if (fastcmp(field,"floorboost")) + lua_pushinteger(L, plr->floorboost); + else if (fastcmp(field,"growshrinktimer")) + lua_pushinteger(L, plr->growshrinktimer); + else if (fastcmp(field,"rocketsneakertimer")) + lua_pushinteger(L, plr->rocketsneakertimer); + else if (fastcmp(field,"invincibilitytimer")) + lua_pushinteger(L, plr->invincibilitytimer); + else if (fastcmp(field,"eggmanexplode")) + lua_pushinteger(L, plr->eggmanexplode); + else if (fastcmp(field,"eggmanblame")) + lua_pushinteger(L, plr->eggmanblame); + else if (fastcmp(field,"bananadrag")) + lua_pushinteger(L, plr->bananadrag); + else if (fastcmp(field,"lastjawztarget")) + lua_pushinteger(L, plr->lastjawztarget); + else if (fastcmp(field,"jawztargetdelay")) + lua_pushinteger(L, plr->jawztargetdelay); else if (fastcmp(field,"glanceDir")) lua_pushinteger(L, plr->glanceDir); else if (fastcmp(field,"trickpanel")) @@ -360,8 +360,8 @@ static int player_get(lua_State *L) lua_pushfixed(L, plr->trickmomz); else if (fastcmp(field,"roundscore")) plr->roundscore = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_emeralds")) - lua_pushinteger(L, plr->ktemp_emeralds); + else if (fastcmp(field,"emeralds")) + lua_pushinteger(L, plr->emeralds); else if (fastcmp(field,"bumpers")) lua_pushinteger(L, plr->bumpers); else if (fastcmp(field,"karmadelay")) @@ -551,146 +551,146 @@ static int player_set(lua_State *L) else if (fastcmp(field,"score")) plr->score = luaL_checkinteger(L, 3); // SRB2kart - else if (fastcmp(field,"ktemp_nocontrol")) - plr->ktemp_nocontrol = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_carry")) - plr->ktemp_carry = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_dye")) - plr->ktemp_dye = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_position")) - plr->ktemp_position = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_oldposition")) - plr->ktemp_oldposition = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_positiondelay")) - plr->ktemp_positiondelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"nocontrol")) + plr->nocontrol = luaL_checkinteger(L, 3); + else if (fastcmp(field,"carry")) + plr->carry = luaL_checkinteger(L, 3); + else if (fastcmp(field,"dye")) + plr->dye = luaL_checkinteger(L, 3); + else if (fastcmp(field,"position")) + plr->position = luaL_checkinteger(L, 3); + else if (fastcmp(field,"oldposition")) + plr->oldposition = luaL_checkinteger(L, 3); + else if (fastcmp(field,"positiondelay")) + plr->positiondelay = luaL_checkinteger(L, 3); else if (fastcmp(field,"distancetofinish")) return NOSET; else if (fastcmp(field,"airtime")) plr->airtime = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_flashing")) - plr->ktemp_flashing = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_spinouttimer")) - plr->ktemp_spinouttimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_instashield")) - plr->ktemp_instashield = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_wipeoutslow")) - plr->ktemp_wipeoutslow = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_justbumped")) - plr->ktemp_justbumped = luaL_checkinteger(L, 3); + else if (fastcmp(field,"flashing")) + plr->flashing = luaL_checkinteger(L, 3); + else if (fastcmp(field,"spinouttimer")) + plr->spinouttimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"instashield")) + plr->instashield = luaL_checkinteger(L, 3); + else if (fastcmp(field,"wipeoutslow")) + plr->wipeoutslow = luaL_checkinteger(L, 3); + else if (fastcmp(field,"justbumped")) + plr->justbumped = luaL_checkinteger(L, 3); else if (fastcmp(field,"tumbleBounces")) plr->tumbleBounces = luaL_checkinteger(L, 3); else if (fastcmp(field,"tumbleHeight")) plr->tumbleHeight = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_drift")) - plr->ktemp_drift = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_driftcharge")) - plr->ktemp_driftcharge = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_driftboost")) - plr->ktemp_driftboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_aizdriftstraft")) - plr->ktemp_aizdriftstrat = luaL_checkinteger(L, 3); + else if (fastcmp(field,"drift")) + plr->drift = luaL_checkinteger(L, 3); + else if (fastcmp(field,"driftcharge")) + plr->driftcharge = luaL_checkinteger(L, 3); + else if (fastcmp(field,"driftboost")) + plr->driftboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"aizdriftstraft")) + plr->aizdriftstrat = luaL_checkinteger(L, 3); else if (fastcmp(field,"aizdrifttilt")) plr->aizdrifttilt = luaL_checkinteger(L, 3); else if (fastcmp(field,"aizdriftturn")) plr->aizdriftturn = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_offroad")) - plr->ktemp_offroad = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_waterskip")) - plr->ktemp_waterskip = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_tiregrease")) - plr->ktemp_tiregrease = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_springstars")) - plr->ktemp_springstars = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_springcolor")) - plr->ktemp_springcolor = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_dashpadcooldown")) - plr->ktemp_dashpadcooldown = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_spindash")) - plr->ktemp_spindash = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_spindashspeed")) - plr->ktemp_spindashspeed = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_spindashboost")) - plr->ktemp_spindashboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_numboosts")) - plr->ktemp_numboosts = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_boostpower")) - plr->ktemp_boostpower = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_speedboost")) - plr->ktemp_speedboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_accelboost")) - plr->ktemp_accelboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_handleboost")) - plr->ktemp_handleboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_boostangle")) - plr->ktemp_boostangle = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_draftpower")) - plr->ktemp_draftpower = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_draftleeway")) - plr->ktemp_draftleeway = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_lastdraft")) - plr->ktemp_lastdraft = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_itemroulette")) - plr->ktemp_itemroulette = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_roulettetype")) - plr->ktemp_roulettetype = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_itemtype")) - plr->ktemp_itemtype = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_itemamount")) - plr->ktemp_itemamount = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_throwdir")) - plr->ktemp_throwdir = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_sadtimer")) - plr->ktemp_sadtimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"offroad")) + plr->offroad = luaL_checkinteger(L, 3); + else if (fastcmp(field,"waterskip")) + plr->waterskip = luaL_checkinteger(L, 3); + else if (fastcmp(field,"tiregrease")) + plr->tiregrease = luaL_checkinteger(L, 3); + else if (fastcmp(field,"springstars")) + plr->springstars = luaL_checkinteger(L, 3); + else if (fastcmp(field,"springcolor")) + plr->springcolor = luaL_checkinteger(L, 3); + else if (fastcmp(field,"dashpadcooldown")) + plr->dashpadcooldown = luaL_checkinteger(L, 3); + else if (fastcmp(field,"spindash")) + plr->spindash = luaL_checkinteger(L, 3); + else if (fastcmp(field,"spindashspeed")) + plr->spindashspeed = luaL_checkinteger(L, 3); + else if (fastcmp(field,"spindashboost")) + plr->spindashboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"numboosts")) + plr->numboosts = luaL_checkinteger(L, 3); + else if (fastcmp(field,"boostpower")) + plr->boostpower = luaL_checkinteger(L, 3); + else if (fastcmp(field,"speedboost")) + plr->speedboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"accelboost")) + plr->accelboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"handleboost")) + plr->handleboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"boostangle")) + plr->boostangle = luaL_checkinteger(L, 3); + else if (fastcmp(field,"draftpower")) + plr->draftpower = luaL_checkinteger(L, 3); + else if (fastcmp(field,"draftleeway")) + plr->draftleeway = luaL_checkinteger(L, 3); + else if (fastcmp(field,"lastdraft")) + plr->lastdraft = luaL_checkinteger(L, 3); + else if (fastcmp(field,"itemroulette")) + plr->itemroulette = luaL_checkinteger(L, 3); + else if (fastcmp(field,"roulettetype")) + plr->roulettetype = luaL_checkinteger(L, 3); + else if (fastcmp(field,"itemtype")) + plr->itemtype = luaL_checkinteger(L, 3); + else if (fastcmp(field,"itemamount")) + plr->itemamount = luaL_checkinteger(L, 3); + else if (fastcmp(field,"throwdir")) + plr->throwdir = luaL_checkinteger(L, 3); + else if (fastcmp(field,"sadtimer")) + plr->sadtimer = luaL_checkinteger(L, 3); else if (fastcmp(field,"rings")) plr->rings = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_pickuprings")) - plr->ktemp_pickuprings = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_ringdelay")) - plr->ktemp_ringdelay = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_ringboost")) - plr->ktemp_ringboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_sparkleanim")) - plr->ktemp_sparkleanim = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_superring")) - plr->ktemp_superring = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_curshield")) - plr->ktemp_curshield = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_bubblecool")) - plr->ktemp_bubblecool = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_bubbleblowup")) - plr->ktemp_bubbleblowup = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_flamedash")) - plr->ktemp_flamedash = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_flamemeter")) - plr->ktemp_flamemeter = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_flamelength")) - plr->ktemp_flamelength = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_hyudorotimer")) - plr->ktemp_hyudorotimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_stealingtimer")) - plr->ktemp_stealingtimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_sneakertimer")) - plr->ktemp_sneakertimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_numsneakers")) - plr->ktemp_numsneakers = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_floorboost")) - plr->ktemp_floorboost = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_growshrinktimer")) - plr->ktemp_growshrinktimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_rocketsneakertimer")) - plr->ktemp_rocketsneakertimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_invincibilitytimer")) - plr->ktemp_invincibilitytimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_eggmanexplode")) - plr->ktemp_eggmanexplode = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_eggmanblame")) - plr->ktemp_eggmanblame = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_bananadrag")) - plr->ktemp_bananadrag = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_lastjawztarget")) - plr->ktemp_lastjawztarget = luaL_checkinteger(L, 3); - else if (fastcmp(field,"ktemp_jawztargetdelay")) - plr->ktemp_jawztargetdelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"pickuprings")) + plr->pickuprings = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ringdelay")) + plr->ringdelay = luaL_checkinteger(L, 3); + else if (fastcmp(field,"ringboost")) + plr->ringboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"sparkleanim")) + plr->sparkleanim = luaL_checkinteger(L, 3); + else if (fastcmp(field,"superring")) + plr->superring = luaL_checkinteger(L, 3); + else if (fastcmp(field,"curshield")) + plr->curshield = luaL_checkinteger(L, 3); + else if (fastcmp(field,"bubblecool")) + plr->bubblecool = luaL_checkinteger(L, 3); + else if (fastcmp(field,"bubbleblowup")) + plr->bubbleblowup = luaL_checkinteger(L, 3); + else if (fastcmp(field,"flamedash")) + plr->flamedash = luaL_checkinteger(L, 3); + else if (fastcmp(field,"flamemeter")) + plr->flamemeter = luaL_checkinteger(L, 3); + else if (fastcmp(field,"flamelength")) + plr->flamelength = luaL_checkinteger(L, 3); + else if (fastcmp(field,"hyudorotimer")) + plr->hyudorotimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"stealingtimer")) + plr->stealingtimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"sneakertimer")) + plr->sneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"numsneakers")) + plr->numsneakers = luaL_checkinteger(L, 3); + else if (fastcmp(field,"floorboost")) + plr->floorboost = luaL_checkinteger(L, 3); + else if (fastcmp(field,"growshrinktimer")) + plr->growshrinktimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"rocketsneakertimer")) + plr->rocketsneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"invincibilitytimer")) + plr->invincibilitytimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"eggmanexplode")) + plr->eggmanexplode = luaL_checkinteger(L, 3); + else if (fastcmp(field,"eggmanblame")) + plr->eggmanblame = luaL_checkinteger(L, 3); + else if (fastcmp(field,"bananadrag")) + plr->bananadrag = luaL_checkinteger(L, 3); + else if (fastcmp(field,"lastjawztarget")) + plr->lastjawztarget = luaL_checkinteger(L, 3); + else if (fastcmp(field,"jawztargetdelay")) + plr->jawztargetdelay = luaL_checkinteger(L, 3); else if (fastcmp(field,"glanceDir")) plr->glanceDir = luaL_checkinteger(L, 3); else if (fastcmp(field,"trickpanel")) @@ -703,8 +703,8 @@ static int player_set(lua_State *L) plr->trickmomz = luaL_checkfixed(L, 3); else if (fastcmp(field,"roundscore")) lua_pushinteger(L, plr->roundscore); - else if (fastcmp(field,"ktemp_emeralds")) - plr->ktemp_emeralds = luaL_checkinteger(L, 3); + else if (fastcmp(field,"emeralds")) + plr->emeralds = luaL_checkinteger(L, 3); else if (fastcmp(field,"bumpers")) plr->bumpers = luaL_checkinteger(L, 3); else if (fastcmp(field,"karmadelay")) diff --git a/src/m_cheat.c b/src/m_cheat.c index bfa96345e..b45a7cbb6 100644 --- a/src/m_cheat.c +++ b/src/m_cheat.c @@ -1277,6 +1277,6 @@ void Command_ObjectPlace_f(void) players[0].mo->color = op_oldcolor; // This is necessary for recovery of dying players. - players[0].ktemp_flashing = K_GetKartFlashing(&players[0]); + players[0].flashing = K_GetKartFlashing(&players[0]); } } diff --git a/src/p_enemy.c b/src/p_enemy.c index c8c4d189d..44d656cf0 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -4005,13 +4005,13 @@ void A_AttractChase(mobj_t *actor) angle_t offset = FixedAngle(18<target->player->ktemp_ringboost += K_GetKartRingPower(actor->target->player, true) + 3; + actor->target->player->ringboost += K_GetKartRingPower(actor->target->player, true) + 3; S_StartSound(actor->target, sfx_s1b5); sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS); P_SetTarget(&sparkle->target, actor->target); - sparkle->angle = (actor->target->angle + (offset>>1)) + (offset * actor->target->player->ktemp_sparkleanim); - actor->target->player->ktemp_sparkleanim = (actor->target->player->ktemp_sparkleanim+1) % 20; + sparkle->angle = (actor->target->angle + (offset>>1)) + (offset * actor->target->player->sparkleanim); + actor->target->player->sparkleanim = (actor->target->player->sparkleanim+1) % 20; P_KillMobj(actor, actor->target, actor->target, DMG_NORMAL); return; @@ -4033,14 +4033,14 @@ void A_AttractChase(mobj_t *actor) if (actor->extravalue1 >= 16) { if (!P_GivePlayerRings(actor->target->player, 1)) // returns 0 if addition failed - actor->target->player->ktemp_ringboost += K_GetKartRingPower(actor->target->player, true) + 3; + actor->target->player->ringboost += K_GetKartRingPower(actor->target->player, true) + 3; if (actor->cvmem) // caching S_StartSound(actor->target, sfx_s1c5); else S_StartSound(actor->target, sfx_s227); - actor->target->player->ktemp_pickuprings--; + actor->target->player->pickuprings--; P_RemoveMobj(actor); return; } @@ -4089,7 +4089,7 @@ void A_AttractChase(mobj_t *actor) if (actor->tracer && actor->tracer->player && actor->tracer->health //&& P_CheckSight(actor, actor->tracer) - && actor->tracer->player->ktemp_itemtype == KITEM_THUNDERSHIELD + && actor->tracer->player->itemtype == KITEM_THUNDERSHIELD && RINGTOTAL(actor->tracer->player) < 20 && !(actor->tracer->player->pflags & PF_RINGLOCK)) { @@ -5709,8 +5709,8 @@ void A_MixUp(mobj_t *actor) players[two].speed = transspeed; //set flags variables now but DON'T set them. - carry1 = players[one].ktemp_carry; - carry2 = players[two].ktemp_carry; + carry1 = players[one].carry; + carry2 = players[two].carry; x = players[one].mo->x; y = players[one].mo->y; @@ -5736,8 +5736,8 @@ void A_MixUp(mobj_t *actor) //carry set after mixup. Stupid P_ResetPlayer() takes away some of the stuff we look for... //but not all of it! So we need to make sure they aren't set wrong or anything. - players[one].ktemp_carry = carry2; - players[two].ktemp_carry = carry1; + players[one].carry = carry2; + players[two].carry = carry1; teleported[one] = true; teleported[two] = true; @@ -5784,7 +5784,7 @@ void A_MixUp(mobj_t *actor) players[i].rmomx = players[i].rmomy = 1; players[i].cmomx = players[i].cmomy = 0; - transcarry[counter] = players[i].ktemp_carry; + transcarry[counter] = players[i].carry; transspeed[counter] = players[i].speed; transtracer[counter] = players[i].mo->tracer; @@ -5835,7 +5835,7 @@ void A_MixUp(mobj_t *actor) FRACUNIT, anglepos[teleportfrom][1], flags2[teleportfrom]); //...carry after. same reasoning. - players[i].ktemp_carry = transcarry[teleportfrom]; + players[i].carry = transcarry[teleportfrom]; teleported[i] = true; counter++; @@ -6387,7 +6387,7 @@ void A_Boss2PogoTarget(mobj_t *actor) if (LUA_CallAction(A_BOSS2POGOTARGET, actor)) return; - if (!actor->target || !(actor->target->flags & MF_SHOOTABLE) || (actor->target->player && actor->target->player->ktemp_flashing) + if (!actor->target || !(actor->target->flags & MF_SHOOTABLE) || (actor->target->player && actor->target->player->flashing) || P_AproxDistance(actor->x-actor->target->x, actor->y-actor->target->y) >= FixedMul(512*FRACUNIT, actor->scale)) { // look for a new target @@ -6400,7 +6400,7 @@ void A_Boss2PogoTarget(mobj_t *actor) } // Target hit, retreat! - if ((actor->target->player && actor->target->player->ktemp_flashing > TICRATE) || actor->flags2 & MF2_FRET) + if ((actor->target->player && actor->target->player->flashing > TICRATE) || actor->flags2 & MF2_FRET) { UINT8 prandom = P_RandomByte(); actor->z++; // unstick from the floor @@ -7734,7 +7734,7 @@ void A_Dye(mobj_t *actor) // What if it's a player? if (target->player) - target->player->ktemp_dye = color; + target->player->dye = color; if (!color) { @@ -11621,7 +11621,7 @@ void A_Boss5FindWaypoint(mobj_t *actor) continue; if (players[i].mo->health <= 0) continue; - if (players[i].ktemp_flashing) + if (players[i].flashing) continue; if (actor->tracer == players[i].mo) // this was your tracer last time continue; @@ -11680,7 +11680,7 @@ void A_Boss5FindWaypoint(mobj_t *actor) continue; if (players[i].mo->health <= 0) continue; - if (players[i].ktemp_flashing) + if (players[i].flashing) continue; if (actor->tracer == players[i].mo) // this was your tracer last time continue; @@ -13305,7 +13305,7 @@ void A_ItemPop(mobj_t *actor) S_StartSound(remains, actor->info->deathsound); if (!((gametyperules & GTR_BUMPERS) && actor->target->player->bumpers <= 0)) - actor->target->player->ktemp_itemroulette = 1; + actor->target->player->itemroulette = 1; remains->flags2 &= ~MF2_AMBUSH; @@ -13628,9 +13628,9 @@ void A_SPBChase(mobj_t *actor) if (players[i].respawn.state != RESPAWNST_NONE) continue;*/ // respawning - if (players[i].ktemp_position < bestrank) + if (players[i].position < bestrank) { - bestrank = players[i].ktemp_position; + bestrank = players[i].position; player = &players[i]; } } @@ -13681,12 +13681,12 @@ void A_SPBChase(mobj_t *actor) cy = actor->tracer->player->cmomy; // Switch targets if you're no longer 1st for long enough - if (actor->tracer->player->ktemp_position <= bestrank) + if (actor->tracer->player->position <= bestrank) actor->extravalue2 = 7*TICRATE; else if (actor->extravalue2-- <= 0) actor->extravalue1 = 0; // back to SEEKING - spbplace = actor->tracer->player->ktemp_position; + spbplace = actor->tracer->player->position; } dist = P_AproxDistance(P_AproxDistance(actor->x-actor->tracer->x, actor->y-actor->tracer->y), actor->z-actor->tracer->z); @@ -13698,7 +13698,7 @@ void A_SPBChase(mobj_t *actor) wspeed = (3*defspeed)/2; if (wspeed < 20*actor->tracer->scale) wspeed = 20*actor->tracer->scale; - if (actor->tracer->player->ktemp_carry == CR_SLIDING) + if (actor->tracer->player->carry == CR_SLIDING) wspeed = actor->tracer->player->speed/2; // ^^^^ current section: These are annoying, and grand metropolis in particular needs this. @@ -13776,7 +13776,7 @@ void A_SPBChase(mobj_t *actor) && !players[actor->lastlook].spectator && !players[actor->lastlook].exiting) { - spbplace = players[actor->lastlook].ktemp_position; + spbplace = players[actor->lastlook].position; players[actor->lastlook].pflags |= PF_RINGLOCK; if (actor->extravalue2-- <= 0 && players[actor->lastlook].mo) { @@ -14006,7 +14006,7 @@ static inline boolean PIT_SSMineSearch(mobj_t *thing) if (thing == grenade->target && grenade->threshold != 0) // Don't blow up at your owner. return true; - if (thing->player && (thing->player->ktemp_hyudorotimer + if (thing->player && (thing->player->hyudorotimer || ((gametyperules & GTR_BUMPERS) && thing->player && thing->player->bumpers <= 0 && thing->player->karmadelay))) return true; @@ -14248,10 +14248,10 @@ void A_RandomShadowFrame(mobj_t *actor) // I have NO CLUE how to hardcode all of that fancy Linedef Executor shit so the fire spinout will be done by these entities directly. if (P_LookForPlayers(actor, false, false, 380<target && !actor->target->player->ktemp_flashing - && !actor->target->player->ktemp_invincibilitytimer - && !actor->target->player->ktemp_growshrinktimer - && !actor->target->player->ktemp_spinouttimer + if (actor->target && !actor->target->player->flashing + && !actor->target->player->invincibilitytimer + && !actor->target->player->growshrinktimer + && !actor->target->player->spinouttimer && P_IsObjectOnGround(actor->target) && actor->z == actor->target->z) { @@ -14293,10 +14293,10 @@ void A_RoamingShadowThinker(mobj_t *actor) if (P_LookForPlayers(actor, false, false, 256<target && !actor->target->player->ktemp_flashing - && !actor->target->player->ktemp_invincibilitytimer - && !actor->target->player->ktemp_growshrinktimer - && !actor->target->player->ktemp_spinouttimer) + if (actor->target && !actor->target->player->flashing + && !actor->target->player->invincibilitytimer + && !actor->target->player->growshrinktimer + && !actor->target->player->spinouttimer) { // send them flying and spawn the WIND! P_InstaThrust(actor->target, 0, 0); @@ -14534,10 +14534,10 @@ void A_ReaperThinker(mobj_t *actor) { if (P_LookForPlayers(actor, false, false, 1024<target == targetplayermo && actor->target && !actor->target->player->ktemp_flashing - && !actor->target->player->ktemp_invincibilitytimer - && !actor->target->player->ktemp_growshrinktimer - && !actor->target->player->ktemp_spinouttimer)) + if (!(actor->target == targetplayermo && actor->target && !actor->target->player->flashing + && !actor->target->player->invincibilitytimer + && !actor->target->player->growshrinktimer + && !actor->target->player->spinouttimer)) P_SetTarget(&actor->target, actor->hnext); // if the above isn't correct, then we should go back to targetting waypoints or something. } diff --git a/src/p_floor.c b/src/p_floor.c index bc9c7b441..7fdf01ebb 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -1555,7 +1555,7 @@ void T_RaiseSector(raise_t *raise) continue; // Option to require spindashing. - if ((raise->flags & RF_SPINDASH) && !thing->player->ktemp_spindash) + if ((raise->flags & RF_SPINDASH) && !thing->player->spindash) continue; if (!(thing->z == P_GetSpecialTopZ(thing, raise->sector, sector))) diff --git a/src/p_inter.c b/src/p_inter.c index c37e4f848..c125a1af7 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -122,29 +122,29 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon) if (weapon == 2) { // Invulnerable - if (player->ktemp_flashing > 0) + if (player->flashing > 0) return false; // Already have fake - if (player->ktemp_roulettetype == 2 - || player->ktemp_eggmanexplode) + if (player->roulettetype == 2 + || player->eggmanexplode) return false; } else { // Item-specific timer going off - if (player->ktemp_stealingtimer - || player->ktemp_rocketsneakertimer - || player->ktemp_eggmanexplode) + if (player->stealingtimer + || player->rocketsneakertimer + || player->eggmanexplode) return false; // Item slot already taken up - if (player->ktemp_itemroulette - || (weapon != 3 && player->ktemp_itemamount) + if (player->itemroulette + || (weapon != 3 && player->itemamount) || (player->pflags & PF_ITEMOUT)) return false; - if (weapon == 3 && K_GetShieldFromItem(player->ktemp_itemtype) != KSHIELD_NONE) + if (weapon == 3 && K_GetShieldFromItem(player->itemtype) != KSHIELD_NONE) return false; // No stacking shields! } } @@ -243,17 +243,17 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) P_InstaThrust(player->mo, player->mo->angle, 20<ktemp_itemamount && player->ktemp_itemtype != special->threshold)) + if (!P_CanPickupItem(player, 3) || (player->itemamount && player->itemtype != special->threshold)) return; if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0) return; - player->ktemp_itemtype = special->threshold; - if ((UINT16)(player->ktemp_itemamount) + special->movecount > 255) - player->ktemp_itemamount = 255; + player->itemtype = special->threshold; + if ((UINT16)(player->itemamount) + special->movecount > 255) + player->itemamount = 255; else - player->ktemp_itemamount += special->movecount; + player->itemamount += special->movecount; S_StartSound(special, special->info->deathsound); @@ -332,7 +332,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) { mobj_t *spbexplode; - if (player->ktemp_bubbleblowup > 0) + if (player->bubbleblowup > 0) { K_DropHnextList(player, false); special->extravalue1 = 2; // WAIT... @@ -364,7 +364,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (toucher->hitlag > 0) return; - player->ktemp_emeralds |= special->extravalue1; + player->emeralds |= special->extravalue1; K_CheckEmeralds(player); break; /* @@ -384,16 +384,16 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; // kill - if (player->ktemp_invincibilitytimer > 0 - || player->ktemp_growshrinktimer > 0 - || player->ktemp_flamedash > 0) + if (player->invincibilitytimer > 0 + || player->growshrinktimer > 0 + || player->flamedash > 0) { P_KillMobj(special, toucher, toucher, DMG_NORMAL); return; } // no interaction - if (player->ktemp_flashing > 0 || player->ktemp_hyudorotimer > 0 || P_PlayerInPain(player)) + if (player->flashing > 0 || player->hyudorotimer > 0 || P_PlayerInPain(player)) return; // attach to player! @@ -404,8 +404,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)) return; - player->ktemp_itemroulette = 1; - player->ktemp_roulettetype = 1; + player->itemroulette = 1; + player->roulettetype = 1; // Karma fireworks for (i = 0; i < 5; i++) @@ -476,7 +476,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) special->extravalue1 = 1; // Ring collect animation timer special->angle = R_PointToAngle2(toucher->x, toucher->y, special->x, special->y); // animation angle P_SetTarget(&special->target, toucher); // toucher for thinker - player->ktemp_pickuprings++; + player->pickuprings++; return; @@ -953,31 +953,31 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget if (target->target->player->pflags & PF_ITEMOUT) { - if ((target->type == MT_BANANA_SHIELD && target->target->player->ktemp_itemtype == KITEM_BANANA) // trail items - || (target->type == MT_SSMINE_SHIELD && target->target->player->ktemp_itemtype == KITEM_MINE) - || (target->type == MT_SINK_SHIELD && target->target->player->ktemp_itemtype == KITEM_KITCHENSINK)) + if ((target->type == MT_BANANA_SHIELD && target->target->player->itemtype == KITEM_BANANA) // trail items + || (target->type == MT_SSMINE_SHIELD && target->target->player->itemtype == KITEM_MINE) + || (target->type == MT_SINK_SHIELD && target->target->player->itemtype == KITEM_KITCHENSINK)) { - if (target->movedir != 0 && target->movedir < (UINT16)target->target->player->ktemp_itemamount) + if (target->movedir != 0 && target->movedir < (UINT16)target->target->player->itemamount) { if (target->target->hnext) K_KillBananaChain(target->target->hnext, inflictor, source); - target->target->player->ktemp_itemamount = 0; + target->target->player->itemamount = 0; } - else if (target->target->player->ktemp_itemamount) - target->target->player->ktemp_itemamount--; + else if (target->target->player->itemamount) + target->target->player->itemamount--; } - else if ((target->type == MT_ORBINAUT_SHIELD && target->target->player->ktemp_itemtype == KITEM_ORBINAUT) // orbit items - || (target->type == MT_JAWZ_SHIELD && target->target->player->ktemp_itemtype == KITEM_JAWZ)) + else if ((target->type == MT_ORBINAUT_SHIELD && target->target->player->itemtype == KITEM_ORBINAUT) // orbit items + || (target->type == MT_JAWZ_SHIELD && target->target->player->itemtype == KITEM_JAWZ)) { - if (target->target->player->ktemp_itemamount) - target->target->player->ktemp_itemamount--; + if (target->target->player->itemamount) + target->target->player->itemamount--; if (target->lastlook != 0) { K_RepairOrbitChain(target); } } - if (!target->target->player->ktemp_itemamount) + if (!target->target->player->itemamount) target->target->player->pflags &= ~PF_ITEMOUT; if (target->target->hnext == target) @@ -1607,10 +1607,10 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, break; } - K_DropEmeraldsFromPlayer(player, player->ktemp_emeralds); + K_DropEmeraldsFromPlayer(player, player->emeralds); K_SetHitLagForObjects(player->mo, inflictor, 15); - player->ktemp_carry = CR_NONE; + player->carry = CR_NONE; player->mo->color = player->skincolor; player->mo->colorized = false; @@ -1782,7 +1782,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } } - if (player->ktemp_invincibilitytimer > 0 || player->ktemp_growshrinktimer > 0 || player->ktemp_hyudorotimer > 0) + if (player->invincibilitytimer > 0 || player->growshrinktimer > 0 || player->hyudorotimer > 0) { // Full invulnerability K_DoInstashield(player); @@ -1791,7 +1791,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (combo == false) { - if (player->ktemp_flashing > 0) + if (player->flashing > 0) { // Post-hit invincibility K_DoInstashield(player); @@ -1826,11 +1826,11 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (source && source != player->mo && source->player) { // Extend the invincibility if the hit was a direct hit. - if (inflictor == source && source->player->ktemp_invincibilitytimer) + if (inflictor == source && source->player->invincibilitytimer) { - kinvextend = (source->player->ktemp_invincibilitytimer)+5*TICRATE; - //CONS_Printf("extend k_invincibilitytimer for %s - old value %d new value %d\n", player_names[source->player - players], source->player->ktemp_invincibilitytimer/TICRATE, kinvextend/TICRATE); - source->player->ktemp_invincibilitytimer = kinvextend; + kinvextend = (source->player->invincibilitytimer)+5*TICRATE; + //CONS_Printf("extend k_invincibilitytimer for %s - old value %d new value %d\n", player_names[source->player - players], source->player->invincibilitytimer/TICRATE, kinvextend/TICRATE); + source->player->invincibilitytimer = kinvextend; } K_PlayHitEmSound(source); @@ -1847,8 +1847,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (damagetype & DMG_STEAL) { // Give them ALL of your emeralds instantly :) - source->player->ktemp_emeralds |= player->ktemp_emeralds; - player->ktemp_emeralds = 0; + source->player->emeralds |= player->emeralds; + player->emeralds = 0; K_CheckEmeralds(source->player); } } @@ -1860,13 +1860,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (!(damagetype & DMG_STEAL)) { // Drop all of your emeralds - K_DropEmeraldsFromPlayer(player, player->ktemp_emeralds); + K_DropEmeraldsFromPlayer(player, player->emeralds); } } - player->ktemp_sneakertimer = player->ktemp_numsneakers = 0; - player->ktemp_driftboost = 0; - player->ktemp_ringboost = 0; + player->sneakertimer = player->numsneakers = 0; + player->driftboost = 0; + player->ringboost = 0; switch (type) { @@ -1897,7 +1897,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (type != DMG_STING) { - player->ktemp_flashing = K_GetKartFlashing(player); + player->flashing = K_GetKartFlashing(player); } P_PlayRinglossSound(player->mo); @@ -1918,7 +1918,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da K_DropHnextList(player, false); } - player->ktemp_instashield = 15; + player->instashield = 15; K_SetHitLagForObjects(target, inflictor, laglength); return true; } @@ -2036,7 +2036,7 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) return; // Have a shield? You get hit, but don't lose your rings! - if (K_GetShieldFromItem(player->ktemp_itemtype) != KSHIELD_NONE) + if (K_GetShieldFromItem(player->itemtype) != KSHIELD_NONE) return; // 20 is the maximum number of rings that can be taken from you at once - half the span of your counter diff --git a/src/p_map.c b/src/p_map.c index c780cafaa..4a34ed7f0 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -350,7 +350,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) // Less friction when hitting horizontal springs if (!vertispeed) { - if (!object->player->ktemp_tiregrease) + if (!object->player->tiregrease) { UINT8 i; for (i = 0; i < 2; i++) @@ -363,7 +363,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) } } - object->player->ktemp_tiregrease = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS + object->player->tiregrease = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS } } @@ -387,8 +387,8 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) P_ResetPlayer(object->player); - object->player->ktemp_springstars = max(vertispeed, horizspeed) / FRACUNIT / 2; - object->player->ktemp_springcolor = starcolor; + object->player->springstars = max(vertispeed, horizspeed) / FRACUNIT / 2; + object->player->springcolor = starcolor; } return true; @@ -697,8 +697,8 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; // Bubble Shield reflect - if (((thing->type == MT_BUBBLESHIELD && thing->target->player && thing->target->player->ktemp_bubbleblowup) - || (thing->player && thing->player->ktemp_bubbleblowup)) + if (((thing->type == MT_BUBBLESHIELD && thing->target->player && thing->target->player->bubbleblowup) + || (thing->player && thing->player->bubbleblowup)) && (tmthing->type == MT_ORBINAUT || tmthing->type == MT_JAWZ || tmthing->type == MT_JAWZ_DUD || tmthing->type == MT_BANANA || tmthing->type == MT_EGGMANITEM || tmthing->type == MT_BALLHOG || tmthing->type == MT_SSMINE || tmthing->type == MT_LANDMINE || tmthing->type == MT_SINK @@ -722,8 +722,8 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetTarget(&tmthing, oldtmthing);*/ if (P_PlayerInPain(tmthing->player) - || tmthing->player->ktemp_flashing || tmthing->player->ktemp_hyudorotimer - || tmthing->player->ktemp_justbumped || tmthing->scale > thing->scale + (mapobjectscale/8)) + || tmthing->player->flashing || tmthing->player->hyudorotimer + || tmthing->player->justbumped || tmthing->scale > thing->scale + (mapobjectscale/8)) return true; // Player Damage @@ -755,8 +755,8 @@ static boolean PIT_CheckThing(mobj_t *thing) // no interaction return true; } - else if (((tmthing->type == MT_BUBBLESHIELD && tmthing->target->player && tmthing->target->player->ktemp_bubbleblowup) - || (tmthing->player && tmthing->player->ktemp_bubbleblowup)) + else if (((tmthing->type == MT_BUBBLESHIELD && tmthing->target->player && tmthing->target->player->bubbleblowup) + || (tmthing->player && tmthing->player->bubbleblowup)) && (thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD || thing->type == MT_BANANA || thing->type == MT_EGGMANITEM || thing->type == MT_BALLHOG || thing->type == MT_SSMINE || tmthing->type == MT_LANDMINE || thing->type == MT_SINK @@ -780,8 +780,8 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetTarget(&tmthing, oldtmthing);*/ if (P_PlayerInPain(thing->player) - || thing->player->ktemp_flashing || thing->player->ktemp_hyudorotimer - || thing->player->ktemp_justbumped || thing->scale > tmthing->scale + (mapobjectscale/8)) + || thing->player->flashing || thing->player->hyudorotimer + || thing->player->justbumped || thing->scale > tmthing->scale + (mapobjectscale/8)) return true; // Player Damage @@ -1235,7 +1235,7 @@ static boolean PIT_CheckThing(mobj_t *thing) if (tmthing->z + tmthing->height < thing->z) return true; // underneath - if (thing->player->ktemp_hyudorotimer || tmthing->player->ktemp_hyudorotimer) + if (thing->player->hyudorotimer || tmthing->player->hyudorotimer) { return true; } @@ -1289,8 +1289,8 @@ static boolean PIT_CheckThing(mobj_t *thing) if (!thing->health) return true; // dead - if (tmthing->player->ktemp_invincibilitytimer > 0 - || tmthing->player->ktemp_growshrinktimer > 0) + if (tmthing->player->invincibilitytimer > 0 + || tmthing->player->growshrinktimer > 0) { if (thing->type == MT_BLUEROBRA_JOINT) P_KillMobj(thing->target, tmthing, tmthing, DMG_NORMAL); @@ -1315,8 +1315,8 @@ static boolean PIT_CheckThing(mobj_t *thing) if (!thing->health) return true; // dead - if (tmthing->player->ktemp_invincibilitytimer > 0 - || tmthing->player->ktemp_growshrinktimer > 0) + if (tmthing->player->invincibilitytimer > 0 + || tmthing->player->growshrinktimer > 0) { P_KillMobj(thing, tmthing, tmthing, DMG_NORMAL); return true; // kill @@ -1346,15 +1346,15 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; // underneath // kill - if (tmthing->player->ktemp_invincibilitytimer > 0 - || tmthing->player->ktemp_growshrinktimer > 0) + if (tmthing->player->invincibilitytimer > 0 + || tmthing->player->growshrinktimer > 0) { P_KillMobj(thing, tmthing, tmthing, DMG_NORMAL); return true; } // no interaction - if (tmthing->player->ktemp_flashing > 0 || tmthing->player->ktemp_hyudorotimer > 0 || tmthing->player->ktemp_spinouttimer > 0) + if (tmthing->player->flashing > 0 || tmthing->player->hyudorotimer > 0 || tmthing->player->spinouttimer > 0) return true; // collide @@ -2464,7 +2464,7 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff) const fixed_t maxstepmove = FixedMul(MAXSTEPMOVE, mapobjectscale); fixed_t maxstep = maxstepmove; - if (thing->player && thing->player->ktemp_waterskip) + if (thing->player && thing->player->waterskip) maxstep += maxstepmove; // Add some extra stepmove when waterskipping // If using type Section1:13, double the maxstep. diff --git a/src/p_mobj.c b/src/p_mobj.c index 49adc2d88..cfae150e6 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -191,7 +191,7 @@ static void P_CyclePlayerMobjState(mobj_t *mobj) // P_SetPlayerMobjState // Returns true if the mobj is still present. // -// Separate from P_SetMobjState because of the ktemp_flashing check and Super states +// Separate from P_SetMobjState because of the flashing check and Super states // boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) { @@ -1104,7 +1104,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) P_PlayerFlip(mo); } - if (mo->player->ktemp_waterskip) + if (mo->player->waterskip) { gravityadd = (4*gravityadd)/3; } @@ -1803,13 +1803,13 @@ void P_XYMovement(mobj_t *mo) if (mo->type == MT_FLINGRING || mo->type == MT_BALLHOG || mo->type == MT_BUBBLESHIELDTRAP) return; - if (player && (player->ktemp_spinouttimer && !player->ktemp_wipeoutslow) - && player->speed <= FixedDiv(20*mapobjectscale, player->ktemp_offroad + FRACUNIT)) + if (player && (player->spinouttimer && !player->wipeoutslow) + && player->speed <= FixedDiv(20*mapobjectscale, player->offroad + FRACUNIT)) return; //} if (((!(mo->eflags & MFE_VERTICALFLIP) && mo->z > mo->floorz) || (mo->eflags & MFE_VERTICALFLIP && mo->z+mo->height < mo->ceilingz)) - && !(player && player->ktemp_carry == CR_SLIDING)) + && !(player && player->carry == CR_SLIDING)) return; // no friction when airborne P_XYFriction(mo, oldx, oldy); @@ -2717,7 +2717,7 @@ void P_PlayerZMovement(mobj_t *mo) mo->z = mo->floorz; // Get up if you fell. - if (mo->player->panim == PA_HURT && mo->player->ktemp_spinouttimer == 0 && mo->player->tumbleBounces == 0) + if (mo->player->panim == PA_HURT && mo->player->spinouttimer == 0 && mo->player->tumbleBounces == 0) P_SetPlayerMobjState(mo, S_KART_STILL); if (!mo->standingslope && (mo->eflags & MFE_VERTICALFLIP ? tmceilingslope : tmfloorslope)) { @@ -3058,9 +3058,9 @@ void P_MobjCheckWater(mobj_t *mobj) } // skipping stone! - if (p && p->ktemp_waterskip < 2 + if (p && p->waterskip < 2 && ((p->speed/3 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water. - || (p->speed > 20*mapobjectscale && p->ktemp_waterskip)) // Already skipped once, so you can skip once more! + || (p->speed > 20*mapobjectscale && p->waterskip)) // Already skipped once, so you can skip once more! && ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop) || ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom))) { @@ -3074,7 +3074,7 @@ void P_MobjCheckWater(mobj_t *mobj) else mobj->momz = FixedMul(hop, mobj->scale); - p->ktemp_waterskip++; + p->waterskip++; } } @@ -3525,7 +3525,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj) mobj->eflags &= ~MFE_JUSTSTEPPEDDOWN; // Zoom tube - if ((mobj->player->ktemp_carry == CR_ZOOMTUBE && mobj->tracer && !P_MobjWasRemoved(mobj->tracer)) + if ((mobj->player->carry == CR_ZOOMTUBE && mobj->tracer && !P_MobjWasRemoved(mobj->tracer)) || mobj->player->respawn.state == RESPAWNST_MOVE) { P_HitSpecialLines(mobj, mobj->x, mobj->y, mobj->momx, mobj->momy); @@ -5384,7 +5384,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) } // Do this in an easy way - if (mobj->target->player->ktemp_itemroulette) + if (mobj->target->player->itemroulette) { mobj->tracer->color = mobj->target->player->skincolor; mobj->tracer->colorized = true; @@ -5397,17 +5397,17 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (!(mobj->renderflags & RF_DONTDRAW)) { - const INT32 numberdisplaymin = ((mobj->target->player->ktemp_itemtype == KITEM_ORBINAUT) ? 5 : 2); + const INT32 numberdisplaymin = ((mobj->target->player->itemtype == KITEM_ORBINAUT) ? 5 : 2); // Set it to use the correct states for its condition - if (mobj->target->player->ktemp_itemroulette) + if (mobj->target->player->itemroulette) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; - mobj->tracer->frame = FF_FULLBRIGHT|(((mobj->target->player->ktemp_itemroulette % (13*3)) / 3) + 1); + mobj->tracer->frame = FF_FULLBRIGHT|(((mobj->target->player->itemroulette % (13*3)) / 3) + 1); mobj->tracer->renderflags &= ~RF_DONTDRAW; } - else if (mobj->target->player->ktemp_stealingtimer < 0) + else if (mobj->target->player->stealingtimer < 0) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; @@ -5417,14 +5417,14 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if ((mobj->target->player->ktemp_stealingtimer > 0) && (leveltime & 2)) + else if ((mobj->target->player->stealingtimer > 0) && (leveltime & 2)) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; mobj->tracer->frame = FF_FULLBRIGHT|KITEM_HYUDORO; mobj->tracer->renderflags &= ~RF_DONTDRAW; } - else if (mobj->target->player->ktemp_eggmanexplode > 1) + else if (mobj->target->player->eggmanexplode > 1) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; @@ -5434,9 +5434,9 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if (mobj->target->player->ktemp_rocketsneakertimer > 1) + else if (mobj->target->player->rocketsneakertimer > 1) { - //itembar = mobj->target->player->ktemp_rocketsneakertimer; -- not today satan + //itembar = mobj->target->player->rocketsneakertimer; -- not today satan P_SetMobjState(mobj, S_PLAYERARROW_BOX); mobj->tracer->sprite = SPR_ITEM; mobj->tracer->frame = FF_FULLBRIGHT|KITEM_ROCKETSNEAKER; @@ -5445,15 +5445,15 @@ static void P_MobjSceneryThink(mobj_t *mobj) else mobj->tracer->renderflags |= RF_DONTDRAW; } - else if (mobj->target->player->ktemp_itemtype && mobj->target->player->ktemp_itemamount > 0) + else if (mobj->target->player->itemtype && mobj->target->player->itemamount > 0) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); - switch (mobj->target->player->ktemp_itemtype) + switch (mobj->target->player->itemtype) { case KITEM_ORBINAUT: mobj->tracer->sprite = SPR_ITMO; - mobj->tracer->frame = FF_FULLBRIGHT|(min(mobj->target->player->ktemp_itemamount-1, 3)); + mobj->tracer->frame = FF_FULLBRIGHT|(min(mobj->target->player->itemamount-1, 3)); break; case KITEM_INVINCIBILITY: mobj->tracer->sprite = SPR_ITMI; @@ -5465,7 +5465,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) break; default: mobj->tracer->sprite = SPR_ITEM; - mobj->tracer->frame = FF_FULLBRIGHT|(mobj->target->player->ktemp_itemtype); + mobj->tracer->frame = FF_FULLBRIGHT|(mobj->target->player->itemtype); break; } @@ -5487,8 +5487,8 @@ static void P_MobjSceneryThink(mobj_t *mobj) mobj->tracer->destscale = scale; - if (mobj->target->player->ktemp_itemamount >= numberdisplaymin - && mobj->target->player->ktemp_itemamount <= 10) // Meh, too difficult to support greater than this; convert this to a decent HUD object and then maybe :V + if (mobj->target->player->itemamount >= numberdisplaymin + && mobj->target->player->itemamount <= 10) // Meh, too difficult to support greater than this; convert this to a decent HUD object and then maybe :V { mobj_t *number = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_OVERLAY); mobj_t *numx = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_OVERLAY); @@ -5497,7 +5497,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) P_SetMobjState(number, S_PLAYERARROW_NUMBER); P_SetScale(number, mobj->scale); number->destscale = scale; - number->frame = FF_FULLBRIGHT|(mobj->target->player->ktemp_itemamount); + number->frame = FF_FULLBRIGHT|(mobj->target->player->itemamount); P_SetTarget(&numx->target, mobj); P_SetMobjState(numx, S_PLAYERARROW_X); @@ -6505,12 +6505,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (p) { - if (p->ktemp_driftboost > mobj->movecount) + if (p->driftboost > mobj->movecount) { ; // reset animation } - mobj->movecount = p->ktemp_driftboost; + mobj->movecount = p->driftboost; } } break; @@ -6538,9 +6538,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (p) { - if (p->ktemp_sneakertimer > mobj->movecount) + if (p->sneakertimer > mobj->movecount) P_SetMobjState(mobj, S_BOOSTFLAME); - mobj->movecount = p->ktemp_sneakertimer; + mobj->movecount = p->sneakertimer; } } @@ -6569,7 +6569,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->colorized = mobj->target->colorized; break; case MT_INVULNFLASH: - if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->ktemp_invincibilitytimer)) + if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->invincibilitytimer)) { P_RemoveMobj(mobj); return false; @@ -6578,7 +6578,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_BRAKEDRIFT: if ((!mobj->target || !mobj->target->health || !mobj->target->player || !P_IsObjectOnGround(mobj->target)) - || !mobj->target->player->ktemp_drift || !(mobj->target->player->pflags & PF_BRAKEDRIFT) + || !mobj->target->player->drift || !(mobj->target->player->pflags & PF_BRAKEDRIFT) || !((mobj->target->player->cmd.buttons & BT_BRAKE) || (K_GetKartButtons(mobj->target->player) & BT_ACCELERATE))) // Letting go of accel functions about the same as brake-drifting { @@ -6587,17 +6587,17 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } else { - UINT8 driftcolor = K_DriftSparkColor(mobj->target->player, mobj->target->player->ktemp_driftcharge); + UINT8 driftcolor = K_DriftSparkColor(mobj->target->player, mobj->target->player->driftcharge); fixed_t newx, newy; angle_t travelangle; - travelangle = mobj->target->angle - ((ANGLE_45/5)*mobj->target->player->ktemp_drift); + travelangle = mobj->target->angle - ((ANGLE_45/5)*mobj->target->player->drift); newx = mobj->target->x + P_ReturnThrustX(mobj->target, travelangle+ANGLE_180, 24*mobj->target->scale); newy = mobj->target->y + P_ReturnThrustY(mobj->target, travelangle+ANGLE_180, 24*mobj->target->scale); P_TeleportMove(mobj, newx, newy, mobj->target->z); - mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->ktemp_drift); + mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->drift); P_SetScale(mobj, (mobj->destscale = mobj->target->scale)); if (driftcolor != SKINCOLOR_NONE) @@ -6626,7 +6626,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) K_MatchGenericExtraFlags(mobj, mobj->target); /* FALLTHRU */ case MT_INSTASHIELDA: - if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->ktemp_instashield)) + if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->instashield)) { P_RemoveMobj(mobj); return false; @@ -6697,7 +6697,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_TIREGREASE: if (!mobj->target || P_MobjWasRemoved(mobj->target) || !mobj->target->player - || !mobj->target->player->ktemp_tiregrease) + || !mobj->target->player->tiregrease) { P_RemoveMobj(mobj); return false; @@ -6709,7 +6709,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) const angle_t off = FixedAngle(40*FRACUNIT); angle_t ang = K_MomentumAngle(mobj->target); fixed_t z; - UINT8 trans = (mobj->target->player->ktemp_tiregrease * (NUMTRANSMAPS+1)) / greasetics; + UINT8 trans = (mobj->target->player->tiregrease * (NUMTRANSMAPS+1)) / greasetics; if (trans > NUMTRANSMAPS) trans = NUMTRANSMAPS; @@ -6746,7 +6746,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) { fixed_t destx, desty; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->ktemp_curshield != KSHIELD_THUNDER) + || mobj->target->player->curshield != KSHIELD_THUNDER) { P_RemoveMobj(mobj); return false; @@ -6787,7 +6787,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) statenum_t curstate; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->ktemp_curshield != KSHIELD_BUBBLE) + || mobj->target->player->curshield != KSHIELD_BUBBLE) { P_RemoveMobj(mobj); return false; @@ -6796,9 +6796,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) scale = (5*mobj->target->scale)>>2; curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); - if (mobj->target->player->ktemp_bubbleblowup) + if (mobj->target->player->bubbleblowup) { - INT32 blow = mobj->target->player->ktemp_bubbleblowup; + INT32 blow = mobj->target->player->bubbleblowup; if (blow > bubbletime) blow = bubbletime; @@ -6810,7 +6810,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) scale += (blow * (3*scale)) / bubbletime; mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + mobj->extravalue1); - if ((mobj->target->player->ktemp_bubbleblowup > bubbletime) && (leveltime & 1)) + if ((mobj->target->player->bubbleblowup > bubbletime) && (leveltime & 1)) mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + 5); if (mobj->extravalue1 < 4 && mobj->extravalue2 < blow && !mobj->cvmem && (leveltime & 1)) // Growing @@ -6875,14 +6875,14 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } else { - if (mobj->target->player->ktemp_bubblecool && ((curstate-S_BUBBLESHIELD1) & 1)) + if (mobj->target->player->bubblecool && ((curstate-S_BUBBLESHIELD1) & 1)) mobj->renderflags |= RF_GHOSTLY; else mobj->renderflags &= ~RF_GHOSTLYMASK; } } - mobj->extravalue2 = mobj->target->player->ktemp_bubbleblowup; + mobj->extravalue2 = mobj->target->player->bubbleblowup; P_SetScale(mobj, (mobj->destscale = scale)); if (!splitscreen /*&& rendermode != render_soft*/) @@ -6916,19 +6916,19 @@ static boolean P_MobjRegularThink(mobj_t *mobj) INT32 flamemax = 0; if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->ktemp_curshield != KSHIELD_FLAME) + || mobj->target->player->curshield != KSHIELD_FLAME) { P_RemoveMobj(mobj); return false; } - flamemax = mobj->target->player->ktemp_flamelength * flameseg; + flamemax = mobj->target->player->flamelength * flameseg; P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); - if (mobj->target->player->ktemp_flamedash) + if (mobj->target->player->flamedash) { if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12)) P_SetMobjState(mobj, S_FLAMESHIELDDASH1); @@ -6947,7 +6947,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) UINT8 i; UINT8 nl = 2; - if (mobj->target->player->ktemp_flamedash > mobj->extravalue1) + if (mobj->target->player->flamedash > mobj->extravalue1) nl = 3; for (i = 0; i < nl; i++) @@ -6973,9 +6973,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_SetMobjState(mobj, S_FLAMESHIELD1); } - mobj->extravalue1 = mobj->target->player->ktemp_flamedash; + mobj->extravalue1 = mobj->target->player->flamedash; - if (mobj->target->player->ktemp_flamemeter > flamemax) + if (mobj->target->player->flamemeter > flamemax) { mobj_t *flash = P_SpawnMobj(mobj->x + mobj->target->momx, mobj->y + mobj->target->momy, mobj->z + mobj->target->momz, MT_THOK); P_SetMobjState(flash, S_FLAMESHIELDFLASH); @@ -7030,7 +7030,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_RemoveMobj(mobj); return false; } - if (mobj->target->player && !mobj->target->player->ktemp_rocketsneakertimer) + if (mobj->target->player && !mobj->target->player->rocketsneakertimer) { mobj->flags &= ~MF_NOGRAVITY; mobj->angle += ANGLE_45; @@ -7082,7 +7082,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (state < S_PLAYERBOMB1 || state > S_PLAYERBOMB20) P_SetMobjState(mobj, S_PLAYERBOMB1); - if (mobj->target->player->ktemp_flashing && (leveltime & 1)) + if (mobj->target->player->flashing && (leveltime & 1)) mobj->renderflags |= RF_DONTDRAW; else mobj->renderflags &= ~RF_DONTDRAW; @@ -7652,7 +7652,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) player_t *player = mobj->target->player; mobj->extravalue1 = 1; - player->ktemp_offroad += 2<offroad += 2<mo->x + P_ReturnThrustX(NULL, player->mo->angle, player->mo->radius) @@ -10195,7 +10195,7 @@ void P_SpawnPlayer(INT32 playernum) } if (leveltime > introtime) - p->ktemp_flashing = K_GetKartFlashing(p); // Babysitting deterrent + p->flashing = K_GetKartFlashing(p); // Babysitting deterrent mobj = P_SpawnMobj(0, 0, 0, MT_PLAYER); (mobj->player = p)->mo = mobj; diff --git a/src/p_saveg.c b/src/p_saveg.c index d5865fa3c..04c9cfcaf 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -135,7 +135,7 @@ static void P_NetArchivePlayers(void) WRITEUINT32(save_p, players[i].pflags); WRITEUINT8(save_p, players[i].panim); WRITEUINT8(save_p, players[i].spectator); - WRITEUINT32(save_p, players[i].ktemp_spectatewait); + WRITEUINT32(save_p, players[i].spectatewait); WRITEUINT16(save_p, players[i].flashpal); WRITEUINT16(save_p, players[i].flashcount); @@ -209,99 +209,99 @@ static void P_NetArchivePlayers(void) if (flags & FOLLOWER) WRITEUINT32(save_p, players[i].follower->mobjnum); - WRITEUINT16(save_p, players[i].ktemp_nocontrol); - WRITEUINT8(save_p, players[i].ktemp_carry); - WRITEUINT16(save_p, players[i].ktemp_dye); + WRITEUINT16(save_p, players[i].nocontrol); + WRITEUINT8(save_p, players[i].carry); + WRITEUINT16(save_p, players[i].dye); - WRITEUINT8(save_p, players[i].ktemp_position); - WRITEUINT8(save_p, players[i].ktemp_oldposition); - WRITEUINT8(save_p, players[i].ktemp_positiondelay); + WRITEUINT8(save_p, players[i].position); + WRITEUINT8(save_p, players[i].oldposition); + WRITEUINT8(save_p, players[i].positiondelay); WRITEUINT32(save_p, players[i].distancetofinish); WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].nextwaypoint)); WRITEUINT32(save_p, players[i].airtime); - WRITEUINT8(save_p, players[i].ktemp_startboost); + WRITEUINT8(save_p, players[i].startboost); - WRITEUINT16(save_p, players[i].ktemp_flashing); - WRITEUINT16(save_p, players[i].ktemp_spinouttimer); - WRITEUINT8(save_p, players[i].ktemp_spinouttype); - WRITEUINT8(save_p, players[i].ktemp_instashield); - WRITEUINT8(save_p, players[i].ktemp_wipeoutslow); - WRITEUINT8(save_p, players[i].ktemp_justbumped); + WRITEUINT16(save_p, players[i].flashing); + WRITEUINT16(save_p, players[i].spinouttimer); + WRITEUINT8(save_p, players[i].spinouttype); + WRITEUINT8(save_p, players[i].instashield); + WRITEUINT8(save_p, players[i].wipeoutslow); + WRITEUINT8(save_p, players[i].justbumped); WRITEUINT8(save_p, players[i].tumbleBounces); WRITEUINT16(save_p, players[i].tumbleHeight); - WRITESINT8(save_p, players[i].ktemp_drift); - WRITEFIXED(save_p, players[i].ktemp_driftcharge); - WRITEUINT8(save_p, players[i].ktemp_driftboost); + WRITESINT8(save_p, players[i].drift); + WRITEFIXED(save_p, players[i].driftcharge); + WRITEUINT8(save_p, players[i].driftboost); - WRITESINT8(save_p, players[i].ktemp_aizdriftstrat); + WRITESINT8(save_p, players[i].aizdriftstrat); WRITEINT32(save_p, players[i].aizdrifttilt); WRITEINT32(save_p, players[i].aizdriftturn); - WRITEFIXED(save_p, players[i].ktemp_offroad); - WRITEUINT8(save_p, players[i].ktemp_waterskip); + WRITEFIXED(save_p, players[i].offroad); + WRITEUINT8(save_p, players[i].waterskip); - WRITEUINT16(save_p, players[i].ktemp_tiregrease); - WRITEUINT16(save_p, players[i].ktemp_springstars); - WRITEUINT16(save_p, players[i].ktemp_springcolor); - WRITEUINT8(save_p, players[i].ktemp_dashpadcooldown); + WRITEUINT16(save_p, players[i].tiregrease); + WRITEUINT16(save_p, players[i].springstars); + WRITEUINT16(save_p, players[i].springcolor); + WRITEUINT8(save_p, players[i].dashpadcooldown); - WRITEUINT16(save_p, players[i].ktemp_spindash); - WRITEFIXED(save_p, players[i].ktemp_spindashspeed); - WRITEUINT8(save_p, players[i].ktemp_spindashboost); + WRITEUINT16(save_p, players[i].spindash); + WRITEFIXED(save_p, players[i].spindashspeed); + WRITEUINT8(save_p, players[i].spindashboost); - WRITEUINT8(save_p, players[i].ktemp_numboosts); - WRITEFIXED(save_p, players[i].ktemp_boostpower); - WRITEFIXED(save_p, players[i].ktemp_speedboost); - WRITEFIXED(save_p, players[i].ktemp_accelboost); - WRITEFIXED(save_p, players[i].ktemp_handleboost); - WRITEANGLE(save_p, players[i].ktemp_boostangle); + WRITEUINT8(save_p, players[i].numboosts); + WRITEFIXED(save_p, players[i].boostpower); + WRITEFIXED(save_p, players[i].speedboost); + WRITEFIXED(save_p, players[i].accelboost); + WRITEFIXED(save_p, players[i].handleboost); + WRITEANGLE(save_p, players[i].boostangle); - WRITEFIXED(save_p, players[i].ktemp_draftpower); - WRITEUINT16(save_p, players[i].ktemp_draftleeway); - WRITESINT8(save_p, players[i].ktemp_lastdraft); + WRITEFIXED(save_p, players[i].draftpower); + WRITEUINT16(save_p, players[i].draftleeway); + WRITESINT8(save_p, players[i].lastdraft); - WRITEUINT16(save_p, players[i].ktemp_itemroulette); - WRITEUINT8(save_p, players[i].ktemp_roulettetype); + WRITEUINT16(save_p, players[i].itemroulette); + WRITEUINT8(save_p, players[i].roulettetype); - WRITESINT8(save_p, players[i].ktemp_itemtype); - WRITEUINT8(save_p, players[i].ktemp_itemamount); - WRITESINT8(save_p, players[i].ktemp_throwdir); + WRITESINT8(save_p, players[i].itemtype); + WRITEUINT8(save_p, players[i].itemamount); + WRITESINT8(save_p, players[i].throwdir); - WRITEUINT8(save_p, players[i].ktemp_sadtimer); + WRITEUINT8(save_p, players[i].sadtimer); WRITEINT16(save_p, players[i].rings); - WRITEUINT8(save_p, players[i].ktemp_pickuprings); - WRITEUINT8(save_p, players[i].ktemp_ringdelay); - WRITEUINT16(save_p, players[i].ktemp_ringboost); - WRITEUINT8(save_p, players[i].ktemp_sparkleanim); - WRITEUINT8(save_p, players[i].ktemp_superring); + WRITEUINT8(save_p, players[i].pickuprings); + WRITEUINT8(save_p, players[i].ringdelay); + WRITEUINT16(save_p, players[i].ringboost); + WRITEUINT8(save_p, players[i].sparkleanim); + WRITEUINT8(save_p, players[i].superring); - WRITEUINT8(save_p, players[i].ktemp_curshield); - WRITEUINT8(save_p, players[i].ktemp_bubblecool); - WRITEUINT8(save_p, players[i].ktemp_bubbleblowup); - WRITEUINT16(save_p, players[i].ktemp_flamedash); - WRITEUINT16(save_p, players[i].ktemp_flamemeter); - WRITEUINT8(save_p, players[i].ktemp_flamelength); + WRITEUINT8(save_p, players[i].curshield); + WRITEUINT8(save_p, players[i].bubblecool); + WRITEUINT8(save_p, players[i].bubbleblowup); + WRITEUINT16(save_p, players[i].flamedash); + WRITEUINT16(save_p, players[i].flamemeter); + WRITEUINT8(save_p, players[i].flamelength); - WRITEUINT16(save_p, players[i].ktemp_hyudorotimer); - WRITESINT8(save_p, players[i].ktemp_stealingtimer); + WRITEUINT16(save_p, players[i].hyudorotimer); + WRITESINT8(save_p, players[i].stealingtimer); - WRITEUINT16(save_p, players[i].ktemp_sneakertimer); - WRITEUINT8(save_p, players[i].ktemp_numsneakers); - WRITEUINT8(save_p, players[i].ktemp_floorboost); + WRITEUINT16(save_p, players[i].sneakertimer); + WRITEUINT8(save_p, players[i].numsneakers); + WRITEUINT8(save_p, players[i].floorboost); - WRITEINT16(save_p, players[i].ktemp_growshrinktimer); - WRITEUINT16(save_p, players[i].ktemp_rocketsneakertimer); - WRITEUINT16(save_p, players[i].ktemp_invincibilitytimer); + WRITEINT16(save_p, players[i].growshrinktimer); + WRITEUINT16(save_p, players[i].rocketsneakertimer); + WRITEUINT16(save_p, players[i].invincibilitytimer); - WRITEUINT8(save_p, players[i].ktemp_eggmanexplode); - WRITESINT8(save_p, players[i].ktemp_eggmanblame); + WRITEUINT8(save_p, players[i].eggmanexplode); + WRITESINT8(save_p, players[i].eggmanblame); - WRITEUINT8(save_p, players[i].ktemp_bananadrag); + WRITEUINT8(save_p, players[i].bananadrag); - WRITESINT8(save_p, players[i].ktemp_lastjawztarget); - WRITEUINT8(save_p, players[i].ktemp_jawztargetdelay); + WRITESINT8(save_p, players[i].lastjawztarget); + WRITEUINT8(save_p, players[i].jawztargetdelay); WRITEUINT8(save_p, players[i].trickpanel); WRITEUINT32(save_p, players[i].trickmomx); @@ -309,7 +309,7 @@ static void P_NetArchivePlayers(void) WRITEUINT32(save_p, players[i].trickmomz); WRITEUINT32(save_p, players[i].roundscore); - WRITEUINT8(save_p, players[i].ktemp_emeralds); + WRITEUINT8(save_p, players[i].emeralds); WRITEUINT8(save_p, players[i].bumpers); WRITEINT16(save_p, players[i].karmadelay); WRITEINT16(save_p, players[i].spheres); @@ -393,7 +393,7 @@ static void P_NetUnArchivePlayers(void) players[i].pflags = READUINT32(save_p); players[i].panim = READUINT8(save_p); players[i].spectator = READUINT8(save_p); - players[i].ktemp_spectatewait = READUINT32(save_p); + players[i].spectatewait = READUINT32(save_p); players[i].flashpal = READUINT16(save_p); players[i].flashcount = READUINT16(save_p); @@ -459,99 +459,99 @@ static void P_NetUnArchivePlayers(void) if (flags & FOLLOWER) players[i].follower = (mobj_t *)(size_t)READUINT32(save_p); - players[i].ktemp_nocontrol = READUINT16(save_p); - players[i].ktemp_carry = READUINT8(save_p); - players[i].ktemp_dye = READUINT16(save_p); + players[i].nocontrol = READUINT16(save_p); + players[i].carry = READUINT8(save_p); + players[i].dye = READUINT16(save_p); - players[i].ktemp_position = READUINT8(save_p); - players[i].ktemp_oldposition = READUINT8(save_p); - players[i].ktemp_positiondelay = READUINT8(save_p); + players[i].position = READUINT8(save_p); + players[i].oldposition = READUINT8(save_p); + players[i].positiondelay = READUINT8(save_p); players[i].distancetofinish = READUINT32(save_p); players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save_p); players[i].airtime = READUINT32(save_p); - players[i].ktemp_startboost = READUINT8(save_p); + players[i].startboost = READUINT8(save_p); - players[i].ktemp_flashing = READUINT16(save_p); - players[i].ktemp_spinouttimer = READUINT16(save_p); - players[i].ktemp_spinouttype = READUINT8(save_p); - players[i].ktemp_instashield = READUINT8(save_p); - players[i].ktemp_wipeoutslow = READUINT8(save_p); - players[i].ktemp_justbumped = READUINT8(save_p); + players[i].flashing = READUINT16(save_p); + players[i].spinouttimer = READUINT16(save_p); + players[i].spinouttype = READUINT8(save_p); + players[i].instashield = READUINT8(save_p); + players[i].wipeoutslow = READUINT8(save_p); + players[i].justbumped = READUINT8(save_p); players[i].tumbleBounces = READUINT8(save_p); players[i].tumbleHeight = READUINT16(save_p); - players[i].ktemp_drift = READSINT8(save_p); - players[i].ktemp_driftcharge = READFIXED(save_p); - players[i].ktemp_driftboost = READUINT8(save_p); + players[i].drift = READSINT8(save_p); + players[i].driftcharge = READFIXED(save_p); + players[i].driftboost = READUINT8(save_p); - players[i].ktemp_aizdriftstrat = READSINT8(save_p); + players[i].aizdriftstrat = READSINT8(save_p); players[i].aizdrifttilt = READINT32(save_p); players[i].aizdriftturn = READINT32(save_p); - players[i].ktemp_offroad = READFIXED(save_p); - players[i].ktemp_waterskip = READUINT8(save_p); + players[i].offroad = READFIXED(save_p); + players[i].waterskip = READUINT8(save_p); - players[i].ktemp_tiregrease = READUINT16(save_p); - players[i].ktemp_springstars = READUINT16(save_p); - players[i].ktemp_springcolor = READUINT16(save_p); - players[i].ktemp_dashpadcooldown = READUINT8(save_p); + players[i].tiregrease = READUINT16(save_p); + players[i].springstars = READUINT16(save_p); + players[i].springcolor = READUINT16(save_p); + players[i].dashpadcooldown = READUINT8(save_p); - players[i].ktemp_spindash = READUINT16(save_p); - players[i].ktemp_spindashspeed = READFIXED(save_p); - players[i].ktemp_spindashboost = READUINT8(save_p); + players[i].spindash = READUINT16(save_p); + players[i].spindashspeed = READFIXED(save_p); + players[i].spindashboost = READUINT8(save_p); - players[i].ktemp_numboosts = READUINT8(save_p); - players[i].ktemp_boostpower = READFIXED(save_p); - players[i].ktemp_speedboost = READFIXED(save_p); - players[i].ktemp_accelboost = READFIXED(save_p); - players[i].ktemp_handleboost = READFIXED(save_p); - players[i].ktemp_boostangle = READANGLE(save_p); + players[i].numboosts = READUINT8(save_p); + players[i].boostpower = READFIXED(save_p); + players[i].speedboost = READFIXED(save_p); + players[i].accelboost = READFIXED(save_p); + players[i].handleboost = READFIXED(save_p); + players[i].boostangle = READANGLE(save_p); - players[i].ktemp_draftpower = READFIXED(save_p); - players[i].ktemp_draftleeway = READUINT16(save_p); - players[i].ktemp_lastdraft = READSINT8(save_p); + players[i].draftpower = READFIXED(save_p); + players[i].draftleeway = READUINT16(save_p); + players[i].lastdraft = READSINT8(save_p); - players[i].ktemp_itemroulette = READUINT16(save_p); - players[i].ktemp_roulettetype = READUINT8(save_p); + players[i].itemroulette = READUINT16(save_p); + players[i].roulettetype = READUINT8(save_p); - players[i].ktemp_itemtype = READSINT8(save_p); - players[i].ktemp_itemamount = READUINT8(save_p); - players[i].ktemp_throwdir = READSINT8(save_p); + players[i].itemtype = READSINT8(save_p); + players[i].itemamount = READUINT8(save_p); + players[i].throwdir = READSINT8(save_p); - players[i].ktemp_sadtimer = READUINT8(save_p); + players[i].sadtimer = READUINT8(save_p); players[i].rings = READSINT8(save_p); - players[i].ktemp_pickuprings = READUINT8(save_p); - players[i].ktemp_ringdelay = READUINT8(save_p); - players[i].ktemp_ringboost = READUINT16(save_p); - players[i].ktemp_sparkleanim = READUINT8(save_p); - players[i].ktemp_superring = READUINT8(save_p); + players[i].pickuprings = READUINT8(save_p); + players[i].ringdelay = READUINT8(save_p); + players[i].ringboost = READUINT16(save_p); + players[i].sparkleanim = READUINT8(save_p); + players[i].superring = READUINT8(save_p); - players[i].ktemp_curshield = READUINT8(save_p); - players[i].ktemp_bubblecool = READUINT8(save_p); - players[i].ktemp_bubbleblowup = READUINT8(save_p); - players[i].ktemp_flamedash = READUINT16(save_p); - players[i].ktemp_flamemeter = READUINT16(save_p); - players[i].ktemp_flamelength = READUINT8(save_p); + players[i].curshield = READUINT8(save_p); + players[i].bubblecool = READUINT8(save_p); + players[i].bubbleblowup = READUINT8(save_p); + players[i].flamedash = READUINT16(save_p); + players[i].flamemeter = READUINT16(save_p); + players[i].flamelength = READUINT8(save_p); - players[i].ktemp_hyudorotimer = READUINT16(save_p); - players[i].ktemp_stealingtimer = READSINT8(save_p); + players[i].hyudorotimer = READUINT16(save_p); + players[i].stealingtimer = READSINT8(save_p); - players[i].ktemp_sneakertimer = READUINT16(save_p); - players[i].ktemp_numsneakers = READUINT8(save_p); - players[i].ktemp_floorboost = READUINT8(save_p); + players[i].sneakertimer = READUINT16(save_p); + players[i].numsneakers = READUINT8(save_p); + players[i].floorboost = READUINT8(save_p); - players[i].ktemp_growshrinktimer = READINT16(save_p); - players[i].ktemp_rocketsneakertimer = READUINT16(save_p); - players[i].ktemp_invincibilitytimer = READUINT16(save_p); + players[i].growshrinktimer = READINT16(save_p); + players[i].rocketsneakertimer = READUINT16(save_p); + players[i].invincibilitytimer = READUINT16(save_p); - players[i].ktemp_eggmanexplode = READUINT8(save_p); - players[i].ktemp_eggmanblame = READSINT8(save_p); + players[i].eggmanexplode = READUINT8(save_p); + players[i].eggmanblame = READSINT8(save_p); - players[i].ktemp_bananadrag = READUINT8(save_p); + players[i].bananadrag = READUINT8(save_p); - players[i].ktemp_lastjawztarget = READSINT8(save_p); - players[i].ktemp_jawztargetdelay = READUINT8(save_p); + players[i].lastjawztarget = READSINT8(save_p); + players[i].jawztargetdelay = READUINT8(save_p); players[i].trickpanel = READUINT8(save_p); players[i].trickmomx = READUINT32(save_p); @@ -559,7 +559,7 @@ static void P_NetUnArchivePlayers(void) players[i].trickmomz = READUINT32(save_p); players[i].roundscore = READUINT32(save_p); - players[i].ktemp_emeralds = READUINT8(save_p); + players[i].emeralds = READUINT8(save_p); players[i].bumpers = READUINT8(save_p); players[i].karmadelay = READINT16(save_p); players[i].spheres = READINT16(save_p); diff --git a/src/p_spec.c b/src/p_spec.c index a87ecb467..b08614b35 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1552,7 +1552,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller case 336: // object dye - once { INT32 triggercolor = (INT32)sides[triggerline->sidenum[0]].toptexture; - UINT16 color = (actor->player ? actor->player->ktemp_dye : actor->color); + UINT16 color = (actor->player ? actor->player->dye : actor->color); boolean invert = (triggerline->flags & ML_NOCLIMB ? true : false); if (invert ^ (triggercolor != color)) @@ -1872,7 +1872,7 @@ static void K_HandleLapIncrement(player_t *player) player->karthud[khud_laphand] = 3; else { - if (nump > 2 && player->ktemp_position == 1) // 1st place in 1v1 uses thumbs up + if (nump > 2 && player->position == 1) // 1st place in 1v1 uses thumbs up player->karthud[khud_laphand] = 1; else player->karthud[khud_laphand] = 2; @@ -1895,7 +1895,7 @@ static void K_HandleLapIncrement(player_t *player) if (rainbowstartavailable == true) { S_StartSound(player->mo, sfx_s23c); - player->ktemp_startboost = 125; + player->startboost = 125; K_SpawnDriftBoostExplosion(player, 3); rainbowstartavailable = false; } @@ -1920,7 +1920,7 @@ static void K_HandleLapIncrement(player_t *player) } else { - if ((player->laps > (UINT8)(cv_numlaps.value)) && (player->ktemp_position == 1)) + if ((player->laps > (UINT8)(cv_numlaps.value)) && (player->position == 1)) { // opponent finished S_StartSound(NULL, sfx_s253); @@ -2844,7 +2844,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) fractime = 1; //instantly wears off upon leaving if (line->flags & ML_NOCLIMB) fractime |= 1<<15; //more crazy &ing, as if music stuff wasn't enough - mo->player->ktemp_nocontrol = fractime; + mo->player->nocontrol = fractime; } break; @@ -3875,7 +3875,7 @@ void P_SetupSignExit(player_t *player) thinker_t *think; INT32 numfound = 0; - if (player->ktemp_position != 1) + if (player->position != 1) return; for (; node; node = node->m_thinglist_next) @@ -4539,9 +4539,9 @@ DoneSection2: break; case 5: // Speed pad - if (player->ktemp_floorboost != 0) + if (player->floorboost != 0) { - player->ktemp_floorboost = 2; + player->floorboost = 2; break; } @@ -4573,9 +4573,9 @@ DoneSection2: P_InstaThrust(player->mo, lineangle, max(linespeed, 2*playerspeed)); - player->ktemp_dashpadcooldown = TICRATE/3; + player->dashpadcooldown = TICRATE/3; player->trickpanel = 0; - player->ktemp_floorboost = 2; + player->floorboost = 2; S_StartSound(player->mo, sfx_cdfm62); } break; @@ -4648,10 +4648,10 @@ DoneSection2: case 6: // SRB2kart 190117 - Sneaker Panel if (roversector || P_MobjReadyToTrigger(player->mo, sector)) { - if (!player->ktemp_floorboost) - player->ktemp_floorboost = 3; + if (!player->floorboost) + player->floorboost = 3; else - player->ktemp_floorboost = 2; + player->floorboost = 2; K_DoSneaker(player, 0); } break; @@ -4667,7 +4667,7 @@ DoneSection2: mobj_t *waypoint = NULL; angle_t an; - if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->ktemp_carry == CR_ZOOMTUBE) + if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->carry == CR_ZOOMTUBE) break; // Find line #3 tagged to this sector @@ -4707,7 +4707,7 @@ DoneSection2: break; // behind back P_SetTarget(&player->mo->tracer, waypoint); - player->ktemp_carry = CR_ZOOMTUBE; + player->carry = CR_ZOOMTUBE; player->speed = speed; } break; @@ -4720,7 +4720,7 @@ DoneSection2: mobj_t *waypoint = NULL; angle_t an; - if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->ktemp_carry == CR_ZOOMTUBE) + if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && player->carry == CR_ZOOMTUBE) break; // Find line #11 tagged to this sector @@ -4760,7 +4760,7 @@ DoneSection2: break; // behind back P_SetTarget(&player->mo->tracer, waypoint); - player->ktemp_carry = CR_ZOOMTUBE; + player->carry = CR_ZOOMTUBE; player->speed = speed; } break; @@ -8501,8 +8501,8 @@ void T_Pusher(pusher_t *p) continue; if (thing->player && (thing->state == &states[thing->info->painstate]) - && (thing->player->ktemp_flashing > (K_GetKartFlashing(thing->player)/4)*3 - && thing->player->ktemp_flashing <= K_GetKartFlashing(thing->player))) + && (thing->player->flashing > (K_GetKartFlashing(thing->player)/4)*3 + && thing->player->flashing <= K_GetKartFlashing(thing->player))) continue; inFOF = touching = moved = false; @@ -8630,11 +8630,11 @@ void T_Pusher(pusher_t *p) if (moved) { - if (p->slider && thing->player && !thing->player->ktemp_carry) + if (p->slider && thing->player && !thing->player->carry) { P_ResetPlayer (thing->player); - thing->player->ktemp_carry = CR_SLIDING; + thing->player->carry = CR_SLIDING; thing->angle = R_PointToAngle2 (0, 0, xspeed<<(FRACBITS-PUSH_FACTOR), yspeed<<(FRACBITS-PUSH_FACTOR)); if (!demo.playback) diff --git a/src/p_user.c b/src/p_user.c index 9ee66800c..3cd0bba5c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -338,7 +338,7 @@ void P_GiveEmerald(boolean spawnObj) P_SetMobjState(emmo, mobjinfo[MT_GOTEMERALD].meleestate + em); // Make sure we're not being carried before our tracer is changed - players[i].ktemp_carry = CR_NONE; + players[i].carry = CR_NONE; P_SetTarget(&players[i].mo->tracer, emmo); @@ -444,11 +444,11 @@ UINT8 P_FindHighestLap(void) // P_PlayerInPain // // Is player in pain?? -// Checks for painstate and ktemp_flashing, if both found return true +// Checks for painstate and flashing, if both found return true // boolean P_PlayerInPain(player_t *player) { - if (player->ktemp_spinouttimer || (player->tumbleBounces > 0) || (player->pflags & PF_FAULT)) + if (player->spinouttimer || (player->tumbleBounces > 0) || (player->pflags & PF_FAULT)) return true; return false; @@ -462,10 +462,10 @@ void P_ResetPlayer(player_t *player) { //player->pflags &= ~(PF_); - player->ktemp_carry = CR_NONE; + player->carry = CR_NONE; player->onconveyor = 0; - //player->ktemp_drift = player->ktemp_driftcharge = 0; + //player->drift = player->driftcharge = 0; player->trickpanel = 0; } @@ -656,7 +656,7 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) void P_PlayRinglossSound(mobj_t *source) { - if (source->player && K_GetShieldFromItem(source->player->ktemp_itemtype) != KSHIELD_NONE) + if (source->player && K_GetShieldFromItem(source->player->itemtype) != KSHIELD_NONE) S_StartSound(source, sfx_s1a3); // Shield hit (no ring loss) else if (source->player && source->player->rings <= 0) S_StartSound(source, sfx_s1a6); // Ring debt (lessened ring loss) @@ -704,12 +704,12 @@ boolean P_EndingMusic(player_t *player) return false; bestlocalplayer = &players[displayplayers[0]]; - bestlocalpos = ((players[displayplayers[0]].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[displayplayers[0]].ktemp_position); + bestlocalpos = ((players[displayplayers[0]].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[displayplayers[0]].position); #define setbests(p) \ - if (((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].ktemp_position) < bestlocalpos) \ + if (((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].position) < bestlocalpos) \ { \ bestlocalplayer = &players[p]; \ - bestlocalpos = ((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].ktemp_position); \ + bestlocalpos = ((players[p].pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : players[p].position); \ } setbests(displayplayers[1]); if (r_splitscreen > 1) @@ -724,7 +724,7 @@ boolean P_EndingMusic(player_t *player) return false; bestlocalplayer = player; - bestlocalpos = ((player->pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : player->ktemp_position); + bestlocalpos = ((player->pflags & PF_NOCONTEST) ? MAXPLAYERS+1 : player->position); } if ((gametyperules & GTR_CIRCUIT) && bestlocalpos == MAXPLAYERS+1) @@ -795,10 +795,10 @@ void P_RestoreMusic(player_t *player) #define setbests(p) \ if (players[p].playerstate == PST_LIVE) \ { \ - if (players[p].ktemp_invincibilitytimer > bestlocaltimer) \ - { wantedmus = 1; bestlocaltimer = players[p].ktemp_invincibilitytimer; } \ - else if (players[p].ktemp_growshrinktimer > bestlocaltimer) \ - { wantedmus = 2; bestlocaltimer = players[p].ktemp_growshrinktimer; } \ + if (players[p].invincibilitytimer > bestlocaltimer) \ + { wantedmus = 1; bestlocaltimer = players[p].invincibilitytimer; } \ + else if (players[p].growshrinktimer > bestlocaltimer) \ + { wantedmus = 2; bestlocaltimer = players[p].growshrinktimer; } \ } setbests(displayplayers[0]); setbests(displayplayers[1]); @@ -812,9 +812,9 @@ void P_RestoreMusic(player_t *player) { if (player->playerstate == PST_LIVE) { - if (player->ktemp_invincibilitytimer > 1) + if (player->invincibilitytimer > 1) wantedmus = 1; - else if (player->ktemp_growshrinktimer > 1) + else if (player->growshrinktimer > 1) wantedmus = 2; } } @@ -1594,13 +1594,13 @@ static void P_CheckQuicksand(player_t *player) // static void P_CheckInvincibilityTimer(player_t *player) { - if (!player->ktemp_invincibilitytimer) + if (!player->invincibilitytimer) return; player->mo->color = (UINT16)(SKINCOLOR_PINK + (leveltime % (numskincolors - SKINCOLOR_PINK))); // Resume normal music stuff. - if (player->ktemp_invincibilitytimer == 1) + if (player->invincibilitytimer == 1) { player->mo->color = player->skincolor; G_GhostAddColor((INT32) (player - players), GHC_NORMAL); @@ -1677,10 +1677,10 @@ static void P_3dMovement(player_t *player) // Get the old momentum; this will be needed at the end of the function! -SH oldMagnitude = R_PointToDist2(player->mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0); - if (player->ktemp_drift != 0) - movepushangle = player->mo->angle-(ANGLE_45/5)*player->ktemp_drift; - else if (player->ktemp_spinouttimer || player->ktemp_wipeoutslow) // if spun out, use the boost angle - movepushangle = (angle_t)player->ktemp_boostangle; + if (player->drift != 0) + movepushangle = player->mo->angle-(ANGLE_45/5)*player->drift; + else if (player->spinouttimer || player->wipeoutslow) // if spun out, use the boost angle + movepushangle = (angle_t)player->boostangle; else movepushangle = player->mo->angle; @@ -1719,7 +1719,7 @@ static void P_3dMovement(player_t *player) //{ SRB2kart 220217 - Toaster Code for misplaced thrust #if 0 - if (!player->ktemp_drift) // Not Drifting + if (!player->drift) // Not Drifting { angle_t difference = dangle/2; boolean reverse = (dangle >= ANGLE_90); @@ -1937,7 +1937,7 @@ void P_MovePlayer(player_t *player) runspd = FixedMul(runspd, player->mo->movefactor); // Control relinquishing stuff! - if (player->ktemp_nocontrol) + if (player->nocontrol) player->pflags |= PF_STASIS; // note: don't unset stasis here @@ -1988,15 +1988,15 @@ void P_MovePlayer(player_t *player) player->mo->rollangle = 0; } } - else if (player->ktemp_carry == CR_SLIDING) + else if (player->carry == CR_SLIDING) { P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); player->drawangle -= ANGLE_22h; player->mo->rollangle = 0; } - else if ((player->pflags & PF_FAULT) || (player->ktemp_spinouttimer > 0)) + else if ((player->pflags & PF_FAULT) || (player->spinouttimer > 0)) { - UINT16 speed = ((player->pflags & PF_FAULT) ? player->ktemp_nocontrol : player->ktemp_spinouttimer)/8; + UINT16 speed = ((player->pflags & PF_FAULT) ? player->nocontrol : player->spinouttimer)/8; if (speed > 8) speed = 8; else if (speed < 1) @@ -2015,7 +2015,7 @@ void P_MovePlayer(player_t *player) { P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); - if (((player->ktemp_nocontrol + 5) % 20) < 10) + if (((player->nocontrol + 5) % 20) < 10) player->drawangle += ANGLE_11hh; else player->drawangle -= ANGLE_11hh; @@ -2042,9 +2042,9 @@ void P_MovePlayer(player_t *player) { player->drawangle += player->aizdriftturn; } - else if (player->ktemp_drift != 0) + else if (player->drift != 0) { - INT32 a = (ANGLE_45 / 5) * player->ktemp_drift; + INT32 a = (ANGLE_45 / 5) * player->drift; player->drawangle += a; } } @@ -2058,13 +2058,13 @@ void P_MovePlayer(player_t *player) // Drifting sound // Start looping the sound now. - if (leveltime % 50 == 0 && onground && player->ktemp_drift != 0) + if (leveltime % 50 == 0 && onground && player->drift != 0) S_StartSound(player->mo, sfx_drift); // Leveltime being 50 might take a while at times. We'll start it up once, isntantly. - else if (!S_SoundPlaying(player->mo, sfx_drift) && onground && player->ktemp_drift != 0) + else if (!S_SoundPlaying(player->mo, sfx_drift) && onground && player->drift != 0) S_StartSound(player->mo, sfx_drift); // Ok, we'll stop now. - else if (player->ktemp_drift == 0) + else if (player->drift == 0) S_StopSoundByID(player->mo, sfx_drift); K_MoveKartPlayer(player, onground); @@ -2077,7 +2077,7 @@ void P_MovePlayer(player_t *player) if (((!(player->mo->eflags & MFE_VERTICALFLIP) && player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop) || (player->mo->eflags & MFE_VERTICALFLIP && player->mo->z + player->mo->height >= player->mo->waterbottom && player->mo->z <= player->mo->waterbottom)) && (player->speed > runspd) - && player->mo->momz == 0 && player->ktemp_carry != CR_SLIDING && !player->spectator) + && player->mo->momz == 0 && player->carry != CR_SLIDING && !player->spectator) { fixed_t trailScale = FixedMul(FixedDiv(player->speed - runspd, K_GetKartSpeed(player, false) - runspd), mapobjectscale); fixed_t playerTopSpeed = K_GetKartSpeed(player, false); @@ -2161,14 +2161,14 @@ void P_MovePlayer(player_t *player) //////////////////////////// // SRB2kart - Drifting smoke and fire - if ((player->ktemp_sneakertimer || player->ktemp_flamedash) + if ((player->sneakertimer || player->flamedash) && onground && (leveltime & 1)) K_SpawnBoostTrail(player); - if (player->ktemp_invincibilitytimer > 0) + if (player->invincibilitytimer > 0) K_SpawnSparkleTrail(player->mo); - if (player->ktemp_wipeoutslow > 1 && (leveltime & 1)) + if (player->wipeoutslow > 1 && (leveltime & 1)) K_SpawnWipeoutTrail(player->mo, false); K_DriftDustHandling(player->mo); @@ -2221,7 +2221,7 @@ static void P_DoZoomTube(player_t *player) else reverse = true; - player->ktemp_flashing = 1; + player->flashing = 1; speed = abs(player->speed); @@ -2279,7 +2279,7 @@ static void P_DoZoomTube(player_t *player) else { P_SetTarget(&player->mo->tracer, NULL); // Else, we just let them fly. - player->ktemp_carry = CR_NONE; + player->carry = CR_NONE; CONS_Debug(DBG_GAMELOGIC, "Next waypoint not found, releasing from track...\n"); } @@ -3072,11 +3072,11 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall pan = xpan = ypan = 0; else { - if (player->ktemp_drift != 0) + if (player->drift != 0) { fixed_t panmax = (dist/5); INT32 driftval = K_GetKartDriftSparkValue(player); - INT32 dc = player->ktemp_driftcharge; + INT32 dc = player->driftcharge; if (dc > driftval || dc < 0) dc = driftval; @@ -3085,7 +3085,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall if (pan > panmax) pan = panmax; - if (player->ktemp_drift < 0) + if (player->drift < 0) pan *= -1; } else @@ -3420,7 +3420,7 @@ boolean P_SpectatorJoinGame(player_t *player) { if (P_IsLocalPlayer(player)) CONS_Printf(M_GetText("Server does not allow team change.\n")); - //player->ktemp_flashing = TICRATE + 1; //to prevent message spam. + //player->flashing = TICRATE + 1; //to prevent message spam. } // Team changing in Team Match and CTF // Pressing fire assigns you to a team that needs players if allowed. @@ -3462,7 +3462,7 @@ boolean P_SpectatorJoinGame(player_t *player) } player->spectator = false; player->pflags &= ~PF_WANTSTOJOIN; - player->ktemp_spectatewait = 0; + player->spectatewait = 0; player->ctfteam = changeto; player->playerstate = PST_REBORN; @@ -3492,7 +3492,7 @@ boolean P_SpectatorJoinGame(player_t *player) } player->spectator = false; player->pflags &= ~PF_WANTSTOJOIN; - player->ktemp_spectatewait = 0; + player->spectatewait = 0; player->playerstate = PST_REBORN; //Reset away view @@ -3966,7 +3966,7 @@ static void P_HandleFollower(player_t *player) // handle follower animations. Could probably be better... // hurt or dead - if (player->ktemp_spinouttimer || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0) + if (player->spinouttimer || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0) { player->follower->movecount = 0; // cancel hit confirm. player->follower->angle = player->drawangle; // spin out @@ -4178,15 +4178,15 @@ void P_PlayerThink(player_t *player) // to allow items to be thrown forward or backward. if (cmd->buttons & BT_FORWARD) { - player->ktemp_throwdir = 1; + player->throwdir = 1; } else if (cmd->buttons & BT_BACKWARD) { - player->ktemp_throwdir = -1; + player->throwdir = -1; } else { - player->ktemp_throwdir = 0; + player->throwdir = 0; } // Accessibility - kickstart your acceleration @@ -4309,7 +4309,7 @@ void P_PlayerThink(player_t *player) // SRB2kart 010217 if (leveltime < introtime) { - player->ktemp_nocontrol = 2; + player->nocontrol = 2; } // Synchronizes the "real" amount of time spent in the level. @@ -4334,10 +4334,10 @@ void P_PlayerThink(player_t *player) } } - if ((netgame || multiplayer) && player->spectator && cmd->buttons & BT_ATTACK && !player->ktemp_flashing) + if ((netgame || multiplayer) && player->spectator && cmd->buttons & BT_ATTACK && !player->flashing) { player->pflags ^= PF_WANTSTOJOIN; - player->ktemp_flashing = TICRATE/2 + 1; + player->flashing = TICRATE/2 + 1; /*if (P_SpectatorJoinGame(player)) return; // player->mo was removed.*/ } @@ -4400,28 +4400,28 @@ void P_PlayerThink(player_t *player) // Time Bonus & Ring Bonus count settings // Strength counts up to diminish fade. - if (player->ktemp_flashing && player->ktemp_flashing < UINT16_MAX && + if (player->flashing && player->flashing < UINT16_MAX && (player->spectator || !P_PlayerInPain(player))) { - player->ktemp_flashing--; + player->flashing--; } - if (player->ktemp_nocontrol && player->ktemp_nocontrol < UINT16_MAX) + if (player->nocontrol && player->nocontrol < UINT16_MAX) { - if (!(--player->ktemp_nocontrol)) + if (!(--player->nocontrol)) player->pflags &= ~PF_FAULT; } else - player->ktemp_nocontrol = 0; + player->nocontrol = 0; // Flash player after being hit. - if (!(player->ktemp_hyudorotimer // SRB2kart - fixes Hyudoro not flashing when it should. - || player->ktemp_growshrinktimer > 0 // Grow doesn't flash either. + if (!(player->hyudorotimer // SRB2kart - fixes Hyudoro not flashing when it should. + || player->growshrinktimer > 0 // Grow doesn't flash either. || (player->respawn.state != RESPAWNST_NONE) // Respawn timer (for drop dash effect) || (player->pflags & PF_NOCONTEST) // NO CONTEST explosion || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay))) { - if (player->ktemp_flashing > 0 && player->ktemp_flashing < K_GetKartFlashing(player) + if (player->flashing > 0 && player->flashing < K_GetKartFlashing(player) && (leveltime & 1)) player->mo->renderflags |= RF_DONTDRAW; else @@ -4492,8 +4492,8 @@ void P_PlayerThink(player_t *player) LUAh_PlayerThink(player); - if (player->ktemp_carry == CR_SLIDING) - player->ktemp_carry = CR_NONE; + if (player->carry == CR_SLIDING) + player->carry = CR_NONE; } // @@ -4652,5 +4652,5 @@ void P_ForceLocalAngle(player_t *player, angle_t angle) boolean P_PlayerFullbright(player_t *player) { - return (player->ktemp_invincibilitytimer > 0); + return (player->invincibilitytimer > 0); } diff --git a/src/st_stuff.c b/src/st_stuff.c index 3b0a3d9ef..16118cbee 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -909,7 +909,7 @@ static void ST_overlayDrawer(void) { const char *itemtxt = M_GetText("Item - Join Game"); - if (stplyr->ktemp_flashing) + if (stplyr->flashing) itemtxt = M_GetText("Item - . . ."); else if (stplyr->pflags & PF_WANTSTOJOIN) itemtxt = M_GetText("Item - Cancel Join"); From 5aa2dd4cf0b5bdbf6967586e9e849e13838ffc50 Mon Sep 17 00:00:00 2001 From: lachablock Date: Mon, 19 Apr 2021 14:28:41 +1000 Subject: [PATCH 4/6] Archive player->rings as SINT8 --- src/p_saveg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_saveg.c b/src/p_saveg.c index d006bf90c..8730a3ef3 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -270,7 +270,7 @@ static void P_NetArchivePlayers(void) WRITEUINT8(save_p, players[i].sadtimer); - WRITEINT16(save_p, players[i].rings); + WRITESINT8(save_p, players[i].rings); WRITEUINT8(save_p, players[i].pickuprings); WRITEUINT8(save_p, players[i].ringdelay); WRITEUINT16(save_p, players[i].ringboost); From a58a2dc58b0b521bb6e41c82df8c8cfe79138563 Mon Sep 17 00:00:00 2001 From: SteelT Date: Mon, 19 Apr 2021 01:21:06 -0400 Subject: [PATCH 5/6] Fix crash accessing array index out of bounds --- src/k_kart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 5a655fceb..e86e4f871 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3836,7 +3836,7 @@ void K_SpawnSparkleTrail(mobj_t *mo) INT32 i; UINT8 invanimnum; // Current sparkle animation number INT32 invtime;// Invincibility time left, in seconds - UINT8 index = 1; + UINT8 index = 0; fixed_t newx, newy, newz; I_Assert(mo != NULL); @@ -3850,7 +3850,7 @@ void K_SpawnSparkleTrail(mobj_t *mo) } if (leveltime & 2) - index = 2; + index = 1; invtime = mo->player->kartstuff[k_invincibilitytimer]/TICRATE+1; From 6a55eb2f041c8294afc5b4a6a2032bcedd7b9e13 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 19 Apr 2021 18:08:01 +0100 Subject: [PATCH 6/6] Resolve #167 - Rocket Sneakers now properly die if you rush their timer to 0. --- src/k_kart.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index e9ba88222..5a8e09c34 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8026,9 +8026,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_DoSneaker(player, 2); K_PlayBoostTaunt(player->mo); - player->rocketsneakertimer -= 3*TICRATE; - if (player->rocketsneakertimer < 1) + if (player->rocketsneakertimer <= 3*TICRATE) player->rocketsneakertimer = 1; + else + player->rocketsneakertimer -= 3*TICRATE; } } else if (player->itemamount == 0)