LEVEL_VERSION(1)

START_MONEY(ALL_PLAYERS,DRAWFROM(17000~20000))

SET_GENERATE_SPEED(500)

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

ALLY_PLAYERS(PLAYER2,PLAYER3,1)
NEXT_COMMAND_REUSABLE
ALLY_PLAYERS(PLAYER2,PLAYER_GOOD,1)
NEXT_COMMAND_REUSABLE
ALLY_PLAYERS(PLAYER3,PLAYER_GOOD,1)

MAX_CREATURES(PLAYER0,16)
MAX_CREATURES(PLAYER2,DRAWFROM(20~24))
MAX_CREATURES(PLAYER3,DRAWFROM(20~24))

ADD_CREATURE_TO_POOL(DRAGON,DRAWFROM(1~3))
ADD_CREATURE_TO_POOL(BILE_DEMON,DRAWFROM(2~4))
ADD_CREATURE_TO_POOL(ORC,DRAWFROM(2~4))
ADD_CREATURE_TO_POOL(TROLL,DRAWFROM(1~3))
ADD_CREATURE_TO_POOL(DARK_MISTRESS,1)
ADD_CREATURE_TO_POOL(SORCEROR,DRAWFROM(6~9))
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(DEMONSPAWN,15)

ROOM_AVAILABLE(PLAYER2,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER2,LAIR,1,1)
ROOM_AVAILABLE(PLAYER2,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER2,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER2,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER2,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER2,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER2,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER2,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER3,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER3,LAIR,1,1)
ROOM_AVAILABLE(PLAYER3,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER3,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER3,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER3,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER3,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER3,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER3,TEMPLE,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER3,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_CHICKEN,1,0)

CREATURE_AVAILABLE(PLAYER0,DRAGON,1,1)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,1)
CREATURE_AVAILABLE(PLAYER0,ORC,1,1)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,1)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(PLAYER2,SORCEROR,1,1)
CREATURE_AVAILABLE(PLAYER2,TENTACLE,1,1)
CREATURE_AVAILABLE(PLAYER2,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(PLAYER3,SORCEROR,1,1)
CREATURE_AVAILABLE(PLAYER3,TENTACLE,1,1)
CREATURE_AVAILABLE(PLAYER3,DEMONSPAWN,1,1)

SET_CREATURE_max_level(player2,DEMONSPAWN,10)
SET_CREATURE_max_level(player3,DEMONSPAWN,10)

SET_CREATURE_PROPERTY(IMP,NO_CORPSE_ROTTING,1)

DOOR_AVAILABLE(PLAYER2,BRACED,1,1)
DOOR_AVAILABLE(PLAYER2,STEEL,1,1)
DOOR_AVAILABLE(PLAYER3,BRACED,1,1)
DOOR_AVAILABLE(PLAYER3,STEEL,1,1)

TRAP_AVAILABLE(PLAYER0,ALARM,1,0)
TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)
TRAP_AVAILABLE(PLAYER0,LAVA,1,0)
TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,1,0)

ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 1, 1)
ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 2, 2)
ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 3, 3)
ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 4, 4)
ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 5, 5)

CONCEAL_MAP_RECT(PLAYER0, 193,49, 40, 40, 1)
CONCEAL_MAP_RECT(PLAYER0, 25,32,29, 40, 1)

SET_TRAP_CONFIGURATION(ALARM,Model,TRAP_GEM_YELLOW)
SET_TRAP_CONFIGURATION(POISON_GAS,Model,TRAP_GEM_BLUE)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,Model,TRAP_GEM_RED)
SET_TRAP_CONFIGURATION(LAVA,Model,841)
SET_TRAP_CONFIGURATION(LAVA,ModelSize,384)

SET_TRAP_CONFIGURATION(ALARM,AnimationSpeed,128)
SET_TRAP_CONFIGURATION(POISON_GAS,AnimationSpeed,128)
SET_TRAP_CONFIGURATION(LAVA,AnimationSpeed,128)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,AnimationSpeed,128)

REM Alarm trap changed to Arrow trap
SET_TRAP_CONFIGURATION(ALARM,PointerSprites,157)
SET_TRAP_CONFIGURATION(ALARM,Shots,50)
SET_TRAP_CONFIGURATION(ALARM,TimeBetweenShots,15)
SET_TRAP_CONFIGURATION(ALARM,TriggerType,3)
SET_TRAP_CONFIGURATION(ALARM,Hidden,0)
SET_TRAP_CONFIGURATION(ALARM,ActivationType,5)
SET_TRAP_CONFIGURATION(ALARM,EffectType,14)
SET_TRAP_CONFIGURATION(ALARM,TriggerAlarm,0)
SET_TRAP_CONFIGURATION(ALARM,SymbolSprites,517,454)
SET_TRAP_CONFIGURATION(ALARM,NameTextID,984)
SET_TRAP_CONFIGURATION(ALARM,TooltipTextID,984)

REM Poison trap changed to Freeze trap
SET_TRAP_CONFIGURATION(POISON_GAS,PointerSprites,160)
SET_TRAP_CONFIGURATION(POISON_GAS,Shots,8)
SET_TRAP_CONFIGURATION(POISON_GAS,TimeBetweenShots,100)
SET_TRAP_CONFIGURATION(POISON_GAS,TriggerType,3)
SET_TRAP_CONFIGURATION(POISON_GAS,Hidden,0)
SET_TRAP_CONFIGURATION(POISON_GAS,ActivationType,5)
SET_TRAP_CONFIGURATION(POISON_GAS,EffectType,3)
SET_TRAP_CONFIGURATION(POISON_GAS,SymbolSprites,523,406)
SET_TRAP_CONFIGURATION(POISON_GAS,NameTextID,982)
SET_TRAP_CONFIGURATION(POISON_GAS,TooltipTextID,982)

SET_TRAP_CONFIGURATION(LIGHTNING,Shots,25)
SET_TRAP_CONFIGURATION(LIGHTNING,TimeBetweenShots,6)

REM Lava trap changed to Flame trap
SET_TRAP_CONFIGURATION(LAVA,PointerSprites,159)
SET_TRAP_CONFIGURATION(LAVA,Shots,1000)
SET_TRAP_CONFIGURATION(LAVA,TimeBetweenShots,1)
SET_TRAP_CONFIGURATION(LAVA,Model,841)
SET_TRAP_CONFIGURATION(LAVA,ModelSize,384)
SET_TRAP_CONFIGURATION(LAVA,TriggerType,2)
SET_TRAP_CONFIGURATION(LAVA,Hidden,0)
SET_TRAP_CONFIGURATION(LAVA,ActivationType,5)
SET_TRAP_CONFIGURATION(LAVA,EffectType,7)
SET_TRAP_CONFIGURATION(LAVA,SymbolSprites,372,430)
SET_TRAP_CONFIGURATION(LAVA,NameTextID,988)
SET_TRAP_CONFIGURATION(LAVA,TooltipTextID,988)

REM WoP trap changed to Meteor trap
SET_TRAP_CONFIGURATION(WORD_OF_POWER,PointerSprites,162)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,Shots,30)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,TimeBetweenShots,75)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,TriggerType,3)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,Hidden,0)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,ActivationType,5)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,EffectType,2)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,SymbolSprites,525,404)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,NameTextID,991)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,TooltipTextID,991)

SET_BOX_TOOLTIP(1,"Speed Creature")
SET_BOX_TOOLTIP(2,"Heal Creature")
SET_BOX_TOOLTIP(3,"Fly Creature")
SET_BOX_TOOLTIP(4,"Rebound Creature")
SET_BOX_TOOLTIP(5,"Protect Creature")

CREATE_PARTY(A)
ADD_TO_PARTY(A,DWARFA,8,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(A,BARBARIAN,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(A,BARBARIAN,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(A,ARCHER,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(A,ARCHER,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(A,MONK,7,0,ATTACK_ENEMIES,0)

CREATE_PARTY(B)
ADD_TO_PARTY(B,GIANT,7,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,SAMURAI,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,DWARFA,8,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,DWARFA,8,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,ARCHER,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,WITCH,7,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(B,ARCHER,6,0,ATTACK_ENEMIES,0)

CREATE_PARTY(C)
ADD_TO_PARTY(C,MONK,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,FAIRY,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,WITCH,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,MONK,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,MONK,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,MONK,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(C,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(D)
ADD_TO_PARTY(D,BARBARIAN,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,BARBARIAN,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,BARBARIAN,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,GIANT,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,GIANT,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(D,GIANT,9,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(E)
ADD_TO_PARTY(E,ARCHER,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,ARCHER,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,BARBARIAN,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,BARBARIAN,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,DWARFA,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(E,SAMURAI,8,0,ATTACK_DUNGEON_HEART,0)

SET_CREATURE_PROPERTY(TUNNELLER,SPECIAL_DIGGER,0)
SET_CREATURE_PROPERTY(TUNNELLER,NEVER_CHICKENS,1)
SET_CREATURE_PROPERTY(TUNNELLER,LORD,1)
SET_CREATURE_HEALTH(TUNNELLER,3500)
SET_CREATURE_STRENGTH(TUNNELLER,250)
SET_CREATURE_ARMOUR(TUNNELLER,180)
SET_CREATURE_CONFIGURATION(TUNNELLER,BaseSpeed,80)

CREATE_PARTY(F)
ADD_TO_PARTY(F,TUNNELLER,10,10000,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,SAMURAI,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,SAMURAI,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,WIZARD,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,WIZARD,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,GIANT,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,GIANT,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(F,GIANT,10,0,ATTACK_DUNGEON_HEART,0)

QUICK_OBJECTIVE(1,"An unusual archwizard and his fellow heroes have captured your dungeon. Lead your only creatures to take it back.",9)
TUTORIAL_FLASH_BUTTON(​23,-1)

SET_FLAG(PLAYER0,FLAG0,1)
SET_FLAG(PLAYER0,FLAG1,0)
SET_FLAG(PLAYER0,FLAG2,0)
SET_TIMER(PLAYER0,TIMER1)

IF(PLAYER_GOOD,FAIRY==0)
CHANGE_SLAB_OWNER(72,16,PLAYER0)
QUICK_INFORMATION(2,"When all the heroes in a room are killed, their room become yours. You can also get some unusual special boxes in their libraries, use them wisely!",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,ARCHER==0)
CHANGE_SLAB_OWNER(64,7,PLAYER0)
ENDIF

IF(PLAYER_GOOD,MONK<=2)
CHANGE_SLAB_OWNER(56,8,PLAYER0)
ENDIF

IF(PLAYER_GOOD,KNIGHT==0)
CHANGE_SLAB_OWNER(64,24,PLAYER0)
ENDIF

IF(PLAYER_GOOD,THIEF==0)
CHANGE_SLAB_OWNER(56,16,PLAYER0)
ENDIF

IF(PLAYER_GOOD,BARBARIAN==0)
CHANGE_SLAB_OWNER(49,16,PLAYER0)
ENDIF

IF(PLAYER_GOOD,WITCH==0)
CHANGE_SLAB_OWNER(30,16,PLAYER0)
QUICK_INFORMATION(3,"The archwizard casted an unusual spell to the lake, and it will thunder strike any intruders who steps in! I hope you are still alive after passing it!",ALL_PLAYERS)
ENDIF

IF(PLAYER0,FLAG0==1)
IF(PLAYER0,TIMER1>=30)
NEXT_COMMAND_REUSABLE
USE_POWER_ON_CREATURE(PLAYER0,ANY_CREATURE,AT_ACTION_POINT[6],PLAYER1,POWER_LIGHTNING,6,1)
IF_ACTION_POINT(6,PLAYER0)
NEXT_COMMAND_REUSABLE
PLAY_MESSAGE(PLAYER0,SOUND,974)
ENDIF
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER0,TIMER1)
ENDIF
ENDIF

IF(PLAYER0,ENTRANCE>0)
CREATURE_ENTRANCE_LEVEL(PLAYER0,6)
QUICK_INFORMATION(4,"This unusually large portal can attract level 6 creatures for you.",ALL_PLAYERS)
ENDIF

IF(PLAYER0, BOX1_ACTIVATED == 1)
	USE_SPELL_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,ORC,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,SPELL_SPEED,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,SPELL_SPEED,9)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF

IF(PLAYER0, BOX2_ACTIVATED == 1)
	USE_SPELL_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,ORC,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,ORC,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,SPELL_HEAL,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,SPELL_HEAL,9)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF

IF(PLAYER0, BOX3_ACTIVATED == 1)
	USE_SPELL_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,ORC,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,SPELL_FLIGHT,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,SPELL_FLIGHT,9)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF

IF(PLAYER0, BOX4_ACTIVATED == 1)
	USE_SPELL_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,ORC,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,SPELL_REBOUND,9)
	USE_SPELL_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,SPELL_REBOUND,9)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF

IF(PLAYER0, BOX5_ACTIVATED == 1)
	USE_POWER_ON_CREATURE(PLAYER0,BILE_DEMON,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,TENTACLE,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,ORC,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,GIANT,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,DARK_MISTRESS,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,HORNY,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,DRAGON,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	USE_POWER_ON_CREATURE(PLAYER0,TROLL,ANYWHERE,PLAYER0,POWER_PROTECT,9,1)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF

IF(PLAYER_GOOD,WIZARD<=2)
SET_FLAG(PLAYER0,FLAG0,2)
CHANGE_SLAB_OWNER(12,7,PLAYER0)
CHANGE_SLAB_OWNER(12,12,PLAYER0)
MAGIC_AVAILABLE(PLAYER0,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,1,0)
ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
QUICK_OBJECTIVE(5,"The archwizard is dead, and you reclaimed your dungeon. Now it's your turn to prepare yourself and revenge to the heroes!",ALL_PLAYERS)
PLAY_MESSAGE(PLAYER0,SOUND,870)
ENDIF

IF(PLAYER0,FLAG0>1)
SET_TIMER(PLAYER0,TIMER7)
ENDIF


IF(PLAYER0,IMP<12)
IF(PLAYER0,TIMER7>=250)
QUICK_INFORMATION(6,"Your unusual dungeon heart will automatically create imps for you.",ALL_PLAYERS)
NEXT_COMMAND_REUSABLE
ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,PLAYER0,1,4,0)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER0,TIMER7)
ENDIF
ENDIF

IF(PLAYER0,TRAINING>0)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,D,13,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ENDIF

IF(PLAYER0,GRAVEYARD > 0)
QUICK_INFORMATION(7,"This unusual graveyard requires 20 bodies for each vampire, and can only provide up to 5 vampires.", ALL_PLAYERS)
ADD_TO_PARTY(C,VAMPIRE,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(D,VAMPIRE,6,0,ATTACK_ENEMIES,0)
ADD_TO_PARTY(E,VAMPIRE,6,0,ATTACK_ENEMIES,0)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,C,14,1)
ENDIF

IF(PLAYER0,WORKSHOP>0)
QUICK_INFORMATION(8,"This unusual workshop has plans for some kinds of unusual traps! However the resources are limited, so you can only own maximum 40 traps at one time.",ALL_PLAYERS)
DISPLAY_VARIABLE(PLAYER0,FLAG1,40,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ENDIF

REM IF(PLAYER0,TOTAL_TRAPS_MANUFACTURED>=79)
REM TRAP_AVAILABLE(PLAYER0,ALARM,0,0)
REM TRAP_AVAILABLE(PLAYER0,POISON_GAS,0,0)
REM TRAP_AVAILABLE(PLAYER0,LAVA,0,0)
REM TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,0,0)
REM ENDIF

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,SET,PLAYER0,ALARM,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,ALARM,1)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,LAVA,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,LAVA,1)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,POISON_GAS,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,POISON_GAS,1)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,WORD_OF_POWER,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,WORD_OF_POWER,1)

IF(PLAYER0,FLAG1 >= 39)
    REM Player has 40 alarm traps set + boxes
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,ALARM,0,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,POISON_GAS,0,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,0,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,LAVA,0,0)
ENDIF
IF(PLAYER0,FLAG1 < 39)
    REM Player should be able to make alarm traps again
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,ALARM,1,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,1,0)
    NEXT_COMMAND_REUSABLE
    TRAP_AVAILABLE(PLAYER0,LAVA,1,0)
ENDIF

IF(PLAYER0,VAMPIRE<5)
SET_GAME_RULE(BodiesForVampire,20)
ENDIF

IF(PLAYER0,VAMPIRE>=5)
	CHANGE_SLAB_TYPE(67,38,HARD)
	CHANGE_SLAB_OWNER(67,41,PLAYER_GOOD)
	QUICK_INFORMATION(13,"You got 5 vampires, and the entrance to the graveyard was closed forever...", ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SOUND,45)
ENDIF

IF_ACTION_POINT(7,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,A,7,1)
	PLAY_MESSAGE(PLAYER0,SOUND,90)
ENDIF

IF_ACTION_POINT(8,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,B,8,1)
	PLAY_MESSAGE(PLAYER0,SOUND,90)
ENDIF

IF_ACTION_POINT(15,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,E,15,1)
	PLAY_MESSAGE(PLAYER0,SOUND,90)
ENDIF

IF_ACTION_POINT(11,PLAYER0)
	SET_FLAG(PLAYER0,FLAG0,4)
	HIDE_TIMER
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,F,11,1)
	QUICK_INFORMATION(18,"The lord of the land looks a bit...unusual, but he is very strong! Beware!",ALL_PLAYERS)
ENDIF

IF(PLAYER0,BRIDGE>0)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
TUTORIAL_FLASH_BUTTON(​18,-1)
ENDIF


IF(PLAYER0,FLAG0==4)
IF(PLAYER_GOOD,TUNNELLER==0)
	IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
	SET_FLAG(PLAYER0,FLAG0,5)
	QUICK_INFORMATION(9,"The heroes are defeated, and their attack stopped.",ALL_PLAYERS)
	PLAY_MESSAGE(PLAYER0,SOUND,870)
	SET_TIMER(PLAYER_GOOD,TIMER1)
	ENDIF
ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER1>=600)
QUICK_OBJECTIVE(20,"Oh no, both enemy keepers have just built bridges to your side. The final battle is about to start...",ALL_PLAYERS)
PLAY_MESSAGE(PLAYER0,SOUND,871)
ROOM_AVAILABLE(PLAYER2,BRIDGE,1,1)
ROOM_AVAILABLE(PLAYER3,BRIDGE,1,1)
	CHANGE_SLAB_TYPE(41,61,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(41,62,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(41,63,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(41,64,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(41,65,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(41,66,BRIDGE_FRAME)
	CHANGE_SLAB_OWNER(41,61,PLAYER2)
	CHANGE_SLAB_OWNER(41,62,PLAYER2)
	CHANGE_SLAB_OWNER(41,63,PLAYER2)
	CHANGE_SLAB_OWNER(41,64,PLAYER2)
	CHANGE_SLAB_OWNER(41,65,PLAYER2)
	CHANGE_SLAB_OWNER(41,66,PLAYER2)
	CHANGE_SLAB_TYPE(45,61,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(45,62,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(45,63,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(45,64,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(45,65,BRIDGE_FRAME)
	CHANGE_SLAB_TYPE(45,66,BRIDGE_FRAME)
	CHANGE_SLAB_OWNER(45,61,PLAYER3)
	CHANGE_SLAB_OWNER(45,62,PLAYER3)
	CHANGE_SLAB_OWNER(45,63,PLAYER3)
	CHANGE_SLAB_OWNER(45,64,PLAYER3)
	CHANGE_SLAB_OWNER(45,65,PLAYER3)
	CHANGE_SLAB_OWNER(45,66,PLAYER3)
	CREATURE_ENTRANCE_LEVEL(PLAYER2,6)
	CREATURE_ENTRANCE_LEVEL(PLAYER3,6)
ENDIF

IF(PLAYER2,TREASURE >= 50)
  NEXT_COMMAND_REUSABLE
  ROOM_AVAILABLE(PLAYER2,TREASURE,0,0)
ENDIF
IF(PLAYER2,TREASURE < 50)
  NEXT_COMMAND_REUSABLE
  ROOM_AVAILABLE(PLAYER2,TREASURE,1,1)
ENDIF

IF(PLAYER3,TREASURE >= 50)
  NEXT_COMMAND_REUSABLE
  ROOM_AVAILABLE(PLAYER3,TREASURE,0,0)
ENDIF
IF(PLAYER3,TREASURE < 50)
  NEXT_COMMAND_REUSABLE
  ROOM_AVAILABLE(PLAYER3,TREASURE,1,1)
ENDIF

IF_ACTION_POINT(12,PLAYER0)
QUICK_INFORMATION(10,"Heroes noticed your invasion, and their unusual hero gates will send their parties for each 2 minutes.",ALL_PLAYERS)
PLAY_MESSAGE(PLAYER0,SOUND,872)
SET_TIMER(PLAYER1,TIMER1)
SET_TIMER(PLAYER0,TIMER6)
DISPLAY_TIMER(PLAYER0,TIMER6,1)
ENDIF

IF(PLAYER0,TIMER6>=2400)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER0,TIMER6)
ENDIF

IF(PLAYER0,FLAG0<4)
IF(PLAYER1,TIMER1>=2400)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,A,-1,1)
PLAY_MESSAGE(PLAYER0,SOUND,90)
ENDIF
ENDIF

IF(PLAYER0,FLAG0<4)
IF(PLAYER1,TIMER1>=4800)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,B,-2,1)
PLAY_MESSAGE(PLAYER0,SOUND,90)
ENDIF
ENDIF

IF(PLAYER0,FLAG0<4)
IF(PLAYER1,TIMER1>=7200)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,B,-3,1)
PLAY_MESSAGE(PLAYER0,SOUND,90)
SET_TIMER(PLAYER0,TIMER2)
ENDIF
ENDIF

SET_FLAG(PLAYER_GOOD,FLAG3,1)

IF(PLAYER0,FLAG0<4)
    IF(PLAYER0,TIMER2 >= 2400)
    NEXT_COMMAND_REUSABLE
    PLAY_MESSAGE(PLAYER0,SOUND,90)
    NEXT_COMMAND_REUSABLE
    RANDOMISE_FLAG(PLAYER_GOOD,FLAG3,9)
        IF(PLAYER_GOOD,FLAG3 == 1)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,C,-1,1)
            PLAY_MESSAGE(PLAYER0,SOUND,974)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 2)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,C,-2,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 3)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,C,-3,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 4)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,D,-1,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 5)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,D,-2,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 6)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,D,-3,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 7)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,E,-1,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 8)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,E,-2,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
        IF(PLAYER_GOOD,FLAG3 == 9)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,E,-3,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER2)
        ENDIF
    ENDIF
ENDIF



IF(PLAYER0,FLAG0==1)
IF(PLAYER0,TOTAL_CREATURES==0)
QUICK_OBJECTIVE(11,"You lost your only creatures, and you lost your dungeon forever.",ALL_PLAYERS)
LOSE_GAME
ENDIF
ENDIF

IF(PLAYER0,FLAG0==5)
IF(PLAYER0,ALL_DUNGEONS_DESTROYED==1)
QUICK_OBJECTIVE(17,"Now you are the new lord of this kingdom, oh unusual one!",ALL_PLAYERS)
WIN_GAME
ENDIF
ENDIF