mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-28 04:51:42 +00:00
Merge branch 'sunbeam-palms' into 'master'
Sunbeam Palm See merge request KartKrew/Kart!1353
This commit is contained in:
commit
bdad8d59ac
4 changed files with 121 additions and 0 deletions
|
|
@ -4449,6 +4449,9 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
"S_LIZARDMAN",
|
"S_LIZARDMAN",
|
||||||
"S_LIONMAN",
|
"S_LIONMAN",
|
||||||
|
|
||||||
|
"S_SUNBEAMPALM_STEM",
|
||||||
|
"S_SUNBEAMPALM_LEAF",
|
||||||
|
|
||||||
"S_KARMAFIREWORK1",
|
"S_KARMAFIREWORK1",
|
||||||
"S_KARMAFIREWORK2",
|
"S_KARMAFIREWORK2",
|
||||||
"S_KARMAFIREWORK3",
|
"S_KARMAFIREWORK3",
|
||||||
|
|
@ -5735,6 +5738,9 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_LIZARDMAN",
|
"MT_LIZARDMAN",
|
||||||
"MT_LIONMAN",
|
"MT_LIONMAN",
|
||||||
|
|
||||||
|
"MT_SUNBEAMPALM_STEM",
|
||||||
|
"MT_SUNBEAMPALM_LEAF",
|
||||||
|
|
||||||
"MT_KARMAFIREWORK",
|
"MT_KARMAFIREWORK",
|
||||||
"MT_RINGSPARKS",
|
"MT_RINGSPARKS",
|
||||||
"MT_GAINAX",
|
"MT_GAINAX",
|
||||||
|
|
|
||||||
60
src/info.c
60
src/info.c
|
|
@ -818,6 +818,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"WBLZ",
|
"WBLZ",
|
||||||
"WBLN",
|
"WBLN",
|
||||||
|
|
||||||
|
"TUST",
|
||||||
|
"TULE",
|
||||||
|
|
||||||
"FWRK",
|
"FWRK",
|
||||||
"MXCL",
|
"MXCL",
|
||||||
"RGSP",
|
"RGSP",
|
||||||
|
|
@ -5155,6 +5158,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_WBLZ, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LIZARDMAN
|
{SPR_WBLZ, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LIZARDMAN
|
||||||
{SPR_WBLN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LIONMAN
|
{SPR_WBLN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LIONMAN
|
||||||
|
|
||||||
|
{SPR_TUST, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_SUNBEAMPALM_STEM
|
||||||
|
{SPR_TULE, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_SUNBEAMPALM_LEAF
|
||||||
|
|
||||||
{SPR_FWRK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK2}, // S_KARMAFIREWORK1
|
{SPR_FWRK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK2}, // S_KARMAFIREWORK1
|
||||||
{SPR_FWRK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK3}, // S_KARMAFIREWORK2
|
{SPR_FWRK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK3}, // S_KARMAFIREWORK2
|
||||||
{SPR_FWRK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK4}, // S_KARMAFIREWORK3
|
{SPR_FWRK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK4}, // S_KARMAFIREWORK3
|
||||||
|
|
@ -29293,6 +29299,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_SUNBEAMPALM_STEM
|
||||||
|
2697, // doomednum
|
||||||
|
S_SUNBEAMPALM_STEM, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // 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
|
||||||
|
90<<FRACBITS, // radius
|
||||||
|
420<<FRACBITS, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_SUNBEAMPALM_LEAF
|
||||||
|
-1, // doomednum
|
||||||
|
S_SUNBEAMPALM_LEAF, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // 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
|
||||||
|
96<<FRACBITS, // radius
|
||||||
|
128<<FRACBITS, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_KARMAFIREWORK
|
{ // MT_KARMAFIREWORK
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_KARMAFIREWORK1, // spawnstate
|
S_KARMAFIREWORK1, // spawnstate
|
||||||
|
|
|
||||||
|
|
@ -1369,6 +1369,9 @@ typedef enum sprite
|
||||||
SPR_WBLZ,
|
SPR_WBLZ,
|
||||||
SPR_WBLN,
|
SPR_WBLN,
|
||||||
|
|
||||||
|
SPR_TUST,
|
||||||
|
SPR_TULE,
|
||||||
|
|
||||||
SPR_FWRK,
|
SPR_FWRK,
|
||||||
SPR_MXCL,
|
SPR_MXCL,
|
||||||
SPR_RGSP,
|
SPR_RGSP,
|
||||||
|
|
@ -5595,6 +5598,9 @@ typedef enum state
|
||||||
S_LIZARDMAN,
|
S_LIZARDMAN,
|
||||||
S_LIONMAN,
|
S_LIONMAN,
|
||||||
|
|
||||||
|
S_SUNBEAMPALM_STEM,
|
||||||
|
S_SUNBEAMPALM_LEAF,
|
||||||
|
|
||||||
S_KARMAFIREWORK1,
|
S_KARMAFIREWORK1,
|
||||||
S_KARMAFIREWORK2,
|
S_KARMAFIREWORK2,
|
||||||
S_KARMAFIREWORK3,
|
S_KARMAFIREWORK3,
|
||||||
|
|
@ -6900,6 +6906,9 @@ typedef enum mobj_type
|
||||||
MT_LIZARDMAN,
|
MT_LIZARDMAN,
|
||||||
MT_LIONMAN,
|
MT_LIONMAN,
|
||||||
|
|
||||||
|
MT_SUNBEAMPALM_STEM,
|
||||||
|
MT_SUNBEAMPALM_LEAF,
|
||||||
|
|
||||||
MT_KARMAFIREWORK,
|
MT_KARMAFIREWORK,
|
||||||
MT_RINGSPARKS,
|
MT_RINGSPARKS,
|
||||||
MT_GAINAX,
|
MT_GAINAX,
|
||||||
|
|
|
||||||
46
src/p_mobj.c
46
src/p_mobj.c
|
|
@ -13350,6 +13350,52 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
||||||
P_RemoveMobj(mobj); // Don't need this helper obj anymore
|
P_RemoveMobj(mobj); // Don't need this helper obj anymore
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
case MT_SUNBEAMPALM_STEM:
|
||||||
|
{
|
||||||
|
UINT8 i;
|
||||||
|
const UINT8 numleaves = max(4, (abs(mthing->args[0])+1 % 6) + 4);
|
||||||
|
|
||||||
|
const fixed_t pivot = P_RandomRange(PR_DECORATION, -40, 20) * FRACUNIT;
|
||||||
|
|
||||||
|
mobj->rollangle = FixedAngle(pivot);
|
||||||
|
|
||||||
|
const fixed_t temptop = FixedDiv(mobj->height, mobj->scale);
|
||||||
|
const fixed_t tempside = mobj->info->radius * 2;
|
||||||
|
|
||||||
|
const fixed_t top = P_ReturnThrustX(mobj, mobj->rollangle, temptop) + P_ReturnThrustY(mobj, mobj->rollangle, tempside);
|
||||||
|
const fixed_t side = P_ReturnThrustX(mobj, mobj->rollangle, tempside) - P_ReturnThrustY(mobj, mobj->rollangle, temptop);
|
||||||
|
|
||||||
|
const fixed_t basex = P_ReturnThrustX(mobj, mobj->angle, side);
|
||||||
|
const fixed_t basey = P_ReturnThrustY(mobj, mobj->angle, side);
|
||||||
|
|
||||||
|
const angle_t divideangle = FixedAngle((360*FRACUNIT)/numleaves);
|
||||||
|
angle_t leafangle = P_RandomKey(PR_DECORATION, 360)*ANG1;
|
||||||
|
|
||||||
|
const fixed_t dist = mobjinfo[MT_SUNBEAMPALM_LEAF].radius;
|
||||||
|
|
||||||
|
// Spawn all of the papersprite leaves
|
||||||
|
for (i = 0; i < numleaves; i++, leafangle += divideangle)
|
||||||
|
{
|
||||||
|
mobj_t *leaf;
|
||||||
|
|
||||||
|
leaf = P_SpawnMobjFromMobj(
|
||||||
|
mobj,
|
||||||
|
basex + P_ReturnThrustX(mobj, leafangle, dist),
|
||||||
|
basey + P_ReturnThrustY(mobj, leafangle, dist),
|
||||||
|
top,
|
||||||
|
MT_SUNBEAMPALM_LEAF
|
||||||
|
);
|
||||||
|
|
||||||
|
if (P_MobjWasRemoved(leaf))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
leaf->angle = leafangle;
|
||||||
|
|
||||||
|
leaf->frame |= P_RandomKey(PR_DECORATION, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case MT_BATTLECAPSULE:
|
case MT_BATTLECAPSULE:
|
||||||
{
|
{
|
||||||
sector_t *sec = R_PointInSubsector(mobj->x, mobj->y)->sector;
|
sector_t *sec = R_PointInSubsector(mobj->x, mobj->y)->sector;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue