mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Hardcode Hanagumi Hall
This commit is contained in:
parent
c72a2cf94a
commit
58a6a85b04
4 changed files with 162 additions and 0 deletions
|
|
@ -4381,6 +4381,17 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_SPECIALSTAGEBOMB_FLICKERLOOP",
|
||||
"S_SPECIALSTAGEBOMB_RESET",
|
||||
|
||||
// Hanagumi Hall
|
||||
"S_HANAGUMIHALL_STEAM",
|
||||
"S_ALFONSO",
|
||||
"S_SAKURA",
|
||||
"S_SUMIRE",
|
||||
"S_MARIA",
|
||||
"S_IRIS",
|
||||
"S_KOHRAN",
|
||||
"S_KANNA",
|
||||
"S_OGAMI",
|
||||
|
||||
// SMK ports
|
||||
"S_SMK_PIPE1", // Generic pipes
|
||||
"S_SMK_PIPE2",
|
||||
|
|
@ -5762,6 +5773,10 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_SPECIALSTAGEARCH",
|
||||
"MT_SPECIALSTAGEBOMB",
|
||||
|
||||
// Hanagumi Hall
|
||||
"MT_HANAGUMIHALL_STEAM",
|
||||
"MT_HANAGUMIHALL_NPC",
|
||||
|
||||
// SMK ports
|
||||
"MT_SMK_PIPE",
|
||||
"MT_SMK_MOLESPAWNER",
|
||||
|
|
|
|||
76
src/info.c
76
src/info.c
|
|
@ -801,6 +801,17 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"SARC",
|
||||
"SSBM",
|
||||
|
||||
// Hanagumi Hall
|
||||
"HGSP",
|
||||
"HGC0",
|
||||
"HGCA",
|
||||
"HGCB",
|
||||
"HGCC",
|
||||
"HGCD",
|
||||
"HGCE",
|
||||
"HGCF",
|
||||
"HGCG",
|
||||
|
||||
// SMK ports
|
||||
"SMKP",
|
||||
"MTYM",
|
||||
|
|
@ -5125,6 +5136,17 @@ state_t states[NUMSTATES] =
|
|||
{SPR_NULL, 0, 0, {A_Repeat}, TICRATE, S_SPECIALSTAGEBOMB_FLICKER1, S_SPECIALSTAGEBOMB_RESET}, // S_SPECIALSTAGEBOMB_FLICKERLOOP
|
||||
{SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_SPECIALSTAGEBOMB}, // S_SPECIALSTAGEBOMB_RESET
|
||||
|
||||
// Hanagumi Hall
|
||||
{SPR_HGSP, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 10, 1, S_NULL}, // S_HANAGUMIHALL_STEAM
|
||||
{SPR_HGC0, 0, -1, {NULL}, 0, 0, S_NULL}, // S_ALFONSO
|
||||
{SPR_HGCA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SAKURA
|
||||
{SPR_HGCB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SUMIRE
|
||||
{SPR_HGCC, 0, -1, {NULL}, 0, 0, S_NULL}, // S_MARIA
|
||||
{SPR_HGCD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_IRIS
|
||||
{SPR_HGCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KOHRAN
|
||||
{SPR_HGCF, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KANNA
|
||||
{SPR_HGCG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_OGAMI
|
||||
|
||||
// SMK ports
|
||||
{SPR_SMKP, 0, -1, {NULL}, 0, 0, S_SMK_PIPE1}, // S_SMK_PIPE1
|
||||
{SPR_SMKP, 1, -1, {NULL}, 0, 0, S_SMK_PIPE2}, // S_SMK_PIPE2
|
||||
|
|
@ -28415,6 +28437,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_SPECIALSTAGEBOMB_EXPLODE // raisestate
|
||||
},
|
||||
|
||||
{ // MT_HANAGUMIHALL_STEAM
|
||||
2023, // doomednum
|
||||
S_HANAGUMIHALL_STEAM, // 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
|
||||
24*FRACUNIT, // radius
|
||||
48*FRACUNIT, // height
|
||||
0, // dispoffset
|
||||
0, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPTHING, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_HANAGUMIHALL_NPC
|
||||
2024, // doomednum
|
||||
S_ALFONSO, // spawnstate
|
||||
1, // 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
|
||||
64*FRACUNIT, // radius
|
||||
128*FRACUNIT, // height
|
||||
0, // dispoffset
|
||||
0, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_DONTENCOREMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_SMK_PIPE
|
||||
3970, // doomednum
|
||||
S_SMK_PIPE1, // spawnstate
|
||||
|
|
|
|||
26
src/info.h
26
src/info.h
|
|
@ -1357,6 +1357,17 @@ typedef enum sprite
|
|||
SPR_SARC,
|
||||
SPR_SSBM,
|
||||
|
||||
// Hanagumi Hall
|
||||
SPR_HGSP,
|
||||
SPR_HGC0,
|
||||
SPR_HGCA,
|
||||
SPR_HGCB,
|
||||
SPR_HGCC,
|
||||
SPR_HGCD,
|
||||
SPR_HGCE,
|
||||
SPR_HGCF,
|
||||
SPR_HGCG,
|
||||
|
||||
// SMK ports
|
||||
SPR_SMKP,
|
||||
SPR_MTYM,
|
||||
|
|
@ -5561,6 +5572,17 @@ typedef enum state
|
|||
S_SPECIALSTAGEBOMB_FLICKERLOOP,
|
||||
S_SPECIALSTAGEBOMB_RESET,
|
||||
|
||||
// Hanagumi Hall
|
||||
S_HANAGUMIHALL_STEAM,
|
||||
S_ALFONSO,
|
||||
S_SAKURA,
|
||||
S_SUMIRE,
|
||||
S_MARIA,
|
||||
S_IRIS,
|
||||
S_KOHRAN,
|
||||
S_KANNA,
|
||||
S_OGAMI,
|
||||
|
||||
// SMK ports
|
||||
S_SMK_PIPE1, // Generic pipes
|
||||
S_SMK_PIPE2,
|
||||
|
|
@ -6981,6 +7003,10 @@ typedef enum mobj_type
|
|||
MT_SPECIALSTAGEARCH,
|
||||
MT_SPECIALSTAGEBOMB,
|
||||
|
||||
// Hanagumi Hall
|
||||
MT_HANAGUMIHALL_STEAM,
|
||||
MT_HANAGUMIHALL_NPC,
|
||||
|
||||
// SMK ports
|
||||
MT_SMK_PIPE,
|
||||
MT_SMK_MOLESPAWNER,
|
||||
|
|
|
|||
45
src/p_mobj.c
45
src/p_mobj.c
|
|
@ -10596,6 +10596,9 @@ fixed_t P_GetMobjDefaultScale(mobj_t *mobj)
|
|||
return 5*FRACUNIT;
|
||||
case MT_SPECIALSTAGEBOMB:
|
||||
return 3*FRACUNIT/4;
|
||||
case MT_HANAGUMIHALL_STEAM:
|
||||
case MT_HANAGUMIHALL_NPC:
|
||||
return 2*FRACUNIT;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -13704,6 +13707,48 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
|||
|
||||
break;
|
||||
}
|
||||
case MT_HANAGUMIHALL_NPC:
|
||||
{
|
||||
UINT8 i;
|
||||
statenum_t state;
|
||||
|
||||
static const statenum_t HANAGUMIHALL_NPC_STATES[] = {
|
||||
S_SAKURA,
|
||||
S_SUMIRE,
|
||||
S_MARIA,
|
||||
S_IRIS,
|
||||
S_KOHRAN,
|
||||
S_KANNA,
|
||||
S_OGAMI
|
||||
};
|
||||
static const size_t NUM_HANAGUMIHALL_NPC_STATES = sizeof(HANAGUMIHALL_NPC_STATES) / sizeof(statenum_t);
|
||||
|
||||
// an invalid NPC ID leaves you with Alfonso
|
||||
if (mthing->thing_args[0] < 0 || mthing->thing_args[0] >= NUM_HANAGUMIHALL_NPC_STATES)
|
||||
break;
|
||||
|
||||
// pick the state based on the NPC ID
|
||||
state = HANAGUMIHALL_NPC_STATES[mthing->thing_args[0]];
|
||||
|
||||
// if the NPC is Sakura, but there is a Sakura player in game, use Alfonso instead
|
||||
if (state == S_SAKURA)
|
||||
{
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator == true)
|
||||
continue;
|
||||
|
||||
if (strcmp(skins[players[i].skin].name, "sakura") == 0)
|
||||
{
|
||||
state = mobj->info->spawnstate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
P_SetMobjState(mobj, state);
|
||||
break;
|
||||
}
|
||||
case MT_BATTLECAPSULE:
|
||||
{
|
||||
sector_t *sec = R_PointInSubsector(mobj->x, mobj->y)->sector;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue