mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add Lost Colony symbol object
This commit is contained in:
parent
abd6e183e9
commit
6dc7e96e95
7 changed files with 269 additions and 7 deletions
|
|
@ -3981,6 +3981,40 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_LAMPPOST",
|
||||
"S_MOSSYTREE",
|
||||
|
||||
// Lost Colony symbol signs
|
||||
"S_SYMBOL_0",
|
||||
"S_SYMBOL_1",
|
||||
"S_SYMBOL_2",
|
||||
"S_SYMBOL_3",
|
||||
"S_SYMBOL_4",
|
||||
"S_SYMBOL_5",
|
||||
"S_SYMBOL_6",
|
||||
"S_SYMBOL_7",
|
||||
"S_SYMBOL_8",
|
||||
"S_SYMBOL_9",
|
||||
"S_SYMBOL_A",
|
||||
"S_SYMBOL_B",
|
||||
"S_SYMBOL_C",
|
||||
"S_SYMBOL_D",
|
||||
"S_SYMBOL_E",
|
||||
"S_SYMBOL_F",
|
||||
"S_SYMBOL_G",
|
||||
"S_SYMBOL_H",
|
||||
"S_SYMBOL_I",
|
||||
"S_SYMBOL_J",
|
||||
"S_SYMBOL_K",
|
||||
"S_SYMBOL_L",
|
||||
"S_SYMBOL_M",
|
||||
"S_SYMBOL_N",
|
||||
"S_SYMBOL_O",
|
||||
"S_SYMBOL_P",
|
||||
"S_SYMBOL_Q",
|
||||
"S_SYMBOL_R",
|
||||
"S_SYMBOL_S",
|
||||
"S_SYMBOL_T",
|
||||
"S_SYMBOL_U",
|
||||
"S_SYMBOL_V",
|
||||
|
||||
"S_BUMP1",
|
||||
"S_BUMP2",
|
||||
"S_BUMP3",
|
||||
|
|
@ -5499,6 +5533,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_LAMPPOST",
|
||||
"MT_MOSSYTREE",
|
||||
|
||||
"MT_SYMBOL",
|
||||
|
||||
"MT_BUMP",
|
||||
|
||||
"MT_FLINGENERGY",
|
||||
|
|
|
|||
95
src/info.c
95
src/info.c
|
|
@ -632,6 +632,40 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"CRAB", // Crystal Abyss mobs
|
||||
"BRNG", // Chaotix Big Ring
|
||||
|
||||
// Lost Colony symbol signs
|
||||
"SYM0",
|
||||
"SYM1",
|
||||
"SYM2",
|
||||
"SYM3",
|
||||
"SYM4",
|
||||
"SYM5",
|
||||
"SYM6",
|
||||
"SYM7",
|
||||
"SYM8",
|
||||
"SYM9",
|
||||
"SYMA",
|
||||
"SYMB",
|
||||
"SYMC",
|
||||
"SYMD",
|
||||
"SYME",
|
||||
"SYMF",
|
||||
"SYMG",
|
||||
"SYMH",
|
||||
"SYMI",
|
||||
"SYMJ",
|
||||
"SYMK",
|
||||
"SYML",
|
||||
"SYMM",
|
||||
"SYMN",
|
||||
"SYMO",
|
||||
"SYMP",
|
||||
"SYMQ",
|
||||
"SYMR",
|
||||
"SYMS",
|
||||
"SYMT",
|
||||
"SYMU",
|
||||
"SYMV",
|
||||
|
||||
"BUMP", // Player/shell bump
|
||||
"FLEN", // Shell hit graphics stuff
|
||||
"CLAS", // items clash
|
||||
|
|
@ -4604,6 +4638,40 @@ state_t states[NUMSTATES] =
|
|||
{SPR_CRAB, 10, -1, {NULL}, 0, 0, S_NULL}, // S_LAMPPOST
|
||||
{SPR_CRAB, 11, -1, {NULL}, 0, 0, S_NULL}, // S_MOSSYTREE
|
||||
|
||||
// Lost Colony symbol signs
|
||||
{SPR_SYM0, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_0
|
||||
{SPR_SYM1, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_1
|
||||
{SPR_SYM2, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_2
|
||||
{SPR_SYM3, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_3
|
||||
{SPR_SYM4, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_4
|
||||
{SPR_SYM5, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_5
|
||||
{SPR_SYM6, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_6
|
||||
{SPR_SYM7, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_7
|
||||
{SPR_SYM8, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_8
|
||||
{SPR_SYM9, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_9
|
||||
{SPR_SYMA, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_A
|
||||
{SPR_SYMB, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_B
|
||||
{SPR_SYMC, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_C
|
||||
{SPR_SYMD, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_D
|
||||
{SPR_SYME, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_E
|
||||
{SPR_SYMF, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_F
|
||||
{SPR_SYMG, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_G
|
||||
{SPR_SYMH, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_H
|
||||
{SPR_SYMI, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_I
|
||||
{SPR_SYMJ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_J
|
||||
{SPR_SYMK, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_K
|
||||
{SPR_SYML, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_L
|
||||
{SPR_SYMM, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_M
|
||||
{SPR_SYMN, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_N
|
||||
{SPR_SYMO, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_O
|
||||
{SPR_SYMP, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_P
|
||||
{SPR_SYMQ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_Q
|
||||
{SPR_SYMR, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_R
|
||||
{SPR_SYMS, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_S
|
||||
{SPR_SYMT, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_T
|
||||
{SPR_SYMU, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_U
|
||||
{SPR_SYMV, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_V
|
||||
|
||||
{SPR_BUMP, FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_BUMP2}, // S_BUMP1
|
||||
{SPR_BUMP, FF_FULLBRIGHT|1, 3, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2
|
||||
{SPR_BUMP, FF_FULLBRIGHT|2, 3, {NULL}, 0, 0, S_NULL}, // S_BUMP3
|
||||
|
|
@ -26086,6 +26154,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_SYMBOL
|
||||
-1, // doomednum
|
||||
S_SYMBOL_0, // 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
|
||||
43*FRACUNIT, // radius
|
||||
100*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUMP
|
||||
-1, // doomednum
|
||||
S_BUMP1, // spawnstate
|
||||
|
|
|
|||
70
src/info.h
70
src/info.h
|
|
@ -1185,6 +1185,40 @@ typedef enum sprite
|
|||
SPR_CRAB, // Crystal Abyss mobs
|
||||
SPR_BRNG, // Chaotix Big Ring
|
||||
|
||||
// Lost Colony symbol signs
|
||||
SPR_SYM0,
|
||||
SPR_SYM1,
|
||||
SPR_SYM2,
|
||||
SPR_SYM3,
|
||||
SPR_SYM4,
|
||||
SPR_SYM5,
|
||||
SPR_SYM6,
|
||||
SPR_SYM7,
|
||||
SPR_SYM8,
|
||||
SPR_SYM9,
|
||||
SPR_SYMA,
|
||||
SPR_SYMB,
|
||||
SPR_SYMC,
|
||||
SPR_SYMD,
|
||||
SPR_SYME,
|
||||
SPR_SYMF,
|
||||
SPR_SYMG,
|
||||
SPR_SYMH,
|
||||
SPR_SYMI,
|
||||
SPR_SYMJ,
|
||||
SPR_SYMK,
|
||||
SPR_SYML,
|
||||
SPR_SYMM,
|
||||
SPR_SYMN,
|
||||
SPR_SYMO,
|
||||
SPR_SYMP,
|
||||
SPR_SYMQ,
|
||||
SPR_SYMR,
|
||||
SPR_SYMS,
|
||||
SPR_SYMT,
|
||||
SPR_SYMU,
|
||||
SPR_SYMV,
|
||||
|
||||
SPR_BUMP, // Player/shell bump
|
||||
SPR_FLEN, // Shell hit graphics stuff
|
||||
SPR_CLAS, // items clash
|
||||
|
|
@ -5058,6 +5092,40 @@ typedef enum state
|
|||
S_LAMPPOST,
|
||||
S_MOSSYTREE,
|
||||
|
||||
// Lost Colony symbol signs
|
||||
S_SYMBOL_0,
|
||||
S_SYMBOL_1,
|
||||
S_SYMBOL_2,
|
||||
S_SYMBOL_3,
|
||||
S_SYMBOL_4,
|
||||
S_SYMBOL_5,
|
||||
S_SYMBOL_6,
|
||||
S_SYMBOL_7,
|
||||
S_SYMBOL_8,
|
||||
S_SYMBOL_9,
|
||||
S_SYMBOL_A,
|
||||
S_SYMBOL_B,
|
||||
S_SYMBOL_C,
|
||||
S_SYMBOL_D,
|
||||
S_SYMBOL_E,
|
||||
S_SYMBOL_F,
|
||||
S_SYMBOL_G,
|
||||
S_SYMBOL_H,
|
||||
S_SYMBOL_I,
|
||||
S_SYMBOL_J,
|
||||
S_SYMBOL_K,
|
||||
S_SYMBOL_L,
|
||||
S_SYMBOL_M,
|
||||
S_SYMBOL_N,
|
||||
S_SYMBOL_O,
|
||||
S_SYMBOL_P,
|
||||
S_SYMBOL_Q,
|
||||
S_SYMBOL_R,
|
||||
S_SYMBOL_S,
|
||||
S_SYMBOL_T,
|
||||
S_SYMBOL_U,
|
||||
S_SYMBOL_V,
|
||||
|
||||
S_BUMP1,
|
||||
S_BUMP2,
|
||||
S_BUMP3,
|
||||
|
|
@ -6612,6 +6680,8 @@ typedef enum mobj_type
|
|||
MT_LAMPPOST,
|
||||
MT_MOSSYTREE,
|
||||
|
||||
MT_SYMBOL, // Lost Colony symbol signs
|
||||
|
||||
MT_BUMP,
|
||||
|
||||
MT_FLINGENERGY,
|
||||
|
|
|
|||
|
|
@ -140,6 +140,11 @@ void Obj_SpawnGachaBomRebound(mobj_t *source, mobj_t *target);
|
|||
/* Servant Hand */
|
||||
void Obj_ServantHandHandling(player_t *player);
|
||||
|
||||
/* Lost Colony symbol signs */
|
||||
void Obj_SymbolSpawn(mobj_t *mobj);
|
||||
void Obj_SymbolSetup(mobj_t *mobj, mapthing_t *mthing);
|
||||
void Obj_SymbolThink(mobj_t *mobj);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -21,4 +21,5 @@ target_sources(SRB2SDL2 PRIVATE
|
|||
block.c
|
||||
gachabom-rebound.cpp
|
||||
servant-hand.c
|
||||
symbol.c
|
||||
)
|
||||
|
|
|
|||
44
src/objects/symbol.c
Normal file
44
src/objects/symbol.c
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#include "../p_mobj.h"
|
||||
#include "../p_local.h"
|
||||
#include "../k_objects.h"
|
||||
|
||||
#define SYMBOL_SCALE (2<<FRACBITS)
|
||||
#define SYMBOL_ZOFFSET (19<<FRACBITS)
|
||||
#define SYMBOL_BOBRANGE (64<<FRACBITS)
|
||||
#define SYMBOL_BOBSPEED (5<<FRACBITS)
|
||||
#define SYMBOL_OPTIONS 32
|
||||
|
||||
void Obj_SymbolSpawn(mobj_t *mobj)
|
||||
{
|
||||
mobj->extravalue1 = mobj->z;
|
||||
mobj->extravalue2 = FixedMul(mobj->x + mobj->y, mapobjectscale);
|
||||
}
|
||||
|
||||
void Obj_SymbolSetup(mobj_t *mobj, mapthing_t *mthing)
|
||||
{
|
||||
fixed_t oldHeight = mobj->height;
|
||||
statenum_t stateNum = mobj->info->spawnstate + (mthing->args[0] % SYMBOL_OPTIONS);
|
||||
|
||||
mobj->angle += ANGLE_90;
|
||||
P_SetScale(mobj, mobj->destscale = 4 * FixedMul(mobj->scale, SYMBOL_SCALE));
|
||||
mobj->z += 4 * FixedMul(mapobjectscale, SYMBOL_ZOFFSET) * P_MobjFlip(mobj);
|
||||
|
||||
if (mthing->options & MTF_OBJECTFLIP)
|
||||
{
|
||||
mobj->z += oldHeight - mobj->height;
|
||||
}
|
||||
|
||||
mobj->extravalue1 = mobj->old_z = mobj->z;
|
||||
P_SetMobjState(mobj, stateNum);
|
||||
}
|
||||
|
||||
void Obj_SymbolThink(mobj_t *mobj)
|
||||
{
|
||||
fixed_t offset = FixedMul(mapobjectscale,
|
||||
FixedMul(SYMBOL_BOBRANGE,
|
||||
FixedMul(FINESINE(FixedAngle(leveltime * SYMBOL_BOBSPEED + mobj->extravalue2) >> ANGLETOFINESHIFT) + FRACUNIT, FRACUNIT >> 1)
|
||||
)
|
||||
);
|
||||
|
||||
mobj->z = mobj->extravalue1 + P_MobjFlip(mobj) * offset;
|
||||
}
|
||||
11
src/p_mobj.c
11
src/p_mobj.c
|
|
@ -6681,6 +6681,9 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
return;
|
||||
}
|
||||
break;
|
||||
case MT_SYMBOL:
|
||||
Obj_SymbolThink(mobj);
|
||||
break;
|
||||
case MT_VWREF:
|
||||
case MT_VWREB:
|
||||
{
|
||||
|
|
@ -10911,6 +10914,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
case MT_SPHEREBOX:
|
||||
Obj_RandomItemSpawn(mobj);
|
||||
break;
|
||||
case MT_SYMBOL:
|
||||
Obj_SymbolSpawn(mobj);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -13395,6 +13401,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
|||
Obj_InitLoopCenter(mobj);
|
||||
break;
|
||||
}
|
||||
case MT_SYMBOL:
|
||||
{
|
||||
Obj_SymbolSetup(mobj, mthing);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue