More finalized Chaos Emerald visuals

This commit is contained in:
Sally Coolatta 2020-11-15 15:11:13 -05:00
parent 0882fe2b01
commit 0dc0ff8e6f
6 changed files with 145 additions and 116 deletions

View file

@ -6269,13 +6269,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_EMBLEM26", "S_EMBLEM26",
// Chaos Emeralds // Chaos Emeralds
"S_EMERALD_CHAOS1", "S_CHAOSEMERALD1",
"S_EMERALD_CHAOS2", "S_CHAOSEMERALD2",
"S_EMERALD_CHAOS3", "S_CHAOSEMERALD_UNDER",
"S_EMERALD_CHAOS4",
"S_EMERALD_CHAOS5",
"S_EMERALD_CHAOS6",
"S_EMERALD_CHAOS7",
// Emerald hunt shards // Emerald hunt shards
"S_SHRD1", "S_SHRD1",
@ -10775,67 +10771,67 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart.
// Special super colors // Special super colors
// Super Sonic Yellow // Super Sonic Yellow
"SUPER1", // SKINCOLOR_SUPER1 "SUPERSILVER1",
"SUPER2", // SKINCOLOR_SUPER2, "SUPERSILVER2",
"SUPER3", // SKINCOLOR_SUPER3, "SUPERSILVER3",
"SUPER4", // SKINCOLOR_SUPER4, "SUPERSILVER4",
"SUPER5", // SKINCOLOR_SUPER5, "SUPERSILVER5",
// Super Tails Orange "SUPERRED1",
"TSUPER1", // SKINCOLOR_TSUPER1, "SUPERRED2",
"TSUPER2", // SKINCOLOR_TSUPER2, "SUPERRED3",
"TSUPER3", // SKINCOLOR_TSUPER3, "SUPERRED4",
"TSUPER4", // SKINCOLOR_TSUPER4, "SUPERRED5",
"TSUPER5", // SKINCOLOR_TSUPER5,
// Super Knuckles Red "SUPERORANGE1",
"KSUPER1", // SKINCOLOR_KSUPER1, "SUPERORANGE2",
"KSUPER2", // SKINCOLOR_KSUPER2, "SUPERORANGE3",
"KSUPER3", // SKINCOLOR_KSUPER3, "SUPERORANGE4",
"KSUPER4", // SKINCOLOR_KSUPER4, "SUPERORANGE5",
"KSUPER5", // SKINCOLOR_KSUPER5,
// Hyper Sonic Pink "SUPERGOLD1",
"PSUPER1", // SKINCOLOR_PSUPER1, "SUPERGOLD2",
"PSUPER2", // SKINCOLOR_PSUPER2, "SUPERGOLD3",
"PSUPER3", // SKINCOLOR_PSUPER3, "SUPERGOLD4",
"PSUPER4", // SKINCOLOR_PSUPER4, "SUPERGOLD5",
"PSUPER5", // SKINCOLOR_PSUPER5,
// Hyper Sonic Blue "SUPERPERIDOT1",
"BSUPER1", // SKINCOLOR_BSUPER1, "SUPERPERIDOT2",
"BSUPER2", // SKINCOLOR_BSUPER2, "SUPERPERIDOT3",
"BSUPER3", // SKINCOLOR_BSUPER3, "SUPERPERIDOT4",
"BSUPER4", // SKINCOLOR_BSUPER4, "SUPERPERIDOT5",
"BSUPER5", // SKINCOLOR_BSUPER5,
// Aqua Super "SUPERSKY1",
"ASUPER1", // SKINCOLOR_ASUPER1, "SUPERSKY2",
"ASUPER2", // SKINCOLOR_ASUPER2, "SUPERSKY3",
"ASUPER3", // SKINCOLOR_ASUPER3, "SUPERSKY4",
"ASUPER4", // SKINCOLOR_ASUPER4, "SUPERSKY5",
"ASUPER5", // SKINCOLOR_ASUPER5,
// Hyper Sonic Green "SUPERPURPLE1",
"GSUPER1", // SKINCOLOR_GSUPER1, "SUPERPURPLE2",
"GSUPER2", // SKINCOLOR_GSUPER2, "SUPERPURPLE3",
"GSUPER3", // SKINCOLOR_GSUPER3, "SUPERPURPLE4",
"GSUPER4", // SKINCOLOR_GSUPER4, "SUPERPURPLE5",
"GSUPER5", // SKINCOLOR_GSUPER5,
// Hyper Sonic White "SUPERRUST1",
"WSUPER1", // SKINCOLOR_WSUPER1, "SUPERRUST2",
"WSUPER2", // SKINCOLOR_WSUPER2, "SUPERRUST3",
"WSUPER3", // SKINCOLOR_WSUPER3, "SUPERRUST4",
"WSUPER4", // SKINCOLOR_WSUPER4, "SUPERRUST5",
"WSUPER5", // SKINCOLOR_WSUPER5,
// Creamy Super (Shadow?) "SUPERTAN1",
"CSUPER1", // SKINCOLOR_CSUPER1, "SUPERTAN2",
"CSUPER2", // SKINCOLOR_CSUPER2, "SUPERTAN3",
"CSUPER3", // SKINCOLOR_CSUPER3, "SUPERTAN4",
"CSUPER4", // SKINCOLOR_CSUPER4, "SUPERTAN5",
"CSUPER5" // SKINCOLOR_CSUPER5,
"CHAOSEMERALD1",
"CHAOSEMERALD2",
"CHAOSEMERALD3",
"CHAOSEMERALD4",
"CHAOSEMERALD5",
"CHAOSEMERALD6",
"CHAOSEMERALD7"
}; };
static const char *const POWERS_LIST[] = { static const char *const POWERS_LIST[] = {

View file

@ -386,6 +386,14 @@ typedef enum
SKINCOLOR_SUPERTAN4, SKINCOLOR_SUPERTAN4,
SKINCOLOR_SUPERTAN5, SKINCOLOR_SUPERTAN5,
SKINCOLOR_CHAOSEMERALD1,
SKINCOLOR_CHAOSEMERALD2,
SKINCOLOR_CHAOSEMERALD3,
SKINCOLOR_CHAOSEMERALD4,
SKINCOLOR_CHAOSEMERALD5,
SKINCOLOR_CHAOSEMERALD6,
SKINCOLOR_CHAOSEMERALD7,
SKINCOLOR_FIRSTFREESLOT, SKINCOLOR_FIRSTFREESLOT,
SKINCOLOR_LASTFREESLOT = SKINCOLOR_FIRSTFREESLOT + NUMCOLORFREESLOTS - 1, SKINCOLOR_LASTFREESLOT = SKINCOLOR_FIRSTFREESLOT + NUMCOLORFREESLOTS - 1,

View file

@ -139,13 +139,7 @@ char sprnames[NUMSPRITES + 1][5] =
"NCHP", // NiGHTS chip "NCHP", // NiGHTS chip
"NSTR", // NiGHTS star "NSTR", // NiGHTS star
"EMBM", // Emblem "EMBM", // Emblem
"EMC1", // Chaos Emeralds "EMRC", // Chaos Emeralds
"EMC2",
"EMC3",
"EMC4",
"EMC5",
"EMC6",
"EMC7",
"SHRD", // Emerald Hunt "SHRD", // Emerald Hunt
// Interactive Objects // Interactive Objects
@ -1907,13 +1901,9 @@ state_t states[NUMSTATES] =
{SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM26 {SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM26
// Chaos Emeralds // Chaos Emeralds
{SPR_EMC1, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS1 {SPR_EMRC, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CHAOSEMERALD2}, // S_CHAOSEMERALD1
{SPR_EMC2, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS2 {SPR_EMRC, FF_FULLBRIGHT|FF_TRANSADD, 1, {NULL}, 0, 0, S_CHAOSEMERALD1}, // S_CHAOSEMERALD2
{SPR_EMC3, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS3 {SPR_EMRC, FF_FULLBRIGHT|1, -1, {NULL}, 1, 0, S_NULL}, // S_CHAOSEMERALD_UNDER
{SPR_EMC4, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS4
{SPR_EMC5, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS5
{SPR_EMC6, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS6
{SPR_EMC7, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_EMERALD_CHAOS7
// Emerald hunt shards // Emerald hunt shards
{SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD1 {SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD1
@ -3757,14 +3747,14 @@ state_t states[NUMSTATES] =
{SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGCAPSULE {SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGCAPSULE
// Orbiting Chaos Emeralds/Ideya for NiGHTS // Orbiting Chaos Emeralds/Ideya for NiGHTS
{SPR_EMC1, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1}, // S_ORBITEM1 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1}, // S_ORBITEM1
{SPR_EMC2, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2}, // S_ORBITEM2 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2}, // S_ORBITEM2
{SPR_EMC3, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3}, // S_ORBITEM3 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3}, // S_ORBITEM3
{SPR_EMC4, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4}, // S_ORBITEM4 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4}, // S_ORBITEM4
{SPR_EMC5, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5}, // S_ORBITEM5 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5}, // S_ORBITEM5
{SPR_EMC6, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6}, // S_ORBITEM6 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6}, // S_ORBITEM6
{SPR_EMC7, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7}, // S_ORBITEM7 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7}, // S_ORBITEM7
{SPR_EMC1, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8}, // S_ORBITEM8 {SPR_EMRC, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8}, // S_ORBITEM8
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1}, // S_ORBIDYA1 {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1}, // S_ORBIDYA1
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2}, // S_ORBIDYA2 {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2}, // S_ORBIDYA2
{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3}, // S_ORBIDYA3 {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3}, // S_ORBIDYA3
@ -8237,7 +8227,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_EMERALD { // MT_EMERALD
-1, // doomednum -1, // doomednum
S_EMERALD_CHAOS1, // spawnstate S_CHAOSEMERALD1, // spawnstate
1000, // spawnhealth 1000, // spawnhealth
S_NULL, // seestate S_NULL, // seestate
sfx_None, // seesound sfx_None, // seesound
@ -18960,7 +18950,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_GOTEMERALD { // MT_GOTEMERALD
-1, // doomednum -1, // doomednum
S_EMERALD_CHAOS1, // spawnstate S_CHAOSEMERALD1, // spawnstate
1000, // spawnhealth 1000, // spawnhealth
S_NULL, // seestate S_NULL, // seestate
sfx_None, // seesound sfx_None, // seesound
@ -28805,7 +28795,15 @@ skincolor_t skincolors[MAXSKINCOLORS] = {
{"Super Tan 2", {0x00, 0x50, 0x50, 0x51, 0x51, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5}, SKINCOLOR_BROWN, 13, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN2 {"Super Tan 2", {0x00, 0x50, 0x50, 0x51, 0x51, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5}, SKINCOLOR_BROWN, 13, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN2
{"Super Tan 3", {0x50, 0x51, 0x51, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9}, SKINCOLOR_BROWN, 12, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN3 {"Super Tan 3", {0x50, 0x51, 0x51, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9}, SKINCOLOR_BROWN, 12, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN3
{"Super Tan 4", {0x51, 0x52, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9, 0xfb, 0xed}, SKINCOLOR_BROWN, 11, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN4 {"Super Tan 4", {0x51, 0x52, 0x52, 0x52, 0x52, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9, 0xfb, 0xed}, SKINCOLOR_BROWN, 11, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN4
{"Super Tan 5", {0x52, 0x52, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9, 0xfb, 0xed, 0xee, 0xef, 0xef}, SKINCOLOR_BROWN, 10, V_BROWNMAP, false} // SKINCOLOR_SUPERTAN5 {"Super Tan 5", {0x52, 0x52, 0x54, 0x54, 0x54, 0x55, 0x56, 0x57, 0xf5, 0xf7, 0xf9, 0xfb, 0xed, 0xee, 0xef, 0xef}, SKINCOLOR_BROWN, 10, V_BROWNMAP, false}, // SKINCOLOR_SUPERTAN5
{"Chaos Emerald 1", { 0, 88, 188, 98, 114, 116, 117, 119, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD1
{"Chaos Emerald 2", { 0, 80, 82, 74, 65, 52, 56, 60, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD2
{"Chaos Emerald 3", { 0, 252, 201, 179, 182, 183, 185, 187, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD3
{"Chaos Emerald 4", { 0, 144, 146, 147, 149, 165, 167, 169, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD4
{"Chaos Emerald 5", { 0, 1, 144, 4, 9, 170, 14, 21, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD5
{"Chaos Emerald 6", { 0, 208, 50, 32, 34, 37, 40, 44, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_CHAOSEMERALD6
{"Chaos Emerald 7", { 0, 120, 121, 140, 133, 135, 149, 156, 0, 0, 0, 0, 0, 0, 0, 0}, SKINCOLOR_NONE, 0, 0, false} // SKINCOLOR_CHAOSEMERALD7
}; };
/** Patches the mobjinfo, state, and skincolor tables. /** Patches the mobjinfo, state, and skincolor tables.

View file

@ -410,13 +410,7 @@ typedef enum sprite
SPR_NCHP, // NiGHTS chip SPR_NCHP, // NiGHTS chip
SPR_NSTR, // NiGHTS star SPR_NSTR, // NiGHTS star
SPR_EMBM, // Emblem SPR_EMBM, // Emblem
SPR_EMC1, // Chaos Emeralds SPR_EMRC, // Chaos Emeralds
SPR_EMC2,
SPR_EMC3,
SPR_EMC4,
SPR_EMC5,
SPR_EMC6,
SPR_EMC7,
SPR_SHRD, // Emerald Hunt SPR_SHRD, // Emerald Hunt
// Interactive Objects // Interactive Objects
@ -2122,13 +2116,9 @@ typedef enum state
S_EMBLEM26, S_EMBLEM26,
// Chaos Emeralds // Chaos Emeralds
S_EMERALD_CHAOS1, S_CHAOSEMERALD1,
S_EMERALD_CHAOS2, S_CHAOSEMERALD2,
S_EMERALD_CHAOS3, S_CHAOSEMERALD_UNDER,
S_EMERALD_CHAOS4,
S_EMERALD_CHAOS5,
S_EMERALD_CHAOS6,
S_EMERALD_CHAOS7,
// Emerald hunt shards // Emerald hunt shards
S_SHRD1, S_SHRD1,

View file

@ -308,6 +308,7 @@ mobj_t *K_SpawnChaosEmerald(mobj_t *parent, angle_t angle, SINT8 flip, UINT32 em
{ {
boolean validEmerald = true; boolean validEmerald = true;
mobj_t *emerald = P_SpawnMobjFromMobj(parent, 0, 0, 0, MT_EMERALD); mobj_t *emerald = P_SpawnMobjFromMobj(parent, 0, 0, 0, MT_EMERALD);
mobj_t *overlay;
P_Thrust(emerald, P_Thrust(emerald,
FixedAngle(P_RandomFixed() * 180) + angle, FixedAngle(P_RandomFixed() * 180) + angle,
@ -322,25 +323,25 @@ mobj_t *K_SpawnChaosEmerald(mobj_t *parent, angle_t angle, SINT8 flip, UINT32 em
switch (emeraldType) switch (emeraldType)
{ {
case EMERALD_CHAOS1: case EMERALD_CHAOS1:
P_SetMobjState(emerald, S_EMERALD_CHAOS1); emerald->color = SKINCOLOR_CHAOSEMERALD1;
break; break;
case EMERALD_CHAOS2: case EMERALD_CHAOS2:
P_SetMobjState(emerald, S_EMERALD_CHAOS2); emerald->color = SKINCOLOR_CHAOSEMERALD2;
break; break;
case EMERALD_CHAOS3: case EMERALD_CHAOS3:
P_SetMobjState(emerald, S_EMERALD_CHAOS3); emerald->color = SKINCOLOR_CHAOSEMERALD3;
break; break;
case EMERALD_CHAOS4: case EMERALD_CHAOS4:
P_SetMobjState(emerald, S_EMERALD_CHAOS4); emerald->color = SKINCOLOR_CHAOSEMERALD4;
break; break;
case EMERALD_CHAOS5: case EMERALD_CHAOS5:
P_SetMobjState(emerald, S_EMERALD_CHAOS5); emerald->color = SKINCOLOR_CHAOSEMERALD5;
break; break;
case EMERALD_CHAOS6: case EMERALD_CHAOS6:
P_SetMobjState(emerald, S_EMERALD_CHAOS6); emerald->color = SKINCOLOR_CHAOSEMERALD6;
break; break;
case EMERALD_CHAOS7: case EMERALD_CHAOS7:
P_SetMobjState(emerald, S_EMERALD_CHAOS7); emerald->color = SKINCOLOR_CHAOSEMERALD7;
break; break;
default: default:
CONS_Printf("Invalid emerald type %d\n", emeraldType); CONS_Printf("Invalid emerald type %d\n", emeraldType);
@ -353,6 +354,11 @@ mobj_t *K_SpawnChaosEmerald(mobj_t *parent, angle_t angle, SINT8 flip, UINT32 em
emerald->extravalue1 = emeraldType; emerald->extravalue1 = emeraldType;
} }
overlay = P_SpawnMobjFromMobj(emerald, 0, 0, 0, MT_OVERLAY);
P_SetTarget(&overlay->target, emerald);
P_SetMobjState(overlay, S_CHAOSEMERALD_UNDER);
overlay->color = emerald->color;
return emerald; return emerald;
} }

View file

@ -88,7 +88,7 @@ static patch_t *kp_rankbumper;
static patch_t *kp_tinybumper[2]; static patch_t *kp_tinybumper[2];
static patch_t *kp_ranknobumpers; static patch_t *kp_ranknobumpers;
static patch_t *kp_rankcapsule; static patch_t *kp_rankcapsule;
static patch_t *kp_rankemeralds[7]; static patch_t *kp_rankemerald;
static patch_t *kp_battlewin; static patch_t *kp_battlewin;
static patch_t *kp_battlecool; static patch_t *kp_battlecool;
@ -351,13 +351,7 @@ void K_LoadKartHUDGraphics(void)
kp_tinybumper[1] = W_CachePatchName("K_BLNB", PU_HUDGFX); kp_tinybumper[1] = W_CachePatchName("K_BLNB", PU_HUDGFX);
kp_ranknobumpers = W_CachePatchName("K_NOBLNS", PU_HUDGFX); kp_ranknobumpers = W_CachePatchName("K_NOBLNS", PU_HUDGFX);
kp_rankcapsule = W_CachePatchName("K_CAPICO", PU_HUDGFX); kp_rankcapsule = W_CachePatchName("K_CAPICO", PU_HUDGFX);
kp_rankemerald = W_CachePatchName("K_EMERC", PU_HUDGFX);
sprintf(buffer, "K_EMERCx");
for (i = 0; i < 7; i++)
{
buffer[7] = '0'+(i+1);
kp_rankemeralds[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
}
// Battle graphics // Battle graphics
kp_battlewin = W_CachePatchName("K_BWIN", PU_HUDGFX); kp_battlewin = W_CachePatchName("K_BWIN", PU_HUDGFX);
@ -1633,10 +1627,12 @@ static boolean K_drawKartPositionFaces(void)
for (j = 0; j < 7; j++) for (j = 0; j < 7; j++)
{ {
UINT32 emeraldFlag = (1 << j); UINT32 emeraldFlag = (1 << j);
UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + j;
if (players[rankplayer[i]].powers[pw_emeralds] & emeraldFlag) if (players[rankplayer[i]].powers[pw_emeralds] & emeraldFlag)
{ {
V_DrawScaledPatch(emeraldx, Y+7, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_rankemeralds[j]); colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE);
V_DrawMappedPatch(emeraldx, Y+7, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_rankemerald, colormap);
emeraldx += 7; emeraldx += 7;
} }
} }
@ -1661,6 +1657,41 @@ static boolean K_drawKartPositionFaces(void)
return false; return false;
} }
static void K_drawKartEmeralds(void)
{
static const INT32 emeraldOffsets[7][2] = {
{27, 0},
{18, 15},
{36, 15},
{9, 0},
{45, 0},
{0, 15},
{54, 15}
};
const INT32 startx = BASEVIDWIDTH - 88;
const INT32 starty = BASEVIDHEIGHT - 32;
UINT8 *colormap;
INT32 i;
for (i = 0; i < 7; i++)
{
UINT32 emeraldFlag = (1 << i);
UINT16 emeraldColor = SKINCOLOR_CHAOSEMERALD1 + i;
if (stplyr->powers[pw_emeralds] & emeraldFlag)
{
colormap = R_GetTranslationColormap(TC_DEFAULT, emeraldColor, GTC_CACHE);
V_DrawMappedPatch(
startx + emeraldOffsets[i][0], starty + emeraldOffsets[i][1],
V_HUDTRANS|V_SLIDEIN|V_SNAPTOBOTTOM|V_SNAPTORIGHT,
kp_rankemerald, colormap
);
}
}
}
// //
// HU_DrawTabRankings -- moved here to take advantage of kart stuff! // HU_DrawTabRankings -- moved here to take advantage of kart stuff!
// //
@ -4137,6 +4168,6 @@ void K_drawKartHUD(void)
if (gametype == GT_BATTLE) if (gametype == GT_BATTLE)
{ {
V_DrawRightAlignedString(BASEVIDWIDTH - 10, BASEVIDHEIGHT - 18, V_SPLITSCREEN|V_SNAPTOBOTTOM|V_SNAPTORIGHT, va("Emeralds: %d / 7", K_NumEmeralds(stplyr))); K_drawKartEmeralds();
} }
} }