mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add Garden Top related states
MT_GARDENTOP S_GARDENTOP KITEM_GARDENTOP KSHIELD_TOP
This commit is contained in:
parent
d66b82605b
commit
7b301452cc
8 changed files with 113 additions and 5 deletions
|
|
@ -383,6 +383,7 @@ consvar_t cv_pogospring = CVAR_INIT ("pogospring", "On", CV_NETVAR, CV_OnOf
|
||||||
consvar_t cv_superring = CVAR_INIT ("superring", "On", CV_NETVAR, CV_OnOff, NULL);
|
consvar_t cv_superring = CVAR_INIT ("superring", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
consvar_t cv_kitchensink = CVAR_INIT ("kitchensink", "On", CV_NETVAR, CV_OnOff, NULL);
|
consvar_t cv_kitchensink = CVAR_INIT ("kitchensink", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
consvar_t cv_droptarget = CVAR_INIT ("droptarget", "On", CV_NETVAR, CV_OnOff, NULL);
|
consvar_t cv_droptarget = CVAR_INIT ("droptarget", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
|
consvar_t cv_gardentop = CVAR_INIT ("gardentop", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
|
|
||||||
consvar_t cv_dualsneaker = CVAR_INIT ("dualsneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
consvar_t cv_dualsneaker = CVAR_INIT ("dualsneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
consvar_t cv_triplesneaker = CVAR_INIT ("triplesneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
consvar_t cv_triplesneaker = CVAR_INIT ("triplesneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,8 @@ extern consvar_t
|
||||||
cv_pogospring,
|
cv_pogospring,
|
||||||
cv_superring,
|
cv_superring,
|
||||||
cv_kitchensink,
|
cv_kitchensink,
|
||||||
cv_droptarget;
|
cv_droptarget,
|
||||||
|
cv_gardentop;
|
||||||
|
|
||||||
extern consvar_t
|
extern consvar_t
|
||||||
cv_dualsneaker,
|
cv_dualsneaker,
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,8 @@ Run this macro, then #undef FOREACH afterward
|
||||||
FOREACH (POGOSPRING, 18),\
|
FOREACH (POGOSPRING, 18),\
|
||||||
FOREACH (SUPERRING, 19),\
|
FOREACH (SUPERRING, 19),\
|
||||||
FOREACH (KITCHENSINK, 20),\
|
FOREACH (KITCHENSINK, 20),\
|
||||||
FOREACH (DROPTARGET, 21)
|
FOREACH (DROPTARGET, 21),\
|
||||||
|
FOREACH (GARDENTOP, 22)
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
@ -187,6 +188,7 @@ typedef enum
|
||||||
KSHIELD_LIGHTNING = 1,
|
KSHIELD_LIGHTNING = 1,
|
||||||
KSHIELD_BUBBLE = 2,
|
KSHIELD_BUBBLE = 2,
|
||||||
KSHIELD_FLAME = 3,
|
KSHIELD_FLAME = 3,
|
||||||
|
KSHIELD_TOP = 4,
|
||||||
NUMKARTSHIELDS
|
NUMKARTSHIELDS
|
||||||
} kartshields_t;
|
} kartshields_t;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3740,6 +3740,14 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
"S_FLAMESHIELDLINE3",
|
"S_FLAMESHIELDLINE3",
|
||||||
"S_FLAMESHIELDFLASH",
|
"S_FLAMESHIELDFLASH",
|
||||||
|
|
||||||
|
// Marble Garden Zone Spinning Top
|
||||||
|
"S_GARDENTOP_FLOATING",
|
||||||
|
"S_GARDENTOP_SINKING1",
|
||||||
|
"S_GARDENTOP_SINKING2",
|
||||||
|
"S_GARDENTOP_SINKING3",
|
||||||
|
"S_GARDENTOP_DEAD",
|
||||||
|
"S_GARDENTOPSPARK",
|
||||||
|
|
||||||
// Caked-Up Booty-Sheet Ghost
|
// Caked-Up Booty-Sheet Ghost
|
||||||
"S_HYUDORO",
|
"S_HYUDORO",
|
||||||
|
|
||||||
|
|
@ -5346,6 +5354,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_FLAMESHIELDUNDERLAY",
|
"MT_FLAMESHIELDUNDERLAY",
|
||||||
"MT_FLAMESHIELDPAPER",
|
"MT_FLAMESHIELDPAPER",
|
||||||
"MT_BUBBLESHIELDTRAP",
|
"MT_BUBBLESHIELDTRAP",
|
||||||
|
"MT_GARDENTOP",
|
||||||
|
"MT_GARDENTOPSPARK",
|
||||||
|
|
||||||
"MT_HYUDORO",
|
"MT_HYUDORO",
|
||||||
"MT_HYUDORO_CENTER",
|
"MT_HYUDORO_CENTER",
|
||||||
|
|
@ -6668,6 +6678,7 @@ struct int_const_s const INT_CONST[] = {
|
||||||
{"KSHIELD_LIGHTNING",KSHIELD_LIGHTNING},
|
{"KSHIELD_LIGHTNING",KSHIELD_LIGHTNING},
|
||||||
{"KSHIELD_BUBBLE",KSHIELD_BUBBLE},
|
{"KSHIELD_BUBBLE",KSHIELD_BUBBLE},
|
||||||
{"KSHIELD_FLAME",KSHIELD_FLAME},
|
{"KSHIELD_FLAME",KSHIELD_FLAME},
|
||||||
|
{"KSHIELD_TOP",KSHIELD_TOP},
|
||||||
{"NUMKARTSHIELDS",NUMKARTSHIELDS},
|
{"NUMKARTSHIELDS",NUMKARTSHIELDS},
|
||||||
|
|
||||||
// kartspinoutflags_t
|
// kartspinoutflags_t
|
||||||
|
|
|
||||||
61
src/info.c
61
src/info.c
|
|
@ -4320,6 +4320,13 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_FLML, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|14, 7, {NULL}, 6, 1, S_NULL}, // S_FLAMESHIELDLINE3
|
{SPR_FLML, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|14, 7, {NULL}, 6, 1, S_NULL}, // S_FLAMESHIELDLINE3
|
||||||
{SPR_FLMF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDFLASH
|
{SPR_FLMF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDFLASH
|
||||||
|
|
||||||
|
{SPR_GTOP, FF_ANIMATE, -1, {NULL}, 5, 1, S_NULL}, // S_GARDENTOP_FLOATING
|
||||||
|
{SPR_GTOP, 0, 1, {NULL}, 5, 1, S_GARDENTOP_SINKING2}, // S_GARDENTOP_SINKING1
|
||||||
|
{SPR_GTOP, 2, 1, {NULL}, 5, 1, S_GARDENTOP_SINKING3}, // S_GARDENTOP_SINKING2
|
||||||
|
{SPR_GTOP, 4, 1, {NULL}, 5, 1, S_GARDENTOP_SINKING1}, // S_GARDENTOP_SINKING3
|
||||||
|
{SPR_GTOP, FF_ANIMATE, 100, {A_Scream}, 5, 1, S_NULL}, // S_GARDENTOP_DEAD
|
||||||
|
{SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 5, 2, S_NULL}, // S_GARDENTOPSPARK
|
||||||
|
|
||||||
{SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO
|
{SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO
|
||||||
|
|
||||||
{SPR_GRWP, FF_FULLBRIGHT|FF_ANIMATE, 13, {NULL}, 7, 1, S_NULL}, // S_GROW_PARTICLE
|
{SPR_GRWP, FF_FULLBRIGHT|FF_ANIMATE, 13, {NULL}, 7, 1, S_NULL}, // S_GROW_PARTICLE
|
||||||
|
|
@ -24065,6 +24072,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_GARDENTOP
|
||||||
|
-1, // doomednum
|
||||||
|
S_GARDENTOP_FLOATING, // spawnstate
|
||||||
|
8, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
4, // reactiontime
|
||||||
|
sfx_s3k8b, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_GARDENTOP_DEAD, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_s3k7a, // deathsound
|
||||||
|
40*FRACUNIT, // speed
|
||||||
|
30*FRACUNIT, // radius
|
||||||
|
68*FRACUNIT, // height
|
||||||
|
-1, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOCLIPTHING|MF_DONTENCOREMAP, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_GARDENTOPSPARK
|
||||||
|
-1, // doomednum
|
||||||
|
S_GARDENTOPSPARK, // 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
|
||||||
|
8, // speed
|
||||||
|
8*FRACUNIT, // radius
|
||||||
|
8*FRACUNIT, // height
|
||||||
|
1, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP|MF_NOSQUISH, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_HYUDORO
|
{ // MT_HYUDORO
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_HYUDORO, // spawnstate
|
S_HYUDORO, // spawnstate
|
||||||
|
|
|
||||||
10
src/info.h
10
src/info.h
|
|
@ -4750,6 +4750,14 @@ typedef enum state
|
||||||
S_FLAMESHIELDLINE3,
|
S_FLAMESHIELDLINE3,
|
||||||
S_FLAMESHIELDFLASH,
|
S_FLAMESHIELDFLASH,
|
||||||
|
|
||||||
|
// Marble Garden Zone Spinning Top
|
||||||
|
S_GARDENTOP_FLOATING,
|
||||||
|
S_GARDENTOP_SINKING1,
|
||||||
|
S_GARDENTOP_SINKING2,
|
||||||
|
S_GARDENTOP_SINKING3,
|
||||||
|
S_GARDENTOP_DEAD,
|
||||||
|
S_GARDENTOPSPARK,
|
||||||
|
|
||||||
// Caked-Up Booty-Sheet Ghost
|
// Caked-Up Booty-Sheet Ghost
|
||||||
S_HYUDORO,
|
S_HYUDORO,
|
||||||
|
|
||||||
|
|
@ -6392,6 +6400,8 @@ typedef enum mobj_type
|
||||||
MT_FLAMESHIELDUNDERLAY,
|
MT_FLAMESHIELDUNDERLAY,
|
||||||
MT_FLAMESHIELDPAPER,
|
MT_FLAMESHIELDPAPER,
|
||||||
MT_BUBBLESHIELDTRAP,
|
MT_BUBBLESHIELDTRAP,
|
||||||
|
MT_GARDENTOP,
|
||||||
|
MT_GARDENTOPSPARK,
|
||||||
|
|
||||||
MT_HYUDORO,
|
MT_HYUDORO,
|
||||||
MT_HYUDORO_CENTER,
|
MT_HYUDORO_CENTER,
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ static patch_t *kp_pogospring[2];
|
||||||
static patch_t *kp_superring[2];
|
static patch_t *kp_superring[2];
|
||||||
static patch_t *kp_kitchensink[2];
|
static patch_t *kp_kitchensink[2];
|
||||||
static patch_t *kp_droptarget[2];
|
static patch_t *kp_droptarget[2];
|
||||||
|
static patch_t *kp_gardentop[2];
|
||||||
|
|
||||||
static patch_t *kp_check[6];
|
static patch_t *kp_check[6];
|
||||||
|
|
||||||
|
|
@ -423,6 +424,7 @@ void K_LoadKartHUDGraphics(void)
|
||||||
HU_UpdatePatch(&kp_superring[0], "K_ITRING");
|
HU_UpdatePatch(&kp_superring[0], "K_ITRING");
|
||||||
HU_UpdatePatch(&kp_kitchensink[0], "K_ITSINK");
|
HU_UpdatePatch(&kp_kitchensink[0], "K_ITSINK");
|
||||||
HU_UpdatePatch(&kp_droptarget[0], "K_ITDTRG");
|
HU_UpdatePatch(&kp_droptarget[0], "K_ITDTRG");
|
||||||
|
HU_UpdatePatch(&kp_gardentop[0], "K_ITGTOP");
|
||||||
|
|
||||||
sprintf(buffer, "FSMFGxxx");
|
sprintf(buffer, "FSMFGxxx");
|
||||||
for (i = 0; i < 104; i++)
|
for (i = 0; i < 104; i++)
|
||||||
|
|
@ -474,6 +476,7 @@ void K_LoadKartHUDGraphics(void)
|
||||||
HU_UpdatePatch(&kp_superring[1], "K_ISRING");
|
HU_UpdatePatch(&kp_superring[1], "K_ISRING");
|
||||||
HU_UpdatePatch(&kp_kitchensink[1], "K_ISSINK");
|
HU_UpdatePatch(&kp_kitchensink[1], "K_ISSINK");
|
||||||
HU_UpdatePatch(&kp_droptarget[1], "K_ISDTRG");
|
HU_UpdatePatch(&kp_droptarget[1], "K_ISDTRG");
|
||||||
|
HU_UpdatePatch(&kp_gardentop[1], "K_ISGTOP");
|
||||||
|
|
||||||
sprintf(buffer, "FSMFSxxx");
|
sprintf(buffer, "FSMFSxxx");
|
||||||
for (i = 0; i < 104; i++)
|
for (i = 0; i < 104; i++)
|
||||||
|
|
@ -686,6 +689,8 @@ const char *K_GetItemPatch(UINT8 item, boolean tiny)
|
||||||
return (tiny ? "K_ISSINK" : "K_ITSINK");
|
return (tiny ? "K_ISSINK" : "K_ITSINK");
|
||||||
case KITEM_DROPTARGET:
|
case KITEM_DROPTARGET:
|
||||||
return (tiny ? "K_ISDTRG" : "K_ITDTRG");
|
return (tiny ? "K_ISDTRG" : "K_ITDTRG");
|
||||||
|
case KITEM_GARDENTOP:
|
||||||
|
return (tiny ? "K_ISGTOP" : "K_ITGTOP");
|
||||||
case KRITEM_TRIPLEORBINAUT:
|
case KRITEM_TRIPLEORBINAUT:
|
||||||
return (tiny ? "K_ISORBN" : "K_ITORB3");
|
return (tiny ? "K_ISORBN" : "K_ITORB3");
|
||||||
case KRITEM_QUADORBINAUT:
|
case KRITEM_QUADORBINAUT:
|
||||||
|
|
@ -721,6 +726,7 @@ static patch_t *K_GetCachedItemPatch(INT32 item, UINT8 offset)
|
||||||
kp_superring,
|
kp_superring,
|
||||||
kp_kitchensink,
|
kp_kitchensink,
|
||||||
kp_droptarget,
|
kp_droptarget,
|
||||||
|
kp_gardentop,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (item == KITEM_SAD || (item > KITEM_NONE && item < NUMKARTITEMS))
|
if (item == KITEM_SAD || (item > KITEM_NONE && item < NUMKARTITEMS))
|
||||||
|
|
@ -4456,6 +4462,7 @@ static void K_drawDistributionDebugger(void)
|
||||||
kp_superring[1],
|
kp_superring[1],
|
||||||
kp_kitchensink[1],
|
kp_kitchensink[1],
|
||||||
kp_droptarget[1],
|
kp_droptarget[1],
|
||||||
|
kp_gardentop[1],
|
||||||
|
|
||||||
kp_sneaker[1],
|
kp_sneaker[1],
|
||||||
kp_sneaker[1],
|
kp_sneaker[1],
|
||||||
|
|
|
||||||
21
src/k_kart.c
21
src/k_kart.c
|
|
@ -230,6 +230,7 @@ void K_RegisterKartStuff(void)
|
||||||
CV_RegisterVar(&cv_superring);
|
CV_RegisterVar(&cv_superring);
|
||||||
CV_RegisterVar(&cv_kitchensink);
|
CV_RegisterVar(&cv_kitchensink);
|
||||||
CV_RegisterVar(&cv_droptarget);
|
CV_RegisterVar(&cv_droptarget);
|
||||||
|
CV_RegisterVar(&cv_gardentop);
|
||||||
|
|
||||||
CV_RegisterVar(&cv_dualsneaker);
|
CV_RegisterVar(&cv_dualsneaker);
|
||||||
CV_RegisterVar(&cv_triplesneaker);
|
CV_RegisterVar(&cv_triplesneaker);
|
||||||
|
|
@ -336,6 +337,7 @@ consvar_t *KartItemCVars[NUMKARTRESULTS-1] =
|
||||||
&cv_superring,
|
&cv_superring,
|
||||||
&cv_kitchensink,
|
&cv_kitchensink,
|
||||||
&cv_droptarget,
|
&cv_droptarget,
|
||||||
|
&cv_gardentop,
|
||||||
&cv_dualsneaker,
|
&cv_dualsneaker,
|
||||||
&cv_triplesneaker,
|
&cv_triplesneaker,
|
||||||
&cv_triplebanana,
|
&cv_triplebanana,
|
||||||
|
|
@ -372,6 +374,7 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
|
||||||
{ 2, 1, 1, 0, 0, 0, 0, 0 }, // Super Ring
|
{ 2, 1, 1, 0, 0, 0, 0, 0 }, // Super Ring
|
||||||
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink
|
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink
|
||||||
{ 3, 0, 0, 0, 0, 0, 0, 0 }, // Drop Target
|
{ 3, 0, 0, 0, 0, 0, 0, 0 }, // Drop Target
|
||||||
|
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // Garden Top
|
||||||
{ 0, 0, 2, 2, 2, 0, 0, 0 }, // Sneaker x2
|
{ 0, 0, 2, 2, 2, 0, 0, 0 }, // Sneaker x2
|
||||||
{ 0, 0, 0, 1, 6, 9, 5, 0 }, // Sneaker x3
|
{ 0, 0, 0, 1, 6, 9, 5, 0 }, // Sneaker x3
|
||||||
{ 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3
|
{ 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3
|
||||||
|
|
@ -405,6 +408,7 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] =
|
||||||
{ 0, 0 }, // Super Ring
|
{ 0, 0 }, // Super Ring
|
||||||
{ 0, 0 }, // Kitchen Sink
|
{ 0, 0 }, // Kitchen Sink
|
||||||
{ 2, 0 }, // Drop Target
|
{ 2, 0 }, // Drop Target
|
||||||
|
{ 0, 0 }, // Garden Top
|
||||||
{ 0, 0 }, // Sneaker x2
|
{ 0, 0 }, // Sneaker x2
|
||||||
{ 0, 1 }, // Sneaker x3
|
{ 0, 1 }, // Sneaker x3
|
||||||
{ 0, 0 }, // Banana x3
|
{ 0, 0 }, // Banana x3
|
||||||
|
|
@ -442,6 +446,7 @@ INT32 K_GetShieldFromItem(INT32 item)
|
||||||
case KITEM_LIGHTNINGSHIELD: return KSHIELD_LIGHTNING;
|
case KITEM_LIGHTNINGSHIELD: return KSHIELD_LIGHTNING;
|
||||||
case KITEM_BUBBLESHIELD: return KSHIELD_BUBBLE;
|
case KITEM_BUBBLESHIELD: return KSHIELD_BUBBLE;
|
||||||
case KITEM_FLAMESHIELD: return KSHIELD_FLAME;
|
case KITEM_FLAMESHIELD: return KSHIELD_FLAME;
|
||||||
|
case KITEM_GARDENTOP: return KSHIELD_TOP;
|
||||||
default: return KSHIELD_NONE;
|
default: return KSHIELD_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -715,10 +720,20 @@ INT32 K_KartGetItemOdds(
|
||||||
if (players[i].exiting)
|
if (players[i].exiting)
|
||||||
pexiting++;
|
pexiting++;
|
||||||
|
|
||||||
if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].itemtype))
|
switch (shieldtype)
|
||||||
{
|
{
|
||||||
// Don't allow more than one of each shield type at a time
|
case KSHIELD_NONE:
|
||||||
return 0;
|
/* Marble Garden Top is not REALLY
|
||||||
|
a Sonic 3 shield */
|
||||||
|
case KSHIELD_TOP:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (shieldtype == K_GetShieldFromItem(players[i].itemtype))
|
||||||
|
{
|
||||||
|
// Don't allow more than one of each shield type at a time
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (players[i].position == 1)
|
if (players[i].position == 1)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue