Merge branch 'sal-misc' of https://git.magicalgirl.moe/KartKrew/Kart.git into misc_plus_menustuffs

# Conflicts:
#	src/k_kart.c
This commit is contained in:
toaster 2018-09-17 11:19:17 +01:00
commit 8618d7bbec
11 changed files with 501 additions and 421 deletions

View File

@ -6234,12 +6234,12 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
//}
// Drift Sparks
"S_DRIFTSPARK1",
"S_DRIFTSPARK2",
"S_DRIFTSPARK3",
"S_DRIFTSPARK4",
"S_DRIFTSPARK5",
"S_DRIFTSPARK6",
"S_DRIFTSPARK_A1",
"S_DRIFTSPARK_A2",
"S_DRIFTSPARK_A3",
"S_DRIFTSPARK_B1",
"S_DRIFTSPARK_C1",
"S_DRIFTSPARK_C2",
// Drift Smoke
"S_DRIFTDUST1",
@ -6247,6 +6247,13 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_DRIFTDUST3",
"S_DRIFTDUST4",
// Fast lines
"S_FASTLINE1",
"S_FASTLINE2",
"S_FASTLINE3",
"S_FASTLINE4",
"S_FASTLINE5",
// Thunder Shield Burst
// Sneaker boost effect
@ -7219,13 +7226,14 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_RANDOMITEM",
"MT_RANDOMITEMPOP",
"MT_FASTLINE",
"MT_BOOSTFLAME",
"MT_BOOSTSMOKE",
"MT_SNEAKERTRAIL",
"MT_SPARKLETRAIL",
"MT_INVULNFLASH",
"MT_WIPEOUTTRAIL",
"MT_DRIFT",
"MT_DRIFTSPARK",
"MT_DRIFTDUST",
"MT_FAKESHIELD",
@ -7544,68 +7552,68 @@ static const char *const ML_LIST[16] = {
// Also includes Super colors
static const char *COLOR_ENUMS[] = { // Rejigged for Kart.
"NONE", // 00 // SKINCOLOR_NONE
"IVORY", // 01 // SKINCOLOR_IVORY
"WHITE", // 02 // SKINCOLOR_WHITE
"SILVER", // 03 // SKINCOLOR_SILVER
"CLOUDY", // 04 // SKINCOLOR_CLOUDY
"GREY", // 05 // SKINCOLOR_GREY
"NICKEL", // 06 // SKINCOLOR_NICKEL
"BLACK", // 07 // SKINCOLOR_BLACK
"SALMON", // 08 // SKINCOLOR_SALMON
"PINK", // 09 // SKINCOLOR_PINK
"ROSE", // 10 // SKINCOLOR_ROSE
"RASPBERRY", // 11 // SKINCOLOR_RASPBERRY
"RED", // 12 // SKINCOLOR_RED
"RUBY", // 13 // SKINCOLOR_RUBY
"CRIMSON", // 14 // SKINCOLOR_CRIMSON
"DAWN", // 15 // SKINCOLOR_DAWN
"CREAMSICLE", // 16 // SKINCOLOR_CREAMSICLE
"ORANGE", // 17 // SKINCOLOR_ORANGE
"PUMPKIN", // 18 // SKINCOLOR_PUMPKIN
"ROSEWOOD", // 19 // SKINCOLOR_ROSEWOOD
"BURGUNDY", // 20 // SKINCOLOR_BURGUNDY
"BRONZE", // 21 // SKINCOLOR_BRONZE
"SEPIA", // 22 // SKINCOLOR_SEPIA
"BEIGE", // 23 // SKINCOLOR_BEIGE
"BROWN", // 24 // SKINCOLOR_BROWN
"LEATHER", // 25 // SKINCOLOR_LEATHER
"PEACH", // 26 // SKINCOLOR_PEACH
"CARAMEL", // 27 // SKINCOLOR_CARAMEL
"TANGERINE", // 28 // SKINCOLOR_TANGERINE
"GOLD", // 29 // SKINCOLOR_GOLD
"VOMIT", // 30 // SKINCOLOR_VOMIT
"YELLOW", // 31 // SKINCOLOR_YELLOW
"CANARY", // 32 // SKINCOLOR_CANARY
"OLIVE", // 33 // SKINCOLOR_OLIVE
"GARDEN", // 34 // SKINCOLOR_GARDEN
"LIME", // 35 // SKINCOLOR_LIME
"WHITE", // 01 // SKINCOLOR_WHITE
"SILVER", // 02 // SKINCOLOR_SILVER
"GREY", // 03 // SKINCOLOR_GREY
"NICKEL", // 04 // SKINCOLOR_NICKEL
"BLACK", // 05 // SKINCOLOR_BLACK
"SEPIA", // 06 // SKINCOLOR_SEPIA
"BEIGE", // 07 // SKINCOLOR_BEIGE
"BROWN", // 08 // SKINCOLOR_BROWN
"LEATHER", // 09 // SKINCOLOR_LEATHER
"SALMON", // 10 // SKINCOLOR_SALMON
"PINK", // 11 // SKINCOLOR_PINK
"ROSE", // 12 // SKINCOLOR_ROSE
"RASPBERRY", // 13 // SKINCOLOR_RASPBERRY
"RED", // 14 // SKINCOLOR_RED
"RUBY", // 15 // SKINCOLOR_RUBY
"CRIMSON", // 16 // SKINCOLOR_CRIMSON
"KETCHUP", // 17 // SKINCOLOR_KETCHUP
"DAWN", // 18 // SKINCOLOR_DAWN
"CREAMSICLE", // 19 // SKINCOLOR_CREAMSICLE
"ORANGE", // 20 // SKINCOLOR_ORANGE
"PUMPKIN", // 21 // SKINCOLOR_PUMPKIN
"ROSEWOOD", // 22 // SKINCOLOR_ROSEWOOD
"BURGUNDY", // 23 // SKINCOLOR_BURGUNDY
"TANGERINE", // 24 // SKINCOLOR_TANGERINE
"PEACH", // 25 // SKINCOLOR_PEACH
"CARAMEL", // 26 // SKINCOLOR_CARAMEL
"GOLD", // 27 // SKINCOLOR_GOLD
"BRONZE", // 28 // SKINCOLOR_BRONZE
"YELLOW", // 29 // SKINCOLOR_YELLOW
"MUSTARD", // 30 // SKINCOLOR_MUSTARD
"OLIVE", // 31 // SKINCOLOR_OLIVE
"VOMIT", // 32 // SKINCOLOR_VOMIT
"GARDEN", // 33 // SKINCOLOR_GARDEN
"LIME", // 34 // SKINCOLOR_LIME
"DREAM", // 35 // SKINCOLOR_DREAM
"TEA", // 36 // SKINCOLOR_TEA
"ARMY", // 37 // SKINCOLOR_ARMY
"PISTACHIO", // 38 // SKINCOLOR_PISTACHIO
"PISTACHIO", // 37 // SKINCOLOR_PISTACHIO
"ROBOHOOD", // 38 // SKINCOLOR_ROBOHOOD
"MOSS", // 39 // SKINCOLOR_MOSS
"MINT", // 40 // SKINCOLOR_MINT
"GREEN", // 41 // SKINCOLOR_GREEN
"ROBOHOOD", // 42 // SKINCOLOR_ROBOHOOD
"PINETREE", // 43 // SKINCOLOR_PINETREE
"EMERALD", // 44 // SKINCOLOR_EMERALD
"SWAMP", // 45 // SKINCOLOR_SWAMP
"AQUA", // 46 // SKINCOLOR_AQUA
"TEAL", // 47 // SKINCOLOR_TEAL
"CYAN", // 48 // SKINCOLOR_CYAN
"PINETREE", // 42 // SKINCOLOR_PINETREE
"EMERALD", // 43 // SKINCOLOR_EMERALD
"SWAMP", // 44 // SKINCOLOR_SWAMP
"AQUA", // 45 // SKINCOLOR_AQUA
"TEAL", // 46 // SKINCOLOR_TEAL
"CYAN", // 47 // SKINCOLOR_CYAN
"JAWZ", // 48 // SKINCOLOR_JAWZ
"CERULEAN", // 49 // SKINCOLOR_CERULEAN
"SLATE", // 50 // SKINCOLOR_SLATE
"STEEL", // 51 // SKINCOLOR_STEEL
"PERIWINKLE", // 52 // SKINCOLOR_PERIWINKLE
"BLUE", // 53 // SKINCOLOR_BLUE
"SAPPHIRE", // 54 // SKINCOLOR_SAPPHIRE
"BLUEBERRY", // 55 // SKINCOLOR_BLUEBERRY
"NAVY", // 56 // SKINCOLOR_NAVY
"JET", // 57 // SKINCOLOR_JET
"NAVY", // 50 // SKINCOLOR_NAVY
"SLATE", // 51 // SKINCOLOR_SLATE
"STEEL", // 52 // SKINCOLOR_STEEL
"JET", // 53 // SKINCOLOR_JET
"PERIWINKLE", // 54 // SKINCOLOR_PERIWINKLE
"BLUE", // 55 // SKINCOLOR_BLUE
"SAPPHIRE", // 56 // SKINCOLOR_SAPPHIRE
"BLUEBERRY", // 57 // SKINCOLOR_BLUEBERRY
"DUSK", // 58 // SKINCOLOR_DUSK
"PURPLE", // 59 // SKINCOLOR_PURPLE
"LAVENDER", // 60 // SKINCOLOR_LAVENDER
"INDIGO", // 61 // SKINCOLOR_INDIGO
"BYZANTIUM", // 62 // SKINCOLOR_BYZANTIUM
"BYZANTIUM", // 61 // SKINCOLOR_BYZANTIUM
"POMEGRANATE", // 62 // SKINCOLOR_POMEGRANATE
"LILAC", // 63 // SKINCOLOR_LILAC
// Super special awesome Super flashing colors!

View File

@ -232,13 +232,15 @@ extern FILE *logstream;
typedef enum
{
SKINCOLOR_NONE = 0,
SKINCOLOR_IVORY,
SKINCOLOR_WHITE,
SKINCOLOR_SILVER,
SKINCOLOR_CLOUDY,
SKINCOLOR_GREY,
SKINCOLOR_NICKEL,
SKINCOLOR_BLACK,
SKINCOLOR_SEPIA,
SKINCOLOR_BEIGE,
SKINCOLOR_BROWN,
SKINCOLOR_LEATHER,
SKINCOLOR_SALMON,
SKINCOLOR_PINK,
SKINCOLOR_ROSE,
@ -246,54 +248,52 @@ typedef enum
SKINCOLOR_RED,
SKINCOLOR_RUBY,
SKINCOLOR_CRIMSON,
SKINCOLOR_KETCHUP,
SKINCOLOR_DAWN,
SKINCOLOR_CREAMSICLE,
SKINCOLOR_ORANGE,
SKINCOLOR_PUMPKIN,
SKINCOLOR_ROSEWOOD,
SKINCOLOR_BURGUNDY,
SKINCOLOR_BRONZE,
SKINCOLOR_SEPIA,
SKINCOLOR_BEIGE,
SKINCOLOR_BROWN,
SKINCOLOR_LEATHER,
SKINCOLOR_TANGERINE,
SKINCOLOR_PEACH,
SKINCOLOR_CARAMEL,
SKINCOLOR_TANGERINE,
SKINCOLOR_GOLD,
SKINCOLOR_VOMIT,
SKINCOLOR_BRONZE,
SKINCOLOR_YELLOW,
SKINCOLOR_CANARY,
SKINCOLOR_MUSTARD,
SKINCOLOR_OLIVE,
SKINCOLOR_VOMIT,
SKINCOLOR_GARDEN,
SKINCOLOR_LIME,
SKINCOLOR_DREAM,
SKINCOLOR_TEA,
SKINCOLOR_ARMY,
SKINCOLOR_PISTACHIO,
SKINCOLOR_ROBOHOOD,
SKINCOLOR_MOSS,
SKINCOLOR_MINT,
SKINCOLOR_GREEN,
SKINCOLOR_ROBOHOOD,
SKINCOLOR_PINETREE,
SKINCOLOR_EMERALD,
SKINCOLOR_SWAMP,
SKINCOLOR_AQUA,
SKINCOLOR_TEAL,
SKINCOLOR_CYAN,
SKINCOLOR_JAWZ, // Oni's torment
SKINCOLOR_CERULEAN,
SKINCOLOR_NAVY,
SKINCOLOR_SLATE,
SKINCOLOR_STEEL,
SKINCOLOR_JET,
SKINCOLOR_PERIWINKLE,
SKINCOLOR_BLUE,
SKINCOLOR_SAPPHIRE, // sweet mother, i cannot weave slender aphrodite has overcome me with longing for a girl
SKINCOLOR_BLUEBERRY,
SKINCOLOR_NAVY,
SKINCOLOR_JET,
SKINCOLOR_DUSK,
SKINCOLOR_PURPLE,
SKINCOLOR_LAVENDER,
SKINCOLOR_INDIGO,
SKINCOLOR_BYZANTIUM,
SKINCOLOR_POMEGRANATE,
SKINCOLOR_LILAC,
// Careful! MAXSKINCOLORS cannot be greater than 0x40 -- Which it is now.

View File

@ -948,6 +948,15 @@ spritemd2found:
fclose(f);
}
// Define for getting accurate color brightness readings according to how the human eye sees them.
// https://en.wikipedia.org/wiki/Relative_luminance
// 0.2126 to red
// 0.7152 to green
// 0.0722 to blue
// (See this same define in k_kart.c!)
#define SETBRIGHTNESS(brightness,r,g,b) \
brightness = (UINT8)(((1063*((UINT16)r)/5000) + (3576*((UINT16)g)/5000) + (361*((UINT16)b)/5000)) / 3)
static void HWR_CreateBlendedTexture(GLPatch_t *gpatch, GLPatch_t *blendgpatch, GLMipmap_t *grmip, INT32 skinnum, skincolors_t color)
{
UINT8 i;
@ -978,40 +987,26 @@ static void HWR_CreateBlendedTexture(GLPatch_t *gpatch, GLPatch_t *blendgpatch,
// Average all of the translation's colors
{
UINT16 r, g, b;
UINT8 div = 0;
const UINT8 div = 6;
const UINT8 start = 4;
UINT32 r, g, b;
blendcolor = V_GetColor(colortranslations[color][0]);
r = (UINT16)blendcolor.s.red;
g = (UINT16)blendcolor.s.green;
b = (UINT16)blendcolor.s.blue;
blendcolor = V_GetColor(colortranslations[color][start]);
r = (UINT32)(blendcolor.s.red*blendcolor.s.red);
g = (UINT32)(blendcolor.s.green*blendcolor.s.green);
b = (UINT32)(blendcolor.s.blue*blendcolor.s.blue);
for (i = 1; i < 16; i++)
for (i = 1; i < div; i++)
{
RGBA_t nextcolor = V_GetColor(colortranslations[color][i]);
UINT8 mul = 1;
// Weight these shades more. Indices 1-9 weren't randomly picked, they are commonly used on sprites and are generally what the colors "look" like
if (i >= 1 && i <= 9)
mul++;
// The mid & dark tons on the minimap icons get weighted even harder
if (i == 4 || i == 6)
mul += 2;
// And the shade between them, why not
if (i == 5)
mul++;
r += (UINT16)(nextcolor.s.red)*mul;
g += (UINT16)(nextcolor.s.green)*mul;
b += (UINT16)(nextcolor.s.blue)*mul;
div += mul;
RGBA_t nextcolor = V_GetColor(colortranslations[color][start+i]);
r += (UINT32)(nextcolor.s.red*nextcolor.s.red);
g += (UINT32)(nextcolor.s.green*nextcolor.s.green);
b += (UINT32)(nextcolor.s.blue*nextcolor.s.blue);
}
// This shouldn't happen.
if (div < 1)
div = 1;
blendcolor.s.red = (UINT8)(r/div);
blendcolor.s.green = (UINT8)(g/div);
blendcolor.s.blue = (UINT8)(b/div);
blendcolor.s.red = (UINT8)(FixedSqrt((r/div)<<FRACBITS)>>FRACBITS);
blendcolor.s.green = (UINT8)(FixedSqrt((g/div)<<FRACBITS)>>FRACBITS);
blendcolor.s.blue = (UINT8)(FixedSqrt((b/div)<<FRACBITS)>>FRACBITS);
}
// rainbow support, could theoretically support boss ones too
@ -1028,11 +1023,11 @@ static void HWR_CreateBlendedTexture(GLPatch_t *gpatch, GLPatch_t *blendgpatch,
{
UINT32 tempcolor;
UINT16 imagebright, blendbright, finalbright, colorbright;
imagebright = (image->s.red+image->s.green+image->s.blue)/3;
blendbright = (blendimage->s.red+blendimage->s.green+blendimage->s.blue)/3;
SETBRIGHTNESS(imagebright,image->s.red,image->s.green,image->s.blue);
SETBRIGHTNESS(blendbright,blendimage->s.red,blendimage->s.green,blendimage->s.blue);
// slightly dumb average between the blend image color and base image colour, usually one or the other will be fully opaque anyway
finalbright = (imagebright*(255-blendimage->s.alpha))/255 + (blendbright*blendimage->s.alpha)/255;
colorbright = (blendcolor.s.red+blendcolor.s.green+blendcolor.s.blue)/3;
SETBRIGHTNESS(colorbright,blendcolor.s.red,blendcolor.s.green,blendcolor.s.blue);
tempcolor = (finalbright*blendcolor.s.red)/colorbright;
tempcolor = min(255, tempcolor);
@ -1090,6 +1085,8 @@ static void HWR_CreateBlendedTexture(GLPatch_t *gpatch, GLPatch_t *blendgpatch,
return;
}
#undef SETBRIGHTNESS
static void HWR_GetBlendedTexture(GLPatch_t *gpatch, GLPatch_t *blendgpatch, INT32 skinnum, const UINT8 *colormap, skincolors_t color)
{
// mostly copied from HWR_GetMappedPatch, hence the similarities and comment

View File

@ -55,12 +55,12 @@ char sprnames[NUMSPRITES + 1][5] =
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
//SRB2kart Sprites
"SPRG","BSPR","RNDM","RPOP","BOST","BOSM","KFRE","KINV","KINF","WIPD",
"DRIF","DUST","FITM","BANA","ORBN","JAWZ","SSMN","KRBM","BHOG","BHBM",
"BLIG","LIGH","THNS","SINK","SITR","KBLN","DEZL","POKE","AUDI","DECO",
"DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD","BRNG",
"BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO","ITEM","ITMO","ITMI",
"ITMN","WANT","PBOM","RETI","VIEW"
"SPRG","BSPR","RNDM","RPOP","FAST","BOST","BOSM","KFRE","KINV","KINF",
"WIPD","DRIF","DUST","FITM","BANA","ORBN","JAWZ","SSMN","KRBM","BHOG",
"BHBM","BLIG","LIGH","THNS","SINK","SITR","KBLN","DEZL","POKE","AUDI",
"DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD",
"BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO","ITEM","ITMO",
"ITMI","ITMN","WANT","PBOM","RETI","VIEW"
};
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
@ -2566,18 +2566,26 @@ state_t states[NUMSTATES] =
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
{SPR_RPOP, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
{SPR_DRIF, 0|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK2}, // S_DRIFTSPARK1
{SPR_DRIF, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK3}, // S_DRIFTSPARK2
{SPR_DRIF, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK1}, // S_DRIFTSPARK3
{SPR_DRIF, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK5}, // S_DRIFTSPARK4
{SPR_DRIF, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK6}, // S_DRIFTSPARK5
{SPR_DRIF, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK4}, // S_DRIFTSPARK6
{SPR_DRIF, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_A1
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20|1, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_A2
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_NULL}, // S_DRIFTSPARK_A3
{SPR_DRIF, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_B1 (Loop back to A2)
{SPR_DRIF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK_C2}, // S_DRIFTSPARK_C1
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_C2 (Loop back to A3)
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
{SPR_DUST, 1, 3, {NULL}, 0, 0, S_DRIFTDUST3}, // S_DRIFTDUST2
{SPR_DUST, FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTDUST4}, // S_DRIFTDUST3
{SPR_DUST, FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTDUST4
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FASTLINE2}, // S_FASTLINE1
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FASTLINE3}, // S_FASTLINE2
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FASTLINE4}, // S_FASTLINE3
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_FASTLINE5}, // S_FASTLINE4
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_NULL}, // S_FASTLINE5
{SPR_BOST, FF_FULLBRIGHT|FF_ANIMATE, TICRATE, {NULL}, 6, 1, S_BOOSTSMOKESPAWNER}, // S_BOOSTFLAME
{SPR_NULL, 0, TICRATE/2, {NULL}, 0, 0, S_NULL}, // S_BOOSTSMOKESPAWNER
@ -2780,30 +2788,30 @@ state_t states[NUMSTATES] =
{SPR_LIGH, 2, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3
{SPR_LIGH, 3, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4
{SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD2}, // S_THUNDERSHIELD1
{SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD3}, // S_THUNDERSHIELD2
{SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD4}, // S_THUNDERSHIELD3
{SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD5}, // S_THUNDERSHIELD4
{SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD6}, // S_THUNDERSHIELD5
{SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD7}, // S_THUNDERSHIELD6
{SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD8}, // S_THUNDERSHIELD7
{SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD9}, // S_THUNDERSHIELD8
{SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD10}, // S_THUNDERSHIELD9
{SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD11}, // S_THUNDERSHIELD10
{SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD12}, // S_THUNDERSHIELD11
{SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD13}, // S_THUNDERSHIELD12
{SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD14}, // S_THUNDERSHIELD13
{SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD15}, // S_THUNDERSHIELD14
{SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD16}, // S_THUNDERSHIELD15
{SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD17}, // S_THUNDERSHIELD16
{SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD18}, // S_THUNDERSHIELD17
{SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD19}, // S_THUNDERSHIELD18
{SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD20}, // S_THUNDERSHIELD19
{SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD21}, // S_THUNDERSHIELD20
{SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD22}, // S_THUNDERSHIELD21
{SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD23}, // S_THUNDERSHIELD22
{SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD24}, // S_THUNDERSHIELD23
{SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD1}, // S_THUNDERSHIELD24
{SPR_THNS, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_THUNDERSHIELD2}, // S_THUNDERSHIELD1
{SPR_THNS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_THUNDERSHIELD3}, // S_THUNDERSHIELD2
{SPR_THNS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_THUNDERSHIELD4}, // S_THUNDERSHIELD3
{SPR_THNS, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_THUNDERSHIELD5}, // S_THUNDERSHIELD4
{SPR_THNS, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_THUNDERSHIELD6}, // S_THUNDERSHIELD5
{SPR_THNS, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_THUNDERSHIELD7}, // S_THUNDERSHIELD6
{SPR_THNS, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_THUNDERSHIELD8}, // S_THUNDERSHIELD7
{SPR_THNS, FF_FULLBRIGHT|7, 2, {NULL}, 0, 0, S_THUNDERSHIELD9}, // S_THUNDERSHIELD8
{SPR_THNS, FF_FULLBRIGHT|8, 2, {NULL}, 0, 0, S_THUNDERSHIELD10}, // S_THUNDERSHIELD9
{SPR_THNS, FF_FULLBRIGHT|9, 2, {NULL}, 0, 0, S_THUNDERSHIELD11}, // S_THUNDERSHIELD10
{SPR_THNS, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_THUNDERSHIELD12}, // S_THUNDERSHIELD11
{SPR_THNS, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_THUNDERSHIELD13}, // S_THUNDERSHIELD12
{SPR_THNS, FF_FULLBRIGHT|8, 2, {NULL}, 0, 0, S_THUNDERSHIELD14}, // S_THUNDERSHIELD13
{SPR_THNS, FF_FULLBRIGHT|7, 2, {NULL}, 0, 0, S_THUNDERSHIELD15}, // S_THUNDERSHIELD14
{SPR_THNS, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_THUNDERSHIELD16}, // S_THUNDERSHIELD15
{SPR_THNS, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_THUNDERSHIELD17}, // S_THUNDERSHIELD16
{SPR_THNS, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_THUNDERSHIELD18}, // S_THUNDERSHIELD17
{SPR_THNS, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_THUNDERSHIELD19}, // S_THUNDERSHIELD18
{SPR_THNS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_THUNDERSHIELD20}, // S_THUNDERSHIELD19
{SPR_THNS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_THUNDERSHIELD21}, // S_THUNDERSHIELD20
{SPR_THNS, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_THUNDERSHIELD22}, // S_THUNDERSHIELD21
{SPR_THNS, FF_FULLBRIGHT|9, 2, {NULL}, 0, 0, S_THUNDERSHIELD23}, // S_THUNDERSHIELD22
{SPR_THNS, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_THUNDERSHIELD24}, // S_THUNDERSHIELD23
{SPR_THNS, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_THUNDERSHIELD1}, // S_THUNDERSHIELD24
{SPR_SINK, 0, 1, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK
{SPR_SINK, 0|FF_TRANS80|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_SINK_SHIELD}, // S_SINK_SHIELD
@ -14400,6 +14408,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FASTLINE
-1, // doomednum
S_FASTLINE1, // 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
14*FRACUNIT, // radius
14*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
S_NULL // raisestate
},
{ // MT_BOOSTFLAME
-1, // doomednum
S_BOOSTFLAME, // spawnstate
@ -14562,9 +14597,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_DRIFT
{ // MT_DRIFTSPARK
-1, // doomednum
S_DRIFTSPARK1, // spawnstate
S_DRIFTSPARK_B1,// spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -14579,13 +14614,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
64*FRACUNIT, // radius
64*FRACUNIT, // height
14*FRACUNIT, // radius
14*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
S_NULL // raisestate
},

View File

@ -582,6 +582,7 @@ typedef enum sprite
SPR_RNDM, // Random Item Box
SPR_RPOP, // Random Item Box Pop
SPR_FAST, // Speed boost trail
SPR_BOST, // Sneaker booster flame
SPR_BOSM, // Sneaker booster smoke
SPR_KFRE, // Sneaker fire trail
@ -3081,12 +3082,12 @@ typedef enum state
//}
// Drift Sparks
S_DRIFTSPARK1,
S_DRIFTSPARK2,
S_DRIFTSPARK3,
S_DRIFTSPARK4,
S_DRIFTSPARK5,
S_DRIFTSPARK6,
S_DRIFTSPARK_A1,
S_DRIFTSPARK_A2,
S_DRIFTSPARK_A3,
S_DRIFTSPARK_B1,
S_DRIFTSPARK_C1,
S_DRIFTSPARK_C2,
// Drift Smoke
S_DRIFTDUST1,
@ -3094,6 +3095,13 @@ typedef enum state
S_DRIFTDUST3,
S_DRIFTDUST4,
// Fast lines
S_FASTLINE1,
S_FASTLINE2,
S_FASTLINE3,
S_FASTLINE4,
S_FASTLINE5,
// Magnet Burst
// Sneaker boost effect
@ -4083,13 +4091,14 @@ typedef enum mobj_type
MT_RANDOMITEM,
MT_RANDOMITEMPOP,
MT_FASTLINE,
MT_BOOSTFLAME,
MT_BOOSTSMOKE,
MT_SNEAKERTRAIL,
MT_SPARKLETRAIL,
MT_INVULNFLASH,
MT_WIPEOUTTRAIL,
MT_DRIFT,
MT_DRIFTSPARK,
MT_DRIFTDUST,
MT_FAKESHIELD,

View File

@ -43,216 +43,230 @@
const char *KartColor_Names[MAXSKINCOLORS] =
{
"None", // 00 // SKINCOLOR_NONE
"Ivory", // 01 // SKINCOLOR_IVORY
"White", // 02 // SKINCOLOR_WHITE
"Silver", // 03 // SKINCOLOR_SILVER
"Cloudy", // 04 // SKINCOLOR_CLOUDY
"Grey", // 05 // SKINCOLOR_GREY
"Nickel", // 06 // SKINCOLOR_NICKEL
"Black", // 07 // SKINCOLOR_BLACK
"Salmon", // 08 // SKINCOLOR_SALMON
"Pink", // 09 // SKINCOLOR_PINK
"Rose", // 10 // SKINCOLOR_ROSE
"Raspberry", // 11 // SKINCOLOR_RASPBERRY
"Red", // 12 // SKINCOLOR_RED
"Ruby", // 13 // SKINCOLOR_RUBY
"Crimson", // 14 // SKINCOLOR_CRIMSON
"Dawn", // 15 // SKINCOLOR_DAWN
"Creamsicle", // 16 // SKINCOLOR_CREAMSICLE
"Orange", // 17 // SKINCOLOR_ORANGE
"Pumpkin", // 18 // SKINCOLOR_PUMPKIN
"Rosewood", // 19 // SKINCOLOR_ROSEWOOD
"Burgundy", // 20 // SKINCOLOR_BURGUNDY
"Bronze", // 21 // SKINCOLOR_BRONZE
"Sepia", // 22 // SKINCOLOR_SEPIA
"Beige", // 23 // SKINCOLOR_BEIGE
"Brown", // 24 // SKINCOLOR_BROWN
"Leather", // 25 // SKINCOLOR_LEATHER
"Peach", // 26 // SKINCOLOR_PEACH
"Caramel", // 27 // SKINCOLOR_CARAMEL
"Tangerine", // 28 // SKINCOLOR_TANGERINE
"Gold", // 29 // SKINCOLOR_GOLD
"Vomit", // 30 // SKINCOLOR_VOMIT
"Yellow", // 31 // SKINCOLOR_YELLOW
"Canary", // 32 // SKINCOLOR_CANARY
"Olive", // 33 // SKINCOLOR_OLIVE
"Garden", // 34 // SKINCOLOR_GARDEN
"Lime", // 35 // SKINCOLOR_LIME
"White", // 01 // SKINCOLOR_WHITE
"Silver", // 02 // SKINCOLOR_SILVER
"Grey", // 03 // SKINCOLOR_GREY
"Nickel", // 04 // SKINCOLOR_NICKEL
"Black", // 05 // SKINCOLOR_BLACK
"Sepia", // 06 // SKINCOLOR_SEPIA
"Beige", // 07 // SKINCOLOR_BEIGE
"Brown", // 08 // SKINCOLOR_BROWN
"Leather", // 09 // SKINCOLOR_LEATHER
"Salmon", // 10 // SKINCOLOR_SALMON
"Pink", // 11 // SKINCOLOR_PINK
"Rose", // 12 // SKINCOLOR_ROSE
"Raspberry", // 13 // SKINCOLOR_RASPBERRY
"Red", // 14 // SKINCOLOR_RED
"Ruby", // 15 // SKINCOLOR_RUBY
"Crimson", // 16 // SKINCOLOR_CRIMSON
"Ketchup", // 17 // SKINCOLOR_KETCHUP
"Dawn", // 18 // SKINCOLOR_DAWN
"Creamsicle", // 19 // SKINCOLOR_CREAMSICLE
"Orange", // 20 // SKINCOLOR_ORANGE
"Pumpkin", // 21 // SKINCOLOR_PUMPKIN
"Rosewood", // 22 // SKINCOLOR_ROSEWOOD
"Burgundy", // 23 // SKINCOLOR_BURGUNDY
"Tangerine", // 24 // SKINCOLOR_TANGERINE
"Peach", // 25 // SKINCOLOR_PEACH
"Caramel", // 26 // SKINCOLOR_CARAMEL
"Gold", // 27 // SKINCOLOR_GOLD
"Bronze", // 28 // SKINCOLOR_BRONZE
"Yellow", // 29 // SKINCOLOR_YELLOW
"Mustard", // 30 // SKINCOLOR_MUSTARD
"Olive", // 31 // SKINCOLOR_OLIVE
"Vomit", // 32 // SKINCOLOR_VOMIT
"Garden", // 33 // SKINCOLOR_GARDEN
"Lime", // 34 // SKINCOLOR_LIME
"Dream", // 35 // SKINCOLOR_DREAM
"Tea", // 36 // SKINCOLOR_TEA
"Army", // 37 // SKINCOLOR_ARMY
"Pistachio", // 38 // SKINCOLOR_PISTACHIO
"Pistachio", // 37 // SKINCOLOR_PISTACHIO
"Robo-Hood", // 38 // SKINCOLOR_ROBOHOOD
"Moss", // 39 // SKINCOLOR_MOSS
"Mint", // 40 // SKINCOLOR_MINT
"Green", // 41 // SKINCOLOR_GREEN
"Robo-Hood", // 42 // SKINCOLOR_ROBOHOOD
"Pinetree", // 43 // SKINCOLOR_PINETREE
"Emerald", // 44 // SKINCOLOR_EMERALD
"Swamp", // 45 // SKINCOLOR_SWAMP
"Aqua", // 46 // SKINCOLOR_AQUA
"Teal", // 47 // SKINCOLOR_TEAL
"Cyan", // 48 // SKINCOLOR_CYAN
"Pinetree", // 42 // SKINCOLOR_PINETREE
"Emerald", // 43 // SKINCOLOR_EMERALD
"Swamp", // 44 // SKINCOLOR_SWAMP
"Aqua", // 45 // SKINCOLOR_AQUA
"Teal", // 46 // SKINCOLOR_TEAL
"Cyan", // 47 // SKINCOLOR_CYAN
"Jawz", // 48 // SKINCOLOR_JAWZ
"Cerulean", // 49 // SKINCOLOR_CERULEAN
"Slate", // 50 // SKINCOLOR_SLATE
"Steel", // 51 // SKINCOLOR_STEEL
"Periwinkle", // 52 // SKINCOLOR_PERIWINKLE
"Blue", // 53 // SKINCOLOR_BLUE
"Sapphire", // 54 // SKINCOLOR_SAPPHIRE
"Blueberry", // 55 // SKINCOLOR_BLUEBERRY
"Navy", // 56 // SKINCOLOR_NAVY
"Jet", // 57 // SKINCOLOR_JET
"Navy", // 50 // SKINCOLOR_NAVY
"Slate", // 51 // SKINCOLOR_SLATE
"Steel", // 52 // SKINCOLOR_STEEL
"Jet", // 53 // SKINCOLOR_JET
"Periwinkle", // 54 // SKINCOLOR_PERIWINKLE
"Blue", // 55 // SKINCOLOR_BLUE
"Sapphire", // 56 // SKINCOLOR_SAPPHIRE
"Blueberry", // 57 // SKINCOLOR_BLUEBERRY
"Dusk", // 58 // SKINCOLOR_DUSK
"Purple", // 59 // SKINCOLOR_PURPLE
"Lavender", // 60 // SKINCOLOR_LAVENDER
"Indigo", // 61 // SKINCOLOR_INDIGO
"Byzantium", // 62 // SKINCOLOR_BYZANTIUM
"Byzantium", // 61 // SKINCOLOR_BYZANTIUM
"Pomegranate", // 62 // SKINCOLOR_POMEGRANATE
"Lilac" // 63 // SKINCOLOR_LILAC
};
// Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later
const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
{
SKINCOLOR_NONE,8, // 00 // SKINCOLOR_NONE
SKINCOLOR_BLACK,8, // 01 // SKINCOLOR_IVORY
SKINCOLOR_NICKEL,8, // 02 // SKINCOLOR_WHITE
SKINCOLOR_GREY,8, // 03 // SKINCOLOR_SILVER
SKINCOLOR_CLOUDY,8, // 04 // SKINCOLOR_CLOUDY
SKINCOLOR_SILVER,8, // 05 // SKINCOLOR_GREY
SKINCOLOR_WHITE,8, // 06 // SKINCOLOR_NICKEL
SKINCOLOR_IVORY,8, // 07 // SKINCOLOR_BLACK
SKINCOLOR_TEA,8, // 08 // SKINCOLOR_SALMON
SKINCOLOR_ARMY,8, // 09 // SKINCOLOR_PINK
SKINCOLOR_MOSS,8, // 10 // SKINCOLOR_ROSE
SKINCOLOR_MINT,10, // 11 // SKINCOLOR_RASPBERRY
SKINCOLOR_GREEN,8, // 12 // SKINCOLOR_RED
SKINCOLOR_EMERALD,6, // 13 // SKINCOLOR_RUBY
SKINCOLOR_PINETREE,6, // 14 // SKINCOLOR_CRIMSON
SKINCOLOR_DUSK,8, // 15 // SKINCOLOR_DAWN
SKINCOLOR_PERIWINKLE,8, // 16 // SKINCOLOR_CREAMSICLE
SKINCOLOR_BLUE,8, // 17 // SKINCOLOR_ORANGE
SKINCOLOR_BLUEBERRY,8, // 18 // SKINCOLOR_PUMPKIN
SKINCOLOR_NAVY,8, // 19 // SKINCOLOR_ROSEWOOD
SKINCOLOR_JET,8, // 20 // SKINCOLOR_BURGUNDY
SKINCOLOR_STEEL,8, // 21 // SKINCOLOR_BRONZE
SKINCOLOR_LEATHER,6, // 22 // SKINCOLOR_SEPIA
SKINCOLOR_BROWN,2, // 23 // SKINCOLOR_BEIGE
SKINCOLOR_BEIGE,8, // 24 // SKINCOLOR_BROWN
SKINCOLOR_SEPIA,8, // 25 // SKINCOLOR_LEATHER
SKINCOLOR_SLATE,8, // 26 // SKINCOLOR_PEACH
SKINCOLOR_TEAL,8, // 27 // SKINCOLOR_CARAMEL
SKINCOLOR_LIME,8, // 28 // SKINCOLOR_TANGERINE
SKINCOLOR_LAVENDER,6, // 29 // SKINCOLOR_GOLD
SKINCOLOR_ROBOHOOD,8, // 30 // SKINCOLOR_VOMIT
SKINCOLOR_BYZANTIUM,8, // 31 // SKINCOLOR_YELLOW
SKINCOLOR_PURPLE,8, // 32 // SKINCOLOR_CANARY
SKINCOLOR_INDIGO,8, // 33 // SKINCOLOR_OLIVE
SKINCOLOR_AQUA,8, // 34 // SKINCOLOR_GARDEN
SKINCOLOR_TANGERINE,8, // 35 // SKINCOLOR_LIME
SKINCOLOR_SALMON,8, // 36 // SKINCOLOR_TEA
SKINCOLOR_PINK,6, // 37 // SKINCOLOR_ARMY
SKINCOLOR_CYAN,8, // 38 // SKINCOLOR_PISTACHIO
SKINCOLOR_ROSE,8, // 39 // SKINCOLOR_MOSS
SKINCOLOR_RASPBERRY,6, // 40 // SKINCOLOR_MINT
SKINCOLOR_RED,8, // 41 // SKINCOLOR_GREEN
SKINCOLOR_VOMIT,8, // 42 // SKINCOLOR_ROBOHOOD
SKINCOLOR_CRIMSON,8, // 43 // SKINCOLOR_PINETREE
SKINCOLOR_RUBY,8, // 44 // SKINCOLOR_EMERALD
SKINCOLOR_SAPPHIRE,8, // 45 // SKINCOLOR_SWAMP
SKINCOLOR_GARDEN,10, // 46 // SKINCOLOR_AQUA
SKINCOLOR_CARAMEL,8, // 47 // SKINCOLOR_TEAL
SKINCOLOR_PISTACHIO,6, // 48 // SKINCOLOR_CYAN
SKINCOLOR_LILAC,8, // 49 // SKINCOLOR_CERULEAN
SKINCOLOR_PEACH,8, // 50 // SKINCOLOR_SLATE
SKINCOLOR_BRONZE,10, // 51 // SKINCOLOR_STEEL
SKINCOLOR_CREAMSICLE,8, // 52 // SKINCOLOR_PERIWINKLE
SKINCOLOR_ORANGE,8, // 53 // SKINCOLOR_BLUE
SKINCOLOR_SWAMP,8, // 54 // SKINCOLOR_SAPPHIRE
SKINCOLOR_PUMPKIN,8, // 55 // SKINCOLOR_BLUEBERRY
SKINCOLOR_ROSEWOOD,8, // 56 // SKINCOLOR_NAVY
SKINCOLOR_BURGUNDY,6, // 57 // SKINCOLOR_JET
SKINCOLOR_DAWN,8, // 58 // SKINCOLOR_DUSK
SKINCOLOR_CANARY,8, // 59 // SKINCOLOR_PURPLE
SKINCOLOR_GOLD,10, // 60 // SKINCOLOR_LAVENDER
SKINCOLOR_OLIVE,8, // 61 // SKINCOLOR_INDIGO
SKINCOLOR_YELLOW,8, // 62 // SKINCOLOR_BYZANTIUM
SKINCOLOR_CERULEAN,8 // 63 // SKINCOLOR_LILAC
SKINCOLOR_NONE,8, // 00 // SKINCOLOR_NONE
SKINCOLOR_BLACK,8, // 01 // SKINCOLOR_WHITE
SKINCOLOR_NICKEL,8, // 02 // SKINCOLOR_SILVER
SKINCOLOR_GREY,8, // 03 // SKINCOLOR_GREY
SKINCOLOR_SILVER,8, // 04 // SKINCOLOR_NICKEL
SKINCOLOR_WHITE,8, // 05 // SKINCOLOR_BLACK
SKINCOLOR_LEATHER,6, // 06 // SKINCOLOR_SEPIA
SKINCOLOR_BROWN,2, // 07 // SKINCOLOR_BEIGE
SKINCOLOR_BEIGE,8, // 08 // SKINCOLOR_BROWN
SKINCOLOR_SEPIA,8, // 09 // SKINCOLOR_LEATHER
SKINCOLOR_TEA,8, // 10 // SKINCOLOR_SALMON
SKINCOLOR_PISTACHIO,8, // 11 // SKINCOLOR_PINK
SKINCOLOR_MOSS,8, // 12 // SKINCOLOR_ROSE
SKINCOLOR_MINT,10, // 13 // SKINCOLOR_RASPBERRY
SKINCOLOR_GREEN,8, // 14 // SKINCOLOR_RED
SKINCOLOR_SAPPHIRE,8, // 15 // SKINCOLOR_RUBY
SKINCOLOR_PINETREE,6, // 16 // SKINCOLOR_CRIMSON
SKINCOLOR_MUSTARD,6, // 17 // SKINCOLOR_KETCHUP
SKINCOLOR_DUSK,8, // 18 // SKINCOLOR_DAWN
SKINCOLOR_PERIWINKLE,8, // 19 // SKINCOLOR_CREAMSICLE
SKINCOLOR_BLUE,8, // 20 // SKINCOLOR_ORANGE
SKINCOLOR_BLUEBERRY,8, // 21 // SKINCOLOR_PUMPKIN
SKINCOLOR_NAVY,8, // 22 // SKINCOLOR_ROSEWOOD
SKINCOLOR_JET,6, // 23 // SKINCOLOR_BURGUNDY
SKINCOLOR_LIME,8, // 24 // SKINCOLOR_TANGERINE
SKINCOLOR_CYAN,8, // 25 // SKINCOLOR_PEACH
SKINCOLOR_CERULEAN,8, // 26 // SKINCOLOR_CARAMEL
SKINCOLOR_SLATE,8, // 27 // SKINCOLOR_GOLD
SKINCOLOR_STEEL,8, // 28 // SKINCOLOR_BRONZE
SKINCOLOR_AQUA,8, // 29 // SKINCOLOR_YELLOW
SKINCOLOR_KETCHUP,8, // 30 // SKINCOLOR_MUSTARD
SKINCOLOR_TEAL,8, // 31 // SKINCOLOR_OLIVE
SKINCOLOR_ROBOHOOD,8, // 32 // SKINCOLOR_VOMIT
SKINCOLOR_LAVENDER,8, // 33 // SKINCOLOR_GARDEN
SKINCOLOR_TANGERINE,8, // 34 // SKINCOLOR_LIME
SKINCOLOR_POMEGRANATE,8, // 35 // SKINCOLOR_DREAM
SKINCOLOR_SALMON,8, // 36 // SKINCOLOR_TEA
SKINCOLOR_PINK,8, // 37 // SKINCOLOR_PISTACHIO
SKINCOLOR_VOMIT,8, // 38 // SKINCOLOR_ROBOHOOD
SKINCOLOR_ROSE,8, // 39 // SKINCOLOR_MOSS
SKINCOLOR_RASPBERRY,6, // 40 // SKINCOLOR_MINT
SKINCOLOR_RED,8, // 41 // SKINCOLOR_GREEN
SKINCOLOR_CRIMSON,8, // 42 // SKINCOLOR_PINETREE
SKINCOLOR_PURPLE,8, // 43 // SKINCOLOR_EMERALD
SKINCOLOR_BYZANTIUM,6, // 44 // SKINCOLOR_SWAMP
SKINCOLOR_YELLOW,8, // 45 // SKINCOLOR_AQUA
SKINCOLOR_OLIVE,8, // 46 // SKINCOLOR_TEAL
SKINCOLOR_PEACH,8, // 47 // SKINCOLOR_CYAN
SKINCOLOR_LILAC,6, // 48 // SKINCOLOR_JAWZ
SKINCOLOR_CARAMEL,8, // 49 // SKINCOLOR_CERULEAN
SKINCOLOR_ROSEWOOD,8, // 50 // SKINCOLOR_NAVY
SKINCOLOR_GOLD,8, // 51 // SKINCOLOR_SLATE
SKINCOLOR_BRONZE,8, // 52 // SKINCOLOR_STEEL
SKINCOLOR_BURGUNDY,6, // 53 // SKINCOLOR_JET
SKINCOLOR_CREAMSICLE,8, // 54 // SKINCOLOR_PERIWINKLE
SKINCOLOR_ORANGE,8, // 55 // SKINCOLOR_BLUE
SKINCOLOR_RUBY,8, // 56 // SKINCOLOR_SAPPHIRE
SKINCOLOR_PUMPKIN,8, // 57 // SKINCOLOR_BLUEBERRY
SKINCOLOR_DAWN,8, // 58 // SKINCOLOR_DUSK
SKINCOLOR_EMERALD,8, // 59 // SKINCOLOR_PURPLE
SKINCOLOR_GARDEN,8, // 60 // SKINCOLOR_LAVENDER
SKINCOLOR_SWAMP,8, // 61 // SKINCOLOR_BYZANTIUM
SKINCOLOR_DREAM,6, // 62 // SKINCOLOR_POMEGRANATE
SKINCOLOR_JAWZ,6 // 63 // SKINCOLOR_LILAC
};
UINT8 colortranslations[MAXSKINCOLORS][16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SKINCOLOR_NONE
{120, 120, 120, 120, 0, 1, 3, 4, 6, 7, 10, 14, 18, 22, 25, 28}, // SKINCOLOR_IVORY
{120, 120, 0, 1, 3, 4, 6, 7, 9, 11, 13, 16, 19, 23, 26, 29}, // SKINCOLOR_WHITE
{ 0, 1, 3, 5, 6, 8, 10, 11, 13, 15, 16, 18, 20, 24, 27, 30}, // SKINCOLOR_SILVER
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_CLOUDY
{ 8, 9, 10, 12, 13, 15, 16, 19, 19, 20, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY
{ 16, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31}, // SKINCOLOR_NICKEL
{120, 120, 120, 120, 0, 1, 3, 4, 6, 7, 10, 14, 18, 22, 25, 28}, // SKINCOLOR_WHITE
{ 0, 1, 2, 4, 5, 7, 8, 10, 13, 15, 18, 20, 23, 25, 28, 30}, // SKINCOLOR_SILVER
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY
{ 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, // SKINCOLOR_NICKEL
{ 16, 17, 19, 21, 22, 24, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK
{ 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA
{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}, // SKINCOLOR_BEIGE
{ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}, // SKINCOLOR_BROWN
{ 51, 52, 53, 55, 56, 57, 58, 60, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER
{120, 120, 120, 121, 121, 122, 122, 123, 124, 125, 126, 128, 129, 131, 133, 135}, // SKINCOLOR_SALMON
{121, 121, 121, 121, 121, 122, 144, 145, 146, 147, 148, 149, 150, 150, 150, 151}, // SKINCOLOR_PINK
{121, 121, 144, 144, 145, 145, 146, 146, 147, 148, 149, 150, 151, 134, 136, 138}, // SKINCOLOR_PINK
{144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE
{120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 133, 134, 136, 137, 139}, // SKINCOLOR_RASPBERRY
{125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140}, // SKINCOLOR_RED
{120, 121, 144, 146, 149, 132, 132, 133, 134, 135, 197, 197, 198, 198, 199, 255}, // SKINCOLOR_RUBY
{121, 122, 145, 146, 147, 149, 131, 132, 133, 134, 135, 197, 197, 198, 199, 255}, // SKINCOLOR_RUBY
{130, 131, 132, 133, 134, 136, 137, 138, 139, 139, 140, 140, 141, 141, 142, 143}, // SKINCOLOR_CRIMSON
{104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP
{120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN
{120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE
{ 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 94, 95, 154, 156, 158, 159}, // SKINCOLOR_ORANGE
{ 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_PUMPKIN
{ 90, 91, 92, 93, 94, 152, 153, 154, 155, 156, 157, 158, 159, 139, 141, 143}, // SKINCOLOR_ROSEWOOD
{ 94, 95, 152, 153, 154, 156, 157, 159, 141, 141, 141, 142, 142, 143, 143, 31}, // SKINCOLOR_BURGUNDY
{112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE
{ 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA
{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}, // SKINCOLOR_BEIGE
{ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}, // SKINCOLOR_BROWN
{ 51, 52, 53, 55, 56, 57, 58, 60, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER
{ 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE
{ 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 48, 50, 53, 56, 59}, // SKINCOLOR_PEACH
{ 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL
{ 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE
{112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD
{121, 144, 145, 72, 73, 84, 114, 115, 107, 108, 109, 183, 223, 207, 30, 246}, // SKINCOLOR_VOMIT
{112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE
{ 96, 97, 98, 100, 101, 102, 104, 113, 114, 115, 116, 117, 118, 119, 156, 159}, // SKINCOLOR_YELLOW
{ 96, 97, 99, 100, 102, 104, 105, 105, 106, 107, 107, 108, 109, 109, 110, 111}, // SKINCOLOR_CANARY
{ 96, 98, 99, 112, 113, 114, 114, 106, 106, 107, 107, 108, 108, 109, 110, 111}, // SKINCOLOR_MUSTARD
{105, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 31}, // SKINCOLOR_OLIVE
{121, 144, 145, 72, 73, 84, 114, 115, 107, 108, 109, 183, 223, 207, 30, 246}, // SKINCOLOR_VOMIT
{ 98, 99, 112, 101, 113, 114, 106, 179, 180, 180, 181, 182, 183, 173, 174, 175}, // SKINCOLOR_GARDEN
{ 96, 97, 99, 100, 102, 104, 160, 162, 164, 166, 168, 171, 223, 223, 207, 31}, // SKINCOLOR_LIME
{120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 180, 180, 181, 181, 182, 183}, // SKINCOLOR_TEA
{176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 181, 182, 182, 183}, // SKINCOLOR_ARMY
{120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM
{120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA
{120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO
{176, 176, 177, 178, 165, 166, 167, 167, 168, 169, 182, 182, 182, 183, 183, 183}, // SKINCOLOR_ROBOHOOD
{178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS
{120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT
{160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN
{176, 176, 177, 178, 165, 166, 167, 167, 168, 169, 182, 182, 182, 183, 183, 183}, // SKINCOLOR_ROBOHOOD
{160, 161, 162, 164, 165, 167, 169, 170, 171, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_PINETREE
{160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD
{186, 187, 188, 188, 188, 189, 189, 190, 190, 191, 175, 175, 30, 30, 31, 31}, // SKINCOLOR_SWAMP
{120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA
{210, 213, 220, 220, 220, 221, 221, 221, 221, 222, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL
{120, 208, 209, 210, 211, 212, 213, 215, 216, 216, 216, 217, 217, 218, 218, 219}, // SKINCOLOR_CYAN
{210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL
{120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN
{120, 120, 208, 209, 210, 226, 215, 216, 217, 229, 229, 205, 205, 206, 207, 31}, // SKINCOLOR_JAWZ
{208, 209, 211, 213, 215, 216, 216, 217, 217, 218, 218, 219, 205, 206, 207, 207}, // SKINCOLOR_CERULEAN
{215, 215, 215, 216, 216, 217, 218, 204, 204, 205, 205, 206, 207, 29, 30, 31}, // SKINCOLOR_NAVY
{120, 120, 200, 200, 200, 201, 201, 201, 202, 202, 202, 203, 204, 205, 206, 207}, // SKINCOLOR_SLATE
{120, 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 207, 31}, // SKINCOLOR_STEEL
{200, 201, 202, 203, 204, 205, 206, 207, 28, 28, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_JET
{120, 224, 225, 226, 226, 227, 228, 228, 229, 230, 231, 234, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE
{224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239}, // SKINCOLOR_BLUE
{208, 209, 211, 213, 215, 217, 229, 230, 232, 234, 236, 238, 240, 242, 244, 246}, // SKINCOLOR_SAPPHIRE
{228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 245}, // SKINCOLOR_BLUEBERRY
{215, 216, 217, 218, 204, 205, 206, 237, 238, 239, 240, 241, 242, 243, 244, 245}, // SKINCOLOR_NAVY
{200, 201, 202, 203, 204, 205, 206, 207, 28, 28, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_JET
{192, 192, 248, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK
{192, 192, 192, 193, 193, 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 199}, // SKINCOLOR_PURPLE
{248, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255}, // SKINCOLOR_LAVENDER
{192, 193, 194, 195, 196, 197, 198, 199, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_INDIGO
{192, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM
{144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE
{120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC
/* Removed Colours
{120, 121, 123, 124, 126, 127, 129, 130, 132, 133, 135, 136, 138, 139, 141, 143}, // SKINCOLOR_RUBY, removed for other colors
{120, 121, 123, 124, 126, 127, 129, 130, 132, 133, 135, 136, 138, 139, 141, 143}, // old SKINCOLOR_RUBY, removed for other colors
{224, 225, 226, 228, 229, 231, 232, 234, 235, 237, 238, 240, 241, 243, 244, 246}, // old SKINCOLOR_SAPPHIRE, removed for other colors
{ 72, 73, 74, 75, 76, 77, 78, 79, 48, 49, 50, 51, 52, 53, 54, 55}, // old SKINCOLOR_CARAMEL, new Caramel was previously Shiny Caramel
{215, 216, 217, 218, 204, 205, 206, 237, 238, 239, 240, 241, 242, 243, 244, 245}, // old SKINCOLOR_NAVY, too similar to Jet
{ 80, 81, 83, 85, 86, 88, 90, 91, 93, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_AMBER, removed for other colors
{224, 225, 226, 228, 229, 231, 232, 234, 235, 237, 238, 240, 241, 243, 244, 246}, // SKINCOLOR_SAPPHIRE, removed for other colors
{160, 160, 160, 184, 184, 184, 185, 185, 185, 186, 187, 187, 188, 188, 189, 190}, // SKINCOLOR_JADE, removed for other colors
{224, 225, 226, 212, 213, 213, 214, 215, 220, 221, 172, 222, 173, 223, 174, 175}, // SKINCOLOR_FROST, merged into Aqua
{ 72, 73, 74, 75, 76, 77, 78, 79, 48, 49, 50, 51, 52, 53, 54, 55}, // SKINCOLOR_CARAMEL, new Caramel was previously Shiny Caramel
{ 96, 97, 99, 100, 102, 104, 105, 105, 106, 107, 107, 108, 109, 109, 110, 111}, // SKINCOLOR_CANARY, replaced with Mustard
{192, 193, 194, 195, 196, 197, 198, 199, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_INDIGO, too similar to Byzantium
{ 1, 145, 125, 73, 83, 114, 106, 180, 187, 168, 219, 205, 236, 206, 199, 255}, // SKINCOLOR_RAINBOW, is Vomit 2.0
*/
};
//#define SALLYALTRAINBOW // Sal's edited version of the below, which keeps a colors' lightness, and looks better with hue-shifted colors like Ruby & Dream. Not strictly *better*, just different...
// Define for getting accurate color brightness readings according to how the human eye sees them.
// https://en.wikipedia.org/wiki/Relative_luminance
// 0.2126 to red
// 0.7152 to green
// 0.0722 to blue
// (See this same define in hw_md2.c!)
#define SETBRIGHTNESS(brightness,r,g,b) \
brightness = (UINT8)(((1063*((UINT16)r)/5000) + (3576*((UINT16)g)/5000) + (361*((UINT16)b)/5000)) / 3)
/** \brief Generates the rainbow colourmaps that are used when a player has the invincibility power
\param dest_colormap colormap to populate
@ -260,10 +274,12 @@ UINT8 colortranslations[MAXSKINCOLORS][16] = {
*/
void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor)
{
INT32 i, j;
INT32 i;
RGBA_t color;
UINT8 colorbrightnesses[16];
UINT8 brightness;
#ifndef SALLYALTRAINBOW
INT32 j;
UINT8 colorbrightnesses[16];
UINT16 brightdif;
INT32 temp;
@ -271,8 +287,9 @@ void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor)
for (i = 0; i < 16; i++)
{
color = V_GetColor(colortranslations[skincolor][i]);
colorbrightnesses[i] = (UINT8)(((UINT16)color.s.red + (UINT16)color.s.green + (UINT16)color.s.blue)/3);
SETBRIGHTNESS(colorbrightnesses[i], color.s.red, color.s.green, color.s.blue);
}
#endif
// next, for every colour in the palette, choose the transcolor that has the closest brightness
for (i = 0; i < NUM_PALETTE_ENTRIES; i++)
@ -283,7 +300,11 @@ void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor)
continue;
}
color = V_GetColor(i);
brightness = (UINT8)(((UINT16)color.s.red + (UINT16)color.s.green + (UINT16)color.s.blue)/3);
SETBRIGHTNESS(brightness, color.s.red, color.s.green, color.s.blue);
#ifdef SALLYALTRAINBOW
brightness = 15-(brightness/16); // Yes, 15.
dest_colormap[i] = colortranslations[skincolor][brightness];
#else
brightdif = 256;
for (j = 0; j < 16; j++)
{
@ -294,9 +315,12 @@ void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor)
dest_colormap[i] = colortranslations[skincolor][j];
}
}
#endif
}
}
#undef SETBRIGHTNESS
/** \brief Generates a translation colormap for Kart, to replace R_GenerateTranslationColormap in r_draw.c
\param dest_colormap colormap to populate
@ -2220,6 +2244,88 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle
return NULL;
}
static void K_SpawnDriftSparks(player_t *player)
{
fixed_t newx;
fixed_t newy;
mobj_t *spark;
angle_t travelangle;
INT32 i;
I_Assert(player != NULL);
I_Assert(player->mo != NULL);
I_Assert(!P_MobjWasRemoved(player->mo));
if (leveltime % 2 == 1)
return;
if (!P_IsObjectOnGround(player->mo))
return;
if (!player->kartstuff[k_drift] || player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player))
return;
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
for (i = 0; i < 2; i++)
{
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
P_SetTarget(&spark->target, player->mo);
spark->angle = travelangle-(ANGLE_45/5)*player->kartstuff[k_drift];
spark->destscale = player->mo->scale;
P_SetScale(spark, player->mo->scale);
spark->momx = player->mo->momx/2;
spark->momy = player->mo->momy/2;
//spark->momz = player->mo->momz/2;
if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*4)
{
spark->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
}
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*2)
{
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(24*3))
spark->color = SKINCOLOR_RASPBERRY; // transition
else
spark->color = SKINCOLOR_KETCHUP;
}
else
spark->color = SKINCOLOR_SAPPHIRE;
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn < 0))
{
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
P_SetMobjState(spark, S_DRIFTSPARK_A1);
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
P_SetMobjState(spark, S_DRIFTSPARK_C1);
}
else if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn < 0) // Outward drifts
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn > 0))
{
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
P_SetMobjState(spark, S_DRIFTSPARK_C1);
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
P_SetMobjState(spark, S_DRIFTSPARK_A1);
}
spark->flags2 = (spark->flags2 & ~MF2_DONTDRAW)|(player->mo->eflags & MF2_DONTDRAW);
spark->eflags = (spark->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP1)|(player->mo->eflags & MFE_DRAWONLYFORP1);
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP2)|(player->mo->eflags & MFE_DRAWONLYFORP2);
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP3)|(player->mo->eflags & MFE_DRAWONLYFORP3);
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP4)|(player->mo->eflags & MFE_DRAWONLYFORP4);
}
}
void K_SpawnBoostTrail(player_t *player)
{
fixed_t newx;
@ -3240,6 +3346,19 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_UpdateOffroad(player);
K_GetKartBoostPower(player);
// Speed lines
if ((player->kartstuff[k_sneakertimer] || player->kartstuff[k_driftboost] || player->kartstuff[k_startboost]) && player->speed > 0)
{
mobj_t *fast = P_SpawnMobj(player->mo->x + (P_RandomRange(-36,36)<<FRACBITS),
player->mo->y + (P_RandomRange(-36,36)<<FRACBITS),
player->mo->z + (player->mo->height/2) + (P_RandomRange(-20,20)<<FRACBITS),
MT_FASTLINE);
fast->angle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
fast->momx = 3*player->mo->momx/4;
fast->momy = 3*player->mo->momy/4;
fast->momz = 3*player->mo->momz/4;
}
if (player->kartstuff[k_eggmanexplode]) // You're gonna diiiiie
{
const INT32 flashtime = 4<<(player->kartstuff[k_eggmanexplode]/TICRATE);
@ -3678,6 +3797,7 @@ static void K_KartDrift(player_t *player, boolean onground)
{
fixed_t dsone = K_GetKartDriftSparkValue(player);
fixed_t dstwo = dsone*2;
fixed_t dsthree = dstwo*2;
// Drifting is actually straffing + automatic turning.
// Holding the Jump button will enable drifting.
@ -3701,13 +3821,22 @@ static void K_KartDrift(player_t *player, boolean onground)
}
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
&& player->kartstuff[k_driftcharge] >= dstwo
&& player->kartstuff[k_driftcharge] < dsthree
&& onground)
{
player->kartstuff[k_driftboost] = 50;
S_StartSound(player->mo, sfx_s23c);
player->kartstuff[k_driftcharge] = 0;
}
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
&& player->kartstuff[k_driftcharge] >= dsthree
&& onground)
{
player->kartstuff[k_driftboost] = 125;
S_StartSound(player->mo, sfx_s23c);
player->kartstuff[k_driftcharge] = 0;
}
// Drifting: left or right?
if ((player->cmd.driftturn > 0) && player->speed > FixedMul(10<<16, player->mo->scale) && player->kartstuff[k_jmp] == 1
@ -3772,8 +3901,8 @@ static void K_KartDrift(player_t *player, boolean onground)
}
// This spawns the drift sparks
if (player->kartstuff[k_driftcharge] < dsone && player->kartstuff[k_driftcharge] + driftadditive >= dsone)
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFT)->target = player->mo;
if (player->kartstuff[k_driftcharge] + driftadditive >= dsone)
K_SpawnDriftSparks(player);
player->kartstuff[k_driftcharge] += driftadditive;
player->kartstuff[k_driftend] = 0;
@ -6484,6 +6613,7 @@ static void K_drawKartFirstPerson(void)
{
fixed_t dsone = K_GetKartDriftSparkValue(stplyr);
fixed_t dstwo = dsone*2;
fixed_t dsthree = dstwo*2;
#ifndef DONTLIKETOASTERSFPTWEAKS
{
@ -6522,8 +6652,10 @@ static void K_drawKartFirstPerson(void)
}
// drift sparks!
if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dstwo))
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_TANGERINE, 0);
if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsthree))
colmap = R_GetTranslationColormap(TC_RAINBOW, (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))), 0);
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dstwo))
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_KETCHUP, 0);
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsone))
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_SAPPHIRE, 0);
else

View File

@ -2752,10 +2752,9 @@ boolean M_Responder(event_t *ev)
}
// Why _does_ backspace go back anyway?
// Sal: Because it supports gamepads better. And still makes sense for keyboard.
currentMenu->lastOn = itemOn;
if (currentMenu->prevMenu)
M_SetupNextMenu(currentMenu->prevMenu);
//currentMenu->lastOn = itemOn;
//if (currentMenu->prevMenu)
// M_SetupNextMenu(currentMenu->prevMenu);
return false;
default:

View File

@ -1749,7 +1749,6 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
str = M_GetText("%s%s's tagging hand %s %s.\n");
break;
case MT_SPINFIRE:
case MT_SNEAKERTRAIL:
str = M_GetText("%s%s's elemental fire trail %s %s.\n");
break;
case MT_THROWNBOUNCE:

View File

@ -188,7 +188,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
P_InstaThrustEvenIn2D(object, spring->angle, FixedMul(horizspeed,FixedSqrt(FixedMul(hscale, spring->scale))));
else
{
fixed_t finalSpeed = horizspeed;
fixed_t finalSpeed = FixedDiv(horizspeed, hscale);
fixed_t pSpeed = object->player->speed;
if (pSpeed > finalSpeed)

View File

@ -6614,110 +6614,6 @@ void P_MobjThinker(mobj_t *mobj)
return;
break;
//{ SRB2kart mobs
case MT_DRIFT:
{
if (mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
{
fixed_t HEIGHT;
fixed_t radius;
fixed_t dsone = K_GetKartDriftSparkValue(mobj->target->player);
fixed_t dstwo = dsone*2;
if (mobj->target->player->kartstuff[k_driftcharge] < dsone)
{
P_RemoveMobj(mobj);
return;
}
if (mobj->target->player->kartstuff[k_hyudorotimer] > 0)
{
if (splitscreen)
{
if (leveltime & 1)
mobj->flags2 |= MF2_DONTDRAW;
else
mobj->flags2 &= ~MF2_DONTDRAW;
if (mobj->target->player->kartstuff[k_hyudorotimer] >= (1*TICRATE/2) && mobj->target->player->kartstuff[k_hyudorotimer] <= hyudorotime-(1*TICRATE/2))
{
if (mobj->target->player == &players[secondarydisplayplayer])
mobj->eflags |= MFE_DRAWONLYFORP2;
else if (mobj->target->player == &players[thirddisplayplayer] && splitscreen > 1)
mobj->eflags |= MFE_DRAWONLYFORP3;
else if (mobj->target->player == &players[fourthdisplayplayer] && splitscreen > 2)
mobj->eflags |= MFE_DRAWONLYFORP4;
else
mobj->eflags |= MFE_DRAWONLYFORP1;
}
else
mobj->eflags &= ~(MFE_DRAWONLYFORP1|MFE_DRAWONLYFORP2|MFE_DRAWONLYFORP3|MFE_DRAWONLYFORP4);
}
else
{
if (mobj->target->player == &players[displayplayer]
|| (mobj->target->player != &players[displayplayer]
&& (mobj->target->player->kartstuff[k_hyudorotimer] < (1*TICRATE/2) || mobj->target->player->kartstuff[k_hyudorotimer] > hyudorotime-(1*TICRATE/2))))
{
if (leveltime & 1)
mobj->flags2 |= MF2_DONTDRAW;
else
mobj->flags2 &= ~MF2_DONTDRAW;
}
else
mobj->flags2 |= MF2_DONTDRAW;
}
}
else if (mobj->target->player->kartstuff[k_hyudorotimer] == 0)
{
mobj->flags2 &= ~MF2_DONTDRAW;
mobj->eflags &= ~(MFE_DRAWONLYFORP1|MFE_DRAWONLYFORP2|MFE_DRAWONLYFORP3|MFE_DRAWONLYFORP4);
}
// Actor's distance from its Target, or Radius.
radius = 7*mobj->target->scale;
// Switch blue flames to red flames
if (mobj->target->player && mobj->type == MT_DRIFT
&& mobj->target->player->kartstuff[k_driftcharge] >= dstwo
&& !(mobj->state >= &states[S_DRIFTSPARK4] && mobj->state <= &states[S_DRIFTSPARK6]))
P_SetMobjStateNF(mobj, S_DRIFTSPARK4);
// Get the angle
if (mobj->target->player)
mobj->angle = ANGLE_180 + mobj->target->player->frameangle;
// If the player is on the ceiling, then flip
if (mobj->target->eflags & MFE_VERTICALFLIP)
{
mobj->eflags |= MFE_VERTICALFLIP;
HEIGHT = (16<<FRACBITS);
}
else
{
mobj->eflags &= ~MFE_VERTICALFLIP;
HEIGHT = 0;
}
// Shrink if the player shrunk too.
mobj->scale = mobj->target->scale;
P_UnsetThingPosition(mobj);
{
const angle_t fa = mobj->angle>>ANGLETOFINESHIFT;
mobj->x = mobj->target->x + FixedMul(finecosine[fa],radius);
mobj->y = mobj->target->y + FixedMul(finesine[fa],radius);
mobj->z = mobj->target->z - HEIGHT;
P_SetThingPosition(mobj);
}
}
else
{
P_RemoveMobj(mobj);
return;
}
break;
}
case MT_ORBINAUT_SHIELD: // Kart orbit/trail items
case MT_JAWZ_SHIELD:
case MT_BANANA_SHIELD:

View File

@ -782,7 +782,12 @@ static size_t W_RawReadLumpHeader(UINT16 wad, UINT16 lump, void *dest, size_t si
&& sigcheck[5] == 0x0a
&& sigcheck[6] == 0x1a
&& sigcheck[7] == 0x0a)
I_Error("W_Wad: Tried to cache a .PNG - have you tried converting to Doom or Flat (raw) image formats?");
{
char pnglump[9];
strncpy(pnglump, l->name, 8);
pnglump[8] = '\0';
I_Error("W_Wad: Lump \"%s\" is a .PNG - have you tried converting to Doom or Flat (raw) image formats?", pnglump);
}
#undef sigcheck
#endif