mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 12:31:54 +00:00
Merge branch 'hanagumi-hall' into 'master'
Hardcode Hanagumi Hall See merge request KartKrew/Kart!1550
This commit is contained in:
commit
2ae5ca5524
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_FLICKERLOOP",
|
||||||
"S_SPECIALSTAGEBOMB_RESET",
|
"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
|
// SMK ports
|
||||||
"S_SMK_PIPE1", // Generic pipes
|
"S_SMK_PIPE1", // Generic pipes
|
||||||
"S_SMK_PIPE2",
|
"S_SMK_PIPE2",
|
||||||
|
|
@ -5762,6 +5773,10 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_SPECIALSTAGEARCH",
|
"MT_SPECIALSTAGEARCH",
|
||||||
"MT_SPECIALSTAGEBOMB",
|
"MT_SPECIALSTAGEBOMB",
|
||||||
|
|
||||||
|
// Hanagumi Hall
|
||||||
|
"MT_HANAGUMIHALL_STEAM",
|
||||||
|
"MT_HANAGUMIHALL_NPC",
|
||||||
|
|
||||||
// SMK ports
|
// SMK ports
|
||||||
"MT_SMK_PIPE",
|
"MT_SMK_PIPE",
|
||||||
"MT_SMK_MOLESPAWNER",
|
"MT_SMK_MOLESPAWNER",
|
||||||
|
|
|
||||||
76
src/info.c
76
src/info.c
|
|
@ -801,6 +801,17 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"SARC",
|
"SARC",
|
||||||
"SSBM",
|
"SSBM",
|
||||||
|
|
||||||
|
// Hanagumi Hall
|
||||||
|
"HGSP",
|
||||||
|
"HGC0",
|
||||||
|
"HGCA",
|
||||||
|
"HGCB",
|
||||||
|
"HGCC",
|
||||||
|
"HGCD",
|
||||||
|
"HGCE",
|
||||||
|
"HGCF",
|
||||||
|
"HGCG",
|
||||||
|
|
||||||
// SMK ports
|
// SMK ports
|
||||||
"SMKP",
|
"SMKP",
|
||||||
"MTYM",
|
"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_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
|
{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
|
// SMK ports
|
||||||
{SPR_SMKP, 0, -1, {NULL}, 0, 0, S_SMK_PIPE1}, // S_SMK_PIPE1
|
{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
|
{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
|
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
|
{ // MT_SMK_PIPE
|
||||||
3970, // doomednum
|
3970, // doomednum
|
||||||
S_SMK_PIPE1, // spawnstate
|
S_SMK_PIPE1, // spawnstate
|
||||||
|
|
|
||||||
26
src/info.h
26
src/info.h
|
|
@ -1357,6 +1357,17 @@ typedef enum sprite
|
||||||
SPR_SARC,
|
SPR_SARC,
|
||||||
SPR_SSBM,
|
SPR_SSBM,
|
||||||
|
|
||||||
|
// Hanagumi Hall
|
||||||
|
SPR_HGSP,
|
||||||
|
SPR_HGC0,
|
||||||
|
SPR_HGCA,
|
||||||
|
SPR_HGCB,
|
||||||
|
SPR_HGCC,
|
||||||
|
SPR_HGCD,
|
||||||
|
SPR_HGCE,
|
||||||
|
SPR_HGCF,
|
||||||
|
SPR_HGCG,
|
||||||
|
|
||||||
// SMK ports
|
// SMK ports
|
||||||
SPR_SMKP,
|
SPR_SMKP,
|
||||||
SPR_MTYM,
|
SPR_MTYM,
|
||||||
|
|
@ -5561,6 +5572,17 @@ typedef enum state
|
||||||
S_SPECIALSTAGEBOMB_FLICKERLOOP,
|
S_SPECIALSTAGEBOMB_FLICKERLOOP,
|
||||||
S_SPECIALSTAGEBOMB_RESET,
|
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
|
// SMK ports
|
||||||
S_SMK_PIPE1, // Generic pipes
|
S_SMK_PIPE1, // Generic pipes
|
||||||
S_SMK_PIPE2,
|
S_SMK_PIPE2,
|
||||||
|
|
@ -6981,6 +7003,10 @@ typedef enum mobj_type
|
||||||
MT_SPECIALSTAGEARCH,
|
MT_SPECIALSTAGEARCH,
|
||||||
MT_SPECIALSTAGEBOMB,
|
MT_SPECIALSTAGEBOMB,
|
||||||
|
|
||||||
|
// Hanagumi Hall
|
||||||
|
MT_HANAGUMIHALL_STEAM,
|
||||||
|
MT_HANAGUMIHALL_NPC,
|
||||||
|
|
||||||
// SMK ports
|
// SMK ports
|
||||||
MT_SMK_PIPE,
|
MT_SMK_PIPE,
|
||||||
MT_SMK_MOLESPAWNER,
|
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;
|
return 5*FRACUNIT;
|
||||||
case MT_SPECIALSTAGEBOMB:
|
case MT_SPECIALSTAGEBOMB:
|
||||||
return 3*FRACUNIT/4;
|
return 3*FRACUNIT/4;
|
||||||
|
case MT_HANAGUMIHALL_STEAM:
|
||||||
|
case MT_HANAGUMIHALL_NPC:
|
||||||
|
return 2*FRACUNIT;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -13704,6 +13707,48 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
||||||
|
|
||||||
break;
|
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:
|
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