LEVEL_VERSION(1)

SET_GENERATE_SPEED(400)

START_MONEY(PLAYER0,15000)
START_MONEY(PLAYER1,8000000)
START_MONEY(PLAYER2,8000000)
START_MONEY(PLAYER3,8000000)

MAX_CREATURES(PLAYER0,20)
MAX_CREATURES(PLAYER1,24)
MAX_CREATURES(PLAYER2,25)
MAX_CREATURES(PLAYER3,25)

COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
COMPUTER_PLAYER(PLAYER3,0)

ALLY_PLAYERS(PLAYER2,PLAYER3,3)
ALLY_PLAYERS(PLAYER3,PLAYER2,3)
ALLY_PLAYERS(PLAYER0,PLAYER1,3)
ALLY_PLAYERS(PLAYER1,PLAYER0,3)

ALLY_PLAYERS(PLAYER2,PLAYER4,3)
ALLY_PLAYERS(PLAYER3,PLAYER4,3)

ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(HELL_HOUND,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)
ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)

CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)

ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,BRIDGE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,SCAVENGER,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)

DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

SET_GAME_RULE(MaxThingsInHand,50)

SET_GAME_RULE(AlliesShareVision,1)

SET_GAME_RULE(GemEffectiveness,40)

SET_CREATURE_PROPERTY(KNIGHT,LORD,0)

SET_GAME_RULE(AlliesShareCta,1)

CREATE_PARTY(DWARF)
	ADD_TO_PARTY(DWARF,DWARFA,2,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF,DWARFA,2,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF,THIEF,2,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF,THIEF,2,3000,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARF9)
	ADD_TO_PARTY(DWARF9,DWARFA,1,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF9,DWARFA,1,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF9,THIEF,1,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF9,THIEF,1,3000,ATTACK_DUNGEON_HEART,0)


CREATE_PARTY(DWARF1)
	ADD_TO_PARTY(DWARF1,DWARFA,5,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,DWARFA,5,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,THIEF,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,THIEF,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,ARCHER,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,ARCHER,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,MONK,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,MONK,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,SAMURAI,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,SAMURAI,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,GIANT,5,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF1,GIANT,5,3000,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARF2)
	ADD_TO_PARTY(DWARF2,DWARFA,5,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF2,ARCHER,4,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF2,THIEF,4,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF2,GIANT,4,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF2,SAMURAI,4,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF2,MONK,4,3000,ATTACK_DUNGEON_HEART,0)


CREATE_PARTY(DWARF3)
	ADD_TO_PARTY(DWARF3,DWARFA,7,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF3,ARCHER,7,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF3,THIEF,7,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF3,GIANT,7,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF3,GIANT,7,3000,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARF4)
	ADD_TO_PARTY(DWARF4,KNIGHT,10,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF4,THIEF,10,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF4,THIEF,10,3000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF4,DWARFA,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF4,DWARFA,8,650,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARF5)
	ADD_TO_PARTY(DWARF5,GIANT,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF5,GIANT,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF5,GIANT,8,650,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARF6)
	ADD_TO_PARTY(DWARF6,GIANT,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF6,GIANT,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF6,GIANT,8,650,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARF6,GIANT,8,650,ATTACK_DUNGEON_HEART,0)


IF(PLAYER1,VAMPIRE >= 3)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(BodiesForVampire,250)
ENDIF

IF(PLAYER1,VAMPIRE < 3)
    		NEXT_COMMAND_REUSABLE
    		SET_GAME_RULE(BodiesForVampire,8)
ENDIF
	
QUICK_OBJECTIVE(0,"You and your twin need to survive, you'll find all your needs in the East, rush now !",ALL_PLAYERS)

IF_CONTROLS(PLAYER1,IMP < 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
 ENDIF
IF_CONTROLS(PLAYER1,IMP >= 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER1,POWER_IMP,0,0)
ENDIF

IF_CONTROLS(PLAYER2,IMP < 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
 ENDIF
IF_CONTROLS(PLAYER2,IMP >= 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER2,POWER_IMP,0,0)
ENDIF

IF_CONTROLS(PLAYER3,IMP < 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER3,POWER_IMP,1,1)
 ENDIF
IF_CONTROLS(PLAYER3,IMP >= 15)
  NEXT_COMMAND_REUSABLE
  MAGIC_AVAILABLE(PLAYER3,POWER_IMP,0,0)
ENDIF

IF(PLAYER0,TOTAL_CREATURES >=32)
	NEXT_COMMAND_REUSABLE
 	SET_GAME_RULE (TortureConvertChance,0)
ENDIF

IF(PLAYER0,TOTAL_CREATURES < 32)
	NEXT_COMMAND_REUSABLE
 	SET_GAME_RULE (TortureConvertChance,70)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
	QUICK_INFORMATION(1,"now there has been an opportunity to place your creatures on your twins area.",ALL_PLAYERS)
	SET_GAME_RULE(AlliesShareDrop,1)
ENDIF

SET_TIMER(PLAYER_GOOD,TIMER1)

IF(PLAYER_GOOD,TIMER1 >= 4000)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF9,-1,DUNGEON,1,2,100)
	QUICK_INFORMATION(4,"A pack of enemies is on its way to your heart.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 7000)
	QUICK_INFORMATION(5,"They try it again",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF,-4,DUNGEON,1,2,100)
ENDIF


IF(PLAYER_GOOD,TIMER1 >= 9000)
	QUICK_INFORMATION(6,"A pack of Heroes is on its way to your twin.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF1,-2,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF1,-3,1)
ENDIF


IF(PLAYER_GOOD,TIMER1 >= 13000)
	QUICK_INFORMATION(7,"Support your twin.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF3,-2,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF3,-3,1)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 16000)
	QUICK_INFORMATION(12,"Support your twin.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF6,-2,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF6,-3,1)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 20000)
	QUICK_INFORMATION(8,"watch for enemys.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF5,-5,1)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 21000)
	QUICK_OBJECTIVE(9,"You can now have a small breath. but not for too long.",ALL_PLAYERS)
	SET_TIMER(PLAYER6,TIMER5)
	DISPLAY_COUNTDOWN(PLAYER6,TIMER5,9000)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 30000)
	QUICK_OBJECTIVE(10,"This is the last attack of the heroes. Pull yourself together and let's go against the twins, soon the battle begins.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF4,-2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF4,-3,1)
	SET_TIMER(PLAYER6,TIMER4)
	DISPLAY_COUNTDOWN(PLAYER6,TIMER4,10000)
ENDIF

REVEAL_MAP_LOCATION(PLAYER0,12,9)

IF_ACTION_POINT(9,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARF2,9,1)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 40000)
	COMPUTER_DIG_TO_LOCATION(PLAYER2,1,3)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 40000)
	COMPUTER_DIG_TO_LOCATION(PLAYER3,2,4)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 40000)
	COMPUTER_DIG_TO_LOCATION(PLAYER1,8,10)
ENDIF


IF(PLAYER_GOOD,TIMER1 >= 40000)
	COMPUTER_DIG_TO_LOCATION(PLAYER1,7,11)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 40000)
	QUICK_INFORMATION(14,"Prepare yourself, Its time for a fight, all or nothing.",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER1 >= 39950)
	CHANGE_SLAB_TYPE(23,65,DIRT)
	CHANGE_SLAB_TYPE(24,65,DIRT)
	CHANGE_SLAB_TYPE(25,65,DIRT)
	CHANGE_SLAB_TYPE(26,65,DIRT)
	CHANGE_SLAB_TYPE(27,65,DIRT)
	CHANGE_SLAB_TYPE(28,65,DIRT)
	CHANGE_SLAB_TYPE(29,65,DIRT)
	CHANGE_SLAB_TYPE(30,65,DIRT)

	CHANGE_SLAB_TYPE(31,65,DIRT)
	CHANGE_SLAB_TYPE(32,65,DIRT)
	CHANGE_SLAB_TYPE(33,65,DIRT)
	CHANGE_SLAB_TYPE(34,65,DIRT)
	CHANGE_SLAB_TYPE(35,65,DIRT)
	CHANGE_SLAB_TYPE(36,65,DIRT)
	CHANGE_SLAB_TYPE(37,65,DIRT)
	CHANGE_SLAB_TYPE(38,65,DIRT)

	CHANGE_SLAB_TYPE(39,65,DIRT)
	CHANGE_SLAB_TYPE(40,65,DIRT)
	CHANGE_SLAB_TYPE(41,65,DIRT)
	CHANGE_SLAB_TYPE(42,65,DIRT)
	CHANGE_SLAB_TYPE(43,65,DIRT)
	CHANGE_SLAB_TYPE(44,65,DIRT)
	CHANGE_SLAB_TYPE(45,65,DIRT)
	CHANGE_SLAB_TYPE(46,65,DIRT)

	CHANGE_SLAB_TYPE(47,65,DIRT)
	CHANGE_SLAB_TYPE(48,65,DIRT)
	CHANGE_SLAB_TYPE(49,65,DIRT)
	CHANGE_SLAB_TYPE(50,65,DIRT)
	CHANGE_SLAB_TYPE(51,65,DIRT)
	CHANGE_SLAB_TYPE(52,65,DIRT)
	CHANGE_SLAB_TYPE(53,65,DIRT)
	CHANGE_SLAB_TYPE(54,65,DIRT)

	CHANGE_SLAB_TYPE(55,65,DIRT)
	CHANGE_SLAB_TYPE(56,65,DIRT)
	CHANGE_SLAB_TYPE(57,65,DIRT)
	CHANGE_SLAB_TYPE(58,65,DIRT)
	CHANGE_SLAB_TYPE(59,65,DIRT)
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)

	QUICK_INFORMATION(2,"here's the chance, now you can finally take the enemy yourself.",6)

	CHANGE_SLAB_TYPE(41,11,DIRT)
	CHANGE_SLAB_TYPE(41,12,DIRT)
	CHANGE_SLAB_TYPE(41,13,DIRT)
	CHANGE_SLAB_TYPE(41,14,DIRT)
	CHANGE_SLAB_TYPE(41,15,DIRT)
	CHANGE_SLAB_TYPE(41,16,DIRT)
	CHANGE_SLAB_TYPE(41,17,DIRT)
	CHANGE_SLAB_TYPE(41,18,DIRT)

ENDIF
	
IF(PLAYER1,DUNGEON_DESTROYED == 1)
	QUICK_OBJECTIVE(13,"Look for your twin, search for the Ability to help and join him.",ALL_PLAYERS)
	LOSE_GAME
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 1)
	IF(PLAYER3,DUNGEON_DESTROYED == 1)
		WIN_GAME
	ENDIF
ENDIF