--------
Fireballs narrower
Fake Item is no longer restricted while held
Held items that are restricted remain in the item wheel until used
Magnet now correctly hits nearby players and objects
This commit is contained in:
ZTsukei 2017-05-17 23:09:38 -04:00
parent 2972dc9b67
commit eaa5167f71
4 changed files with 58 additions and 29 deletions

View file

@ -143,16 +143,16 @@ extern FILE *logstream;
#define DEVELOP // Disable this for release builds to remove excessive cheat commands and enable MD5 checking and stuff, all in one go. :3
#ifdef DEVELOP
#define VERSION 103 // Game version
#define SUBVERSION 15 // more precise version number
#define SUBVERSION 16 // more precise version number
#define VERSIONSTRING "Development EXE"
#define VERSIONSTRINGW "v1.3.15"
#define VERSIONSTRINGW "v1.3.16"
// most interface strings are ignored in development mode.
// we use comprevision and compbranch instead.
#else
#define VERSION 103 // Game version
#define SUBVERSION 15 // more precise version number
#define VERSIONSTRING "DevEXE v1.3.15"
#define VERSIONSTRINGW L"v1.3.15"
#define SUBVERSION 16 // more precise version number
#define VERSIONSTRING "DevEXE v1.3.16"
#define VERSIONSTRINGW L"v1.3.16"
// Hey! If you change this, add 1 to the MODVERSION below!
// Otherwise we can't force updates!
#endif

View file

@ -1845,11 +1845,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
if (dir == -1)
{
// Shoot backward
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x08000000, 0, 64*FRACUNIT);
mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x04000000, 0, 64*FRACUNIT);
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x06000000, 0, 64*FRACUNIT);
mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x03000000, 0, 64*FRACUNIT);
mo3 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, 64*FRACUNIT);
mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x04000000, 0, 64*FRACUNIT);
mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x08000000, 0, 64*FRACUNIT);
mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x03000000, 0, 64*FRACUNIT);
mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, 64*FRACUNIT);
if (mo)
{
@ -1866,11 +1866,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
else
{
// Shoot forward
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x08000000, 0, 64*FRACUNIT);
mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x04000000, 0, 64*FRACUNIT);
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x06000000, 0, 64*FRACUNIT);
mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x03000000, 0, 64*FRACUNIT);
mo3 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle, 0, 64*FRACUNIT);
mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x04000000, 0, 64*FRACUNIT);
mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x08000000, 0, 64*FRACUNIT);
mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x03000000, 0, 64*FRACUNIT);
mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x06000000, 0, 64*FRACUNIT);
if (mo)
{
@ -1977,7 +1977,7 @@ static void K_DoMagnet(player_t *player)
{
S_StartSound(player->mo, sfx_s3k45);
player->kartstuff[k_magnettimer] = 35;
P_NukeEnemies(player->mo, player->mo, 16*FRACUNIT);
P_NukeEnemies(player->mo, player->mo, RING_DIST/4);
}
static void K_DoBooSteal(player_t *player)
@ -2859,7 +2859,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (!P_IsLocalPlayer(player))
S_StartSound(player->mo, sfx_mega);
K_PlayTauntSound(player->mo);
player->kartstuff[k_growshrinktimer] = itemtime;
player->kartstuff[k_growshrinktimer] = itemtime + TICRATE*2;
S_StartSound(player->mo, sfx_mario3);
player->pflags |= PF_ATTACKDOWN;
player->kartstuff[k_megashroom] = 0;
@ -3426,16 +3426,16 @@ static void K_drawKartRetroItem(void)
else if (stplyr->kartstuff[k_boostolentimer] > 0 && !(leveltime & 2)) localpatch = kp_noitem;
else if (stplyr->kartstuff[k_kitchensink] == 1) localpatch = kp_kitchensink;
else if (stplyr->kartstuff[k_lightning] == 1) localpatch = kp_lightning;
else if (stplyr->kartstuff[k_tripleredshell] & 8) localpatch = kp_tripleredshell;
else if (stplyr->kartstuff[k_tripleredshell]) localpatch = kp_tripleredshell; // &8
else if (stplyr->kartstuff[k_fireflower] == 1) localpatch = kp_fireflower;
else if (stplyr->kartstuff[k_blueshell] == 1) localpatch = kp_blueshell;
else if (stplyr->kartstuff[k_bobomb] & 2) localpatch = kp_bobomb;
else if (stplyr->kartstuff[k_triplegreenshell] & 8) localpatch = kp_triplegreenshell;
else if (stplyr->kartstuff[k_redshell] & 2) localpatch = kp_redshell;
else if (stplyr->kartstuff[k_greenshell] & 2) localpatch = kp_greenshell;
else if (stplyr->kartstuff[k_banana] & 2) localpatch = kp_banana;
else if (stplyr->kartstuff[k_bobomb]) localpatch = kp_bobomb; // &2
else if (stplyr->kartstuff[k_triplegreenshell]) localpatch = kp_triplegreenshell; // &8
else if (stplyr->kartstuff[k_redshell]) localpatch = kp_redshell; // &2
else if (stplyr->kartstuff[k_greenshell]) localpatch = kp_greenshell; // &2
else if (stplyr->kartstuff[k_banana]) localpatch = kp_banana; // &2
else if (stplyr->kartstuff[k_fakeitem] & 2) localpatch = kp_fakeitem;
else if (stplyr->kartstuff[k_triplebanana] & 8) localpatch = kp_triplebanana;
else if (stplyr->kartstuff[k_triplebanana]) localpatch = kp_triplebanana; // &8
else if (stplyr->kartstuff[k_star] == 1) localpatch = kp_star;
else if (stplyr->kartstuff[k_goldshroom] == 1
|| (stplyr->kartstuff[k_goldshroomtimer] > 1 && (leveltime & 1))) localpatch = kp_goldshroom;
@ -3789,7 +3789,7 @@ void K_drawKartHUD(void)
// Draw the little triple-item icons at the bottom
if (!splitscreen)
{
K_DrawKartTripleItem();
//K_DrawKartTripleItem();
K_DrawKartPositionFaces();
}

View file

@ -742,7 +742,7 @@ static boolean P_LookForShield(mobj_t *actor)
// SRB2kart - magnet item
if (player->kartstuff[k_magnettimer] //(player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT
&& (P_AproxDistance(P_AproxDistance(actor->x-player->mo->x, actor->y-player->mo->y), actor->z-player->mo->z) < FixedMul(RING_DIST/2, player->mo->scale)))
&& (P_AproxDistance(P_AproxDistance(actor->x-player->mo->x, actor->y-player->mo->y), actor->z-player->mo->z) < FixedMul(RING_DIST/4, player->mo->scale)))
{
P_SetTarget(&actor->tracer, player->mo);
return true;
@ -8125,7 +8125,7 @@ void A_ItemPop(mobj_t *actor)
&& !(actor->target->player->kartstuff[k_greenshell] || actor->target->player->kartstuff[k_triplegreenshell]
|| actor->target->player->kartstuff[k_redshell] || actor->target->player->kartstuff[k_tripleredshell]
|| actor->target->player->kartstuff[k_banana] || actor->target->player->kartstuff[k_triplebanana]
|| actor->target->player->kartstuff[k_fakeitem] || actor->target->player->kartstuff[k_magnet]
|| actor->target->player->kartstuff[k_fakeitem] & 2 || actor->target->player->kartstuff[k_magnet]
|| actor->target->player->kartstuff[k_bobomb] || actor->target->player->kartstuff[k_blueshell]
|| actor->target->player->kartstuff[k_mushroom] || actor->target->player->kartstuff[k_fireflower]
|| actor->target->player->kartstuff[k_star] || actor->target->player->kartstuff[k_goldshroom]

View file

@ -7690,8 +7690,8 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
if (mo->flags & MF_MONITOR)
continue; // Monitors cannot be 'nuked'.
if (!G_RingSlingerGametype() && mo->type == MT_PLAYER)
continue; // Don't hurt players in Co-Op!
//if (!G_RingSlingerGametype() && mo->type == MT_PLAYER)
// continue; // Don't hurt players in Co-Op!
if (abs(inflictor->x - mo->x) > radius || abs(inflictor->y - mo->y) > radius || abs(inflictor->z - mo->z) > radius)
continue; // Workaround for possible integer overflow in the below -Red
@ -7705,8 +7705,37 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
if (mo->type == MT_EGGGUARD && mo->tracer) //nuke Egg Guard's shield!
P_KillMobj(mo->tracer, inflictor, source);
if (mo->flags & MF_BOSS || mo->type == MT_PLAYER) //don't OHKO bosses nor players!
continue; // SRB2kart - P_Nuke is for magnet (for now), and doesn't hurt other players, only obstacles. // P_DamageMobj(mo, inflictor, source, 1);
if (mo->flags & MF_BOSS) //don't OHKO bosses!
P_DamageMobj(mo, inflictor, source, 1);
//{ SRB2kart
if (mo->type == MT_GREENITEM || mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD
|| mo->type == MT_GREENSHIELD || mo->type == MT_REDSHIELD
|| mo->type == MT_TRIPLEGREENSHIELD1 || mo->type == MT_TRIPLEGREENSHIELD2 || mo->type == MT_TRIPLEGREENSHIELD3
|| mo->type == MT_TRIPLEREDSHIELD1 || mo->type == MT_TRIPLEREDSHIELD2 || mo->type == MT_TRIPLEREDSHIELD3
|| mo->type == MT_BANANAITEM || mo->type == MT_BANANASHIELD
|| mo->type == MT_TRIPLEBANANASHIELD1 || mo->type == MT_TRIPLEBANANASHIELD2 || mo->type == MT_TRIPLEBANANASHIELD3
|| mo->type == MT_FAKEITEM || mo->type == MT_FAKESHIELD
|| mo->type == MT_FIREBALL)
{
if (mo->eflags & MFE_VERTICALFLIP)
mo->z -= mo->height;
else
mo->z += mo->height;
S_StartSound(mo, mo->info->deathsound);
P_KillMobj(mo, inflictor, source);
P_SetObjectMomZ(mo, 8*FRACUNIT, false);
P_InstaThrust(mo, R_PointToAngle2(inflictor->x, inflictor->y, mo->x, mo->y)+ANGLE_90, 16*FRACUNIT);
}
if (mo == inflictor) // Don't nuke yourself, dummy!
continue;
if (mo->type == MT_PLAYER) // Players wipe out in Kart
K_SpinPlayer(mo->player, source);
//}
else
P_DamageMobj(mo, inflictor, source, 1000);
}