REM MAP "THE NECROMANCER'S HOLD"
LEVEL_VERSION(1)

REM ACTION POINTS
REM 1: Spawning point Inside fort East side Necro Fortress
REM 2: Spawning point East behind Wizard hide-out
REM 3: Spawning point West behind Workshop
REM 4: Spawning point Outside fort West in lava area
REM 5: Spawning point at Portal
REM 6: Triggers Necro's curse on player
REM 7: Activates Player alliance with the wizard
REM 8: Changes slab owner for TNT-trap, doing so it is possible to pick it up with an imp in possession. By not doing it from the start, the tile isn't visible.
REM 9: Informs about the Wizards hide-out
REM 10: Zooms to the TNT-location.
REM 11: Zooms to the slab where TNT could be placed.
REM 12: States Wizard found
REM 13: Triggers the Necromancer himselfs

REM FLAGS
REM 0: Checks if player is in possession to prevent waves when clearing the Wizards maze
REM 1: Activates the waves
REM 2: Used for selecting spawnpoints for waves
REM 3: Used for counting spawned waves
REM 4: Randomizes the colour after the curse
REM 5: Controls the reactivation of the curse
REM 6: Checks if Multiply special is found
REM 7: Checks if Hornies from demon waves are death

REM TIMERS
REM 0: Used for delay after finding the Wizard
REM 1: Used for delay between waves
REM 2: Duration of the curse

REM CUSTOM RULES
SET_CREATURE_CONFIGURATION(SPIDKIN,Health,600)
SET_CREATURE_CONFIGURATION(SPIDKIN,Strength,50)
SET_CREATURE_CONFIGURATION(SPIDKIN,Armour,35)
SET_CREATURE_CONFIGURATION(SPIDKIN,Luck,10)
SET_CREATURE_CONFIGURATION(SPIDKIN,FearStronger,5000)
SET_CREATURE_INSTANCE(SPIDKIN,2,SLOW,2)
SET_CREATURE_INSTANCE(SPIDKIN,6,FREEZE,7)
SET_CREATURE_CONFIGURATION(SKELEMAGE,PrimaryJobs,RESEARCH)
SET_CREATURE_CONFIGURATION(SKELEMAGE,SecondaryJobs,TRAIN)
SET_CREATURE_CONFIGURATION(NECROMANCER,Health,8500)
SET_CREATURE_CONFIGURATION(NECROMANCER,Armour,100)
SET_CREATURE_CONFIGURATION(NECROMANCER,Strength,125)
SET_CREATURE_FEARSOME_FACTOR(MAIDEN,100)
SET_CREATURE_CONFIGURATION(GHOST,FearStronger,1250)
SET_CREATURE_CONFIGURATION(GHOST2,FearStronger,2000)
SET_CREATURE_PROPERTY(MAIDEN,NO_CORPSE_ROTTING,1)
SET_CREATURE_CONFIGURATION(NECROMANCER,HurtByLava,1)
SET_POWER_CONFIGURATION(POWER_SLOW,PanelTabIndex,14)
SET_POWER_CONFIGURATION(POWER_FREEZE,PanelTabIndex,15)
SET_POWER_CONFIGURATION(POWER_FREEZE,Cost,2500,1)

SET_MUSIC(3)

SET_GAME_RULE(ImpWorkExperience,400)

REM GENERAL RULES
SET_GENERATE_SPEED(250)
START_MONEY(PLAYER0,12500)
START_MONEY(PLAYER5,1250000)
MAX_CREATURES(PLAYER0,25)
MAX_CREATURES(PLAYER5,40)
SET_TEXTURE(PLAYER0,GYPSUM)

COMPUTER_PLAYER(PLAYER3,ROAMING)
COMPUTER_PLAYER(PLAYER6,ROAMING)
COMPUTER_PLAYER(PLAYER5,7)

SET_PLAYER_COLOR(PLAYER_GOOD,BLACK)
ALLY_PLAYERS(PLAYER5,PLAYER_GOOD,3)
ALLY_PLAYERS(PLAYER6,PLAYER_GOOD,3)

ADD_CREATURE_TO_POOL(FLY,2)
ADD_CREATURE_TO_POOL(DEMONSPAWN,5)
ADD_CREATURE_TO_POOL(TROLL,3)
ADD_CREATURE_TO_POOL(HELL_HOUND,10)
ADD_CREATURE_TO_POOL(SORCEROR,4)
ADD_CREATURE_TO_POOL(DRUID,4)
ADD_CREATURE_TO_POOL(ORC,15)
ADD_CREATURE_TO_POOL(BILE_DEMON,5)
ADD_CREATURE_TO_POOL(DRAGON,3)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,3)

ADD_CREATURE_TO_POOL(SKELETON,10)
ADD_CREATURE_TO_POOL(SKELEMAGE,10)
ADD_CREATURE_TO_POOL(SKELE,10)
ADD_CREATURE_TO_POOL(GHOST,15)
ADD_CREATURE_TO_POOL(GHOST2,10)
ADD_CREATURE_TO_POOL(SPIDKIN,3)
ADD_CREATURE_TO_POOL(VAMPIRE,3)

CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,HELL_HOUND,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DRUID,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)

CREATURE_AVAILABLE(PLAYER5,SPIDKIN,1,3)
CREATURE_AVAILABLE(PLAYER5,SKELE,1,15)
CREATURE_AVAILABLE(PLAYER5,SKELEMAGE,1,15)
CREATURE_AVAILABLE(PLAYER5,SKELETON,1,5)
CREATURE_AVAILABLE(PLAYER5,VAMPIRE,1,3)
CREATURE_AVAILABLE(PLAYER5,GHOST,1,10)
CREATURE_AVAILABLE(PLAYER5,GHOST2,1,15)

ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,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)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,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(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER5,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_FREEZE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SLOW,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,WORD_OF_POWER,1,0)

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

REM PARTIES
CREATE_PARTY(WARMUP)
ADD_TO_PARTY(WARMUP,GHOST,5,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARMUP,GHOST,5,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARMUP,GHOST,5,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(WARMER)
ADD_TO_PARTY(WARMER,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARMER,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(WARM)
ADD_TO_PARTY(WARM,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARM,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARM,GHOST2,4,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(WARM2)
ADD_TO_PARTY(WARM2,SKELE,4,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARM2,SKELE,4,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARM2,SKELE,4,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(WARM2,SKELEMAGE,6,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HOT)
ADD_TO_PARTY(HOT,VAMPIRE,5,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT,VAMPIRE,5,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT,GHOST2,6,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HOT2)
ADD_TO_PARTY(HOT2,SKELE,6,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT2,SKELE,6,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT2,SKELE,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT2,SKELEMAGE,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HOT2,SKELEMAGE,8,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HELL1)
ADD_TO_PARTY(HELL1,HELL_HOUND,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,HELL_HOUND,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,HELL_HOUND,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,HELL_HOUND,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,FLYING_TERROR,8,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,FLYING_TERROR,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL1,FLYING_TERROR,8,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(HELL2)
ADD_TO_PARTY(HELL2,FLYING_TERROR,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,FLYING_TERROR,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,FLYING_TERROR,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,HELL_HOUND,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,HELL_HOUND,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,HELL_HOUND,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,HORNY,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,FLYING_TERROR,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(HELL2,HELL_HOUND,10,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(NECRO)
ADD_TO_PARTY(NECRO,NECROMANCER,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,VAMPIRE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,VAMPIRE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,SKELEMAGE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,SKELE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,SKELE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO,SKELE,10,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(NECRO_GUARD1)
ADD_TO_PARTY(NECRO_GUARD1,GHOST2,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD1,SKELE,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD1,SKELE,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD1,GHOST2,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD1,SKELE,9,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(NECRO_GUARD2)
ADD_TO_PARTY(NECRO_GUARD2,SKELE,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD2,SKELE,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD2,SKELEMAGE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD2,SKELE,9,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(NECRO_GUARD3)
ADD_TO_PARTY(NECRO_GUARD3,GHOST2,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD3,SKELEMAGE,10,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD3,SKELE,9,0,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(NECRO_GUARD3,SKELE,9,0,ATTACK_DUNGEON_HEART,0)

REM MAP SCRIPT
REVEAL_MAP_RECT(PLAYER0,105,87,15,15)
REVEAL_MAP_RECT(PLAYER0,149,87,15,15)

CHANGE_SLAB_TYPE(43,47,HARD_FLOOR)
CHANGE_SLAB_TYPE(42,47,HARD_FLOOR)
CHANGE_SLAB_TYPE(41,47,HARD_FLOOR)

IF_SLAB_OWNER(61,59,PLAYER0) REM Makes Necromancers dungeon claimable when almost defeated
    IF(PLAYER5,TOTAL_CREATURES<=15)
        CHANGE_SLAB_TYPE(61,60,PATH)
    ENDIF
ENDIF

REM "You came along these strange lands and met a Maiden who tells you the story of a Wizard who cured her after being poisoned by a powerfull Necromancer. She never recovered completely and somehow she turned half human, half spider due to the poison. Today the Necormancer is still here and is stronger than ever, even the Wizard became scared. Over the years he began hiding himself deep in a booby-trapped maze he build. Although the Maiden warnes you that strange, inexplicable things may happen here, self-confident as you are, you promise her to defeat the Necromancer and that you will protect her at all cost!"
DISPLAY_OBJECTIVE(62,Player0)

IF_ACTION_POINT(9,PLAYER0)
    REM "This should be the Wizards maze right over there, the Maiden says he doesn't want visitors, but still you could use his magical help to get across that lava lake. After that is sorted, you can take care of that Necromancer once and for all!"
    DISPLAY_OBJECTIVE(63)
    REM "'The Wizards Maze' is often referred to as 'The Possession Maze' because many creatures did feel a presence in there and drove insane. Even Imps were caught doing things they normally can't do, so the explanation could only be some kind of Possession."
    DISPLAY_INFORMATION(64)
ENDIF

IF_ACTION_POINT(7,PLAYER0)
    ALLY_PLAYERS(PLAYER0,PLAYER3,3)
    CHANGE_SLAB_TYPE(72,33,PURPLE_PATH)
ENDIF

IF_ACTION_POINT(12,PLAYER0)
    REM "You have found the Wizard and after some negotiations he will help you get accross, if only he knew the spell. After years of isolation, he doesn't remember. He will look it up in his books and let you know when he is ready to cast the spell. In the meantime he suggest you train up and warns you to not underestimate the Necromancer!"
    DISPLAY_INFORMATION(65)
    SET_TIMER(PLAYER0,TIMER0)
    SET_FLAG(PLAYER0,FLAG1,0) REM Stops the waves
ENDIF

IF(PLAYER0,TIMER0>2250)
    IF(PLAYER_GOOD,HELL_HOUND==0)
        IF(PLAYER_GOOD,FLYING_TERROR==0)
            IF(PLAYER_GOOD,HORNY==0)
                SET_FLAG(PLAYER0,FLAG7,1)
            ENDIF
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,FLAG7==1)
    SET_TIMER(PLAYER0,TIMER0)
    IF(PLAYER0,VIEW_TYPE==1)
        ZOOM_TO_LOCATION(PLAYER0,14)
    ENDIF
    IF(PLAYER0,TIMER0>=30)
        CHANGE_SLAB_TYPE(42,15,PATH)
        REVEAL_MAP_LOCATION(PLAYER0,10,10)
        REM "The Wizard has found the spell and is using it to drain the lava lake in the South, this process does take a few minutes. Although he helped you this time, he doesn't want to join you in your fight against the Necromancer and is not willing to give you access to his secrets!"
        DISPLAY_INFORMATION(66)
        CHANGE_SLAB_TYPE(36,47,PATH)
        CHANGE_SLAB_TYPE(37,48,PATH)
        CHANGE_SLAB_TYPE(37,49,PATH)
        CHANGE_SLAB_TYPE(38,50,PATH)
        CHANGE_SLAB_TYPE(38,51,PATH)
        CHANGE_SLAB_TYPE(39,52,PATH)
        CHANGE_SLAB_TYPE(39,53,PATH)
        CHANGE_SLAB_TYPE(39,54,PATH)
        CHANGE_SLAB_TYPE(38,55,PATH)
        CHANGE_SLAB_TYPE(37,56,PATH)
        CHANGE_SLAB_TYPE(35,48,PATH,MATCH)

        CHANGE_SLAB_TYPE(16,50,LAVA)
        CHANGE_SLAB_TYPE(16,51,LAVA)
        CHANGE_SLAB_TYPE(16,52,LAVA)
        CHANGE_SLAB_TYPE(16,53,LAVA)
        CHANGE_SLAB_TYPE(16,54,LAVA)
        CHANGE_SLAB_TYPE(17,54,LAVA)
        CHANGE_SLAB_TYPE(17,53,LAVA)
        CHANGE_SLAB_TYPE(17,52,LAVA)
        CHANGE_SLAB_TYPE(17,51,LAVA)
        CHANGE_SLAB_TYPE(18,52,LAVA)
        CHANGE_SLAB_TYPE(19,52,LAVA)
        CHANGE_SLAB_TYPE(20,52,LAVA)
        CHANGE_SLAB_TYPE(20,51,LAVA)
        CHANGE_SLAB_TYPE(20,50,LAVA)
        CHANGE_SLAB_TYPE(20,53,LAVA)
        CHANGE_SLAB_TYPE(20,54,LAVA)
        CHANGE_SLAB_TYPE(17,50,LAVA)

        CHANGE_SLAB_TYPE(22,50,LAVA)
        CHANGE_SLAB_TYPE(22,51,LAVA)
        CHANGE_SLAB_TYPE(22,52,LAVA)
        CHANGE_SLAB_TYPE(22,53,LAVA)
        CHANGE_SLAB_TYPE(22,54,LAVA)
        CHANGE_SLAB_TYPE(23,54,LAVA)
        CHANGE_SLAB_TYPE(23,53,LAVA)
        CHANGE_SLAB_TYPE(23,52,LAVA)
        CHANGE_SLAB_TYPE(23,51,LAVA)
        CHANGE_SLAB_TYPE(23,50,LAVA)
        CHANGE_SLAB_TYPE(24,52,LAVA)
        CHANGE_SLAB_TYPE(25,52,LAVA)
        CHANGE_SLAB_TYPE(24,50,LAVA)
        CHANGE_SLAB_TYPE(25,50,LAVA)
        CHANGE_SLAB_TYPE(26,50,LAVA)
        CHANGE_SLAB_TYPE(26,51,LAVA)
        CHANGE_SLAB_TYPE(26,52,LAVA)
        CHANGE_SLAB_TYPE(26,53,LAVA)
        CHANGE_SLAB_TYPE(26,54,LAVA)
        IF_SLAB_OWNER(24,49,PLAYER0)
            CHANGE_SLAB_OWNER(24,51,PLAYER0)
            CHANGE_SLAB_OWNER(25,51,PLAYER0)
        ENDIF
        CHANGE_SLAB_TYPE(28,50,LAVA)
        CHANGE_SLAB_TYPE(28,51,LAVA)
        CHANGE_SLAB_TYPE(28,52,LAVA)
        CHANGE_SLAB_TYPE(28,53,LAVA)
        CHANGE_SLAB_TYPE(28,54,LAVA)
        CHANGE_SLAB_TYPE(29,54,LAVA)
        CHANGE_SLAB_TYPE(29,53,LAVA)
        CHANGE_SLAB_TYPE(29,52,LAVA)
        CHANGE_SLAB_TYPE(29,51,LAVA)
        CHANGE_SLAB_TYPE(29,50,LAVA)
        CHANGE_SLAB_TYPE(30,54,LAVA)
        CHANGE_SLAB_TYPE(31,54,LAVA)
        CHANGE_SLAB_TYPE(32,54,LAVA)

        CHANGE_SLAB_TYPE(34,50,LAVA)
        CHANGE_SLAB_TYPE(34,51,LAVA)
        CHANGE_SLAB_TYPE(34,52,LAVA)
        CHANGE_SLAB_TYPE(34,53,LAVA)
        CHANGE_SLAB_TYPE(34,54,LAVA)
        CHANGE_SLAB_TYPE(35,54,LAVA)
        CHANGE_SLAB_TYPE(35,53,LAVA)
        CHANGE_SLAB_TYPE(35,52,LAVA)
        CHANGE_SLAB_TYPE(35,51,LAVA)
        CHANGE_SLAB_TYPE(35,50,LAVA)
        CHANGE_SLAB_TYPE(36,54,LAVA)
        CHANGE_SLAB_TYPE(37,54,LAVA)
        CHANGE_SLAB_TYPE(38,54,LAVA)

        CHANGE_SLAB_TYPE(17,56,LAVA)
        CHANGE_SLAB_TYPE(17,57,LAVA)

        CHANGE_SLAB_TYPE(19,56,LAVA)
        CHANGE_SLAB_TYPE(20,56,LAVA)
        CHANGE_SLAB_TYPE(21,56,LAVA)
        CHANGE_SLAB_TYPE(21,57,LAVA)
        CHANGE_SLAB_TYPE(21,58,LAVA)
        CHANGE_SLAB_TYPE(20,58,LAVA)
        CHANGE_SLAB_TYPE(19,58,LAVA)
        CHANGE_SLAB_TYPE(19,59,LAVA)
        CHANGE_SLAB_TYPE(19,60,LAVA)
        CHANGE_SLAB_TYPE(20,60,LAVA)
        CHANGE_SLAB_TYPE(21,60,LAVA)

        CHANGE_SLAB_TYPE(23,56,LAVA)
        CHANGE_SLAB_TYPE(23,57,LAVA)
        CHANGE_SLAB_TYPE(23,58,LAVA)
        CHANGE_SLAB_TYPE(24,58,LAVA)
        CHANGE_SLAB_TYPE(25,58,LAVA)
        CHANGE_SLAB_TYPE(25,57,LAVA)
        CHANGE_SLAB_TYPE(25,56,LAVA)
        CHANGE_SLAB_TYPE(25,59,LAVA)
        CHANGE_SLAB_TYPE(25,60,LAVA)
    ENDIF

    IF(PLAYER0,TIMER0>1000)
        CHANGE_SLAB_OWNER(59,36,PLAYER0)
        CHANGE_SLAB_TYPE(59,37,HARD_FLOOR)
        IF(PLAYER0,VIEW_TYPE==1)
            ZOOM_TO_LOCATION(PLAYER0,10)
        ENDIF
        REM "Meanwhile you better search a solution to take those secrets! If there was only something to blow up those walls so we could steal those secrets! Oh wait didn't we saw something usefull? Can somebody go and pick that up?"
        DISPLAY_OBJECTIVE(67,10)
    ENDIF
    IF_SLAB_OWNER(75,41,PLAYER3)
        IF(PLAYER0,TIMER0>4000)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,1,1)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,4,1)
        ENDIF
        IF(PLAYER0,TIMER0>4900)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM2,3,1)
        ENDIF
        IF(PLAYER0,TIMER0>5500)
            IF_SLAB_OWNER(49,38,PLAYER0)
                CHANGE_SLAB_TYPE(78,27,PATH)
                CHANGE_SLAB_TYPE(78,26,PATH)
                CHANGE_SLAB_TYPE(79,26,PATH)
                ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD3,2,1)
            ENDIF
        ENDIF
        IF(PLAYER0,TIMER0>9000)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,1,1)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT2,4,1)
        ENDIF
        IF(PLAYER0,TIMER0>9900)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM2,3,1)
        ENDIF
        IF(PLAYER0,TIMER0>10500)
            IF_SLAB_OWNER(49,38,PLAYER0)
                ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD3,2,1)
            ENDIF
        ENDIF
        IF(PLAYER0,TIMER0>13000)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,1,1)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT2,4,1)
        ENDIF
        IF(PLAYER0,TIMER0>13900)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM2,3,1)
        ENDIF
        IF(PLAYER0,TIMER0>14500)
            IF_SLAB_OWNER(49,38,PLAYER0)
                ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD3,2,1)
            ENDIF
        ENDIF
    ENDIF

    IF(PLAYER0,TIMER0>5000)
        CHANGE_SLAB_TYPE(58,48,PATH)
        CHANGE_SLAB_TYPE(59,49,PATH)
        CHANGE_SLAB_TYPE(59,50,PATH)
        CHANGE_SLAB_TYPE(59,51,PATH)
        CHANGE_SLAB_TYPE(59,52,PATH)
        CHANGE_SLAB_TYPE(59,53,PATH)
        CHANGE_SLAB_TYPE(59,54,PATH)
        CHANGE_SLAB_TYPE(59,55,PATH)
        CHANGE_SLAB_TYPE(58,56,PATH)
        CHANGE_SLAB_TYPE(57,57,PATH)
        CHANGE_SLAB_TYPE(56,58,PATH)
        CHANGE_SLAB_TYPE(42,49,PATH,MATCH)
        CHANGE_SLAB_TYPE(40,50,LAVA)
        CHANGE_SLAB_TYPE(40,51,LAVA)
        CHANGE_SLAB_TYPE(40,52,LAVA)
        CHANGE_SLAB_TYPE(40,53,LAVA)
        CHANGE_SLAB_TYPE(40,54,LAVA)
        CHANGE_SLAB_TYPE(41,54,LAVA)
        CHANGE_SLAB_TYPE(41,53,LAVA)
        CHANGE_SLAB_TYPE(41,52,LAVA)
        CHANGE_SLAB_TYPE(41,51,LAVA)
        CHANGE_SLAB_TYPE(41,50,LAVA)
        CHANGE_SLAB_TYPE(42,50,LAVA)
        CHANGE_SLAB_TYPE(43,50,LAVA)
        CHANGE_SLAB_TYPE(44,50,LAVA)
        CHANGE_SLAB_TYPE(44,51,LAVA)
        CHANGE_SLAB_TYPE(44,52,LAVA)
        CHANGE_SLAB_TYPE(44,53,LAVA)
        CHANGE_SLAB_TYPE(44,54,LAVA)
        CHANGE_SLAB_TYPE(43,54,LAVA)
        CHANGE_SLAB_TYPE(42,54,LAVA)
        IF_SLAB_OWNER(42,49,PLAYER0)
            CHANGE_SLAB_OWNER(42,51,PLAYER0,MATCH)
        ENDIF

        CHANGE_SLAB_TYPE(46,50,LAVA)
        CHANGE_SLAB_TYPE(46,51,LAVA)
        CHANGE_SLAB_TYPE(46,52,LAVA)
        CHANGE_SLAB_TYPE(46,53,LAVA)
        CHANGE_SLAB_TYPE(46,54,LAVA)
        CHANGE_SLAB_TYPE(47,54,LAVA)
        CHANGE_SLAB_TYPE(48,54,LAVA)
        CHANGE_SLAB_TYPE(49,54,LAVA)
        CHANGE_SLAB_TYPE(50,54,LAVA)
        CHANGE_SLAB_TYPE(50,53,LAVA)
        CHANGE_SLAB_TYPE(49,53,LAVA)
        CHANGE_SLAB_TYPE(48,53,LAVA)
        CHANGE_SLAB_TYPE(47,53,LAVA)
        CHANGE_SLAB_TYPE(48,52,LAVA)
        CHANGE_SLAB_TYPE(50,52,LAVA)
        CHANGE_SLAB_TYPE(50,51,LAVA)
        CHANGE_SLAB_TYPE(50,50,LAVA)

        CHANGE_SLAB_TYPE(52,50,LAVA)
        CHANGE_SLAB_TYPE(52,51,LAVA)
        CHANGE_SLAB_TYPE(52,52,LAVA)
        CHANGE_SLAB_TYPE(52,53,LAVA)
        CHANGE_SLAB_TYPE(52,54,LAVA)
        CHANGE_SLAB_TYPE(53,54,LAVA)
        CHANGE_SLAB_TYPE(53,53,LAVA)
        CHANGE_SLAB_TYPE(53,52,LAVA)
        CHANGE_SLAB_TYPE(53,51,LAVA)
        CHANGE_SLAB_TYPE(53,50,LAVA)
        CHANGE_SLAB_TYPE(54,50,LAVA)
        CHANGE_SLAB_TYPE(55,50,LAVA)
        CHANGE_SLAB_TYPE(56,50,LAVA)
        CHANGE_SLAB_TYPE(54,52,LAVA)
        CHANGE_SLAB_TYPE(55,52,LAVA)
        CHANGE_SLAB_TYPE(56,52,LAVA)
        CHANGE_SLAB_TYPE(54,54,LAVA)
        CHANGE_SLAB_TYPE(55,54,LAVA)
        CHANGE_SLAB_TYPE(56,54,LAVA)
    ENDIF

    IF_SLAB_OWNER(75,41,PLAYER0)
        CHANGE_SLAB_TYPE(61,48,PATH,MATCH)
        CHANGE_SLAB_TYPE(58,50,LAVA)
        CHANGE_SLAB_TYPE(58,51,LAVA)
        CHANGE_SLAB_TYPE(58,52,LAVA)
        CHANGE_SLAB_TYPE(58,53,LAVA)
        CHANGE_SLAB_TYPE(58,54,LAVA)
        CHANGE_SLAB_TYPE(59,54,LAVA)
        CHANGE_SLAB_TYPE(59,53,LAVA)
        CHANGE_SLAB_TYPE(59,52,LAVA)
        CHANGE_SLAB_TYPE(59,51,LAVA)
        CHANGE_SLAB_TYPE(59,50,LAVA)
        CHANGE_SLAB_TYPE(60,50,LAVA)
        CHANGE_SLAB_TYPE(61,50,LAVA)
        CHANGE_SLAB_TYPE(62,50,LAVA)
        CHANGE_SLAB_TYPE(60,52,LAVA)
        CHANGE_SLAB_TYPE(61,52,LAVA)
        CHANGE_SLAB_TYPE(62,52,LAVA)
        CHANGE_SLAB_TYPE(62,54,LAVA)
        CHANGE_SLAB_TYPE(61,54,LAVA)
        CHANGE_SLAB_TYPE(60,54,LAVA)

        CHANGE_SLAB_TYPE(64,50,LAVA)
        CHANGE_SLAB_TYPE(64,51,LAVA)
        CHANGE_SLAB_TYPE(64,52,LAVA)
        CHANGE_SLAB_TYPE(64,53,LAVA)
        CHANGE_SLAB_TYPE(64,54,LAVA)
        CHANGE_SLAB_TYPE(65,54,LAVA)
        CHANGE_SLAB_TYPE(65,53,LAVA)
        CHANGE_SLAB_TYPE(65,52,LAVA)
        CHANGE_SLAB_TYPE(65,51,LAVA)
        CHANGE_SLAB_TYPE(65,50,LAVA)
        CHANGE_SLAB_TYPE(66,51,LAVA)
        CHANGE_SLAB_TYPE(66,52,LAVA)
        CHANGE_SLAB_TYPE(67,52,LAVA)
        CHANGE_SLAB_TYPE(67,53,LAVA)
        CHANGE_SLAB_TYPE(68,50,LAVA)
        CHANGE_SLAB_TYPE(68,51,LAVA)
        CHANGE_SLAB_TYPE(68,52,LAVA)
        CHANGE_SLAB_TYPE(68,53,LAVA)
        CHANGE_SLAB_TYPE(68,54,LAVA)
        REM "The lava lake is drained, now nothing stands in your way! If you are fully prepared, there is only one thing left to do: DEFEAT THE NECROMANCER!"
        DISPLAY_OBJECTIVE(68)
    ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,TNT>0)
    REM "Good job! Now blow up that wall and steal those secrets! But be carefull! We only have one chance!"
    DISPLAY_OBJECTIVE(69,11)
    IF(PLAYER0,VIEW_TYPE==1)
        ZOOM_TO_LOCATION(PLAYER0,11)
    ENDIF
    ALLY_PLAYERS(PLAYER0,PLAYER3,0)
    CHANGE_CREATURE_OWNER(PLAYER3,WIZARD,ANYWHERE,PLAYER_NEUTRAL)
    CHANGE_SLAB_TYPE(62,23,TORCH_WALL)
    CHANGE_SLAB_TYPE(59,37,PRETTY_PATH)
    CHANGE_SLAB_OWNER(59,37,PLAYER3)
    CHANGE_SLAB_OWNER(59,36,PLAYER3)
    CHANGE_SLAB_TYPE(65,38,PATH)
    CHANGE_SLAB_TYPE(62,39,PATH)
    CHANGE_SLAB_TYPE(59,35,PATH)
    CHANGE_SLAB_TYPE(62,31,PATH)
    CHANGE_SLAB_TYPE(62,29,PATH)
    CHANGE_SLAB_TYPE(70,34,PATH)
    CHANGE_SLAB_TYPE(72,33,PATH)
ENDIF

IF_ACTION_POINT(15,PLAYER0)
    CHANGE_SLAB_TYPE(59,35,PURPLE_PATH)
ENDIF

IF_ACTION_POINT(16,PLAYER0)
    CHANGE_SLAB_TYPE(62,31,PURPLE_PATH)
    CHANGE_SLAB_TYPE(62,29,PURPLE_PATH)
ENDIF

IF_ACTION_POINT(17,PLAYER0)
    CHANGE_SLAB_TYPE(65,38,PURPLE_PATH)
    CHANGE_SLAB_TYPE(62,39,PURPLE_PATH)
ENDIF

IF_ACTION_POINT(18,PLAYER0)
    CHANGE_SLAB_TYPE(70,34,PURPLE_PATH)
ENDIF

IF(PLAYER0,WIZARD>0)
    REM "Alright, alright you can have it, take it! I'll do what you ask... please have mercy for an old Wizard like me..."
    DISPLAY_MESSAGE(70,WIZARD)
ENDIF

REM Makes sure waves aren't spawning while in possession, assuming player is busy in the maze
IF_ACTION_POINT(8,PLAYER0) REM If action point is activated, player is busy with the maze-objective, this is to avoid possession abuse to stop the waves outside the maze objective.
    IF(PLAYER0,TIMER0==0) REM Wizard isn't found yet
        IF(PLAYER0,VIEW_TYPE==2)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER0,FLAG0,1)
        ENDIF

        IF(PLAYER0,VIEW_TYPE!=2)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER0,FLAG0,0)
        ENDIF
    ENDIF
ENDIF

REM CREEPY MUSIC IN POSSESSION DURING MAZE OBJECTIVE
IF(PLAYER0,FLAG0==1)
    NEXT_COMMAND_REUSABLE
    SET_MUSIC("hw_leptys_ambience.mp3")
ENDIF

IF(PLAYER0,FLAG0==0)
    NEXT_COMMAND_REUSABLE
    SET_MUSIC(3)
ENDIF

REM COLOUR CURSE
IF_ACTION_POINT(6,PLAYER0)
    SET_FLAG(PLAYER0,FLAG5,0)
    IF(PLAYER0,FLAG5==0)
        REM "What is that strange feeling, you start to see everything black! Are you cursed?... AAAAGHR! The Necromancer is messing with your head!"
        DISPLAY_OBJECTIVE(71)
        NEXT_COMMAND_REUSABLE
        PLAY_MESSAGE(PLAYER0,SOUND,"trickortreat.mp3")
        NEXT_COMMAND_REUSABLE
        SET_PLAYER_COLOR(PLAYER0,BLACK)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER0,TIMER3)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER0,FLAG5,1)
    ENDIF
    IF(PLAYER0,FLAG5==1)
        IF(PLAYER0,TIMER3>=900)
            REM "You start to feel better, seems like the curse has worn off.."
            DISPLAY_OBJECTIVE(72)
            NEXT_COMMAND_REUSABLE
            RANDOMISE_FLAG(PLAYER0,FLAG4,7)
            IF(PLAYER0,FLAG4==1)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,GREEN)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==2)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,PURPLE)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==3)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,WHITE)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==4)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,RED)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==5)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,YELLOW)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==6)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,ORANGE)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
            IF(PLAYER0,FLAG4==7)
                NEXT_COMMAND_REUSABLE
                SET_PLAYER_COLOR(PLAYER0,BLUE)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0,FLAG5,2)
            ENDIF
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG5==2)
        IF(PLAYER0,TIMER3>=2100)
            NEXT_COMMAND_REUSABLE
            RESET_ACTION_POINT(6)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER0,FLAG5,0)
        ENDIF
    ENDIF
ENDIF

REM WAVES
IF(PLAYER0,ENTRANCE>0)
    SET_FLAG(PLAYER0,FLAG1,1)
ENDIF

IF(PLAYER0,GAME_TURN>=18000)
    IF(PLAYER0,ENTRANCE==0)
        IF(PLAYER0,TIMER0==0) REM WIZARD NOT FOUND YET
            SET_FLAG(PLAYER0,FLAG1,1)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,WORKSHOP>0)
    SET_FLAG(PLAYER0,FLAG1,2)
ENDIF

IF(PLAYER0,GAME_TURN>=35000)
    IF(PLAYER0,WORKSHOP==0)
        SET_FLAG(PLAYER0,FLAG1,2)
    ENDIF
ENDIF

IF(PLAYER0,FLAG1==1) REM Entrance and Workshop claimed, first waves begin
    IF(PLAYER0,FLAG0==0) REM not in position during the maze-objective
        REM "Oh no! The Necromancer has heard about you and your reputation! He is dedicated to stop you! The war is on!"
        DISPLAY_INFORMATION(73)
        SET_TIMER(PLAYER0,TIMER1)
        IF(PLAYER0,TOTAL_CREATURES>=3)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARMUP,1,1)
        ENDIF
        SET_FLAG(PLAYER0,FLAG3,0)
        IF(PLAYER0,TIMER1>=1750)
            IF(PLAYER0,FLAG3<=10)
                NEXT_COMMAND_REUSABLE
                RANDOMISE_FLAG(PLAYER0,FLAG2,2)
                IF(PLAYER0,FLAG2==1)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARMER,1,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
                IF(PLAYER0,FLAG2==2)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARMER,4,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
            ENDIF
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG3>6)
        ADD_TO_PARTY(WARMER,GHOST2,3,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(WARMER,GHOST2,2,0,ATTACK_DUNGEON_HEART,0)
    ENDIF
ENDIF

IF(PLAYER0,FLAG1==2)
    IF(PLAYER0,FLAG0==0) REM not in position during the maze-objective
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARMUP,1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARMUP,4,1)
        SET_TIMER(PLAYER0,TIMER1)
        SET_FLAG(PLAYER0,FLAG3,0)
        IF(PLAYER0,TIMER1>=2250)
            IF(PLAYER0,FLAG3<=6)
                NEXT_COMMAND_REUSABLE
                RANDOMISE_FLAG(PLAYER0,FLAG2,3)
                IF(PLAYER0,FLAG2==1)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM,1,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
                IF(PLAYER0,FLAG2==2)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM2,3,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
                IF(PLAYER0,FLAG2==3)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WARM,4,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
            ENDIF
            IF(PLAYER0,FLAG3>6)
                SET_FLAG(PLAYER0,FLAG1,3)
            ENDIF
            IF(PLAYER0,FLAG3==4)
                ADD_TO_PARTY(WARM,GHOST2,4,0,ATTACK_DUNGEON_HEART,0)
                ADD_TO_PARTY(WARM,VAMPIRE,4,0,ATTACK_DUNGEON_HEART,0)
                DELETE_FROM_PARTY(WARM,GHOST2,3)
                DELETE_FROM_PARTY(WARM,GHOST2,3)
                ADD_TO_PARTY(WARM2,SKELE,7,0,ATTACK_DUNGEON_HEART,0)
                ADD_TO_PARTY(WARM2,SKELE,7,0,ATTACK_DUNGEON_HEART,0)
                DELETE_FROM_PARTY(WARM2,SKELE,4)
                DELETE_FROM_PARTY(WARM2,SKELE,4)
            ENDIF
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,FLAG1==3)
    IF(PLAYER0,FLAG0==0) REM not in position during the maze-objective
        SET_TIMER(PLAYER0,TIMER1)
        SET_FLAG(PLAYER0,FLAG3,0)
        IF(PLAYER0,TIMER1>=2750)
            IF(PLAYER0,FLAG3<=12)
                NEXT_COMMAND_REUSABLE
                RANDOMISE_FLAG(PLAYER0,FLAG2,3)
                IF(PLAYER0,FLAG2==1)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT2,3,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
                IF(PLAYER0,FLAG2==2)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,4,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
                IF(PLAYER0,FLAG2==3)
                    NEXT_COMMAND_REUSABLE
                    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOT,1,1)
                    NEXT_COMMAND_REUSABLE
                    ADD_TO_FLAG(PLAYER0,FLAG3,1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0,TIMER1)
                ENDIF
            ENDIF
            IF(PLAYER0,FLAG3>12)
                SET_FLAG(PLAYER0,FLAG1,0) REM Stops waves
            ENDIF
        ENDIF
    ENDIF
    IF(PLAYER0,FLAG3==9)
        ADD_TO_PARTY(HOT,GHOST2,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(HOT2,SPIDKIN,6,0,ATTACK_DUNGEON_HEART,0)
    ENDIF
ENDIF

IF(PLAYER_GOOD,VAMPIRE>0)
    NEXT_COMMAND_REUSABLE REM Due to a little bug with flying creature in KeeperFX 1.2, Vampires wouldn't cast Fly to get accross the lava in the waves. This little script makes sure they DO fly.
    USE_POWER_ON_PLAYERS_CREATURES(PLAYER_GOOD,VAMPIRE,PLAYER_GOOD,POWER_FLIGHT,9,1)
ENDIF

IF(PLAYER0,TIMER0>800)
    IF(PLAYER0,VIEW_TYPE==1)
        SET_FLAG(PLAYER0,FLAG0,0) REM Stops the ambient sounds from the maze.
        REM "The Necromancer has stolen your portal and summons creatures right from hell! Defend yourself!"
        DISPLAY_OBJECTIVE(74,5)
        CHANGE_SLAB_TYPE(42,15,WATER)
        CHANGE_SLAB_OWNER(44,10,PLAYER_GOOD,MATCH)
        CHANGE_SLAB_OWNER(46,10,PLAYER_GOOD,MATCH)
        ZOOM_TO_LOCATION(PLAYER0,5)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HELL1,5,1)
    ENDIF
ENDIF

IF(PLAYER0,TIMER0>1200)
    IF(PLAYER_GOOD,FLYING_TERROR==0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HELL1,5,1)
    ENDIF
ENDIF

IF(PLAYER0,TIMER0>1800)
    IF(PLAYER_GOOD,FLYING_TERROR==0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HELL2,5,1)
    ENDIF
ENDIF

IF_ACTION_POINT(13,PLAYER0)
    SET_TIMER(PLAYER0,TIMER1)
    REM "Look at them! What are they doing? WATCH OUT, they are summoning the Necromancer himself!"
    DISPLAY_MESSAGE(75,GHOST2)
    IF(PLAYER0,TIMER1>50)
        CHANGE_SLAB_TYPE(51,73,HARD_FLOOR,MATCH)
        CHANGE_SLAB_TYPE(49,73,HARD_FLOOR,MATCH)
        CHANGE_SLAB_TYPE(35,73,HARD_FLOOR,MATCH)
        CHANGE_SLAB_TYPE(33,73,HARD_FLOOR,MATCH)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD1,PLAYER5,1)
    ENDIF
    IF(PLAYER0,TIMER1>100)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD2,PLAYER5,1)
    ENDIF
    IF(PLAYER0,TIMER1>150)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO,PLAYER5,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,NECRO_GUARD3,PLAYER5,1)
    ENDIF
ENDIF

IF(PLAYER0,MAIDEN==2)
    NEXT_COMMAND_REUSABLE
    KILL_CREATURE(PLAYER0,MAIDEN,ANYWHERE,1)
ENDIF

IF(PLAYER0,WIZARD==2)
    NEXT_COMMAND_REUSABLE
    KILL_CREATURE(PLAYER0,WIZARD,ANYWHERE,1)
ENDIF

IF_SLAB_OWNER(80,25,PLAYER0)
    SET_FLAG(PLAYER0,FLAG6,1)
ENDIF

IF(PLAYER0,CREATURES_FROM_SACRIFICE==2)
    REM "It seems the Necromancer is strong and smart, there is a powerfull dark spell in this land preventing more then two summons through the temple. Looks like the Necromancer is scared for something after all. Maybe we could multiply our numbers in some other ways?"
    DISPLAY_INFORMATION(76)
    REMOVE_SACRIFICE_RECIPE(TROLL,DARK_MISTRESS,BILE_DEMON)
    REMOVE_SACRIFICE_RECIPE(BUG,SPIDER)
    REMOVE_SACRIFICE_RECIPE(SPIDER,SPIDER,SPIDER)
    ADD_CREATURE_TO_POOL(DARK_MISTRESS,-1)
ENDIF

REM WIN CONDITION
IF(PLAYER5,DUNGEON_DESTROYED==1)
    IF(PLAYER0,TIMER1>500)
        IF(PLAYER_GOOD,TOTAL_CREATURES==0)
            CHANGE_SLAB_TYPE(51,73,LAVA,MATCH)
            CHANGE_SLAB_TYPE(49,73,LAVA,MATCH)
            CHANGE_SLAB_TYPE(35,73,LAVA,MATCH)
            CHANGE_SLAB_TYPE(33,73,LAVA,MATCH)
            SET_TIMER(PLAYER0,TIMER0)
            IF(PLAYER0,TIMER0>=100)
                IF(PLAYER0,WIZARD==1)
                    REM "You did it, you defeated the Necromancer and all dark magic is gone. Thanks for playing! Made by Crokydriver"
                    DISPLAY_OBJECTIVE(77)
                ENDIF
                IF(PLAYER0,WIZARD==0)
                    REM "You did it, you defeated the Necromancer and all dark magic is gone. Sadly you failed to protect the Wizard and so the Maiden is left behind all by herself."
                    DISPLAY_OBJECTIVE(78)
                ENDIF
            ENDIF
            IF(PLAYER0,TIMER0>=200)
                SET_TEXTURE(ALL_PLAYERS,GYPSUM)
                WIN_GAME
            ENDIF
        ENDIF
    ENDIF
ENDIF
REM LOSE CONDITIONS
IF(PLAYER0,DUNGEON_DESTROYED==1)
    LOSE_GAME
ENDIF

IF(PLAYER0,MAIDEN==0)
    IF(PLAYER0,GAME_TURN>50)
        REM "The Maiden has been killed, you failed to protect her and broke your promise!"
        DISPLAY_OBJECTIVE(79)
        LOSE_GAME
    ENDIF
ENDIF
