mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Trick Charge VFX WIP
This commit is contained in:
parent
19edcbe9c2
commit
e20218a9d6
8 changed files with 98 additions and 0 deletions
|
|
@ -3325,6 +3325,8 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
"S_BLOCKRING",
|
"S_BLOCKRING",
|
||||||
"S_BLOCKBODY",
|
"S_BLOCKBODY",
|
||||||
|
|
||||||
|
"S_CHARGEAURA",
|
||||||
|
|
||||||
"S_SERVANTHAND",
|
"S_SERVANTHAND",
|
||||||
|
|
||||||
"S_HORNCODE",
|
"S_HORNCODE",
|
||||||
|
|
@ -5555,6 +5557,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_BLOCKRING",
|
"MT_BLOCKRING",
|
||||||
"MT_BLOCKBODY",
|
"MT_BLOCKBODY",
|
||||||
|
|
||||||
|
"MT_CHARGEAURA",
|
||||||
|
|
||||||
"MT_SERVANTHAND",
|
"MT_SERVANTHAND",
|
||||||
|
|
||||||
"MT_HORNCODE",
|
"MT_HORNCODE",
|
||||||
|
|
|
||||||
31
src/info.c
31
src/info.c
|
|
@ -567,6 +567,8 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"GRNG", // Guard ring
|
"GRNG", // Guard ring
|
||||||
"GBDY", // Guard body
|
"GBDY", // Guard body
|
||||||
|
|
||||||
|
"TRC1", // Charge aura
|
||||||
|
|
||||||
"DHND", // Servant Hand
|
"DHND", // Servant Hand
|
||||||
|
|
||||||
"HORN", // Horncode
|
"HORN", // Horncode
|
||||||
|
|
@ -4138,6 +4140,8 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_GRNG, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
|
{SPR_GRNG, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
|
||||||
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
||||||
|
|
||||||
|
{SPR_TRC1, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_CHARGEAURA
|
||||||
|
|
||||||
{SPR_DHND, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SERVANTHAND
|
{SPR_DHND, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SERVANTHAND
|
||||||
|
|
||||||
{SPR_HORN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_HORNCODE
|
{SPR_HORN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_HORNCODE
|
||||||
|
|
@ -23241,6 +23245,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_CHARGEAURA
|
||||||
|
-1, // doomednum
|
||||||
|
S_CHARGEAURA, // 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
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_SERVANTHAND
|
{ // MT_SERVANTHAND
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_SERVANTHAND, // spawnstate
|
S_SERVANTHAND, // spawnstate
|
||||||
|
|
|
||||||
|
|
@ -1124,6 +1124,8 @@ typedef enum sprite
|
||||||
SPR_GRNG, // Guard ring
|
SPR_GRNG, // Guard ring
|
||||||
SPR_GBDY, // Guard body
|
SPR_GBDY, // Guard body
|
||||||
|
|
||||||
|
SPR_TRC1, // Charge aura
|
||||||
|
|
||||||
SPR_DHND, // Servant Hand
|
SPR_DHND, // Servant Hand
|
||||||
|
|
||||||
SPR_HORN, // Horncode
|
SPR_HORN, // Horncode
|
||||||
|
|
@ -4549,6 +4551,8 @@ typedef enum state
|
||||||
S_BLOCKRING,
|
S_BLOCKRING,
|
||||||
S_BLOCKBODY,
|
S_BLOCKBODY,
|
||||||
|
|
||||||
|
S_CHARGEAURA,
|
||||||
|
|
||||||
S_SERVANTHAND,
|
S_SERVANTHAND,
|
||||||
|
|
||||||
S_HORNCODE,
|
S_HORNCODE,
|
||||||
|
|
@ -6817,6 +6821,8 @@ typedef enum mobj_type
|
||||||
MT_BLOCKRING,
|
MT_BLOCKRING,
|
||||||
MT_BLOCKBODY,
|
MT_BLOCKBODY,
|
||||||
|
|
||||||
|
MT_CHARGEAURA,
|
||||||
|
|
||||||
MT_SERVANTHAND,
|
MT_SERVANTHAND,
|
||||||
|
|
||||||
MT_HORNCODE,
|
MT_HORNCODE,
|
||||||
|
|
|
||||||
15
src/k_kart.c
15
src/k_kart.c
|
|
@ -8532,8 +8532,23 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
|
|
||||||
if (player->dotrickfx && !player->mo->hitlag)
|
if (player->dotrickfx && !player->mo->hitlag)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
S_StartSound(player->mo, sfx_trick1);
|
S_StartSound(player->mo, sfx_trick1);
|
||||||
|
|
||||||
|
if (!player->trickcharge)
|
||||||
|
{
|
||||||
|
for(i = 0;i < 5;i++)
|
||||||
|
{
|
||||||
|
mobj_t *aura = P_SpawnMobjFromMobj(player->mo, 0, 0, player->mo->height/2, MT_CHARGEAURA);
|
||||||
|
aura->angle = player->mo->angle + i*ANG15;
|
||||||
|
aura->target = player->mo;
|
||||||
|
if (i != 0)
|
||||||
|
aura->renderflags |= RF_TRANS50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
player->trickcharge = 8*TICRATE;
|
player->trickcharge = 8*TICRATE;
|
||||||
|
|
||||||
player->dotrickfx = false;
|
player->dotrickfx = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,8 @@ void Obj_BlockRingThink(mobj_t *ring);
|
||||||
void Obj_BlockBodyThink(mobj_t *body);
|
void Obj_BlockBodyThink(mobj_t *body);
|
||||||
void Obj_GuardBreakThink(mobj_t *fx);
|
void Obj_GuardBreakThink(mobj_t *fx);
|
||||||
|
|
||||||
|
void Obj_ChargeAuraThink(mobj_t *aura);
|
||||||
|
|
||||||
/* Ring Shooter */
|
/* Ring Shooter */
|
||||||
boolean Obj_RingShooterThinker(mobj_t *mo);
|
boolean Obj_RingShooterThinker(mobj_t *mo);
|
||||||
boolean Obj_PlayerRingShooterFreeze(player_t *const player);
|
boolean Obj_PlayerRingShooterFreeze(player_t *const player);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ target_sources(SRB2SDL2 PRIVATE
|
||||||
wpzothers.c
|
wpzothers.c
|
||||||
shadow.cpp
|
shadow.cpp
|
||||||
ball-switch.cpp
|
ball-switch.cpp
|
||||||
|
charge.c
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(versus)
|
add_subdirectory(versus)
|
||||||
|
|
|
||||||
34
src/objects/charge.c
Normal file
34
src/objects/charge.c
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include "../doomdef.h"
|
||||||
|
#include "../info.h"
|
||||||
|
#include "../k_objects.h"
|
||||||
|
#include "../p_local.h"
|
||||||
|
#include "../k_kart.h"
|
||||||
|
#include "../k_powerup.h"
|
||||||
|
|
||||||
|
void Obj_ChargeAuraThink (mobj_t *aura)
|
||||||
|
{
|
||||||
|
if (P_MobjWasRemoved(aura->target) || !aura->target->player || !aura->target->player->trickcharge)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
|
||||||
|
fixed_t baseScale = 12*mo->scale/10;
|
||||||
|
P_SetScale(aura, baseScale);
|
||||||
|
|
||||||
|
// Twirl
|
||||||
|
aura->angle = aura->angle - ANG1*(player->trickcharge/TICRATE + 4);
|
||||||
|
// Visuals
|
||||||
|
aura->renderflags |= RF_PAPERSPRITE|RF_ADD;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8781,6 +8781,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
Obj_BlockBodyThink(mobj);
|
Obj_BlockBodyThink(mobj);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MT_CHARGEAURA:
|
||||||
|
{
|
||||||
|
Obj_ChargeAuraThink(mobj);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case MT_GUARDBREAK:
|
case MT_GUARDBREAK:
|
||||||
{
|
{
|
||||||
Obj_GuardBreakThink(mobj);
|
Obj_GuardBreakThink(mobj);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue