{ "Door", TRUE },
{ "Heroes", TRUE },
{ "Toons", TRUE },
- { "More", TRUE },
+ { "SP", TRUE },
+ { "DC", TRUE },
{ "Font", FALSE },
{ "Font2", FALSE }
};
{ "RocksDoor", TRUE },
{ "RocksHeroes", TRUE },
{ "RocksToons", TRUE },
- { "RocksMore", TRUE },
+ { "RocksSP", TRUE },
+ { "RocksDC", TRUE },
{ "RocksFont", FALSE },
{ "RocksFont2", FALSE }
};
EL_EM_GATE_1X,
EL_EM_GATE_2X,
EL_EM_GATE_3X,
- EL_EM_GATE_4X
+ EL_EM_GATE_4X,
+ EL_SWITCHGATE_OPEN,
+ EL_SWITCHGATE_CLOSED
};
static int ep_pforte_num = sizeof(ep_pforte)/sizeof(int);
EL_SP_HARD_BASE6,
EL_SP_TERMINAL,
EL_SP_EXIT,
- EL_INVISIBLE_STEEL
+ EL_INVISIBLE_STEEL,
+ EL_BELT1_SWITCH_L,
+ EL_BELT1_SWITCH_M,
+ EL_BELT1_SWITCH_R,
+ EL_BELT2_SWITCH_L,
+ EL_BELT2_SWITCH_M,
+ EL_BELT2_SWITCH_R,
+ EL_BELT3_SWITCH_L,
+ EL_BELT3_SWITCH_M,
+ EL_BELT3_SWITCH_R,
+ EL_BELT4_SWITCH_L,
+ EL_BELT4_SWITCH_M,
+ EL_BELT4_SWITCH_R,
+ EL_LIGHT_SWITCH_OFF,
+ EL_LIGHT_SWITCH_ON,
+ EL_SIGN_EXCLAMATION,
+ EL_SIGN_RADIOACTIVITY,
+ EL_SIGN_STOP,
+ EL_SIGN_WHEELCHAIR,
+ EL_SIGN_PARKING,
+ EL_SIGN_ONEWAY,
+ EL_SIGN_HEART,
+ EL_SIGN_TRIANGLE,
+ EL_SIGN_ROUND,
+ EL_SIGN_EXIT,
+ EL_SIGN_YINYANG,
+ EL_SIGN_OTHER,
+ EL_STEEL_SLANTED
};
static int ep_solid_num = sizeof(ep_solid)/sizeof(int);
EL_EM_GATE_2X,
EL_EM_GATE_3X,
EL_EM_GATE_4X,
+ EL_SWITCHGATE_OPEN,
+ EL_SWITCHGATE_CLOSED,
EL_SP_HARD_GRAY,
EL_SP_HARD_GREEN,
EL_SP_HARD_BLUE,
EL_SP_HARD_BASE4,
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
- EL_INVISIBLE_STEEL
+ EL_INVISIBLE_STEEL,
+ EL_BELT1_SWITCH_L,
+ EL_BELT1_SWITCH_M,
+ EL_BELT1_SWITCH_R,
+ EL_BELT2_SWITCH_L,
+ EL_BELT2_SWITCH_M,
+ EL_BELT2_SWITCH_R,
+ EL_BELT3_SWITCH_L,
+ EL_BELT3_SWITCH_M,
+ EL_BELT3_SWITCH_R,
+ EL_BELT4_SWITCH_L,
+ EL_BELT4_SWITCH_M,
+ EL_BELT4_SWITCH_R,
+ EL_LIGHT_SWITCH_OFF,
+ EL_LIGHT_SWITCH_ON,
+ EL_SIGN_EXCLAMATION,
+ EL_SIGN_RADIOACTIVITY,
+ EL_SIGN_STOP,
+ EL_SIGN_WHEELCHAIR,
+ EL_SIGN_PARKING,
+ EL_SIGN_ONEWAY,
+ EL_SIGN_HEART,
+ EL_SIGN_TRIANGLE,
+ EL_SIGN_ROUND,
+ EL_SIGN_EXIT,
+ EL_SIGN_YINYANG,
+ EL_SIGN_OTHER,
+ EL_STEEL_SLANTED
};
static int ep_massive_num = sizeof(ep_massive)/sizeof(int);
EL_SP_CHIP_RIGHT,
EL_SP_CHIP_UPPER,
EL_SP_CHIP_LOWER,
- EL_SPEED_PILL
+ EL_SPEED_PILL,
+ EL_STEEL_SLANTED
};
static int ep_slippery_num = sizeof(ep_slippery)/sizeof(int);
EL_SP_HARD_BASE6,
EL_SP_TERMINAL,
EL_SP_EXIT,
- EL_INVISIBLE_STEEL
+ EL_INVISIBLE_STEEL,
+ EL_STEEL_SLANTED
};
static int ep_mauer_num = sizeof(ep_mauer)/sizeof(int);
EL_SALZSAEURE,
EL_SP_SNIKSNAK,
EL_SP_ELECTRON,
- EL_SP_BUG_ACTIVE
+ EL_SP_BUG_ACTIVE,
+ EL_LANDMINE
};
static int ep_dont_go_to_num = sizeof(ep_dont_go_to)/sizeof(int);
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
EL_SP_EXIT,
- EL_INVISIBLE_STEEL
+ EL_INVISIBLE_STEEL,
+ EL_BELT1_SWITCH_L,
+ EL_BELT1_SWITCH_M,
+ EL_BELT1_SWITCH_R,
+ EL_BELT2_SWITCH_L,
+ EL_BELT2_SWITCH_M,
+ EL_BELT2_SWITCH_R,
+ EL_BELT3_SWITCH_L,
+ EL_BELT3_SWITCH_M,
+ EL_BELT3_SWITCH_R,
+ EL_BELT4_SWITCH_L,
+ EL_BELT4_SWITCH_M,
+ EL_BELT4_SWITCH_R,
+ EL_SIGN_EXCLAMATION,
+ EL_SIGN_RADIOACTIVITY,
+ EL_SIGN_STOP,
+ EL_SIGN_WHEELCHAIR,
+ EL_SIGN_PARKING,
+ EL_SIGN_ONEWAY,
+ EL_SIGN_HEART,
+ EL_SIGN_TRIANGLE,
+ EL_SIGN_ROUND,
+ EL_SIGN_EXIT,
+ EL_SIGN_YINYANG,
+ EL_SIGN_OTHER,
+ EL_STEEL_SLANTED
};
static int ep_inactive_num = sizeof(ep_inactive)/sizeof(int);
{
EL_ERDREICH,
EL_SP_BASE,
- EL_SP_BUG
+ EL_SP_BUG,
+ EL_SAND_INVISIBLE
};
static int ep_eatable_num = sizeof(ep_eatable)/sizeof(int);
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
EL_SP_CHIP_UPPER,
- EL_SP_CHIP_LOWER
+ EL_SP_CHIP_LOWER,
+ /* additional elements that appeared in newer Supaplex levels */
+ EL_UNSICHTBAR
};
static int ep_sp_element_num = sizeof(ep_sp_element)/sizeof(int);
EL_SP_PORT2_DOWN,
EL_SP_PORT_X,
EL_SP_PORT_Y,
- EL_SP_PORT_XY
+ EL_SP_PORT_XY,
+ EL_SWITCHGATE_OPEN
};
static int ep_quick_gate_num = sizeof(ep_quick_gate)/sizeof(int);
};
static int ep_active_bomb_num = sizeof(ep_active_bomb)/sizeof(int);
- static long ep_bit[] =
+ static int ep_belt[] =
+ {
+ EL_BELT1_LEFT,
+ EL_BELT1_MIDDLE,
+ EL_BELT1_RIGHT,
+ EL_BELT2_LEFT,
+ EL_BELT2_MIDDLE,
+ EL_BELT2_RIGHT,
+ EL_BELT3_LEFT,
+ EL_BELT3_MIDDLE,
+ EL_BELT3_RIGHT,
+ EL_BELT4_LEFT,
+ EL_BELT4_MIDDLE,
+ EL_BELT4_RIGHT,
+ };
+ static int ep_belt_num = sizeof(ep_belt)/sizeof(int);
+
+ static int ep_belt_switch[] =
+ {
+ EL_BELT1_SWITCH_L,
+ EL_BELT1_SWITCH_M,
+ EL_BELT1_SWITCH_R,
+ EL_BELT2_SWITCH_L,
+ EL_BELT2_SWITCH_M,
+ EL_BELT2_SWITCH_R,
+ EL_BELT3_SWITCH_L,
+ EL_BELT3_SWITCH_M,
+ EL_BELT3_SWITCH_R,
+ EL_BELT4_SWITCH_L,
+ EL_BELT4_SWITCH_M,
+ EL_BELT4_SWITCH_R,
+ };
+ static int ep_belt_switch_num = sizeof(ep_belt_switch)/sizeof(int);
+
+ static long ep1_bit[] =
{
EP_BIT_AMOEBALIVE,
EP_BIT_AMOEBOID,
EP_BIT_OVER_PLAYER,
EP_BIT_ACTIVE_BOMB
};
- static int *ep_array[] =
+ static long ep2_bit[] =
+ {
+ EP_BIT_BELT,
+ EP_BIT_BELT_SWITCH
+ };
+ static int *ep1_array[] =
{
ep_amoebalive,
ep_amoeboid,
ep_over_player,
ep_active_bomb
};
- static int *ep_num[] =
+ static int *ep2_array[] =
+ {
+ ep_belt,
+ ep_belt_switch
+ };
+ static int *ep1_num[] =
{
&ep_amoebalive_num,
&ep_amoeboid_num,
&ep_over_player_num,
&ep_active_bomb_num
};
- static int num_properties = sizeof(ep_num)/sizeof(int *);
+ static int *ep2_num[] =
+ {
+ &ep_belt_num,
+ &ep_belt_switch_num
+ };
+ static int num_properties1 = sizeof(ep1_num)/sizeof(int *);
+ static int num_properties2 = sizeof(ep2_num)/sizeof(int *);
for(i=0; i<MAX_ELEMENTS; i++)
- Elementeigenschaften[i] = 0;
+ {
+ Elementeigenschaften1[i] = 0;
+ Elementeigenschaften2[i] = 0;
+ }
+
+ for(i=0; i<num_properties1; i++)
+ for(j=0; j<*(ep1_num[i]); j++)
+ Elementeigenschaften1[(ep1_array[i])[j]] |= ep1_bit[i];
+ for(i=0; i<num_properties2; i++)
+ for(j=0; j<*(ep2_num[i]); j++)
+ Elementeigenschaften2[(ep2_array[i])[j]] |= ep2_bit[i];
- for(i=0; i<num_properties; i++)
- for(j=0; j<*(ep_num[i]); j++)
- Elementeigenschaften[(ep_array[i])[j]] |= ep_bit[i];
for(i=EL_CHAR_START; i<EL_CHAR_END; i++)
- Elementeigenschaften[i] |= (EP_BIT_CHAR | EP_BIT_INACTIVE);
+ Elementeigenschaften1[i] |= (EP_BIT_CHAR | EP_BIT_INACTIVE);
}
void CloseAllAndExit(int exit_value)