Improvements from the netgame

- Double active time
- Increase height they spawn from
- Slow down swing speed the tiniest bit
- Add an extra 7 for first place
- Increase hitbox
- Make particles into hitbox
- Tweak item odds
This commit is contained in:
Sally Coolatta 2022-09-11 23:31:53 -04:00
parent 892863db05
commit b8bbdda1f3
4 changed files with 80 additions and 28 deletions

View file

@ -24085,7 +24085,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
0, // speed 0, // speed
48*FRACUNIT, // radius 52*FRACUNIT, // radius
120*FRACUNIT, // height 120*FRACUNIT, // height
0, // display offset 0, // display offset
0, // mass 0, // mass
@ -24166,13 +24166,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
0, // speed 0, // speed
16*FRACUNIT, // radius 26*FRACUNIT, // radius
16*FRACUNIT, // height 26*FRACUNIT, // height
0, // display offset 0, // display offset
0, // mass 0, // mass
0, // damage 0, // damage
sfx_None, // activesound sfx_None, // activesound
MF_SCENERY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate S_NULL // raisestate
}, },

View file

@ -365,7 +365,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
/*Ballhog*/ { 0, 0, 2, 2, 0, 0, 0, 0 }, // Ballhog /*Ballhog*/ { 0, 0, 2, 2, 0, 0, 0, 0 }, // Ballhog
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0, 2, 4, 0 }, // Self-Propelled Bomb /*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0, 2, 4, 0 }, // Self-Propelled Bomb
/*Grow*/ { 0, 0, 0, 1, 2, 3, 0, 0 }, // Grow /*Grow*/ { 0, 0, 0, 1, 2, 3, 0, 0 }, // Grow
/*Shrink*/ { 0, 0, 0, 0, 0, 0, 4, 2 }, // Shrink /*Shrink*/ { 0, 0, 0, 0, 0, 2, 4, 2 }, // Shrink
/*Lightning Shield*/ { 1, 0, 0, 0, 0, 0, 0, 0 }, // Lightning Shield /*Lightning Shield*/ { 1, 0, 0, 0, 0, 0, 0, 0 }, // Lightning Shield
/*Bubble Shield*/ { 0, 1, 2, 1, 0, 0, 0, 0 }, // Bubble Shield /*Bubble Shield*/ { 0, 1, 2, 1, 0, 0, 0, 0 }, // Bubble Shield
/*Flame Shield*/ { 0, 0, 0, 0, 0, 1, 3, 5 }, // Flame Shield /*Flame Shield*/ { 0, 0, 0, 0, 0, 1, 3, 5 }, // Flame Shield
@ -375,7 +375,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
/*Kitchen Sink*/ { 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink /*Kitchen Sink*/ { 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink
/*Drop Target*/ { 3, 0, 0, 0, 0, 0, 0, 0 }, // Drop Target /*Drop Target*/ { 3, 0, 0, 0, 0, 0, 0, 0 }, // Drop Target
/*Sneaker x2*/ { 0, 0, 2, 2, 2, 0, 0, 0 }, // Sneaker x2 /*Sneaker x2*/ { 0, 0, 2, 2, 2, 0, 0, 0 }, // Sneaker x2
/*Sneaker x3*/ { 0, 0, 0, 1, 6,10, 4, 0 }, // Sneaker x3 /*Sneaker x3*/ { 0, 0, 0, 1, 6, 8, 4, 0 }, // Sneaker x3
/*Banana x3*/ { 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3 /*Banana x3*/ { 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3
/*Banana x10*/ { 0, 0, 0, 1, 0, 0, 0, 0 }, // Banana x10 /*Banana x10*/ { 0, 0, 0, 1, 0, 0, 0, 0 }, // Banana x10
/*Orbinaut x3*/ { 0, 0, 1, 0, 0, 0, 0, 0 }, // Orbinaut x3 /*Orbinaut x3*/ { 0, 0, 1, 0, 0, 0, 0, 0 }, // Orbinaut x3

View file

@ -25,14 +25,16 @@
#define POHBEE_HOVER (256 << FRACBITS) #define POHBEE_HOVER (256 << FRACBITS)
#define POHBEE_SPEED (128 << FRACBITS) #define POHBEE_SPEED (128 << FRACBITS)
#define POHBEE_TIME (15 * TICRATE) #define POHBEE_TIME (30 * TICRATE)
#define POHBEE_DIST (4096 << FRACBITS) #define POHBEE_DIST (4096 << FRACBITS)
#define GUN_SWING (ANGLE_90 - ANG10) #define GUN_SWING (ANGLE_90 - ANG10)
#define GUN_SWINGTIME (3 * TICRATE) #define GUN_SWINGTIME (4 * TICRATE)
#define CHAIN_SIZE (16) #define CHAIN_SIZE (16)
#define EXTRA_FOR_FIRST (7)
enum enum
{ {
POHBEE_MODE_SPAWN, POHBEE_MODE_SPAWN,
@ -321,7 +323,7 @@ static void ShrinkLaserThinker(mobj_t *pohbee, mobj_t *gun, mobj_t *laser)
P_SetScale(particle, particle->scale * 2); P_SetScale(particle, particle->scale * 2);
particle->destscale = 0; particle->destscale = 0;
particle->momz = 2 * particle->scale * P_MobjFlip(particle); //particle->momz = 2 * particle->scale * P_MobjFlip(particle);
} }
else else
{ {
@ -570,7 +572,7 @@ static void CreatePohbee(player_t *owner, waypoint_t *start, waypoint_t *end, UI
// Valid spawning conditions, // Valid spawning conditions,
// we can start creating each individual part. // we can start creating each individual part.
pohbee = P_SpawnMobjFromMobj(start->mobj, 0, 0, POHBEE_HOVER * 3, MT_SHRINK_POHBEE); pohbee = P_SpawnMobjFromMobj(start->mobj, 0, 0, FixedDiv(size, mapobjectscale) + POHBEE_HOVER * 3, MT_SHRINK_POHBEE);
P_SetTarget(&pohbee_owner(pohbee), owner->mo); P_SetTarget(&pohbee_owner(pohbee), owner->mo);
pohbee_mode(pohbee) = POHBEE_MODE_SPAWN; pohbee_mode(pohbee) = POHBEE_MODE_SPAWN;
@ -622,6 +624,7 @@ void Obj_CreateShrinkPohbees(player_t *owner)
waypoint_t *start; waypoint_t *start;
waypoint_t *end; waypoint_t *end;
UINT8 lasers; UINT8 lasers;
boolean first;
} pohbees[MAXPLAYERS]; } pohbees[MAXPLAYERS];
size_t numPohbees = 0; size_t numPohbees = 0;
@ -684,6 +687,12 @@ void Obj_CreateShrinkPohbees(player_t *owner)
pohbees[j].start = GetPohbeeStart(player->nextwaypoint); pohbees[j].start = GetPohbeeStart(player->nextwaypoint);
pohbees[j].end = endWaypoint; pohbees[j].end = endWaypoint;
pohbees[j].lasers = 1; pohbees[j].lasers = 1;
if (player->position == 1)
{
pohbees[j].first = true;
}
numPohbees++; numPohbees++;
} }
} }
@ -691,5 +700,18 @@ void Obj_CreateShrinkPohbees(player_t *owner)
for (i = 0; i < numPohbees; i++) for (i = 0; i < numPohbees; i++)
{ {
CreatePohbee(owner, pohbees[i].start, pohbees[i].end, pohbees[i].lasers); CreatePohbee(owner, pohbees[i].start, pohbees[i].end, pohbees[i].lasers);
if (pohbees[i].first == true)
{
// Add a chain of extra ones for 1st place.
waypoint_t *prev = pohbees[i].end;
for (j = 0; j < EXTRA_FOR_FIRST; j++)
{
waypoint_t *new = GetPohbeeEnd(pohbees[i].end);
CreatePohbee(owner, prev, new, 1);
prev = new;
}
}
} }
} }

View file

@ -740,46 +740,76 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
// SRB2kart 011617 - Colission[sic] code for kart items //{ // SRB2kart 011617 - Colission[sic] code for kart items //{
if (thing->type == MT_SHRINK_GUN) if (thing->type == MT_SHRINK_GUN || thing->type == MT_SHRINK_PARTICLE)
{ {
if (tmthing->type != MT_PLAYER) if (tmthing->type != MT_PLAYER)
{ {
return BMIT_CONTINUE; return BMIT_CONTINUE;
} }
// Use special collision for the laser gun. if (thing->type == MT_SHRINK_GUN)
// The laser sprite itself is just a visual,
// the gun itself does the colliding for us.
if (tmthing->z > thing->z)
{ {
return BMIT_CONTINUE; // overhead // Use special collision for the laser gun.
} // The laser sprite itself is just a visual,
// the gun itself does the colliding for us.
if (tmthing->z > thing->z)
{
return BMIT_CONTINUE; // overhead
}
if (tmthing->z + tmthing->height < thing->floorz) if (tmthing->z + tmthing->height < thing->floorz)
{
return BMIT_CONTINUE; // underneath
}
}
else
{ {
return BMIT_CONTINUE; // underneath if (tmthing->z > thing->z + thing->height)
{
return BMIT_CONTINUE; // overhead
}
if (tmthing->z + tmthing->height < thing->z)
{
return BMIT_CONTINUE; // underneath
}
} }
return Obj_ShrinkLaserCollide(thing, tmthing) ? BMIT_CONTINUE : BMIT_ABORT; return Obj_ShrinkLaserCollide(thing, tmthing) ? BMIT_CONTINUE : BMIT_ABORT;
} }
else if (tmthing->type == MT_SHRINK_GUN) else if (tmthing->type == MT_SHRINK_GUN || tmthing->type == MT_SHRINK_PARTICLE)
{ {
if (thing->type != MT_PLAYER) if (thing->type != MT_PLAYER)
{ {
return BMIT_CONTINUE; return BMIT_CONTINUE;
} }
// Use special collision for the laser gun. if (thing->type == MT_SHRINK_GUN)
// The laser sprite itself is just a visual,
// the gun itself does the colliding for us.
if (thing->z > tmthing->z)
{ {
return BMIT_CONTINUE; // overhead // Use special collision for the laser gun.
} // The laser sprite itself is just a visual,
// the gun itself does the colliding for us.
if (thing->z > tmthing->z)
{
return BMIT_CONTINUE; // overhead
}
if (thing->z + thing->height < tmthing->floorz) if (thing->z + thing->height < tmthing->floorz)
{
return BMIT_CONTINUE; // underneath
}
}
else
{ {
return BMIT_CONTINUE; // underneath if (tmthing->z > thing->z + thing->height)
{
return BMIT_CONTINUE; // overhead
}
if (tmthing->z + tmthing->height < thing->z)
{
return BMIT_CONTINUE; // underneath
}
} }
return Obj_ShrinkLaserCollide(tmthing, thing) ? BMIT_CONTINUE : BMIT_ABORT; return Obj_ShrinkLaserCollide(tmthing, thing) ? BMIT_CONTINUE : BMIT_ABORT;