mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
WIP: refactor bailcharge into own MT and fix effects
still needs gameplay tuning
This commit is contained in:
parent
d297577d8b
commit
a57273a2aa
8 changed files with 73 additions and 15 deletions
|
|
@ -1575,7 +1575,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_BLOCKBODY",
|
||||
|
||||
"S_BAIL",
|
||||
"S_TECHCHARGE",
|
||||
"S_BAILCHARGE",
|
||||
|
||||
"S_AMPRING",
|
||||
"S_AMPBODY",
|
||||
|
|
@ -3568,6 +3568,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_BLOCKBODY",
|
||||
|
||||
"MT_BAIL",
|
||||
"MT_BAILCHARGE",
|
||||
|
||||
"MT_AMPRING",
|
||||
"MT_AMPBODY",
|
||||
|
|
|
|||
29
src/info.c
29
src/info.c
|
|
@ -2164,7 +2164,7 @@ state_t states[NUMSTATES] =
|
|||
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
||||
|
||||
{SPR_BAIL, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 8, 1, S_NULL}, // S_BAIL
|
||||
{SPR_TECH, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 41, 1, S_NULL}, // S_TECHCHARGE
|
||||
{SPR_TECH, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 41, 1, S_NULL}, // S_BAILCHARGE
|
||||
|
||||
{SPR_AMPB, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_AMPRING
|
||||
{SPR_AMPC, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_AMPBODY
|
||||
|
|
@ -13778,6 +13778,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BAILCHARGE
|
||||
-1, // doomednum
|
||||
S_BAILCHARGE, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
67*FRACUNIT, // radius
|
||||
67*FRACUNIT, // height
|
||||
1, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_AMPRING
|
||||
-1, // doomednum
|
||||
S_AMPRING, // spawnstate
|
||||
|
|
|
|||
|
|
@ -2633,7 +2633,7 @@ typedef enum state
|
|||
S_BLOCKBODY,
|
||||
|
||||
S_BAIL,
|
||||
S_TECHCHARGE,
|
||||
S_BAILCHARGE,
|
||||
|
||||
S_AMPRING,
|
||||
S_AMPBODY,
|
||||
|
|
@ -4653,6 +4653,7 @@ typedef enum mobj_type
|
|||
MT_BLOCKBODY,
|
||||
|
||||
MT_BAIL,
|
||||
MT_BAILCHARGE,
|
||||
|
||||
MT_AMPRING,
|
||||
MT_AMPBODY,
|
||||
|
|
|
|||
|
|
@ -13924,9 +13924,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
if ((player->cmd.buttons & BT_VOTE) && ((player->itemtype && player->itemamount) || (player->rings > 0) || player->superring > 0 || player->pickuprings > 0 || player->itemRoulette.active))
|
||||
{
|
||||
player->bailcharge++;
|
||||
if (player->bailcharge == 1)
|
||||
if (P_PlayerInPain(player) && player->bailcharge == 1)
|
||||
{
|
||||
// Hi Ashnal
|
||||
mobj_t *bail = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, MT_BAILCHARGE);
|
||||
P_SetTarget(&bail->target, player->mo);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -13934,13 +13935,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
player->bailcharge = 0;
|
||||
}
|
||||
|
||||
if ((!P_PlayerInPain(player) && player->bailcharge >= BAIL_MAXCHARGE) || player->bailcharge)
|
||||
if ((!P_PlayerInPain(player) && player->bailcharge) || player->bailcharge >= BAIL_MAXCHARGE)
|
||||
{
|
||||
CONS_Printf("rl %d it %d ia %d ri %d sr %d pr %d\n", player->itemRoulette.active, player->itemtype, player->itemamount, player->rings > 0, player->superring > 0, player->pickuprings > 0);
|
||||
|
||||
player->bailcharge = 0;
|
||||
|
||||
mobj_t * bail = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, MT_BAIL);
|
||||
mobj_t *bail = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, MT_BAIL);
|
||||
P_SetTarget(&bail->target, player->mo);
|
||||
|
||||
UINT32 debtrings = 20;
|
||||
|
|
|
|||
|
|
@ -44,8 +44,7 @@ Make sure this matches the actual number of states
|
|||
#define INSTAWHIP_TETHERBLOCK (TICRATE*4)
|
||||
#define PUNISHWINDOW (7*TICRATE/10)
|
||||
|
||||
#define BAIL_MAXCHARGE (9) // tics to bail when not in painstate
|
||||
#define BAIL_PAINMAXCHARGE (42) // tics to bail when in painstate
|
||||
#define BAIL_MAXCHARGE (42) // tics to bail when not in painstate
|
||||
#define BAIL_DROP (FRACUNIT/2)
|
||||
#define BAIL_BOOST (FRACUNIT)
|
||||
#define BAIL_DROPFREQUENCY (3)
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ void Obj_ChargeExtraThink(mobj_t *extra);
|
|||
|
||||
/* Bail VFX */
|
||||
void Obj_BailThink(mobj_t *aura);
|
||||
void Obj_BailChargeThink(mobj_t *aura);
|
||||
|
||||
/* Ring Shooter */
|
||||
boolean Obj_RingShooterThinker(mobj_t *mo);
|
||||
|
|
|
|||
|
|
@ -32,12 +32,6 @@ void Obj_BailThink (mobj_t *aura)
|
|||
mobj_t *mo = aura->target;
|
||||
player_t *player = mo->player;
|
||||
|
||||
if (P_PlayerInPain(player) && aura->state != &states[S_TECHCHARGE])
|
||||
{
|
||||
P_SetMobjState(aura, S_TECHCHARGE);
|
||||
player->bailcharge = 1;
|
||||
}
|
||||
|
||||
// Follow player
|
||||
aura->flags &= ~(MF_NOCLIPTHING);
|
||||
P_MoveOrigin(aura, mo->x, mo->y, mo->z + mo->height/2);
|
||||
|
|
@ -51,3 +45,32 @@ void Obj_BailThink (mobj_t *aura)
|
|||
P_SetScale(aura, baseScale);
|
||||
}
|
||||
}
|
||||
|
||||
void Obj_BailChargeThink (mobj_t *aura)
|
||||
{
|
||||
if (P_MobjWasRemoved(aura->target)
|
||||
|| aura->target->health == 0
|
||||
|| aura->target->destscale <= 1 // sealed star fall out
|
||||
|| !aura->target->player
|
||||
|| !aura->target->player->bailcharge)
|
||||
{
|
||||
P_RemoveMobj(aura);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj_t *mo = aura->target;
|
||||
player_t *player = mo->player;
|
||||
|
||||
// Follow player
|
||||
aura->flags &= ~(MF_NOCLIPTHING);
|
||||
P_MoveOrigin(aura, mo->x, mo->y, mo->z + mo->height/2);
|
||||
aura->flags |= MF_NOCLIPTHING;
|
||||
// aura->color = mo->color;
|
||||
|
||||
// aura->renderflags &= ~RF_DONTDRAW;
|
||||
|
||||
fixed_t baseScale = 12*mo->scale/10;
|
||||
|
||||
P_SetScale(aura, baseScale);
|
||||
}
|
||||
}
|
||||
|
|
@ -8928,6 +8928,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
Obj_BailThink(mobj);
|
||||
break;
|
||||
}
|
||||
case MT_BAILCHARGE:
|
||||
{
|
||||
Obj_BailChargeThink(mobj);
|
||||
break;
|
||||
}
|
||||
case MT_AMPRING:
|
||||
{
|
||||
Obj_AmpRingThink(mobj);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue