mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-20 01:43:15 +00:00
Karma SPB instead of confusing Mine gfx
This commit is contained in:
parent
e02a86ceae
commit
04212cc506
4 changed files with 129 additions and 66 deletions
|
@ -6727,7 +6727,26 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_PLAYERARROW_WANTED6",
|
||||
"S_PLAYERARROW_WANTED7",
|
||||
|
||||
"S_PLAYERBOMB", // Player bomb overlay
|
||||
"S_PLAYERBOMB1", // Player bomb overlay
|
||||
"S_PLAYERBOMB2",
|
||||
"S_PLAYERBOMB3",
|
||||
"S_PLAYERBOMB4",
|
||||
"S_PLAYERBOMB5",
|
||||
"S_PLAYERBOMB6",
|
||||
"S_PLAYERBOMB7",
|
||||
"S_PLAYERBOMB8",
|
||||
"S_PLAYERBOMB9",
|
||||
"S_PLAYERBOMB10",
|
||||
"S_PLAYERBOMB11",
|
||||
"S_PLAYERBOMB12",
|
||||
"S_PLAYERBOMB13",
|
||||
"S_PLAYERBOMB14",
|
||||
"S_PLAYERBOMB15",
|
||||
"S_PLAYERBOMB16",
|
||||
"S_PLAYERBOMB17",
|
||||
"S_PLAYERBOMB18",
|
||||
"S_PLAYERBOMB19",
|
||||
"S_PLAYERBOMB20",
|
||||
"S_PLAYERITEM", // Player item overlay
|
||||
"S_PLAYERFAKE", // Player fake overlay
|
||||
|
||||
|
|
25
src/info.c
25
src/info.c
|
@ -3020,11 +3020,30 @@ state_t states[NUMSTATES] =
|
|||
{SPR_WANT, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_PLAYERARROW_WANTED7}, // S_PLAYERARROW_WANTED6
|
||||
{SPR_WANT, FF_FULLBRIGHT|6, 3, {NULL}, 0, 0, S_PLAYERARROW_WANTED1}, // S_PLAYERARROW_WANTED7
|
||||
|
||||
{SPR_PBOM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_PLAYERBOMB
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB2}, // S_PLAYERBOMB1
|
||||
{SPR_SPBM, 1, 1, {NULL}, 0, 0, S_PLAYERBOMB3}, // S_PLAYERBOMB2
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB4}, // S_PLAYERBOMB3
|
||||
{SPR_SPBM, 2, 1, {NULL}, 0, 0, S_PLAYERBOMB5}, // S_PLAYERBOMB4
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB6}, // S_PLAYERBOMB5
|
||||
{SPR_SPBM, 3, 1, {NULL}, 0, 0, S_PLAYERBOMB7}, // S_PLAYERBOMB6
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB8}, // S_PLAYERBOMB7
|
||||
{SPR_SPBM, 4, 1, {NULL}, 0, 0, S_PLAYERBOMB9}, // S_PLAYERBOMB8
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB10}, // S_PLAYERBOMB9
|
||||
{SPR_SPBM, 5, 1, {NULL}, 0, 0, S_PLAYERBOMB11}, // S_PLAYERBOMB10
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB12}, // S_PLAYERBOMB11
|
||||
{SPR_SPBM, 6, 1, {NULL}, 0, 0, S_PLAYERBOMB13}, // S_PLAYERBOMB12
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB14}, // S_PLAYERBOMB13
|
||||
{SPR_SPBM, 7, 1, {NULL}, 0, 0, S_PLAYERBOMB15}, // S_PLAYERBOMB14
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB16}, // S_PLAYERBOMB15
|
||||
{SPR_SPBM, 8, 1, {NULL}, 0, 0, S_PLAYERBOMB17}, // S_PLAYERBOMB16
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB18}, // S_PLAYERBOMB17
|
||||
{SPR_SPBM, 8, 1, {NULL}, 0, 0, S_PLAYERBOMB19}, // S_PLAYERBOMB18
|
||||
{SPR_SPBM, 0, 1, {NULL}, 0, 0, S_PLAYERBOMB20}, // S_PLAYERBOMB19
|
||||
{SPR_SPBM, 8, 1, {NULL}, 0, 0, S_PLAYERBOMB1}, // S_PLAYERBOMB20
|
||||
{SPR_RNDM, FF_ANIMATE, -1, {NULL}, 23, 3, S_NULL}, // S_PLAYERITEM
|
||||
{SPR_FITM, FF_ANIMATE, -1, {NULL}, 23, 3, S_NULL}, // S_PLAYERFAKE
|
||||
|
||||
{SPR_PBOM, 4, -1, {NULL}, 0, 0, S_NULL}, // S_KARMAWHEEL
|
||||
{SPR_PBOM, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KARMAWHEEL
|
||||
|
||||
// Oh no it's annoying lightning states.......
|
||||
// Lightning Sparks (it's the ones we'll use for the radius)
|
||||
|
@ -17143,7 +17162,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
|
||||
{ // MT_KARMAHITBOX
|
||||
-1, // doomednum
|
||||
S_PLAYERBOMB, // spawnstate
|
||||
S_PLAYERBOMB1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_PLAYERITEM, // seestate
|
||||
sfx_kc2e, // seesound
|
||||
|
|
21
src/info.h
21
src/info.h
|
@ -3569,7 +3569,26 @@ typedef enum state
|
|||
S_PLAYERARROW_WANTED6,
|
||||
S_PLAYERARROW_WANTED7,
|
||||
|
||||
S_PLAYERBOMB,
|
||||
S_PLAYERBOMB1, // Karma player overlays
|
||||
S_PLAYERBOMB2,
|
||||
S_PLAYERBOMB3,
|
||||
S_PLAYERBOMB4,
|
||||
S_PLAYERBOMB5,
|
||||
S_PLAYERBOMB6,
|
||||
S_PLAYERBOMB7,
|
||||
S_PLAYERBOMB8,
|
||||
S_PLAYERBOMB9,
|
||||
S_PLAYERBOMB10,
|
||||
S_PLAYERBOMB11,
|
||||
S_PLAYERBOMB12,
|
||||
S_PLAYERBOMB13,
|
||||
S_PLAYERBOMB14,
|
||||
S_PLAYERBOMB15,
|
||||
S_PLAYERBOMB16,
|
||||
S_PLAYERBOMB17,
|
||||
S_PLAYERBOMB18,
|
||||
S_PLAYERBOMB19,
|
||||
S_PLAYERBOMB20,
|
||||
S_PLAYERITEM,
|
||||
S_PLAYERFAKE,
|
||||
|
||||
|
|
128
src/p_mobj.c
128
src/p_mobj.c
|
@ -8385,74 +8385,80 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
break;
|
||||
case MT_KARMAHITBOX:
|
||||
if (!mobj->target || !mobj->target->health || !mobj->target->player || mobj->target->player->spectator
|
||||
|| (G_RaceGametype() || mobj->target->player->kartstuff[k_bumper]))
|
||||
{
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
statenum_t state = (mobj->state-states);
|
||||
|
||||
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z);
|
||||
mobj->scalespeed = mobj->target->scalespeed;
|
||||
mobj->destscale = mobj->target->destscale;
|
||||
P_SetScale(mobj, mobj->target->scale);
|
||||
mobj->color = mobj->target->color;
|
||||
mobj->colorized = (mobj->target->player->kartstuff[k_comebackmode]);
|
||||
|
||||
if (mobj->target->player->kartstuff[k_comebacktimer] > 0)
|
||||
{
|
||||
if (mobj->state != &states[mobj->info->spawnstate])
|
||||
P_SetMobjState(mobj, mobj->info->spawnstate);
|
||||
|
||||
if (mobj->target->player->kartstuff[k_comebacktimer] < TICRATE && (leveltime & 1))
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!mobj->target->player->kartstuff[k_comebackmode]
|
||||
&& mobj->state != &states[mobj->info->spawnstate])
|
||||
P_SetMobjState(mobj, mobj->info->spawnstate);
|
||||
else if (mobj->target->player->kartstuff[k_comebackmode] == 1
|
||||
&& mobj->state != &states[mobj->info->seestate])
|
||||
P_SetMobjState(mobj, mobj->info->seestate);
|
||||
else if (mobj->target->player->kartstuff[k_comebackmode] == 2
|
||||
&& mobj->state != &states[mobj->info->painstate])
|
||||
P_SetMobjState(mobj, mobj->info->painstate);
|
||||
|
||||
if (mobj->target->player->powers[pw_flashing] && (leveltime & 1))
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
// Now for the wheels
|
||||
{
|
||||
const fixed_t rad = FixedMul(mobjinfo[MT_PLAYER].radius, mobj->target->scale);
|
||||
mobj_t *cur = mobj->hnext;
|
||||
|
||||
while (cur && !P_MobjWasRemoved(cur))
|
||||
if (!mobj->target || !mobj->target->health || !mobj->target->player || mobj->target->player->spectator
|
||||
|| (G_RaceGametype() || mobj->target->player->kartstuff[k_bumper]))
|
||||
{
|
||||
fixed_t offx = rad;
|
||||
fixed_t offy = rad;
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cur->lastlook == 1 || cur->lastlook == 3)
|
||||
offx *= -1;
|
||||
if (cur->lastlook == 2 || cur->lastlook == 3)
|
||||
offy *= -1;
|
||||
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z);
|
||||
mobj->angle = mobj->target->angle;
|
||||
mobj->scalespeed = mobj->target->scalespeed;
|
||||
mobj->destscale = mobj->target->destscale;
|
||||
P_SetScale(mobj, mobj->target->scale);
|
||||
mobj->color = mobj->target->color;
|
||||
mobj->colorized = true;
|
||||
|
||||
P_TeleportMove(cur, mobj->x + offx, mobj->y + offy, mobj->z);
|
||||
cur->scalespeed = mobj->target->scalespeed;
|
||||
cur->destscale = mobj->target->destscale;
|
||||
P_SetScale(cur, mobj->target->scale);
|
||||
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
cur->flags2 |= MF2_DONTDRAW;
|
||||
if (mobj->target->player->kartstuff[k_comebacktimer] > 0)
|
||||
{
|
||||
if (state < mobj->info->spawnstate || state > mobj->info->spawnstate+19)
|
||||
P_SetMobjState(mobj, mobj->info->spawnstate);
|
||||
if (mobj->target->player->kartstuff[k_comebacktimer] < TICRATE && (leveltime & 1))
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
else
|
||||
cur->flags2 &= ~MF2_DONTDRAW;
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!mobj->target->player->kartstuff[k_comebackmode]
|
||||
&& (state < mobj->info->spawnstate || state > mobj->info->spawnstate+19))
|
||||
P_SetMobjState(mobj, mobj->info->spawnstate);
|
||||
else if (mobj->target->player->kartstuff[k_comebackmode] == 1
|
||||
&& state != mobj->info->seestate)
|
||||
P_SetMobjState(mobj, mobj->info->seestate);
|
||||
else if (mobj->target->player->kartstuff[k_comebackmode] == 2
|
||||
&& state != mobj->info->painstate)
|
||||
P_SetMobjState(mobj, mobj->info->painstate);
|
||||
|
||||
cur = cur->hnext;
|
||||
if (mobj->target->player->powers[pw_flashing] && (leveltime & 1))
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
// Now for the wheels
|
||||
{
|
||||
const fixed_t rad = FixedMul(mobjinfo[MT_PLAYER].radius, mobj->target->scale);
|
||||
mobj_t *cur = mobj->hnext;
|
||||
|
||||
while (cur && !P_MobjWasRemoved(cur))
|
||||
{
|
||||
fixed_t offx = rad;
|
||||
fixed_t offy = rad;
|
||||
|
||||
if (cur->lastlook == 1 || cur->lastlook == 3)
|
||||
offx *= -1;
|
||||
if (cur->lastlook == 2 || cur->lastlook == 3)
|
||||
offy *= -1;
|
||||
|
||||
P_TeleportMove(cur, mobj->x + offx, mobj->y + offy, mobj->z);
|
||||
cur->scalespeed = mobj->target->scalespeed;
|
||||
cur->destscale = mobj->target->destscale;
|
||||
P_SetScale(cur, mobj->target->scale);
|
||||
cur->color = mobj->target->color;
|
||||
cur->colorized = true;
|
||||
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
cur->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
cur->flags2 &= ~MF2_DONTDRAW;
|
||||
|
||||
cur = cur->hnext;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue