REM MAP 'AGAINST THE ODDS'

LEVEL_VERSION(1)
SET_GENERATE_SPEED(800)
START_MONEY(PLAYER0,250)
MAX_CREATURES(PLAYER0,1)
START_MONEY(PLAYER1,750)
MAX_CREATURES(PLAYER1,30)
SET_MUSIC("4")

SET_CREATURE_MAX_LEVEL(PLAYER1,DARK_MISTRESS,5)
SET_CREATURE_CONFIGURATION(VAMPIRE,RoomSlabsRequired,10,9,0)
HEART_LOST_QUICK_OBJECTIVE(51,"Sometimes, life doesn't go as planned. Luckily here you can take another chance and try a different approach. Use your knowledge you've gained for the better when you try again ;-)         Made by Crokydriver",PLAYER0)

SET_BOX_TOOLTIP(1,"Recieve Workers LVL5: Recieve a motivated costless moderate level work force")
SET_BOX_TOOLTIP(2,"Recieve Workers LVL10: Recieve a motivated costless high level work force")
IF(PLAYER0,BOX1_ACTIVATED==1)
    NEXT_COMMAND_REUSABLE
    ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,LAST_EVENT,5,5,0,JUMP)
    NEXT_COMMAND_REUSABLE
    PLAY_MESSAGE(PLAYER0,SOUND,496)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER0,BOX1_ACTIVATED,0)
ENDIF
IF(PLAYER0,BOX2_ACTIVATED==1)
    NEXT_COMMAND_REUSABLE
    ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,LAST_EVENT,3,10,0,JUMP)
    NEXT_COMMAND_REUSABLE
    PLAY_MESSAGE(PLAYER0,SOUND,496)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER0,BOX2_ACTIVATED,0)
ENDIF

COMPUTER_PLAYER(PLAYER1,3)
SET_COMPUTER_GLOBALS(PLAYER1,0,1,1,8,0,9999,1)
SET_COMPUTER_PROCESS(PLAYER1,"DIG TO CLOSE GOLD",0,0,500,2,2)
SET_COMPUTER_PROCESS(PLAYER1,"DIG TO GREEDY GOLD",0,999999,9999,0,0)
COMPUTER_PLAYER(PLAYER2,ROAMING)
COMPUTER_PLAYER(PLAYER3,ROAMING)
SET_FLAG(PLAYER1,FLAG1,0)

SET_GAME_RULE(ImpWorkExperience,400)
SET_GAME_RULE(MaxThingsInHand,4,PLAYER0)
IF(PLAYER0,SKELETON>=10)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(PrisonSkeletonChance,0,PLAYER0)
    QUICK_INFORMATION(11,"Max 10 skeletons allowed")
ENDIF
IF(PLAYER0,SKELETON<10)
    IF(PLAYER0,SKELETON>5)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(PrisonSkeletonChance,20,PLAYER0)
    ENDIF
    IF(PLAYER0,SKELETON<=5)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(PrisonSkeletonChance,80,PLAYER0)
    ENDIF
ENDIF
IF(PLAYER0,VAMPIRE>=3)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(BodiesForVampire,25,PLAYER0)
    QUICK_INFORMATION(12,"Vampires need more bodies after the 3th")
ENDIF
IF(PLAYER0,VAMPIRE<3)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(BodiesForVampire,10,PLAYER0)
ENDIF
IF(PLAYER1,VAMPIRES_RAISED>=2)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(BodiesForVampire,50,PLAYER1)
ENDIF

IF(PLAYER0,CREATURES_CONVERTED==1)
    QUICK_INFORMATION(14,"Conversion... deliciously cruel, just as we like it. But amusingly, some victims will perish before they can be persuaded, the odds shifting with every living soul breathing in your domain.")
ENDIF

IF(PLAYER0,CREATURES_CONVERTED>=10)
    REM Calculating Player0 'living' creatures for TortureChance Conditions
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER_GOOD,FLAG1,SET,PLAYER0,TOTAL_CREATURES)
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER_GOOD,FLAG1,DECREASE,PLAYER0,SKELETON)
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER_GOOD,FLAG1,DECREASE,PLAYER0,VAMPIRE)
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER_GOOD,FLAG1,DECREASE,PLAYER0,GHOST)
    IF(PLAYER_GOOD,FLAG1>=0)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,5,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=15)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,11,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=27)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,21,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=37)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,35,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=44)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,53,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=48)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,75,PLAYER0)
    ENDIF
    IF(PLAYER_GOOD,FLAG1>=50)
        NEXT_COMMAND_REUSABLE
        SET_GAME_RULE(TortureDeathChance,100,PLAYER0)
    ENDIF
ENDIF

IF(PLAYER0,GHOST<=5)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(GhostConvertChance,80,PLAYER0)
ENDIF
IF(PLAYER0,GHOST>5)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(GhostConvertChance,30,PLAYER0)
ENDIF
IF(PLAYER0,GHOST>=10)
    NEXT_COMMAND_REUSABLE
    SET_GAME_RULE(GhostConvertChance,0,PLAYER0)
    QUICK_INFORMATION(13,"Max 10 ghosts allowed")
ENDIF

SET_POWER_CONFIGURATION(POWER_FREEZE,PanelTabIndex,16)
SET_POWER_CONFIGURATION(POWER_FREEZE,Castability,"ANYWHERE",1)
SET_POWER_CONFIGURATION(POWER_REBOUND,PanelTabIndex,15)
SET_POWER_CONFIGURATION(POWER_SLOW,PanelTabIndex,14)

SET_CREATURE_CONFIGURATION(HORNY,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(DRAGON,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(TROLL,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(MAIDEN,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(BILE_DEMON,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(DARK_MISTRESS,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(HELL_HOUND,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(BEHOLDER,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(TENTACLE,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(FLYING_TERROR,NotDoJobs,SCAVENGE)
SET_CREATURE_CONFIGURATION(ORC,SecondaryJobs,SCAVENGE,1)

SET_CREATURE_PROPERTY(KNIGHT,LORD,0)
SET_CREATURE_PROPERTY(VAMPIRE,NO_IMPRISONMENT,1)
SET_CREATURE_PROPERTY(SKELETON,NO_IMPRISONMENT,1)
SET_CREATURE_PROPERTY(IMP,NO_IMPRISONMENT,1)
SET_CREATURE_PROPERTY(AVATAR,NO_IMPRISONMENT,1)
IF_ACTION_POINT(3,PLAYER0)
    SET_CREATURE_PROPERTY(KNIGHT,NO_IMPRISONMENT,1)
ENDIF
SET_CREATURE_PROPERTY(IMP,NO_CORPSE_ROTTING,1)
SET_CREATURE_INSTANCE(MONK,2,RANGED_HEAL,2)
SET_CREATURE_INSTANCE(MONK,3,RANGED_ARMOUR,3)
SET_CREATURE_MAX_LEVEL(PLAYER1,BEHOLDER,4)
SET_FLAG(PLAYER0,FLAG0,0)

CONCEAL_MAP_RECT(PLAYER0,64,65,4,4,1)
CONCEAL_MAP_RECT(PLAYER0,151,196,20,20,1)
CONCEAL_MAP_RECT(PLAYER0,109,142,30,30,1)

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

ADD_CREATURE_TO_POOL(DEMONSPAWN,3)
ADD_CREATURE_TO_POOL(TROLL,2)
ADD_CREATURE_TO_POOL(TENTACLE,2)
ADD_CREATURE_TO_POOL(SORCEROR,2)
ADD_CREATURE_TO_POOL(ORC,5)
ADD_CREATURE_TO_POOL(BILE_DEMON,5)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,3)
ADD_CREATURE_TO_POOL(FLYING_TERROR,3)
ADD_CREATURE_TO_POOL(MAIDEN,2)
ADD_CREATURE_TO_POOL(HORNY,1)
IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
    ADD_CREATURE_TO_POOL(HORNY,1)
    ADD_CREATURE_TO_POOL(VAMPIRE,3)
    ADD_CREATURE_TO_POOL(DARK_MISTRESS,2)
    ADD_CREATURE_TO_POOL(FLYING_TERROR,2)
ENDIF

ADD_CREATURE_TO_POOL(DRAGON,5)
ADD_CREATURE_TO_POOL(WIZARD,2)
ADD_CREATURE_TO_POOL(BARBARIAN,2)
ADD_CREATURE_TO_POOL(SAMURAI,2)
ADD_CREATURE_TO_POOL(FAIRY,3)

CREATURE_AVAILABLE(PLAYER0,TAURUS,1,0)
CREATURE_AVAILABLE(PLAYER0,WIZARD,1,0)
CREATURE_AVAILABLE(PLAYER0,BARBARIAN,1,0)
CREATURE_AVAILABLE(PLAYER0,SAMURAI,1,0)
CREATURE_AVAILABLE(PLAYER0,FAIRY,1,0)
CREATURE_AVAILABLE(PLAYER0,MONK,1,0)
CREATURE_AVAILABLE(PLAYER1,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER1,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER1,ORC,1,0)
CREATURE_AVAILABLE(PLAYER1,FLYING_TERROR,1,0)
CREATURE_AVAILABLE(PLAYER1,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER1,DARK_MISTRESS,1,3)
CREATURE_AVAILABLE(PLAYER1,MAIDEN,1,2)
CREATURE_AVAILABLE(PLAYER1,HORNY,1,2)
CREATURE_AVAILABLE(PLAYER1,TENTACLE,1,0)
CREATURE_AVAILABLE(PLAYER1,SPIDER,1,0)
CREATURE_AVAILABLE(PLAYER1,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER1,VAMPIRE,1,0)
IF(PLAYER1,TENTACLE==5)
    CREATURE_AVAILABLE(PLAYER1,TENTACLE,0,0)
ENDIF
IF(PLAYER1,SPIDER==2)
    CREATURE_AVAILABLE(PLAYER1,SPIDER,0,0)
ENDIF
IF(PLAYER1,SORCEROR==5)
    CREATURE_AVAILABLE(PLAYER1,SORCEROR,0,0)
ENDIF

ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
IF(PLAYER0,GARDEN>=25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER0,GARDEN,0,0)
ENDIF
IF(PLAYER0,GARDEN<25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ENDIF
IF_SLAB_OWNER(65,25,PLAYER0)
    IF(PLAYER0,GARDEN>=50)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,GARDEN,0,0)
    ENDIF
    IF(PLAYER0,GARDEN<50)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
    ENDIF
ENDIF
IF_SLAB_OWNER(79,71,PLAYER0)
    IF(PLAYER0,GARDEN>=70)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,GARDEN,0,0)
    ENDIF
    IF(PLAYER0,GARDEN<70)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
    ENDIF
ENDIF
IF_SLAB_OWNER(80,70,PLAYER0)
    ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ENDIF

ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,0)

MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,0,0)
MAGIC_AVAILABLE(PLAYER0,POWER_FREEZE,0,0)

TRAP_AVAILABLE(PLAYER0,ALARM,0,5)
TRAP_AVAILABLE(PLAYER1,ALARM,1,0)
TRAP_AVAILABLE(PLAYER1,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
TRAP_AVAILABLE(PLAYER0,TNT,1,0)
TRAP_AVAILABLE(PLAYER0,SENTRY,1,0)

DOOR_AVAILABLE(PLAYER0,BRACED,1,10)
DOOR_AVAILABLE(PLAYER1,BRACED,1,0)
DOOR_AVAILABLE(PLAYER0,STEEL,0,5)
DOOR_AVAILABLE(PLAYER1,STEEL,1,0)
DOOR_AVAILABLE(PLAYER1,MAGIC,1,0)

CREATE_PARTY(START)
ADD_TO_PARTY(START,THIEF,1,250,ATTACK_DUNGEON_HEART,300)
ADD_TO_PARTY(START,THIEF,1,250,ATTACK_DUNGEON_HEART,300)
ADD_TO_PARTY(START,THIEF,1,250,ATTACK_DUNGEON_HEART,300)

CREATE_PARTY(START2)
ADD_TO_PARTY(START2,ARCHER,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START2,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START2,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START2,MONK,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START2,WITCH,3,250,ATTACK_DUNGEON_HEART,0)


CREATE_PARTY(PRISON)
ADD_TO_PARTY(PRISON,ARCHER,4,350,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(PRISON,BARBARIAN,3,350,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(PRISON,WIZARD,4,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(PRISON,BARBARIAN,3,350,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(PRISON,WITCH,3,350,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(START3)
ADD_TO_PARTY(START3,WIZARD,5,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START3,MONK,5,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START3,BARBARIAN,5,350,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START3,SAMURAI,5,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START3,ARCHER,5,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(START3,FAIRY,5,500,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(GRAVE)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,3,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,THIEF,4,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,ARCHER,3,300,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,ARCHER,3,300,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GRAVE,FAIRY,3,200,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(ENTRANCE)
ADD_TO_PARTY(ENTRANCE,BARBARIAN,6,350,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(ENTRANCE,SAMURAI,6,350,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(ENTRANCE,GIANT,6,350,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(ENTRANCE,FAIRY,6,350,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(ENTRANCE,WIZARD,4,350,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(ENTRANCE,ARCHER,6,350,ATTACK_DUNGEON_HEART,250)

CREATE_PARTY(ENERGY)
ADD_TO_PARTY(ENERGY,GIANT,9,500,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(ENERGY,BARBARIAN,9,500,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(ENERGY,ARCHER,9,500,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(ENERGY,ARCHER,9,500,ATTACK_DUNGEON_HEART,800)

CREATE_PARTY(GIANT)
ADD_TO_PARTY(GIANT,GIANT,9,750,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GIANT,ARCHER,4,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GIANT,ARCHER,4,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GIANT,WIZARD,4,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(GIANT,WIZARD,4,250,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(SAMURAI)
ADD_TO_PARTY(SAMURAI,SAMURAI,4,200,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(SAMURAI,WIZARD,4,100,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(SAMURAI,WIZARD,4,100,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(SAMURAI,SAMURAI,4,200,ATTACK_DUNGEON_HEART,250)
ADD_TO_PARTY(SAMURAI,SAMURAI,5,500,ATTACK_DUNGEON_HEART,250)

CREATE_PARTY(KNIGHT)
ADD_TO_PARTY(KNIGHT,KNIGHT,6,750,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(KNIGHT,SAMURAI,6,250,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(KNIGHT,BARBARIAN,6,250,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(KNIGHT,GIANT,6,250,ATTACK_DUNGEON_HEART,800)
ADD_TO_PARTY(KNIGHT,THIEF,6,250,ATTACK_DUNGEON_HEART,800)

CREATE_PARTY(REVEAL)
ADD_TO_PARTY(REVEAL,BARBARIAN,5,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(REVEAL,BARBARIAN,5,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(REVEAL,WITCH,4,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(REVEAL,FAIRY,3,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(BIG_GUARD)
ADD_TO_PARTY(BIG_GUARD,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(BIG_GUARD,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(BIG_GUARD,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(BIG_GUARD,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(BIG_GUARD,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HERO_LAIR)
ADD_TO_PARTY(HERO_LAIR,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HERO_LAIR,ARCHER,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HERO_LAIR,THIEF,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HERO_LAIR,THIEF,9,150,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HERO_LAIR,THIEF,9,150,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(TRAINING)
ADD_TO_PARTY(TRAINING,TIME_MAGE,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING,TIME_MAGE,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING,FAIRY,6,200,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HATCHERY)
ADD_TO_PARTY(HATCHERY,GIANT,9,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HATCHERY,SAMURAI,9,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HATCHERY,BARBARIAN,9,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HATCHERY,ARCHER,9,250,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARVES)
ADD_TO_PARTY(DWARVES,DWARFA,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,DWARFA,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,DWARFA,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,DWARFA,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,DWARFA,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,ARCHER,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,ARCHER,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(DWARVES,ARCHER,9,200,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(TRAINING2)
ADD_TO_PARTY(TRAINING2,BARBARIAN,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING2,BARBARIAN,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING2,GIANT,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING2,GIANT,9,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TRAINING2,SAMURAI,9,200,ATTACK_DUNGEON_HEART,0)

QUICK_OBJECTIVE(15,"Welcome, my evil friend. Victory awaits, but by what path? Will you crush them head-on or slip through their weak spot? Choose wisely, if you can unravel all the needed pieces to flip the odds. Perhaps you simply wait for them to wander into your domain to be destroyed?")
QUICK_INFORMATION(16,"IMPORTANT!: At first, your grasp is weak and you may pick up only four creatures at once, and only pick them up upon your own domain.")
QUICK_INFORMATION(17,"TIP1: Exploration is key, yet tread carefully. Some secrets are best left buried, until you require them. Or skulk around the danger, if that suits your nature or if you have no other choice, coward.")
QUICK_INFORMATION(20,"TIP2: Monks wield 'ranged healing' and 'ranged armour', useful servants, if you value support over strength.")

IF_ACTION_POINT(1,PLAYER0)
    SET_FLAG(PLAYER_GOOD,FLAG5,1)
    DELETE_FROM_PARTY(REVEAL,BARBARIAN,5)
    DELETE_FROM_PARTY(REVEAL,FAIRY,3)
    ADD_TO_PARTY(REVEAL,BARBARIAN,8,400,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(REVEAL,GIANT,8,400,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(REVEAL,GIANT,8,400,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(REVEAL,FAIRY,4,150,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(REVEAL,FAIRY,4,150,ATTACK_DUNGEON_HEART,0)
ENDIF

IF_AVAILABLE(PLAYER0,POWER_POSSESS==1)
    SET_FLAG(PLAYER0,FLAG3,30) REM Water Energy Cost of POSSESSION
ENDIF
IF_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE==1)
    SET_FLAG(PLAYER0,FLAG1,300) REM Water Energy Cost of HEAL
    SET_FLAG(PLAYER_GOOD,FLAG2,1) REM Spellbook found
    IF_SLAB_OWNER(52,3,PLAYER_NEUTRAL)
        SET_FLAG(PLAYER0,FLAG0,50)
    ENDIF
    IF(PLAYER_GOOD,FLAG0==0)
        QUICK_OBJECTIVE(2,"In this realm you'll need 300 Water Energy and 5 Gold to cast HEAL,the spell will be available as soon as you find enough Water Energy!")
    ENDIF
ENDIF
IF_AVAILABLE(PLAYER0,POWER_FREEZE==1)
    SET_FLAG(PLAYER0,FLAG4,200) REM Water Energy Cost of FREEZE
    SET_FLAG(PLAYER_GOOD,FLAG3,1) REM Spellbook found
    IF_SLAB_OWNER(52,3,PLAYER_NEUTRAL)
        SET_FLAG(PLAYER0,FLAG0,50)
    ENDIF
    IF(PLAYER_GOOD,FLAG0==0)
        QUICK_OBJECTIVE(3,"In this realm you'll need 200 Water Energy and 60 Gold to cast FREEZE, the spell will be available as soon as you find enough Water Energy!")
    ENDIF
ENDIF
IF_AVAILABLE(PLAYER0,POWER_REBOUND==1)
    SET_FLAG(PLAYER0,FLAG7,100) REM Water Energy Cost of REBOUND
    SET_FLAG(PLAYER_GOOD,FLAG6,1) REM Spellbook found
    IF_SLAB_OWNER(52,3,PLAYER_NEUTRAL)
        SET_FLAG(PLAYER0,FLAG0,50)
    ENDIF
    IF(PLAYER_GOOD,FLAG0==0)
        QUICK_OBJECTIVE(4,"In this realm you'll need 100 Water Energy and 8 Gold to cast MAGIC SHIELD, the spell will be available as soon as you find enough Water Energy!")
    ENDIF
ENDIF

IF(PLAYER0,DRUID==3)
    SET_FLAG(PLAYER0,FLAG0,600)
    QUICK_OBJECTIVE(21,"You've uncovered a hidden Water Shrine, you command the Druids to whisper their forbidden secrets of generating Water Energy = WE (Top right corner on the screen). Find the basic knowledge (SPELLBOOK) and you'll be able to use this liquid magic to bend a creature's blood to your will: seize control (POSSESSION - 30 WE per sec), defy death with healing water (HEAL - 300 WE and 5 gold per cast), freeze their veins solid (FREEZE - 200 WE and 60 gold per cast) or grant them a magic water shield (REBOUND - 100 WE and 8 gold per cast). The amount of Druids you control, determines the Water Energy you'll generate and can hold at once.",1)
    SET_CREATURE_PROPERTY(KNIGHT,NO_IMPRISONMENT,0)
    DISPLAY_VARIABLE(PLAYER0,FLAG0)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,17,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,18,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,19,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,20,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,21,1,PLAYER1)
ENDIF

IF_ACTION_POINT(2,PLAYER0)
    QUICK_INFORMATION(5,"An ancient crypt... what secrets lie within? Or is it nothing but a waiting trap?",2)
    ADD_CREATURE_TO_LEVEL(PLAYER1,FLYING_TERROR,PLAYER1,1,1,0,NONE)
ENDIF

IF_SLAB_OWNER(52,3,PLAYER0)
    DELETE_FROM_PARTY(KNIGHT,KNIGHT,6)
    ADD_TO_PARTY(KNIGHT,KNIGHT,8,2500,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(KNIGHT,ARCHER,7,300,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(KNIGHT,ARCHER,7,300,ATTACK_DUNGEON_HEART,0)
    SET_TIMER(PLAYER_GOOD,TIMER0)
    IF(PLAYER_GOOD,TIMER0>=600)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ENERGY,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIGHT,-4,1)
    ENDIF
    SET_TIMER(PLAYER0,TIMER0) REM Timer for Water Energy Generation
    SET_TIMER(PLAYER0,TIMER1) REM Timer for Possess decreasing
    SET_FLAG(PLAYER_GOOD,FLAG0,1) REM Checkpoint reached
    IF(PLAYER0,TIMER0>20)
        NEXT_COMMAND_REUSABLE
        COMPUTE_FLAG(PLAYER0,FLAG6,SET,PLAYER0,DRUID)

        IF(PLAYER0,FLAG6==0)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER0,FLAG0,0)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,0,0)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_FREEZE,0,0)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,0,0)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_REBOUND,0,0)
        ENDIF
        IF(PLAYER0,FLAG6==1)
            IF(PLAYER0,FLAG0>=600)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG0,600)
            ENDIF
            IF(PLAYER0,FLAG0<600)
                NEXT_COMMAND_REUSABLE
                ADD_TO_FLAG(PLAYER0,FLAG0,3) REM Water Energy Generation Value
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER0,TIMER0)
            ENDIF
        ENDIF
        IF(PLAYER0,FLAG6==2)
            IF(PLAYER0,FLAG0>=1200)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG0,1200)
            ENDIF
            IF(PLAYER0,FLAG0<1200)
                NEXT_COMMAND_REUSABLE
                ADD_TO_FLAG(PLAYER0,FLAG0,6) REM Water Energy Generation Value
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER0,TIMER0)
            ENDIF
        ENDIF
        IF(PLAYER0,FLAG6==3)
            TUTORIAL_FLASH_BUTTON(36,350)
            IF(PLAYER0,FLAG0>=1800)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG0,1800)
            ENDIF
            IF(PLAYER0,FLAG0<1800)
                NEXT_COMMAND_REUSABLE
                ADD_TO_FLAG(PLAYER0,FLAG0,9) REM Water Energy Generation Value
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER0,TIMER0)
            ENDIF
        ENDIF
        IF(PLAYER0,FLAG6==4)
            IF(PLAYER0,FLAG0>=2400)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG0,2400)
            ENDIF
            IF(PLAYER0,FLAG0<2400)
                NEXT_COMMAND_REUSABLE
                ADD_TO_FLAG(PLAYER0,FLAG0,12) REM Water Energy Generation Value
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER0,TIMER0)
            ENDIF
        ENDIF
        IF(PLAYER0,FLAG6>=5)
            IF(PLAYER0,FLAG0>=3000)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG0,3000)
            ENDIF
            IF(PLAYER0,FLAG0<3000)
                NEXT_COMMAND_REUSABLE
                ADD_TO_FLAG(PLAYER0,FLAG0,15) REM Water Energy Generation Value
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER0,TIMER0)
            ENDIF
        ENDIF
    ENDIF

    IF(PLAYER1,FLAG1==0) REM Makes sure AI has enough imps as digging is set to 'OFF', AI tends to only have 3 imps. But meanwhile controlling a max amount to avoid to much Imps crossing around for bodies. Deactivates when a Player engages for the final battle.
        IF(PLAYER1,MONEY<=225000)
            IF(PLAYER1,MONEY>150000)
                IF(PLAYER1,IMP<6)
                    NEXT_COMMAND_REUSABLE
                    USE_POWER_AT_LOCATION(PLAYER1,PLAYER1,POWER_IMP,1,PAID)
                ENDIF
            ENDIF
        ENDIF

        IF(PLAYER1,MONEY<=150000)
            IF(PLAYER1,MONEY>PLAYER1,CURRENT_SALARY)
                IF(PLAYER1,IMP<12)
                    NEXT_COMMAND_REUSABLE
                    USE_POWER_AT_LOCATION(PLAYER1,PLAYER1,POWER_IMP,1,PAID)
                ENDIF
            ENDIF
            IF(PLAYER1,MONEY<=PLAYER1,CURRENT_SALARY)
                IF(PLAYER1,IMP<16)
                    NEXT_COMMAND_REUSABLE
                    USE_POWER_AT_LOCATION(PLAYER1,PLAYER1,POWER_IMP,1,FREE)
                ENDIF
            ENDIF
        ENDIF

        IF(PLAYER1,MONEY<=10000)
            IF(PLAYER1,IMP<20)
                NEXT_COMMAND_REUSABLE
                USE_POWER_AT_LOCATION(PLAYER1,PLAYER1,POWER_IMP,1,FREE)
            ENDIF
        ENDIF

        IF(PLAYER1,MONEY<=200000)
            NEXT_COMMAND_REUSABLE
            SET_DOOR(LOCKED,16,63)
        ENDIF

        IF(PLAYER1,MONEY>=225000)
            NEXT_COMMAND_REUSABLE
            SET_DOOR(UNLOCKED,16,63)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,FLAG0>0)
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER0,FLAG2,SET,PLAYER0,MONEY,1)
    NEXT_COMMAND_REUSABLE
    ADD_TO_FLAG(PLAYER0,FLAG2,-5) REM Gold cost for the HEAL spell in order to check if it is cast
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER0,FLAG5,SET,PLAYER0,MONEY,1)
    NEXT_COMMAND_REUSABLE
    ADD_TO_FLAG(PLAYER0,FLAG5,-60) REM Gold cost for the FREEZE spell in order to check if it is cast
    NEXT_COMMAND_REUSABLE
    COMPUTE_FLAG(PLAYER0,CAMPAIGN_FLAG0,SET,PLAYER0,MONEY,1)
    NEXT_COMMAND_REUSABLE
    ADD_TO_FLAG(PLAYER0,CAMPAIGN_FLAG0,-8) REM Gold cost for the REBOUND spell in order to check if it is cast

    IF(PLAYER0,FLAG0>=PLAYER0,FLAG1)
        IF(PLAYER_GOOD,FLAG2==1)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,1,1)
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG0<PLAYER0,FLAG1)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,0,0)
    ENDIF

    IF(PLAYER0,MONEY==PLAYER0,FLAG2)
        NEXT_COMMAND_REUSABLE
        COMPUTE_FLAG(PLAYER0,FLAG0,DECREASE,PLAYER0,FLAG1)
    ENDIF

    IF(PLAYER0,FLAG0>=PLAYER0,FLAG4)
        IF(PLAYER_GOOD,FLAG3==1)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_FREEZE,1,1)
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG0<PLAYER0,FLAG4)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER0,POWER_FREEZE,0,0)
    ENDIF

    IF(PLAYER0,MONEY==PLAYER0,FLAG5)
        NEXT_COMMAND_REUSABLE
        COMPUTE_FLAG(PLAYER0,FLAG0,DECREASE,PLAYER0,FLAG4)
    ENDIF

    IF(PLAYER0,FLAG0>=PLAYER0,FLAG7)
        IF(PLAYER_GOOD,FLAG6==1)
            NEXT_COMMAND_REUSABLE
            MAGIC_AVAILABLE(PLAYER0,POWER_REBOUND,1,1)
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG0<PLAYER0,FLAG7)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER0,POWER_REBOUND,0,0)
    ENDIF

    IF(PLAYER0,MONEY==PLAYER0,CAMPAIGN_FLAG0)
        NEXT_COMMAND_REUSABLE
        COMPUTE_FLAG(PLAYER0,FLAG0,DECREASE,PLAYER0,FLAG7)
    ENDIF

    IF(PLAYER0,VIEW_TYPE==2)
        IF(PLAYER0,TIMER1>25)
            NEXT_COMMAND_REUSABLE
            COMPUTE_FLAG(PLAYER0,FLAG0,DECREASE,PLAYER0,FLAG3)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0,TIMER1)
        ENDIF
    ENDIF

    IF(PLAYER0,FLAG0>=PLAYER0,FLAG3)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,1,1)
    ENDIF
    IF(PLAYER0,FLAG0<PLAYER0,FLAG3)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,0,0)
        IF(PLAYER0,VIEW_TYPE==2)
            NEXT_COMMAND_REUSABLE
            QUICK_INFORMATION(1,"In this realm you'll need enough Water Energy to hold the POSSESSION longer, the spell will be available as soon as you have at least 30 Water Energy!")
        ENDIF
    ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG5==0)
    IF(PLAYER0,GAME_TURN>=1500)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START,-1,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=4500)
        DELETE_FROM_PARTY(START,THIEF,1)
        ADD_TO_PARTY(START,THIEF,2,100,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(START,THIEF,2,100,ATTACK_DUNGEON_HEART,0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START,-3,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=7400)
        DELETE_FROM_PARTY(START,THIEF,1)
        DELETE_FROM_PARTY(START,THIEF,1)
        ADD_TO_PARTY(START,ARCHER,2,100,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(START,ARCHER,2,100,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(START,WIZARD,2,100,ATTACK_DUNGEON_HEART,0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START,-1,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=10300)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START2,-4,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=13912)
        ADD_TO_PARTY(START2,WIZARD,4,100,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(START2,ARCHER,3,100,ATTACK_DUNGEON_HEART,0)
        DELETE_FROM_PARTY(START2,WITCH,3)
        DELETE_FROM_PARTY(START2,MONK,3)
        ADD_TO_PARTY(START2,MONK,4,100,ATTACK_DUNGEON_HEART,0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START2,-2,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=17150)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PRISON,-3,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=22137)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GRAVE,-3,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=24750)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,START3,-2,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=29075)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GIANT,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GIANT,-3,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=33500)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAI,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAI,-4,1)
    ENDIF

    IF(PLAYER0,GAME_TURN>=38500)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIGHT,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIGHT,-3,1)
        ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,17,1,PLAYER1)
        ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,18,1,PLAYER1)
        ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,19,1,PLAYER1)
    ENDIF
ENDIF

IF(PLAYER0,ENTRANCE>=1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ENTRANCE,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ENTRANCE,-3,1)
ENDIF

IF(PLAYER0,WORKSHOP>=1)
    SET_CREATURE_CONFIGURATION(ORC,NotDoJobs,MANUFACTURE,0)
    SET_CREATURE_MAX_LEVEL(PLAYER1,BEHOLDER,10)
    QUICK_OBJECTIVE(10,"The Boom-Boom Toad Clan has surrendered, its workshop and all the scrap now belong to you. Among the pieces lies some explosives and just enough for a single Bridge; place it at your whim, and the toads will rebuild it endlessly under your command. (TIP: use Shift + B to locate it on the map when build)",6)
    SET_TIMER(PLAYER1,TIMER2)
    IF(PLAYER0,BRIDGE==0)
        TUTORIAL_FLASH_BUTTON(18,350)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
    ENDIF
    IF(PLAYER1,TIMER2>=350)
        TUTORIAL_FLASH_BUTTON(64,350)
    ENDIF
    IF(PLAYER1,TIMER2>=18000)
        SET_FLAG(PLAYER1,FLAG3,1)
    ENDIF
ENDIF

IF(PLAYER0,WORKSHOP==0)
    IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
        SET_CREATURE_CONFIGURATION(ORC,NotDoJobs,MANUFACTURE,1)
    ENDIF
    IF(PLAYER0,ORC==0)
        SET_CREATURE_CONFIGURATION(ORC,NotDoJobs,MANUFACTURE,0)
    ENDIF
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER0,BRIDGE,0,0)
    NEXT_COMMAND_REUSABLE
    MOVE_CREATURE(PLAYER0,ANY_CREATURE,AT_ACTION_POINT[23],1,PLAYER0,NULL)
    NEXT_COMMAND_REUSABLE
    MOVE_CREATURE(PLAYER0,ANY_CREATURE,AT_ACTION_POINT[24],1,PLAYER0,NULL)
ENDIF

IF(PLAYER1,TIMER0>=200) REM Blue checks if it is safe to unlock Midas Door at Heart
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(5)
    NEXT_COMMAND_REUSABLE
    SET_DOOR(UNLOCKED,53,65)
    NEXT_COMMAND_REUSABLE
    SET_TIMER(PLAYER1,TIMER0)
ENDIF

IF_ACTION_POINT(7,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,REVEAL,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,REVEAL,-3,1)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
    QUICK_OBJECTIVE(19,"Hmm a Midas door... As long as this intruder has gold it will stand forever.",5)
    NEXT_COMMAND_REUSABLE
    SET_DOOR(LOCKED,53,65)
    SET_TIMER(PLAYER1,TIMER0)
ENDIF

IF(PLAYER1,FLAG1==0)
    SET_TIMER(PLAYER1,TIMER1) REM Loop for moving creatures outside dungeon frequently back into their dungeon.
    IF(PLAYER1,TIMER1>=50)
        NEXT_COMMAND_REUSABLE
        MOVE_CREATURE(PLAYER1,ANY_CREATURE,ON_ENEMY_GROUND,5,PLAYER1,NULL)
        NEXT_COMMAND_REUSABLE
        MOVE_CREATURE(PLAYER1,ANY_CREATURE,ON_NEUTRAL_GROUND,5,PLAYER1,NULL)
        NEXT_COMMAND_REUSABLE
        MOVE_CREATURE(PLAYER1,ANY_CREATURE,AT_ACTION_POINT[4],5,PLAYER1,NULL)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER1,TIMER1)
    ENDIF
ENDIF

IF(PLAYER1,FLAG1==0)
    NEXT_COMMAND_REUSABLE
    MOVE_CREATURE(PLAYER0,IMP,AT_ACTION_POINT[23],1,PLAYER0,NULL)
    NEXT_COMMAND_REUSABLE
    MOVE_CREATURE(PLAYER0,IMP,AT_ACTION_POINT[24],1,PLAYER0,NULL)
    IF(PLAYER0,BRIDGE==1)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,BRIDGE,0,0)
    ENDIF
    IF_ACTION_POINT(14,PLAYER0)
        SET_DOOR(UNLOCKED,35,45)
        SET_DOOR(UNLOCKED,37,45)
        SET_DOOR(UNLOCKED,16,63)
        SET_MUSIC("map02807.battle.mp3")
        SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
        SET_FLAG(PLAYER1,FLAG1,1)
    ENDIF
ENDIF

IF(PLAYER1,FLAG1==0)
    IF_ACTION_POINT(22,PLAYER0)
        SET_DOOR(UNLOCKED,35,45)
        SET_DOOR(UNLOCKED,37,45)
        SET_DOOR(UNLOCKED,16,63)
        SET_MUSIC("map02807.battle.mp3")
        SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
        SET_FLAG(PLAYER1,FLAG1,1)
    ENDIF
ENDIF

IF(PLAYER1,FLAG1==0)
    IF_ACTION_POINT(8,PLAYER0)
        SET_MUSIC("map02807.battle.mp3")
        SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
        SET_DOOR(UNLOCKED,35,45)
        SET_DOOR(UNLOCKED,37,45)
        SET_DOOR(UNLOCKED,16,63)
        SET_FLAG(PLAYER1,FLAG1,1)
    ENDIF
ENDIF

IF(PLAYER1,FLAG1==0)
    IF_ACTION_POINT(9,PLAYER0)
        SET_MUSIC("map02807.battle.mp3")
        SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
        SET_DOOR(UNLOCKED,35,45)
        SET_DOOR(UNLOCKED,37,45)
        SET_DOOR(UNLOCKED,16,63)
        SET_FLAG(PLAYER1,FLAG1,1)
    ENDIF
ENDIF

IF(PLAYER1,FLAG1==0)
    IF_SLAB_OWNER(30,44,PLAYER0)
        IF_SLAB_OWNER(31,44,PLAYER0)
            SET_MUSIC("map02807.battle.mp3")
            SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
            SET_DOOR(UNLOCKED,35,45)
            SET_DOOR(UNLOCKED,37,45)
            SET_DOOR(UNLOCKED,16,63)
            SET_FLAG(PLAYER1,FLAG1,1)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,TRAINING>0)
    SET_TIMER(PLAYER1,TIMER3)
    IF(PLAYER1,TIMER3>=DRAWFROM(3000~6000))
        SET_FLAG(PLAYER1,FLAG3,1)
    ENDIF
ENDIF

IF_SLAB_OWNER(47,29,PLAYER1)
    CHANGE_SLAB_TYPE(47,28,HARD_FLOOR)
ENDIF

IF_SLAB_OWNER(17,40,PLAYER0)
    ADD_TO_FLAG(PLAYER3,FLAG0,1)
ENDIF

IF_SLAB_OWNER(47,26,PLAYER0)
    ADD_TO_FLAG(PLAYER3,FLAG0,1)
ENDIF

IF_SLAB_OWNER(77,34,PLAYER0)
    ADD_TO_FLAG(PLAYER3,FLAG0,1)
ENDIF

IF_SLAB_OWNER(79,78,PLAYER0)
    ADD_TO_FLAG(PLAYER3,FLAG0,1)
ENDIF

IF(PLAYER3,FLAG0==1)
    SET_GAME_RULE(MaxThingsInHand,8)
    QUICK_INFORMATION(6,"You've found something strange. Sane people would be cursed in this tomb, but you feel stronger and can now pick up 8 creatures in your hand (ONLY CREATURES ON OWNED GROUND)",15)
ENDIF

IF(PLAYER3,FLAG0==2)
    SET_GAME_RULE(MaxThingsInHand,12)
    QUICK_INFORMATION(7,"Your power is growing, you can now pick up to 12 creatures")
ENDIF

IF(PLAYER3,FLAG0==3)
    SET_GAME_RULE(MaxThingsInHand,16)
    SET_POWER_CONFIGURATION(POWER_HAND,Castability,"ANYWHERE",1)
    QUICK_INFORMATION(8,"You're stronger then ever and able to pick up creatures ANYWHERE and up to 16 at once")
ENDIF

IF(PLAYER3,FLAG0==4)
    SET_GAME_RULE(MaxThingsInHand,20)
    QUICK_INFORMATION(9,"The ultimate power of holding 20 creatures at once, it is yours to use!")
ENDIF

IF_SLAB_OWNER(61,29,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BIG_GUARD,10,3)
ENDIF

IF_SLAB_OWNER(75,26,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TRAINING2,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BIG_GUARD,-4,1)
ENDIF

IF_SLAB_TYPE(60,22,PRETTY_PATH)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TRAINING,12,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TRAINING,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TRAINING,-4,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO_LAIR,-2,2)
ENDIF

IF_SLAB_OWNER(65,27,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HATCHERY,13,2)
ENDIF

IF_ACTION_POINT(3,PLAYER0)
    ADD_TO_PARTY(HATCHERY,FAIRY,6,150,ATTACK_DUNGEON_HEART,0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HATCHERY,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HATCHERY,-4,1)
ENDIF

IF_SLAB_TYPE(67,9,PRETTY_PATH)
    DELETE_FROM_PARTY(HERO_LAIR,THIEF,9)
    ADD_TO_PARTY(HERO_LAIR,BARBARIAN,9,150,ATTACK_DUNGEON_HEART,0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO_LAIR,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO_LAIR,-2,1)
ENDIF

IF_SLAB_OWNER(70,17,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,-1,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,-2,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO_LAIR,11,3)
ENDIF

IF_SLAB_OWNER(73,66,PLAYER0)
    CHANGE_SLAB_TYPE(64,74,PATH)
ENDIF

IF(PLAYER0,TAURUS>=1)
    QUICK_INFORMATION(18,"The Minotaur studies his enemies before striking their weaknesses with devastating force. A worthy rival to the Horned Reaper in single combat, he simply fights with more patience and without anger issues! Slow to approach but quick to recover, he almost never flees, confident in his strength and tactics. At his highest level, should he fall, he may simply get back up and carry on fighting. He seeks to fight, fights to learn, and learns to kill!")
ENDIF

IF(PLAYER0,BEHOLDER>=1)
    QUICK_INFORMATION(22,"The frightful Beholder is a thick-skinned flying eyeball and formidable spellcaster, blasting projectiles from its many eyes. With no hands, manufacturing is out of the question, and most other jobs quickly overstress it. Fortunately, it prefers sleeping anyway, especially since its battle-scarred hide heals painfully slowly.")
ENDIF

IF(PLAYER0,TOADWARRIOR>=1)
    QUICK_INFORMATION(23,"The Toadwarrior may look cute, but don't underestimate the little brute. His crafty hands let him forge his own flexible armour, custom-made for his uncommon size. Being small en swift, he is hard to hit and loves smashing toes with his tiny hammer, making enemies dance before delivering the final blow.")
ENDIF

IF(PLAYER1,FLAG1==0)
    IF_SLAB_OWNER(16,63,PLAYER1)
        IF_SLAB_TYPE(16,63,PRETTY_PATH)
            SET_TIMER(PLAYER1,TIMER5)
            IF(PLAYER1,TIMER5>=600)
                NEXT_COMMAND_REUSABLE
                PLACE_DOOR(PLAYER1,SECRET,16,63,UNLOCKED,FREE)
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER1,TIMER5)
            ENDIF
        ENDIF
    ENDIF
    IF_SLAB_OWNER(35,45,PLAYER1)
        IF_SLAB_TYPE(35,45,PRETTY_PATH)
            SET_TIMER(PLAYER1,TIMER5)
            IF(PLAYER1,TIMER5>=600)
                NEXT_COMMAND_REUSABLE
                PLACE_DOOR(PLAYER1,MAGIC,35,45,UNLOCKED,FREE)
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER1,TIMER5)
            ENDIF
        ENDIF
    ENDIF
    IF_SLAB_OWNER(37,45,PLAYER1)
        IF_SLAB_TYPE(37,45,PRETTY_PATH)
            SET_TIMER(PLAYER1,TIMER5)
            IF(PLAYER1,TIMER5>=600)
                NEXT_COMMAND_REUSABLE
                PLACE_DOOR(PLAYER1,MAGIC,37,45,UNLOCKED,FREE)
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER1,TIMER5)
            ENDIF
        ENDIF
    ENDIF
    IF_SLAB_OWNER(36,63,PLAYER1)
        IF_SLAB_TYPE(36,63,PRETTY_PATH)
            NEXT_COMMAND_REUSABLE
            PLACE_DOOR(PLAYER1,SECRET,36,63,UNLOCKED,FREE)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER1,BEHOLDER==1)
    NEXT_COMMAND_REUSABLE
    SET_CREATURE_MAX_LEVEL(PLAYER1,FLYING_TERROR,10)
ENDIF

IF(PLAYER1,BEHOLDER==0)
    NEXT_COMMAND_REUSABLE
    SET_CREATURE_MAX_LEVEL(PLAYER1,FLYING_TERROR,0)
ENDIF

IF(PLAYER1,FLAG3==1)
    SET_DOOR(UNLOCKED,16,63)
    SET_TIMER(PLAYER1,TIMER4)
    IF(PLAYER0,VIEW_TYPE==1)
        ZOOM_TO_LOCATION(PLAYER0,4)
    ENDIF
    IF(PLAYER1,TIMER4>=25)
        CHANGE_SLAB_TYPE(36,42,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
    ENDIF
    IF(PLAYER1,TIMER4>=30)
        CHANGE_SLAB_TYPE(36,41,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=35)
        CHANGE_SLAB_TYPE(36,40,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=40)
        CHANGE_SLAB_TYPE(36,39,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=45)
        CHANGE_SLAB_TYPE(36,38,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=50)
        CHANGE_SLAB_TYPE(36,37,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=55)
        CHANGE_SLAB_TYPE(36,36,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=60)
        CHANGE_SLAB_TYPE(36,35,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=65)
        CHANGE_SLAB_TYPE(36,34,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=70)
        CHANGE_SLAB_TYPE(36,33,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=75)
        CHANGE_SLAB_TYPE(36,32,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=80)
        CHANGE_SLAB_TYPE(36,31,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,42,PLAYER1,MATCH)
        PLAY_MESSAGE(PLAYER0,SOUND,77)
    ENDIF
    IF(PLAYER1,TIMER4>=85)
        ADD_CREATURE_TO_LEVEL(PLAYER1,IMP,PLAYER1,3,10,0,NONE)
        CHANGE_SLAB_TYPE(36,30,BRIDGE_FRAME)
        CHANGE_SLAB_OWNER(36,30,PLAYER1,MATCH)
    ENDIF
    IF(PLAYER1,TIMER4>=150)
        IF(PLAYER1,FLAG1==0)
            SET_MUSIC("map02807.battle.mp3")
            SET_COMPUTER_GLOBALS(PLAYER1,50,1,1,1,100,1,5)
            SET_FLAG(PLAYER1,FLAG1,1)
        ENDIF
    ENDIF
    SET_DOOR(UNLOCKED,35,45)
    SET_DOOR(UNLOCKED,37,45)
    ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
ENDIF

IF_SLAB_OWNER(60,72,PLAYER0)
    QUICK_INFORMATION(24,"A perfect demolition point! Plant explosives here and breach their defenses.This will be a bang of a party!",9)
ENDIF
IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
    SET_CREATURE_MAX_LEVEL(PLAYER1,BEHOLDER,8)
    SET_CREATURE_MAX_LEVEL(PLAYER1,DARK_MISTRESS,10)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,17,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,18,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,19,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,20,1,PLAYER1)
    ADD_OBJECT_TO_LEVEL(WRKBOX_SENTRY,21,1,PLAYER1)
    MAX_CREATURES(PLAYER1,40)
    MAX_CREATURES(PLAYER0,45)
    SET_GENERATE_SPEED(150)
    COMPUTER_PLAYER(PLAYER_GOOD,ROAMING)
    ALLY_PLAYERS(PLAYER1,PLAYER_GOOD,3)
    IF(PLAYER1,VAMPIRE==3)
        IF(PLAYER1,TOTAL_CREATURES>=38)
            CHANGE_SLAB_TYPE(21,61,SCAVENGE_AREA,MATCH)
            SET_GENERATE_SPEED(800)
        ENDIF
    ENDIF
    IF(PLAYER1,VAMPIRE<3)
        IF(PLAYER1,TOTAL_CREATURES>=40)
            IF(PLAYER1,FLAG1==0)
                NEXT_COMMAND_REUSABLE
                ADD_CREATURE_TO_LEVEL(PLAYER1,VAMPIRE,PLAYER1,1,1,0,NONE)
            ENDIF
        ENDIF
    ENDIF

    IF(PLAYER1,DUNGEON_DESTROYED==1)
        WIN_GAME
        QUICK_INFORMATION(50,"Well done and thanks for playing! Leave your opinion on the workshop :-). Made by Crokydriver.")
    ENDIF
ENDIF