Replace colour IDs with an enum

Entity colors are just integers. Their colour ID gets passed through a
big switch, returning different RGB values depending on the colour ID
(and can also get affected by randomness or other game state.)

But because of this, there's a bunch of random numbers floating around,
with no actual description on what they are other than comments which,
while most of the time are accurate, only exist in the switch.

To fix this, this commit adds a new enum which labels every colour.
While we can't use it as a type (as we need to allow colours outside of
what are defined, in case people want a "pure white", and scripting can
set any colour ID they want), colours have to stay as `int`.
This commit is contained in:
NyakoFox 2025-04-04 16:57:50 -03:00 committed by Ethan Lee
parent b8bcdf39df
commit 0e9c4f98a6
11 changed files with 286 additions and 254 deletions

View file

@ -18,7 +18,7 @@ void entclass::clear(void)
state = 0; state = 0;
statedelay = 0; statedelay = 0;
life = 0; life = 0;
colour = 0; colour = EntityColour_CREW_CYAN;
para = 0; para = 0;
behave = 0; behave = 0;
animate = 0; animate = 0;
@ -108,7 +108,7 @@ void entclass::setenemy( int t )
case 0: case 0:
tile = 60; tile = 60;
animate = 2; animate = 2;
colour = 6; colour = EntityColour_ENEMY_RED;
behave = 10; behave = 10;
w = 32; w = 32;
h = 32; h = 32;
@ -119,7 +119,7 @@ void entclass::setenemy( int t )
lerpoldyp += 10; lerpoldyp += 10;
tile = 63; tile = 63;
animate = 100; //LIES animate = 100; //LIES
colour = 6; colour = EntityColour_ENEMY_RED;
behave = 11; behave = 11;
para = 9; //destroyed when outside para = 9; //destroyed when outside
x1 = -200; x1 = -200;
@ -132,7 +132,7 @@ void entclass::setenemy( int t )
case 2: case 2:
tile = 62; tile = 62;
animate = 100; animate = 100;
colour = 6; colour = EntityColour_ENEMY_RED;
behave = -1; behave = -1;
w = 32; w = 32;
h = 32; h = 32;
@ -147,7 +147,7 @@ void entclass::setenemy( int t )
tile = 72; tile = 72;
animate = 3; animate = 3;
size = 9; size = 9;
colour = 6; colour = EntityColour_ENEMY_RED;
behave = 12; behave = 12;
w = 64; w = 64;
h = 40; h = 40;
@ -161,7 +161,7 @@ void entclass::setenemy( int t )
lerpoldyp -= 4; lerpoldyp -= 4;
tile = 76; tile = 76;
animate = 100; // Clouds animate = 100; // Clouds
colour = 6; colour = EntityColour_ENEMY_RED;
behave = 13; behave = 13;
para = -6; //destroyed when outside para = -6; //destroyed when outside
x2 = 400; x2 = 400;
@ -173,7 +173,7 @@ void entclass::setenemy( int t )
case 2: case 2:
tile = 77; tile = 77;
animate = 100; animate = 100;
colour = 6; colour = EntityColour_ENEMY_RED;
behave = -1; behave = -1;
w = 32; w = 32;
h = 16; h = 16;
@ -195,32 +195,32 @@ void entclass::setenemyroom( int rx, int ry )
//Space Station 1 //Space Station 1
case rn(12, 3): //Security Drone case rn(12, 3): //Security Drone
tile = 36; tile = 36;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 1; animate = 1;
break; break;
case rn(13, 3): //Wavelengths case rn(13, 3): //Wavelengths
tile = 32; tile = 32;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 32; w = 32;
break; break;
case rn(15, 3): //Traffic case rn(15, 3): //Traffic
tile = 28; tile = 28;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 1; animate = 1;
w = 22; w = 22;
h = 32; h = 32;
break; break;
case rn(12, 5): //The Yes Men case rn(12, 5): //The Yes Men
tile = 40; tile = 40;
colour = 9; colour = EntityColour_ENEMY_YELLOW;
animate = 1; animate = 1;
w = 20; w = 20;
h = 20; h = 20;
break; break;
case rn(13, 6): //Hunchbacked Guards case rn(13, 6): //Hunchbacked Guards
tile = 44; tile = 44;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 1; animate = 1;
w = 16; w = 16;
h = 20; h = 20;
@ -231,7 +231,7 @@ void entclass::setenemyroom( int rx, int ry )
{ {
//transmittor //transmittor
tile = 104; tile = 104;
colour = 4; colour = EntityColour_INACTIVE_ENTITY;
animate = 7; animate = 7;
w = 16; w = 16;
h = 16; h = 16;
@ -244,7 +244,7 @@ void entclass::setenemyroom( int rx, int ry )
{ {
//radar dish //radar dish
tile =124; tile =124;
colour = 4; colour = EntityColour_INACTIVE_ENTITY;
animate = 6; animate = 6;
w = 32; w = 32;
h = 32; h = 32;
@ -260,37 +260,37 @@ void entclass::setenemyroom( int rx, int ry )
//The Lab //The Lab
case rn(4, 0): case rn(4, 0):
tile = 78; tile = 78;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(2, 0): case rn(2, 0):
tile = 88; tile = 88;
colour = 11; colour = EntityColour_ENEMY_CYAN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
//Space Station 2 //Space Station 2
case rn(14, 11): case rn(14, 11):
colour = 17; colour = EntityColour_ENEMY_ORANGE;
break; //Lies break; //Lies
case rn(16, 11): case rn(16, 11):
colour = 8; colour = EntityColour_ENEMY_PINK;
break; //Lies break; //Lies
case rn(13, 10): case rn(13, 10):
colour = 11; colour = EntityColour_ENEMY_CYAN;
break; //Factory break; //Factory
case rn(13, 9): case rn(13, 9):
colour = 9; colour = EntityColour_ENEMY_YELLOW;
break; //Factory break; //Factory
case rn(13, 8): case rn(13, 8):
colour = 8; colour = EntityColour_ENEMY_PINK;
break; //Factory break; //Factory
case rn(11, 13): //Truth case rn(11, 13): //Truth
tile = 64; tile = 64;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 100; animate = 100;
w = 44; w = 44;
h = 10; h = 10;
@ -298,7 +298,7 @@ void entclass::setenemyroom( int rx, int ry )
break; break;
case rn(17, 7): //Brass sent us under the top case rn(17, 7): //Brass sent us under the top
tile =82; tile =82;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 5; animate = 5;
w = 28; w = 28;
h = 32; h = 32;
@ -306,42 +306,42 @@ void entclass::setenemyroom( int rx, int ry )
break; break;
case rn(10, 7): // (deception) case rn(10, 7): // (deception)
tile = 92; tile = 92;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(14, 13): // (chose poorly) case rn(14, 13): // (chose poorly)
tile = 56; tile = 56;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 1; animate = 1;
w = 15; w = 15;
h = 24; h = 24;
break; break;
case rn(13, 12): // (backsliders) case rn(13, 12): // (backsliders)
tile = 164; tile = 164;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(14, 8): // (wheel of fortune room) case rn(14, 8): // (wheel of fortune room)
tile = 116; tile = 116;
colour = 12; colour = EntityColour_ENEMY_BLUE;
animate = 1; animate = 1;
w = 32; w = 32;
h = 32; h = 32;
break; break;
case rn(16, 9): // (seeing dollar signs) case rn(16, 9): // (seeing dollar signs)
tile = 68; tile = 68;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(16, 7): // (tomb of mad carew) case rn(16, 7): // (tomb of mad carew)
tile = 106; tile = 106;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 2; animate = 2;
w = 24; w = 24;
h = 25; h = 25;
@ -349,7 +349,7 @@ void entclass::setenemyroom( int rx, int ry )
//Warp Zone //Warp Zone
case rn(15, 2): // (numbers) case rn(15, 2): // (numbers)
tile = 100; tile = 100;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 1; animate = 1;
w = 32; w = 32;
h = 14; h = 14;
@ -358,7 +358,7 @@ void entclass::setenemyroom( int rx, int ry )
break; break;
case rn(16, 2): // (Manequins) case rn(16, 2): // (Manequins)
tile = 52; tile = 52;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 5; animate = 5;
w = 16; w = 16;
h = 25; h = 25;
@ -367,28 +367,28 @@ void entclass::setenemyroom( int rx, int ry )
break; break;
case rn(18, 0): // (Obey) case rn(18, 0): // (Obey)
tile = 51; tile = 51;
colour = 11; colour = EntityColour_ENEMY_CYAN;
animate = 100; animate = 100;
w = 30; w = 30;
h = 14; h = 14;
break; break;
case rn(19, 1): // Ascending and Descending case rn(19, 1): // Ascending and Descending
tile = 48; tile = 48;
colour = 9; colour = EntityColour_ENEMY_YELLOW;
animate = 5; animate = 5;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(19, 2): // Shockwave Rider case rn(19, 2): // Shockwave Rider
tile = 176; tile = 176;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(18, 3): // Mind the gap case rn(18, 3): // Mind the gap
tile = 168; tile = 168;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
@ -397,7 +397,7 @@ void entclass::setenemyroom( int rx, int ry )
if (yp ==96) if (yp ==96)
{ {
tile = 160; tile = 160;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
@ -405,7 +405,7 @@ void entclass::setenemyroom( int rx, int ry )
else else
{ {
tile = 156; tile = 156;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
@ -413,14 +413,14 @@ void entclass::setenemyroom( int rx, int ry )
break; break;
case rn(16, 0): // I love you case rn(16, 0): // I love you
tile = 112; tile = 112;
colour = 8; colour = EntityColour_ENEMY_PINK;
animate = 5; animate = 5;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(14, 2): // That's why I have to kill you case rn(14, 2): // That's why I have to kill you
tile = 114; tile = 114;
colour = 6; colour = EntityColour_ENEMY_RED;
animate = 5; animate = 5;
w = 16; w = 16;
h = 16; h = 16;
@ -430,7 +430,7 @@ void entclass::setenemyroom( int rx, int ry )
if (xp ==88) if (xp ==88)
{ {
tile = 54+12; tile = 54+12;
colour = 12; colour = EntityColour_ENEMY_BLUE;
animate = 100; animate = 100;
w = 60; w = 60;
h = 16; h = 16;
@ -439,7 +439,7 @@ void entclass::setenemyroom( int rx, int ry )
else else
{ {
tile = 54; tile = 54;
colour = 12; colour = EntityColour_ENEMY_BLUE;
animate = 100; animate = 100;
w = 60; w = 60;
h = 16; h = 16;
@ -449,62 +449,62 @@ void entclass::setenemyroom( int rx, int ry )
//Final level //Final level
case rn(50-100, 53-100): //The Yes Men case rn(50-100, 53-100): //The Yes Men
tile = 40; tile = 40;
colour = 9; colour = EntityColour_ENEMY_YELLOW;
animate = 1; animate = 1;
w = 20; w = 20;
h = 20; h = 20;
break; break;
case rn(48-100, 51-100): //Wavelengths case rn(48-100, 51-100): //Wavelengths
tile = 32; tile = 32;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 32; w = 32;
break; break;
case rn(43-100,52-100): // Ascending and Descending case rn(43-100,52-100): // Ascending and Descending
tile = 48; tile = 48;
colour = 9; colour = EntityColour_ENEMY_YELLOW;
animate = 5; animate = 5;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(46-100,51-100): //kids his age case rn(46-100,51-100): //kids his age
tile = 88; tile = 88;
colour = 11; colour = EntityColour_ENEMY_CYAN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(43-100,51-100): // Mind the gap case rn(43-100,51-100): // Mind the gap
tile = 168; tile = 168;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(44-100,51-100): // vertigo? case rn(44-100,51-100): // vertigo?
tile = 172; tile = 172;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 100; animate = 100;
w = 32; w = 32;
h = 32; h = 32;
break; break;
case rn(44-100,52-100): // (backsliders) case rn(44-100,52-100): // (backsliders)
tile = 164; tile = 164;
colour = 7; colour = EntityColour_ENEMY_GREEN;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(43-100, 56-100): //Intermission 1 case rn(43-100, 56-100): //Intermission 1
tile = 88; tile = 88;
colour = 21; colour = EntityColour_ENEMY_GRAVITRON;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
break; break;
case rn(45-100, 56-100): //Intermission 1 case rn(45-100, 56-100): //Intermission 1
tile = 88; tile = 88;
colour = 21; colour = EntityColour_ENEMY_GRAVITRON;
animate = 1; animate = 1;
w = 16; w = 16;
h = 16; h = 16;
@ -515,7 +515,7 @@ void entclass::setenemyroom( int rx, int ry )
case rn(11, 8): case rn(11, 8):
case rn(12, 8): case rn(12, 8):
tile = 0; tile = 0;
colour = 102; colour = EntityColour_TELEPORTER_FLASHING;
animate = 0; animate = 0;
w = 464; w = 464;
h = 320; h = 320;

View file

@ -59,7 +59,8 @@ public:
int state, statedelay; int state, statedelay;
int behave, animate; int behave, animate;
float para; float para;
int life, colour; int life;
int colour; // As out-of-bounds colours are allowed, this should be an int instead of an EnemyColour.
//Position and velocity //Position and velocity
int oldxp, oldyp; int oldxp, oldyp;

View file

@ -109,13 +109,13 @@ void entityclass::resetallflags(void)
int entityclass::swncolour( int t ) int entityclass::swncolour( int t )
{ {
//given colour t, return colour in setcol //given colour t, return colour in setcol
if (t == 0) return 11; if (t == 0) return EntityColour_ENEMY_CYAN;
if (t == 1) return 6; if (t == 1) return EntityColour_ENEMY_RED;
if (t == 2) return 8; if (t == 2) return EntityColour_ENEMY_PINK;
if (t == 3) return 12; if (t == 3) return EntityColour_ENEMY_BLUE;
if (t == 4) return 9; if (t == 4) return EntityColour_ENEMY_YELLOW;
if (t == 5) return 7; if (t == 5) return EntityColour_ENEMY_GREEN;
return 0; return EntityColour_CREW_CYAN; // Fallback to color 0
} }
void entityclass::swnenemiescol( int t ) void entityclass::swnenemiescol( int t )
@ -1324,7 +1324,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
case 0: //Player case 0: //Player
entity.rule = 0; //Playable character entity.rule = 0; //Playable character
entity.tile = 0; entity.tile = 0;
entity.colour = 0; entity.colour = EntityColour_CREW_CYAN;
entity.cx = 6; entity.cx = 6;
entity.cy = 2; entity.cy = 2;
entity.w = 12; entity.w = 12;
@ -1357,7 +1357,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.harmful = true; entity.harmful = true;
entity.tile = 24; entity.tile = 24;
entity.animate = 0; entity.animate = 0;
entity.colour = 8; entity.colour = EntityColour_ENEMY_PINK;
entity.type = EntityType_MOVING; entity.type = EntityType_MOVING;
@ -1375,7 +1375,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
{ {
//MAVVERRRICK //MAVVERRRICK
entity.tile = 96; entity.tile = 96;
entity.colour = 6; entity.colour = EntityColour_ENEMY_RED;
entity.size = 9; entity.size = 9;
entity.w = 64; entity.w = 64;
entity.h = 44; entity.h = 44;
@ -1515,7 +1515,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
case 6: //Decorative particles case 6: //Decorative particles
entity.rule = 2; entity.rule = 2;
entity.type = EntityType_PARTICLE; //Particles entity.type = EntityType_PARTICLE; //Particles
entity.colour = 27; entity.colour = EntityColour_PARTICLE_RED;
entity.size = 3; entity.size = 3;
entity.vx = meta1; entity.vx = meta1;
entity.vy = meta2; entity.vy = meta2;
@ -1525,7 +1525,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
case 7: //Decorative particles case 7: //Decorative particles
entity.rule = 2; entity.rule = 2;
entity.type = EntityType_PARTICLE; //Particles entity.type = EntityType_PARTICLE; //Particles
entity.colour = 0; entity.colour = EntityColour_CREW_CYAN;
entity.size = 3; entity.size = 3;
entity.vx = meta1; entity.vx = meta1;
entity.vy = meta2; entity.vy = meta2;
@ -1536,7 +1536,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.rule = 3; entity.rule = 3;
entity.type = EntityType_COIN; entity.type = EntityType_COIN;
entity.size = 4; entity.size = 4;
entity.colour = 26; entity.colour = EntityColour_COIN;
entity.tile = 48; entity.tile = 48;
entity.w = 8; entity.w = 8;
entity.h = 8; entity.h = 8;
@ -1554,7 +1554,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 22; entity.tile = 22;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 3; entity.colour = EntityColour_TRINKET;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 100; entity.animate = 100;
@ -1569,14 +1569,14 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 20 + meta1; entity.tile = 20 + meta1;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 4; entity.colour = EntityColour_INACTIVE_ENTITY;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
if (game.savepoint == meta2) if (game.savepoint == meta2)
{ {
entity.colour = 5; entity.colour = EntityColour_ACTIVE_ENTITY;
entity.onentity = 0; entity.onentity = 0;
} }
@ -1590,7 +1590,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.type = EntityType_HORIZONTAL_GRAVITY_LINE; entity.type = EntityType_HORIZONTAL_GRAVITY_LINE;
entity.size = 5; entity.size = 5;
entity.life = 0; entity.life = 0;
entity.colour = 25; entity.colour = EntityColour_GRAVITY_LINE_ACTIVE;
entity.w = meta1; entity.w = meta1;
entity.h = 1; entity.h = 1;
entity.onentity = 1; entity.onentity = 1;
@ -1600,10 +1600,10 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.type = EntityType_VERTICAL_GRAVITY_LINE; entity.type = EntityType_VERTICAL_GRAVITY_LINE;
entity.size = 6; entity.size = 6;
entity.life = 0; entity.life = 0;
entity.colour = 25; entity.colour = EntityColour_GRAVITY_LINE_ACTIVE;
entity.w = 1; entity.w = 1;
entity.h = meta1; entity.h = meta1;
//entity.colour = 0; //entity.colour = EntityColour_CREW_CYAN;
entity.onentity = 1; entity.onentity = 1;
break; break;
case 13: //Warp token case 13: //Warp token
@ -1613,7 +1613,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 18; entity.tile = 18;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 10; entity.colour = EntityColour_WARP_TOKEN;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 2; entity.animate = 2;
//Added in port, hope it doesn't break anything //Added in port, hope it doesn't break anything
@ -1627,7 +1627,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 1; //inactive entity.tile = 1; //inactive
entity.w = 96; entity.w = 96;
entity.h = 96; entity.h = 96;
entity.colour = 100; entity.colour = EntityColour_TELEPORTER_INACTIVE;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
@ -1636,7 +1636,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.rule = 6; entity.rule = 6;
entity.type = EntityType_CREWMATE; //A special case! entity.type = EntityType_CREWMATE; //A special case!
entity.tile = 144; entity.tile = 144;
entity.colour = 13; //144 for sad :( entity.colour = EntityColour_CREW_GREEN; //144 for sad :(
entity.cx = 6; entity.cx = 6;
entity.cy = 2; entity.cy = 2;
entity.w = 12; entity.w = 12;
@ -1651,7 +1651,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.rule = 7; entity.rule = 7;
entity.type = EntityType_CREWMATE; //A special case! entity.type = EntityType_CREWMATE; //A special case!
entity.tile = 144+6; entity.tile = 144+6;
entity.colour = 14; //144 for sad (upside down+12):( entity.colour = EntityColour_CREW_YELLOW; //144 for sad (upside down+12):(
entity.cx = 6; entity.cx = 6;
entity.cy = 2; entity.cy = 2;
entity.w = 12; entity.w = 12;
@ -1666,7 +1666,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.rule = 6; entity.rule = 6;
entity.type = EntityType_CREWMATE; //A special case! entity.type = EntityType_CREWMATE; //A special case!
entity.tile = 144; entity.tile = 144;
entity.colour = 16; //144 for sad :( entity.colour = EntityColour_CREW_BLUE; //144 for sad :(
entity.cx = 6; entity.cx = 6;
entity.cy = 2; entity.cy = 2;
entity.w = 12; entity.w = 12;
@ -1710,7 +1710,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.rule = 6; entity.rule = 6;
entity.type = EntityType_CREWMATE; //A special case! entity.type = EntityType_CREWMATE; //A special case!
entity.tile = 0; entity.tile = 0;
entity.colour = 6; //54 for sad :( entity.colour = EntityColour_ENEMY_RED; //54 for sad :(
entity.cx = 6; entity.cx = 6;
entity.cy = 2; entity.cy = 2;
entity.w = 12; entity.w = 12;
@ -1728,7 +1728,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 16 + meta1; entity.tile = 16 + meta1;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 4; entity.colour = EntityColour_INACTIVE_ENTITY;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
@ -1740,7 +1740,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 16 + meta1; entity.tile = 16 + meta1;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 4; entity.colour = EntityColour_INACTIVE_ENTITY;
entity.onentity = 0; entity.onentity = 0;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
@ -1752,7 +1752,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 22; entity.tile = 22;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 3; entity.colour = EntityColour_TRINKET;
entity.onentity = 0; entity.onentity = 0;
entity.animate = 100; entity.animate = 100;
@ -1780,7 +1780,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
//initilise tiles here based on behavior //initilise tiles here based on behavior
entity.size = 12; //don't wrap around entity.size = 12; //don't wrap around
entity.colour = 21; entity.colour = EntityColour_ENEMY_GRAVITRON;
entity.tile = 78; //default case entity.tile = 78; //default case
entity.animate = 1; entity.animate = 1;
if (game.swngame == SWN_SUPERGRAVITRON) if (game.swngame == SWN_SUPERGRAVITRON)
@ -1838,7 +1838,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.size = 0; entity.size = 0;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 4; entity.colour = EntityColour_INACTIVE_ENTITY;
entity.onentity = 1; entity.onentity = 1;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
@ -1852,42 +1852,42 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.bestrank[TimeTrial_SPACESTATION1] >= 3) if (game.bestrank[TimeTrial_SPACESTATION1] >= 3)
{ {
entity.tile = 184 + meta1; entity.tile = 184 + meta1;
entity.colour = 31; entity.colour = EntityColour_TROPHY_SPACE_STATION_1;
} }
break; break;
case 2: case 2:
if (game.bestrank[TimeTrial_LABORATORY] >= 3) if (game.bestrank[TimeTrial_LABORATORY] >= 3)
{ {
entity.tile = 186 + meta1; entity.tile = 186 + meta1;
entity.colour = 35; entity.colour = EntityColour_TROPHY_LABORATORY;
} }
break; break;
case 3: case 3:
if (game.bestrank[TimeTrial_TOWER] >= 3) if (game.bestrank[TimeTrial_TOWER] >= 3)
{ {
entity.tile = 184 + meta1; entity.tile = 184 + meta1;
entity.colour = 33; entity.colour = EntityColour_TROPHY_TOWER;
} }
break; break;
case 4: case 4:
if (game.bestrank[TimeTrial_SPACESTATION2] >= 3) if (game.bestrank[TimeTrial_SPACESTATION2] >= 3)
{ {
entity.tile = 184 + meta1; entity.tile = 184 + meta1;
entity.colour = 32; entity.colour = EntityColour_TROPHY_SPACE_STATION_2;
} }
break; break;
case 5: case 5:
if (game.bestrank[TimeTrial_WARPZONE] >= 3) if (game.bestrank[TimeTrial_WARPZONE] >= 3)
{ {
entity.tile = 184 + meta1; entity.tile = 184 + meta1;
entity.colour = 34; entity.colour = EntityColour_TROPHY_WARP_ZONE;
} }
break; break;
case 6: case 6:
if (game.bestrank[TimeTrial_FINALLEVEL] >= 3) if (game.bestrank[TimeTrial_FINALLEVEL] >= 3)
{ {
entity.tile = 184 + meta1; entity.tile = 184 + meta1;
entity.colour = 30; entity.colour = EntityColour_TROPHY_FINAL_LEVEL;
} }
break; break;
@ -1895,7 +1895,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.unlock[UnlockTrophy_GAME_COMPLETE]) if (game.unlock[UnlockTrophy_GAME_COMPLETE])
{ {
entity.tile = 188 + meta1; entity.tile = 188 + meta1;
entity.colour = 37; entity.colour = EntityColour_TROPHY_GAME_COMPLETE;
entity.h += 3; entity.h += 3;
entity.yp -= 3; entity.yp -= 3;
} }
@ -1904,7 +1904,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.unlock[UnlockTrophy_FLIPMODE_COMPLETE]) if (game.unlock[UnlockTrophy_FLIPMODE_COMPLETE])
{ {
entity.tile = 188 + meta1; entity.tile = 188 + meta1;
entity.colour = 37; entity.colour = EntityColour_TROPHY_GAME_COMPLETE;
entity.h += 3; entity.h += 3;
} }
break; break;
@ -1915,7 +1915,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.bestgamedeaths <= 50) if (game.bestgamedeaths <= 50)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 40; entity.colour = EntityColour_TROPHY_FLASHY;
} }
} }
break; break;
@ -1925,7 +1925,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.bestgamedeaths <= 100) if (game.bestgamedeaths <= 100)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 36; entity.colour = EntityColour_TROPHY_GOLD;
} }
} }
break; break;
@ -1935,7 +1935,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.bestgamedeaths <= 250) if (game.bestgamedeaths <= 250)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 38; entity.colour = EntityColour_TROPHY_SILVER;
} }
} }
break; break;
@ -1945,7 +1945,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.bestgamedeaths <= 500) if (game.bestgamedeaths <= 500)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 39; entity.colour = EntityColour_TROPHY_BRONZE;
} }
} }
break; break;
@ -1954,42 +1954,42 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if(game.swnbestrank>=1) if(game.swnbestrank>=1)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 39; entity.colour = EntityColour_TROPHY_BRONZE;
} }
break; break;
case 14: case 14:
if(game.swnbestrank>=2) if(game.swnbestrank>=2)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 39; entity.colour = EntityColour_TROPHY_BRONZE;
} }
break; break;
case 15: case 15:
if(game.swnbestrank>=3) if(game.swnbestrank>=3)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 39; entity.colour = EntityColour_TROPHY_BRONZE;
} }
break; break;
case 16: case 16:
if(game.swnbestrank>=4) if(game.swnbestrank>=4)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 38; entity.colour = EntityColour_TROPHY_SILVER;
} }
break; break;
case 17: case 17:
if(game.swnbestrank>=5) if(game.swnbestrank>=5)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 36; entity.colour = EntityColour_TROPHY_GOLD;
} }
break; break;
case 18: case 18:
if(game.swnbestrank>=6) if(game.swnbestrank>=6)
{ {
entity.tile = 182 + meta1; entity.tile = 182 + meta1;
entity.colour = 40; entity.colour = EntityColour_TROPHY_FLASHY;
} }
break; break;
@ -1997,7 +1997,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
if (game.unlock[UnlockTrophy_NODEATHMODE_COMPLETE]) if (game.unlock[UnlockTrophy_NODEATHMODE_COMPLETE])
{ {
entity.tile = 3; entity.tile = 3;
entity.colour = 102; entity.colour = EntityColour_TELEPORTER_FLASHING;
entity.size = 13; entity.size = 13;
entity.xp -= 64; entity.xp -= 64;
entity.yp -= 128; entity.yp -= 128;
@ -2014,7 +2014,7 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
entity.tile = 18; entity.tile = 18;
entity.w = 16; entity.w = 16;
entity.h = 16; entity.h = 16;
entity.colour = 3; entity.colour = EntityColour_TRINKET;
entity.onentity = 0; entity.onentity = 0;
entity.animate = 100; entity.animate = 100;
entity.para = meta2; entity.para = meta2;
@ -2137,41 +2137,41 @@ void entityclass::createentity(int xp, int yp, int t, int meta1, int meta2, int
//RED //RED
case 3: case 7: case 12: case 23: case 28: case 3: case 7: case 12: case 23: case 28:
case 34: case 42: case 48: case 58: case 34: case 42: case 48: case 58:
entity.colour = 6; break; entity.colour = EntityColour_ENEMY_RED; break;
//GREEN //GREEN
case 5: case 9: case 22: case 25: case 29: case 5: case 9: case 22: case 25: case 29:
case 31: case 38: case 46: case 52: case 53: case 31: case 38: case 46: case 52: case 53:
entity.colour = 7; break; entity.colour = EntityColour_ENEMY_GREEN; break;
//BLUE //BLUE
case 1: case 6: case 14: case 27: case 33: case 1: case 6: case 14: case 27: case 33:
case 44: case 50: case 57: case 44: case 50: case 57:
entity.colour = 12; break; entity.colour = EntityColour_ENEMY_BLUE; break;
//YELLOW //YELLOW
case 4: case 17: case 24: case 30: case 37: case 4: case 17: case 24: case 30: case 37:
case 45: case 51: case 55: case 45: case 51: case 55:
entity.colour = 9; break; entity.colour = EntityColour_ENEMY_YELLOW; break;
//PURPLE //PURPLE
case 2: case 11: case 15: case 19: case 32: case 2: case 11: case 15: case 19: case 32:
case 36: case 49: case 36: case 49:
entity.colour = 20; break; entity.colour = EntityColour_CREW_PURPLE; break;
//CYAN //CYAN
case 8: case 10: case 13: case 18: case 26: case 8: case 10: case 13: case 18: case 26:
case 35: case 41: case 47: case 54: case 35: case 41: case 47: case 54:
entity.colour = 11; break; entity.colour = EntityColour_ENEMY_CYAN; break;
//PINK //PINK
case 16: case 20: case 39: case 43: case 56: case 16: case 20: case 39: case 43: case 56:
entity.colour = 8; break; entity.colour = EntityColour_ENEMY_PINK; break;
//ORANGE //ORANGE
case 21: case 40: case 21: case 40:
entity.colour = 17; break; entity.colour = EntityColour_ENEMY_ORANGE; break;
default: default:
entity.colour = 6; entity.colour = EntityColour_ENEMY_RED;
break; break;
} }
} }
if(custom_gray){ if(custom_gray){
entity.colour = 18; entity.colour = EntityColour_ENEMY_GRAY;
} }
entityclonefix(&entity); entityclonefix(&entity);
@ -2744,11 +2744,11 @@ bool entityclass::updateentities( int i )
{ {
if (entities[j].type == EntityType_CHECKPOINT) if (entities[j].type == EntityType_CHECKPOINT)
{ {
entities[j].colour = 4; entities[j].colour = EntityColour_INACTIVE_ENTITY;
entities[j].onentity = 1; entities[j].onentity = 1;
} }
} }
entities[i].colour = 5; entities[i].colour = EntityColour_ACTIVE_ENTITY;
entities[i].onentity = 0; entities[i].onentity = 0;
game.savepoint = entities[i].para; game.savepoint = entities[i].para;
music.playef(Sound_CHECKPOINT); music.playef(Sound_CHECKPOINT);
@ -2936,7 +2936,7 @@ bool entityclass::updateentities( int i )
else if (entities[i].state == 11) else if (entities[i].state == 11)
{ {
//11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue) //11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue)
int j=getcrewman(PURPLE); int j=getcrewman(EntityColour_CREW_PURPLE);
if (INBOUNDS_VEC(j, entities)) if (INBOUNDS_VEC(j, entities))
{ {
if (entities[j].xp > entities[i].xp + 5) if (entities[j].xp > entities[i].xp + 5)
@ -2961,7 +2961,7 @@ bool entityclass::updateentities( int i )
else if (entities[i].state == 12) else if (entities[i].state == 12)
{ {
//11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue) //11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue)
int j=getcrewman(YELLOW); int j=getcrewman(EntityColour_CREW_YELLOW);
if (INBOUNDS_VEC(j, entities)) if (INBOUNDS_VEC(j, entities))
{ {
if (entities[j].xp > entities[i].xp + 5) if (entities[j].xp > entities[i].xp + 5)
@ -2986,7 +2986,7 @@ bool entityclass::updateentities( int i )
else if (entities[i].state == 13) else if (entities[i].state == 13)
{ {
//11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue) //11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue)
int j=getcrewman(RED); int j=getcrewman(EntityColour_CREW_RED);
if (INBOUNDS_VEC(j, entities)) if (INBOUNDS_VEC(j, entities))
{ {
if (entities[j].xp > entities[i].xp + 5) if (entities[j].xp > entities[i].xp + 5)
@ -3011,7 +3011,7 @@ bool entityclass::updateentities( int i )
else if (entities[i].state == 14) else if (entities[i].state == 14)
{ {
//11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue) //11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue)
int j=getcrewman(GREEN); int j=getcrewman(EntityColour_CREW_GREEN);
if (INBOUNDS_VEC(j, entities)) if (INBOUNDS_VEC(j, entities))
{ {
if (entities[j].xp > entities[i].xp + 5) if (entities[j].xp > entities[i].xp + 5)
@ -3036,7 +3036,7 @@ bool entityclass::updateentities( int i )
else if (entities[i].state == 15) else if (entities[i].state == 15)
{ {
//11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue) //11-15 means to follow a specific character, in crew order (cyan, purple, yellow, red, green, blue)
int j=getcrewman(BLUE); int j=getcrewman(EntityColour_CREW_BLUE);
if (INBOUNDS_VEC(j, entities)) if (INBOUNDS_VEC(j, entities))
{ {
if (entities[j].xp > entities[i].xp + 5) if (entities[j].xp > entities[i].xp + 5)
@ -3190,7 +3190,7 @@ bool entityclass::updateentities( int i )
//wait for collision //wait for collision
if (entities[i].state == 1) if (entities[i].state == 1)
{ {
entities[i].colour = 5; entities[i].colour = EntityColour_ACTIVE_ENTITY;
entities[i].onentity = 0; entities[i].onentity = 0;
music.playef(Sound_TERMINALTOUCH); music.playef(Sound_TERMINALTOUCH);
@ -3390,7 +3390,7 @@ bool entityclass::updateentities( int i )
{ {
music.playef(Sound_GAMESAVED); music.playef(Sound_GAMESAVED);
entities[i].tile = 2; entities[i].tile = 2;
entities[i].colour = 101; entities[i].colour = EntityColour_TELEPORTER_ACTIVE;
if(!game.intimetrial && !game.nodeathmode) if(!game.intimetrial && !game.nodeathmode)
{ {
game.setstate(2000); game.setstate(2000);
@ -3410,7 +3410,7 @@ bool entityclass::updateentities( int i )
{ {
if (entities[j].type == EntityType_CHECKPOINT) if (entities[j].type == EntityType_CHECKPOINT)
{ {
entities[j].colour = 4; entities[j].colour = EntityColour_INACTIVE_ENTITY;
entities[j].onentity = 1; entities[j].onentity = 1;
} }
} }
@ -3436,7 +3436,7 @@ bool entityclass::updateentities( int i )
//Initilise the teleporter without changing the game state or playing sound //Initilise the teleporter without changing the game state or playing sound
entities[i].onentity = 0; entities[i].onentity = 0;
entities[i].tile = 6; entities[i].tile = 6;
entities[i].colour = 102; entities[i].colour = EntityColour_TELEPORTER_FLASHING;
game.activetele = true; game.activetele = true;
game.teleblock.x = entities[i].xp - 32; game.teleblock.x = entities[i].xp - 32;
@ -3994,34 +3994,29 @@ int entityclass::getlineat( int t )
return 0; return 0;
} }
int entityclass::getcrewman( int t, int fallback /*= 0*/ ) int entityclass::getcrewman(int t)
{ {
//Returns the index of the crewman with colour index given by t // Returns the index of the crewman with colour index given by t.
// Note: this takes an int, not an EntityColour, as invalid colours are allowed in scripting
for (size_t i = 0; i < entities.size(); i++) for (size_t i = 0; i < entities.size(); i++)
{ {
if ((entities[i].type == EntityType_CREWMATE || entities[i].type == EntityType_SUPERCREWMATE) if ((entities[i].type == EntityType_CREWMATE || entities[i].type == EntityType_SUPERCREWMATE)
&& (entities[i].rule == 6 || entities[i].rule == 7)) && (entities[i].rule == 6 || entities[i].rule == 7))
{ {
if(entities[i].colour==t) if (entities[i].colour == t)
{ {
return i; return i;
} }
} }
} }
return fallback; return -1;
} }
int entityclass::getcustomcrewman( int t ) int entityclass::getcustomcrewman(int t)
{ {
//Returns the index of the crewman with colour index given by t // like getcrewman, this returns the index of the CUSTOM crewman with colour index given by t
if (t == 0) t = 0;
if (t == 1) t = 20;
if (t == 2) t = 14;
if (t == 3) t = 15;
if (t == 4) t = 13;
if (t == 5) t = 16;
for (size_t i = 0; i < entities.size(); i++) for (size_t i = 0; i < entities.size(); i++)
{ {

View file

@ -5,10 +5,10 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "Maths.h"
#include "Ent.h"
#include "BlockV.h" #include "BlockV.h"
#include "Ent.h"
#include "Game.h" #include "Game.h"
#include "Maths.h"
enum enum
{ {
@ -20,18 +20,6 @@ enum
ACTIVITY = 5 ACTIVITY = 5
}; };
enum
{
CYAN = 0,
PURPLE = 20,
YELLOW = 14,
RED = 15,
GREEN = 13,
BLUE = 16,
GRAY = 19,
TELEPORTER = 102
};
class entityclass class entityclass
{ {
public: public:
@ -56,7 +44,7 @@ public:
createblock(DAMAGE, 312, -8, 16, 260); createblock(DAMAGE, 312, -8, 16, 260);
} }
int swncolour(int t ); int swncolour(int t);
void swnenemiescol(int t); void swnenemiescol(int t);
@ -106,7 +94,7 @@ public:
int getlineat(int t); int getlineat(int t);
int getcrewman(int t, int fallback = 0); int getcrewman(int t);
int getcustomcrewman(int t); int getcustomcrewman(int t);
int getteleporter(void); int getteleporter(void);

View file

@ -146,7 +146,7 @@ void Game::init(void)
prevroomy = 0; prevroomy = 0;
saverx = 0; saverx = 0;
savery = 0; savery = 0;
savecolour = 0; savecolour = EntityColour_CREW_CYAN;
mutebutton = 0; mutebutton = 0;
muted = false; muted = false;
@ -2563,7 +2563,7 @@ void Game::updatestate(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
int j = obj.getteleporter(); int j = obj.getteleporter();
@ -2584,7 +2584,7 @@ void Game::updatestate(void)
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].tile = 1; obj.entities[i].tile = 1;
obj.entities[i].colour = 101; obj.entities[i].colour = EntityColour_TELEPORTER_ACTIVE;
} }
break; break;
} }
@ -2757,7 +2757,7 @@ void Game::updatestate(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = true; obj.entities[i].invis = true;
} }
@ -2771,7 +2771,7 @@ void Game::updatestate(void)
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].tile = 1; obj.entities[i].tile = 1;
obj.entities[i].colour = 100; obj.entities[i].colour = EntityColour_TELEPORTER_INACTIVE;
} }
break; break;
} }
@ -3365,7 +3365,7 @@ void Game::updatestate(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 102; obj.entities[i].colour = EntityColour_TELEPORTER_FLASHING;
} }
incstate(); incstate();
@ -3407,7 +3407,7 @@ void Game::updatestate(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = true; obj.entities[i].invis = true;
} }
@ -3492,7 +3492,7 @@ void Game::updatestate(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = true; obj.entities[i].invis = true;
} }
@ -3500,7 +3500,7 @@ void Game::updatestate(void)
if(INBOUNDS_VEC(i, obj.entities)) if(INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].tile = 1; obj.entities[i].tile = 1;
obj.entities[i].colour = 100; obj.entities[i].colour = EntityColour_TELEPORTER_INACTIVE;
} }
break; break;
} }
@ -3544,9 +3544,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -3675,9 +3675,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -3788,9 +3788,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 0; obj.entities[i].dir = 0;
@ -3901,9 +3901,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -4019,9 +4019,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -4137,9 +4137,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 0; obj.entities[i].dir = 0;
@ -4253,7 +4253,7 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -4366,9 +4366,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -4479,9 +4479,9 @@ void Game::updatestate(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[j].tile = 2; obj.entities[j].tile = 2;
obj.entities[j].colour = 101; obj.entities[j].colour = EntityColour_TELEPORTER_ACTIVE;
} }
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].invis = false; obj.entities[i].invis = false;
obj.entities[i].dir = 1; obj.entities[i].dir = 1;
@ -5363,7 +5363,7 @@ void Game::deathsequence(void)
} }
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 1; obj.entities[i].colour = EntityColour_DEAD;
obj.entities[i].invis = false; obj.entities[i].invis = false;
} }

View file

@ -3423,19 +3423,19 @@ int Graphics::crewcolour(const int t)
switch (t) switch (t)
{ {
case 0: case 0:
return CYAN; return EntityColour_CREW_CYAN;
case 1: case 1:
return PURPLE; return EntityColour_CREW_PURPLE;
case 2: case 2:
return YELLOW; return EntityColour_CREW_YELLOW;
case 3: case 3:
return RED; return EntityColour_CREW_RED;
case 4: case 4:
return GREEN; return EntityColour_CREW_GREEN;
case 5: case 5:
return BLUE; return EntityColour_CREW_BLUE;
default: default:
return 0; return EntityColour_CREW_CYAN;
} }
} }

View file

@ -40,6 +40,54 @@ enum ImageNames
#define FADEMODE_IS_FADING(mode) ((mode) != FADE_NONE && (mode) != FADE_FULLY_BLACK) #define FADEMODE_IS_FADING(mode) ((mode) != FADE_NONE && (mode) != FADE_FULLY_BLACK)
enum EntityColour
{
EntityColour_CREW_CYAN = 0,
EntityColour_DEAD = 1,
EntityColour_ENEMY_DARK_ORANGE = 2,
EntityColour_TRINKET = 3,
EntityColour_INACTIVE_ENTITY = 4,
EntityColour_ACTIVE_ENTITY = 5,
EntityColour_ENEMY_RED = 6,
EntityColour_ENEMY_GREEN = 7,
EntityColour_ENEMY_PINK = 8,
EntityColour_ENEMY_YELLOW = 9,
EntityColour_WARP_TOKEN = 10,
EntityColour_ENEMY_CYAN = 11,
EntityColour_ENEMY_BLUE = 12,
EntityColour_CREW_GREEN = 13,
EntityColour_CREW_YELLOW = 14,
EntityColour_CREW_RED = 15,
EntityColour_CREW_BLUE = 16,
EntityColour_ENEMY_ORANGE = 17,
EntityColour_ENEMY_GRAY = 18,
EntityColour_CREW_GRAY = 19, // Despite the comment in the color code saying this is for enemies, it's used as a fallback for crew colors.
EntityColour_CREW_PURPLE = 20,
EntityColour_ENEMY_GRAVITRON = 21,
EntityColour_ENEMY_LIGHT_GRAY = 22,
EntityColour_GRAVITRON_INDICATOR = 23,
EntityColour_GRAVITY_LINE_TOUCHED = 24,
EntityColour_GRAVITY_LINE_ACTIVE = 25,
EntityColour_COIN = 26,
EntityColour_PARTICLE_RED = 27,
EntityColour_TROPHY_FINAL_LEVEL = 30,
EntityColour_TROPHY_SPACE_STATION_1 = 31,
EntityColour_TROPHY_SPACE_STATION_2 = 32,
EntityColour_TROPHY_TOWER = 33,
EntityColour_TROPHY_WARP_ZONE = 34,
EntityColour_TROPHY_LABORATORY = 35,
EntityColour_TROPHY_GOLD = 36,
EntityColour_TROPHY_GAME_COMPLETE = 37,
EntityColour_TROPHY_SILVER = 38,
EntityColour_TROPHY_BRONZE = 39,
EntityColour_TROPHY_FLASHY = 40,
EntityColour_TELEPORTER_INACTIVE = 100,
EntityColour_TELEPORTER_ACTIVE = 101,
EntityColour_TELEPORTER_FLASHING = 102
};
class Graphics class Graphics
{ {
public: public:

View file

@ -2737,14 +2737,14 @@ void gameinput(void)
int player = obj.getplayer(); int player = obj.getplayer();
if (INBOUNDS_VEC(player, obj.entities)) if (INBOUNDS_VEC(player, obj.entities))
{ {
obj.entities[player].colour = 102; obj.entities[player].colour = EntityColour_TELEPORTER_FLASHING;
} }
int teleporter = obj.getteleporter(); int teleporter = obj.getteleporter();
if (INBOUNDS_VEC(teleporter, obj.entities)) if (INBOUNDS_VEC(teleporter, obj.entities))
{ {
obj.entities[teleporter].tile = 6; obj.entities[teleporter].tile = 6;
obj.entities[teleporter].colour = 102; obj.entities[teleporter].colour = EntityColour_TELEPORTER_FLASHING;
} }
//which teleporter script do we use? it depends on the companion! //which teleporter script do we use? it depends on the companion!
game.setstate(4000); game.setstate(4000);
@ -2768,16 +2768,16 @@ void gameinput(void)
int player = obj.getplayer(); int player = obj.getplayer();
if (INBOUNDS_VEC(player, obj.entities)) if (INBOUNDS_VEC(player, obj.entities))
{ {
obj.entities[player].colour = 102; obj.entities[player].colour = EntityColour_TELEPORTER_FLASHING;
} }
int companion = obj.getcompanion(); int companion = obj.getcompanion();
if(INBOUNDS_VEC(companion, obj.entities)) obj.entities[companion].colour = 102; if(INBOUNDS_VEC(companion, obj.entities)) obj.entities[companion].colour = EntityColour_TELEPORTER_FLASHING;
int teleporter = obj.getteleporter(); int teleporter = obj.getteleporter();
if (INBOUNDS_VEC(teleporter, obj.entities)) if (INBOUNDS_VEC(teleporter, obj.entities))
{ {
obj.entities[teleporter].tile = 6; obj.entities[teleporter].tile = 6;
obj.entities[teleporter].colour = 102; obj.entities[teleporter].colour = EntityColour_TELEPORTER_FLASHING;
} }
//which teleporter script do we use? it depends on the companion! //which teleporter script do we use? it depends on the companion!
game.setstate(3000); game.setstate(3000);
@ -3241,7 +3241,7 @@ static void mapmenuactionpress(const bool version2_2)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 102; obj.entities[i].colour = EntityColour_TELEPORTER_FLASHING;
} }
//which teleporter script do we use? it depends on the companion! //which teleporter script do we use? it depends on the companion!
@ -3463,14 +3463,14 @@ void teleporterinput(void)
int i = obj.getplayer(); int i = obj.getplayer();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 102; obj.entities[i].colour = EntityColour_TELEPORTER_FLASHING;
} }
i = obj.getteleporter(); i = obj.getteleporter();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].tile = 6; obj.entities[i].tile = 6;
obj.entities[i].colour = 102; obj.entities[i].colour = EntityColour_TELEPORTER_FLASHING;
} }
//which teleporter script do we use? it depends on the companion! //which teleporter script do we use? it depends on the companion!
game.setstate(4000); game.setstate(4000);

View file

@ -486,28 +486,28 @@ int mapclass::maptiletoenemycol(int t)
switch(t) switch(t)
{ {
case 0: case 0:
return 11; return EntityColour_ENEMY_CYAN;
break; break;
case 1: case 1:
return 6; return EntityColour_ENEMY_RED;
break; break;
case 2: case 2:
return 8; return EntityColour_ENEMY_PINK;
break; break;
case 3: case 3:
return 12; return EntityColour_ENEMY_BLUE;
break; break;
case 4: case 4:
return 9; return EntityColour_ENEMY_YELLOW;
break; break;
case 5: case 5:
return 7; return EntityColour_ENEMY_GREEN;
break; break;
case 6: case 6:
return 18; return EntityColour_ENEMY_GRAY;
break; break;
} }
return 11; return EntityColour_ENEMY_CYAN;
} }
void mapclass::changefinalcol(int t) void mapclass::changefinalcol(int t)
@ -2185,7 +2185,7 @@ void mapclass::loadlevel(int rx, int ry)
{ {
//A slight varation - she's upside down //A slight varation - she's upside down
obj.createentity(249, 62, 18, 16, 0, 18); obj.createentity(249, 62, 18, 16, 0, 18);
int j = obj.getcrewman(BLUE); int j = obj.getcrewman(EntityColour_CREW_BLUE);
if (INBOUNDS_VEC(j, obj.entities)) if (INBOUNDS_VEC(j, obj.entities))
{ {
obj.entities[j].rule = 7; obj.entities[j].rule = 7;

View file

@ -1,6 +1,7 @@
#include "Otherlevel.h" #include "Otherlevel.h"
#include "Game.h" #include "Game.h"
#include "Graphics.h"
#include "Entity.h" #include "Entity.h"
#include "MakeAndPlay.h" #include "MakeAndPlay.h"
#include "UtilityClass.h" #include "UtilityClass.h"
@ -8904,7 +8905,7 @@ const short* otherlevelclass::loadlevel(int rx, int ry)
//violet //violet
obj.createentity(83, 126, 18, 20, 0, 18); obj.createentity(83, 126, 18, 20, 0, 18);
int crewman = obj.getcrewman(PURPLE); int crewman = obj.getcrewman(EntityColour_CREW_PURPLE);
if (INBOUNDS_VEC(crewman, obj.entities)) if (INBOUNDS_VEC(crewman, obj.entities))
{ {
obj.entities[crewman].rule = 7; obj.entities[crewman].rule = 7;

View file

@ -134,16 +134,16 @@ void scriptclass::tokenize( const std::string& t )
static int getcolorfromname(std::string name) static int getcolorfromname(std::string name)
{ {
if (name == "player") return CYAN; if (name == "player") return EntityColour_CREW_CYAN;
else if (name == "cyan") return CYAN; else if (name == "cyan") return EntityColour_CREW_CYAN;
else if (name == "red") return RED; else if (name == "red") return EntityColour_CREW_RED;
else if (name == "green") return GREEN; else if (name == "green") return EntityColour_CREW_GREEN;
else if (name == "yellow") return YELLOW; else if (name == "yellow") return EntityColour_CREW_YELLOW;
else if (name == "blue") return BLUE; else if (name == "blue") return EntityColour_CREW_BLUE;
else if (name == "purple") return PURPLE; else if (name == "purple") return EntityColour_CREW_PURPLE;
else if (name == "customcyan") return CYAN; else if (name == "customcyan") return EntityColour_CREW_CYAN;
else if (name == "gray") return GRAY; else if (name == "gray") return EntityColour_CREW_GRAY;
else if (name == "teleporter") return TELEPORTER; else if (name == "teleporter") return EntityColour_TELEPORTER_FLASHING;
int color = help.Int(name.c_str(), -1); int color = help.Int(name.c_str(), -1);
if (color < 0) return -1; // Not a number (or it's negative), so we give up if (color < 0) return -1; // Not a number (or it's negative), so we give up
@ -158,7 +158,6 @@ static int getcrewmanfromname(std::string name)
return obj.getcrewman(color); return obj.getcrewman(color);
} }
/* Also used in gamestate 1001. */ /* Also used in gamestate 1001. */
void foundtrinket_textbox1(textboxclass* THIS); void foundtrinket_textbox1(textboxclass* THIS);
void foundtrinket_textbox2(textboxclass* THIS); void foundtrinket_textbox2(textboxclass* THIS);
@ -638,37 +637,37 @@ void scriptclass::run(void)
//the first word is the object to position relative to //the first word is the object to position relative to
if (words[1] == "player") if (words[1] == "player")
{ {
i = obj.getcustomcrewman(0); i = obj.getcustomcrewman(EntityColour_CREW_CYAN);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "cyan") else if (words[1] == "cyan")
{ {
i = obj.getcustomcrewman(0); i = obj.getcustomcrewman(EntityColour_CREW_CYAN);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "purple") else if (words[1] == "purple")
{ {
i = obj.getcustomcrewman(1); i = obj.getcustomcrewman(EntityColour_CREW_PURPLE);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "yellow") else if (words[1] == "yellow")
{ {
i = obj.getcustomcrewman(2); i = obj.getcustomcrewman(EntityColour_CREW_YELLOW);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "red") else if (words[1] == "red")
{ {
i = obj.getcustomcrewman(3); i = obj.getcustomcrewman(EntityColour_CREW_RED);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "green") else if (words[1] == "green")
{ {
i = obj.getcustomcrewman(4); i = obj.getcustomcrewman(EntityColour_CREW_GREEN);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "blue") else if (words[1] == "blue")
{ {
i = obj.getcustomcrewman(5); i = obj.getcustomcrewman(EntityColour_CREW_BLUE);
j = obj.entities[i].dir; j = obj.entities[i].dir;
} }
else if (words[1] == "centerx") else if (words[1] == "centerx")
@ -910,7 +909,7 @@ void scriptclass::run(void)
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].lerpoldyp = obj.entities[i].yp; obj.entities[i].lerpoldyp = obj.entities[i].yp;
obj.entities[i].size = 13; obj.entities[i].size = 13;
obj.entities[i].colour = 23; obj.entities[i].colour = EntityColour_GRAVITRON_INDICATOR;
obj.entities[i].cx = 36;// 6; obj.entities[i].cx = 36;// 6;
obj.entities[i].cy = 12+80;// 2; obj.entities[i].cy = 12+80;// 2;
obj.entities[i].h = 126-80;// 21; obj.entities[i].h = 126-80;// 21;
@ -925,7 +924,7 @@ void scriptclass::run(void)
obj.entities[i].xp = 100; obj.entities[i].xp = 100;
obj.entities[i].lerpoldxp = obj.entities[i].xp; obj.entities[i].lerpoldxp = obj.entities[i].xp;
obj.entities[i].size = 0; obj.entities[i].size = 0;
obj.entities[i].colour = 0; obj.entities[i].colour = EntityColour_CREW_CYAN;
obj.entities[i].cx = 6; obj.entities[i].cx = 6;
obj.entities[i].cy = 2; obj.entities[i].cy = 2;
obj.entities[i].h = 21; obj.entities[i].h = 21;
@ -1022,47 +1021,47 @@ void scriptclass::run(void)
{ {
if (words[1] == "player") if (words[1] == "player")
{ {
i=obj.getcustomcrewman(0); i=obj.getcustomcrewman(EntityColour_CREW_CYAN);
obj.customcrewmoods[0]=ss_toi(words[2]); obj.customcrewmoods[0]=ss_toi(words[2]);
} }
else if (words[1] == "cyan") else if (words[1] == "cyan")
{ {
i=obj.getcustomcrewman(0); i=obj.getcustomcrewman(EntityColour_CREW_CYAN);
obj.customcrewmoods[0]=ss_toi(words[2]); obj.customcrewmoods[0]=ss_toi(words[2]);
} }
else if (words[1] == "customcyan") else if (words[1] == "customcyan")
{ {
i=obj.getcustomcrewman(0); i=obj.getcustomcrewman(EntityColour_CREW_CYAN);
obj.customcrewmoods[0]=ss_toi(words[2]); obj.customcrewmoods[0]=ss_toi(words[2]);
} }
else if (words[1] == "red") else if (words[1] == "red")
{ {
i=obj.getcustomcrewman(3); i=obj.getcustomcrewman(EntityColour_CREW_RED);
obj.customcrewmoods[3]=ss_toi(words[2]); obj.customcrewmoods[3]=ss_toi(words[2]);
} }
else if (words[1] == "green") else if (words[1] == "green")
{ {
i=obj.getcustomcrewman(4); i=obj.getcustomcrewman(EntityColour_CREW_GREEN);
obj.customcrewmoods[4]=ss_toi(words[2]); obj.customcrewmoods[4]=ss_toi(words[2]);
} }
else if (words[1] == "yellow") else if (words[1] == "yellow")
{ {
i=obj.getcustomcrewman(2); i=obj.getcustomcrewman(EntityColour_CREW_YELLOW);
obj.customcrewmoods[2]=ss_toi(words[2]); obj.customcrewmoods[2]=ss_toi(words[2]);
} }
else if (words[1] == "blue") else if (words[1] == "blue")
{ {
i=obj.getcustomcrewman(5); i=obj.getcustomcrewman(EntityColour_CREW_BLUE);
obj.customcrewmoods[5]=ss_toi(words[2]); obj.customcrewmoods[5]=ss_toi(words[2]);
} }
else if (words[1] == "purple") else if (words[1] == "purple")
{ {
i=obj.getcustomcrewman(1); i=obj.getcustomcrewman(EntityColour_CREW_PURPLE);
obj.customcrewmoods[1]=ss_toi(words[2]); obj.customcrewmoods[1]=ss_toi(words[2]);
} }
else if (words[1] == "pink") else if (words[1] == "pink")
{ {
i=obj.getcustomcrewman(1); i=obj.getcustomcrewman(EntityColour_CREW_PURPLE);
obj.customcrewmoods[1]=ss_toi(words[2]); obj.customcrewmoods[1]=ss_toi(words[2]);
} }
@ -1188,7 +1187,7 @@ void scriptclass::run(void)
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].tile = 6; obj.entities[i].tile = 6;
obj.entities[i].colour = 102; obj.entities[i].colour = EntityColour_TELEPORTER_FLASHING;
} }
} }
else if (words[0] == "changecolour") else if (words[0] == "changecolour")
@ -1650,7 +1649,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].type == EntityType_TERMINAL) if (obj.entities[j].type == EntityType_TERMINAL)
{ {
obj.entities[j].colour = 4; obj.entities[j].colour = EntityColour_INACTIVE_ENTITY;
} }
} }
if (ss_toi(words[1]) == 1) if (ss_toi(words[1]) == 1)
@ -1660,7 +1659,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 88 && obj.entities[j].yp==80) if (obj.entities[j].xp == 88 && obj.entities[j].yp==80)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1671,7 +1670,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 128 && obj.entities[j].yp==80) if (obj.entities[j].xp == 128 && obj.entities[j].yp==80)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1682,7 +1681,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 176 && obj.entities[j].yp==80) if (obj.entities[j].xp == 176 && obj.entities[j].yp==80)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1693,7 +1692,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 216 && obj.entities[j].yp==80) if (obj.entities[j].xp == 216 && obj.entities[j].yp==80)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1704,7 +1703,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 88 && obj.entities[j].yp==128) if (obj.entities[j].xp == 88 && obj.entities[j].yp==128)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1715,7 +1714,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 176 && obj.entities[j].yp==128) if (obj.entities[j].xp == 176 && obj.entities[j].yp==128)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1726,7 +1725,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 40 && obj.entities[j].yp==40) if (obj.entities[j].xp == 40 && obj.entities[j].yp==40)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1737,7 +1736,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 216 && obj.entities[j].yp==128) if (obj.entities[j].xp == 216 && obj.entities[j].yp==128)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1748,7 +1747,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 128 && obj.entities[j].yp==128) if (obj.entities[j].xp == 128 && obj.entities[j].yp==128)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1759,7 +1758,7 @@ void scriptclass::run(void)
{ {
if (obj.entities[j].xp == 264 && obj.entities[j].yp==40) if (obj.entities[j].xp == 264 && obj.entities[j].yp==40)
{ {
obj.entities[j].colour = 5; obj.entities[j].colour = EntityColour_ACTIVE_ENTITY;
} }
} }
} }
@ -1770,31 +1769,31 @@ void scriptclass::run(void)
if (words[1] == "red") if (words[1] == "red")
{ {
i = 3; i = 3;
crew_color = RED; crew_color = EntityColour_CREW_RED;
} }
else if (words[1] == "green") else if (words[1] == "green")
{ {
i = 4; i = 4;
crew_color = GREEN; crew_color = EntityColour_CREW_GREEN;
} }
else if (words[1] == "yellow") else if (words[1] == "yellow")
{ {
i = 2; i = 2;
crew_color = YELLOW; crew_color = EntityColour_CREW_YELLOW;
} }
else if (words[1] == "blue") else if (words[1] == "blue")
{ {
i = 5; i = 5;
crew_color = BLUE; crew_color = EntityColour_CREW_BLUE;
} }
else if (words[1] == "purple") else if (words[1] == "purple")
{ {
i = 1; i = 1;
crew_color = PURPLE; crew_color = EntityColour_CREW_PURPLE;
} }
int crewman = obj.getcrewman(crew_color); int crewman = obj.getcrewman(crew_color);
if (INBOUNDS_VEC(crewman, obj.entities) && crew_color == GREEN) if (INBOUNDS_VEC(crewman, obj.entities) && crew_color == EntityColour_CREW_GREEN)
{ {
obj.createblock(5, obj.entities[crewman].xp - 32, obj.entities[crewman].yp-20, 96, 60, i, "", (i == 35)); obj.createblock(5, obj.entities[crewman].xp - 32, obj.entities[crewman].yp-20, 96, 60, i, "", (i == 35));
} }
@ -1876,7 +1875,7 @@ void scriptclass::run(void)
i = obj.getteleporter(); i = obj.getteleporter();
if (INBOUNDS_VEC(i, obj.entities)) if (INBOUNDS_VEC(i, obj.entities))
{ {
obj.entities[i].colour = 101; obj.entities[i].colour = EntityColour_TELEPORTER_ACTIVE;
} }
} }
else if (words[0] == "foundtrinket") else if (words[0] == "foundtrinket")
@ -1991,9 +1990,9 @@ void scriptclass::run(void)
else if (words[0] == "createlastrescued") else if (words[0] == "createlastrescued")
{ {
r = graphics.crewcolour(game.lastsaved); r = graphics.crewcolour(game.lastsaved);
if (r == 0 || r == PURPLE) if (r == EntityColour_CREW_CYAN || r == EntityColour_CREW_PURPLE)
{ {
r = GRAY; // Default to gray if invalid color. r = EntityColour_CREW_GRAY; // Default to gray if invalid color.
} }
obj.createentity(200, 153, 18, r, 0, 19, 30); obj.createentity(200, 153, 18, r, 0, 19, 30);