rem		LEVELPACK					rem
rem		Undivine Dungeon 1.5.1.2	rem
rem		01, MOUNTAINCAL				rem
rem		by Shinthoras0815			rem
rem     last change 25.01.2026		rem

LEVEL_VERSION(1)

SET_HAND_RULE(ALL_PLAYERS,FAIRYWISP_SUMMON,RULE0, DENY,ALWAYS)

SET_GENERATE_SPEED(625)
MAX_CREATURES(PLAYER0, 24)
MAX_CREATURES(PLAYER1, 29)

START_MONEY(PLAYER0, 0)
START_MONEY(PLAYER1, 3000000)
START_MONEY(PLAYER3, 0)

COMPUTER_PLAYER(PLAYER1, 0)
COMPUTER_PLAYER(PLAYER3, 9)
ALLY_PLAYERS(PLAYER0, PLAYER3, 1)

CREATURE_ENTRANCE_LEVEL(PLAYER1, 3)

SET_COMPUTER_CHECKS(PLAYER1, "COMPUTER CHECK IMPRISONMENT", 400, 0, 2, 25, 200)

SET_COMPUTER_EVENT(PLAYER1, "EVENT ENEMY DOOR", 2500, 5, 2500, 2, 10000)

ADD_CREATURE_TO_POOL(SORCEROR, 2)
ADD_CREATURE_TO_POOL(ACOLYTE, 15)
ADD_CREATURE_TO_POOL(BILE_DEMON, 10)
ADD_CREATURE_TO_POOL(DARK_MISTRESS, 15)
ADD_CREATURE_TO_POOL(TROLL, 15)
ADD_CREATURE_TO_POOL(BUG, 15)
ADD_CREATURE_TO_POOL(SPIDER, 15)
ADD_CREATURE_TO_POOL(ORC, 15)
ADD_CREATURE_TO_POOL(DRAGON, 15)
ADD_CREATURE_TO_POOL(VAMPIRE, 1)
ADD_CREATURE_TO_POOL(TENTACLE, 15)
ADD_CREATURE_TO_POOL(HELL_HOUND, 15)
ADD_CREATURE_TO_POOL(DEMONSPAWN, 5)
ADD_CREATURE_TO_POOL(Fly, 5)

CREATURE_AVAILABLE(ALL_PLAYERS, ACOLYTE, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, TROLL, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, BILE_DEMON, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, ORC, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, DRAGON, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER0, BUG, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TENTACLE, 1, 1)
CREATURE_AVAILABLE(PLAYER1, VAMPIRE, 1, 1)
CREATURE_AVAILABLE(PLAYER1, DEMONSPAWN, 1, 0)
CREATURE_AVAILABLE(ALL_PLAYERS, HELL_HOUND, 1, 1)
CREATURE_AVAILABLE(PLAYER1, Fly, 1, 0)
SET_CREATURE_MAX_LEVEL(PLAYER1, DEMONSPAWN, 10)

IF(PLAYER0, SORCEROR == 0)
    IF(PLAYER0, ACOLYTE >= 4)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 1)
    ENDIF
    IF(PLAYER0, ACOLYTE <= 4)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER0, SORCEROR, 0, 0)
    ENDIF
ENDIF

IF(PLAYER0, SORCEROR == 1)
    IF(PLAYER0, ACOLYTE >= 8)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 0)
    ENDIF
    IF(PLAYER0, ACOLYTE <= 8)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER0, SORCEROR, 0, 0)
    ENDIF
ENDIF

IF(PLAYER0, SORCEROR >= 1)
    NEXT_COMMAND_REUSABLE
    CREATURE_AVAILABLE(PLAYER0, SORCEROR, 0, 0)
ENDIF

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

ROOM_AVAILABLE(PLAYER0, BARRACKS, 3, 0)
ROOM_AVAILABLE(PLAYER0, GUARD_POST, 3, 0)
ROOM_AVAILABLE(PLAYER0, TORTURE, 3, 0)
ROOM_AVAILABLE(PLAYER0, TEMPLE, 3, 0)
ROOM_AVAILABLE(PLAYER0, BRIDGE, 3, 0)
ROOM_AVAILABLE(PLAYER0, WORKSHOP, 3, 0)
ROOM_AVAILABLE(PLAYER0, PRISON, 3, 0)

MAGIC_AVAILABLE(ALL_PLAYERS, POWER_SLAP, 1, 1)

MAGIC_AVAILABLE(PLAYER1, POWER_HAND, 1, 1)
MAGIC_AVAILABLE(PLAYER1, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(PLAYER1, POWER_SIGHT, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_CALL_TO_ARMS, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_HEAL_CREATURE, 0, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_PROTECT, 0, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_CAVE_IN, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_SPEED, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_CHICKEN, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_DISEASE, 0, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_HEAL_CREATURE, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_HAND, 0, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_SIGHT, 0, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CALL_TO_ARMS, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_HEAL_CREATURE, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_PROTECT, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_CHICKEN, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_SPEED, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_DISEASE, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_LIGHTNING, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_OBEY, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_CAVE_IN, 1, 1)

IF(PLAYER0, FLAG1 == 0)
    NEXT_COMMAND_REUSABLE
    MAGIC_AVAILABLE(PLAYER0, POWER_CAVE_IN, 0, 0)
    NEXT_COMMAND_REUSABLE
    MAGIC_AVAILABLE(PLAYER0, POWER_DESTROY_WALLs, 0, 0)
ENDIF


TRAP_AVAILABLE(ALL_PLAYERS, POISON_GAS, 1, 0)
DOOR_AVAILABLE(ALL_PLAYERS, BRACED, 1, 0)
DOOR_AVAILABLE(ALL_PLAYERS, STEEL, 1, 0)
DOOR_AVAILABLE(ALL_PLAYERS, MAGIC, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, LIGHTNING, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, WORD_OF_POWER, 1, 0)

CREATE_PARTY(Pinata)
ADD_TO_PARTY(Pinata, FAIRY, 5, 1500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Pinata, FAIRY, 5, 750, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Pinata, FAIRY, 5, 750, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Pinata, FAIRY, 3, 500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Pinata, FAIRY, 3, 500, DEFEND_LOCATION, 0)

CREATE_PARTY(Cake)
ADD_TO_PARTY(Cake, SAMURAI, 7, 2500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, GIANT, 6, 2000, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, GIANT, 6, 2500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, BARBARIAN, 6, 500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, BARBARIAN, 6, 500, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, KNIGHT, 8, 750, DEFEND_LOCATION, 0)
ADD_TO_PARTY(Cake, DWARFA, 5, 500, DEFEND_LOCATION, 0)

CREATE_PARTY(Cake2)
ADD_TO_PARTY(Cake2, SAMURAI, 10, 2500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, GIANT, 10, 2000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, GIANT, 10, 2500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, BARBARIAN, 10, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, BARBARIAN, 10, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, KNIGHT, 10, 750, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, DWARFA, 10, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake2, WIZARD, 10, 500, ATTACK_ENEMIES, 0)

CREATE_PARTY(Cake3)
ADD_TO_PARTY(Cake3, SAMURAI, 7, 2500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, GIANT, 6, 2000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, GIANT, 6, 2500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, BARBARIAN, 6, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, BARBARIAN, 6, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, KNIGHT, 8, 750, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Cake3, DWARFA, 5, 500, ATTACK_ENEMIES, 0)

CREATE_PARTY(Fireworks)
ADD_TO_PARTY(Fireworks, WIZARD, 6, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Fireworks, WIZARD, 6, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Fireworks, MONK, 7, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Fireworks, WITCH, 6, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Fireworks, MONK, 6, 100, ATTACK_DUNGEON_HEART, 0)


CREATE_PARTY(PartyHard)
ADD_TO_PARTY(PartyHard, KNIGHT, 10, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(PartyHard, SAMURAI, 7, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(PartyHard, THIEF, 6, 100, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(PartyHard, DWARFA, 6, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(PartyHard, ARCHER, 6, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(PartyHard, WITCH, 6, 500, ATTACK_ENEMIES, 0)

CREATE_PARTY(Attack)
ADD_TO_PARTY(Attack, DWARFA, 6, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Attack, DWARFA, 6, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Attack, DWARFA, 6, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(Attack, DWARFA, 6, 0, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(Attack2)
ADD_TO_PARTY(Attack2, DWARFA, 5, 100, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Attack2, FAIRY, 5, 100, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Attack2, THIEF, 5, 250, STEAL_SPELLS, 0)
ADD_TO_PARTY(Attack2, THIEF, 5, 250, STEAL_GOLD, 0)

CREATE_PARTY(SteahltGold)
ADD_TO_PARTY(SteahltGold, THIEF, 8, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(SteahltGold, THIEF, 8, 0, STEAL_GOLD, 0)

CREATE_PARTY(SteahltSpell)
ADD_TO_PARTY(SteahltSpell, THIEF, 8, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(SteahltSpell, THIEF, 8, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Explorer)
ADD_TO_PARTY(Explorer, IMP, 1, 0, DEFEND_LOCATION, 0)

CREATE_PARTY(NewBegin)
ADD_TO_PARTY(NewBegin, IMP, 10, 0, DEFEND_LOCATION, 0)

CREATE_PARTY(Wisp)
ADD_TO_PARTY(Wisp, WISP, 1, 0, DEFEND_LOCATION, 0)

rem "hide player heart on the beginning"
CONCEAL_MAP_RECT(Player0, 54, 30, 30, 30, 0)
CONCEAL_MAP_RECT(Player0, 223, 55, 12, 12, 1)
rem "start message"
DISPLAY_OBJECTIVE(22, PLAYER3)

ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Pinata, 6, 1)

rem" Speed on Ai"
rem
rem SET_TIMER(PLAYER1, TIMER0)
rem IF(PLAYER1, TIMER0 >= 15000)
rem         COMPUTER_DIG_TO_LOCATION(PLAYER1, PLAYER1, 8)
rem ENDIF

rem "if player reach hero heart, spawn Lord of the Land Party"
rem "do the same if computer reach the heart"

IF(PLAYER_GOOD, DUNGEON_DESTROYED == 0)
    IF_ACTION_POINT(3, PLAYER0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, SteahltSpell, 3, 1)
    ENDIF

    IF_ACTION_POINT(5, PLAYER0)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Pinata, -2, 1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Cake2, -3, 1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Fireworks, -1, 1)
    ENDIF

    IF_ACTION_POINT(3, PLAYER1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, SteahltSpell, 3, 1)
    ENDIF

    IF_ACTION_POINT(5, PLAYER1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Cake, -3, 1)
    ENDIF
ENDIF

rem "If Player dig further south reveal map to warn him"
IF_ACTION_POINT(22, PLAYER0)
    REVEAL_MAP_LOCATION(PLAYER0, 6, 15)
ENDIF

rem "If Player found tunnel to old dungeon then show message, set claimed floor behind the tunnel and reveal the tunnel on map"
IF_SLAB_OWNER(18, 43, PLAYER0)
    IF(PLAYER1, FLAG2 == 0)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER1, FLAG2, 1)
        NEXT_COMMAND_REUSABLE
        CHANGE_SLAB_OWNER(18, 48, PLAYER0)
    ENDIF
    ADD_PARTY_TO_LEVEL(PLAYER0, Explorer, 10, 1)
    PLAY_MESSAGE(PLAYER0, SOUND, 777)
    DISPLAY_INFORMATION(7, 10)
    REVEAL_MAP_LOCATION(PLAYER0, 10, 9)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER2, FLAG2, 0)
ENDIF
IF_SLAB_OWNER(18, 48, PLAYER0)
    IF(PLAYER3, FLAG1 == 0)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER3, FLAG1, 1)
        NEXT_COMMAND_REUSABLE
        CHANGE_SLAB_OWNER(18, 43, PLAYER0)
    ENDIF
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER3, FLAG2, 0)
ENDIF

IF_SLAB_OWNER(18, 48, PLAYER1)
    IF(PLAYER2, FLAG2 == 0)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER2, FLAG2, 1)
        NEXT_COMMAND_REUSABLE
        CHANGE_SLAB_OWNER(18, 43, PLAYER1)
    ENDIF
    ADD_PARTY_TO_LEVEL(PLAYER1, Explorer, 10, 1)
    CHANGE_SLAB_TYPE(18, 49, PATH)
    PLAY_MESSAGE(PLAYER0, SOUND, 785)
    DISPLAY_INFORMATION(23, 10)
    REVEAL_MAP_LOCATION(PLAYER0, 10, 9)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER1, FLAG2, 0)
ENDIF
IF_SLAB_OWNER(18, 43, PLAYER1)
    IF(PLAYER3, FLAG2 == 0)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER3, FLAG2, 1)
        NEXT_COMMAND_REUSABLE
        CHANGE_SLAB_OWNER(18, 48, PLAYER1)
    ENDIF
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER3, FLAG1, 0)
ENDIF

IF(PLAYER0, ENTRANCE >= 10)
    NEXT_COMMAND_REUSABLE
    MAX_CREATURES(PLAYER0, 34)
ENDIF
IF(PLAYER0, ENTRANCE <= 9)
    NEXT_COMMAND_REUSABLE
    MAX_CREATURES(PLAYER0, 24)
ENDIF

rem "Computer is heavily weakend if PLAYER0 reach the old dungeon"



IF(PLAYER0, FLAG1 == 1)
    IF_SLAB_OWNER(7, 78, PLAYER0)
        CHANGE_SLAB_TYPE(10, 76, PRETTY_PATH)
        ADD_GOLD_TO_PLAYER(PLAYER1, -5000000)
        CREATURE_ENTRANCE_LEVEL(PLAYER1, 1)
        KILL_CREATURE(PLAYER1, IMP, ANYWHERE, 50)
        MAGIC_AVAILABLE(PLAYER1, POWER_IMP, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_SLAP, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_SPEED, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_CALL_TO_ARMS, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_SPEED, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_CHICKEN, 0, 0)
        MAGIC_AVAILABLE(PLAYER1, POWER_LIGHTNING, 0, 0)
        ROOM_AVAILABLE(PLAYER1, BRIDGE, 0, 0)
        SET_TIMER(PLAYER1, TIMER6)
        MAX_CREATURES(PLAYER1, 16)
        KILL_CREATURE(PLAYER1, DARK_MISTRESS, MOST_EXPERIENCED, 2)
        KILL_CREATURE(PLAYER1, BILE_DEMON, MOST_EXPERIENCED, 3)
        KILL_CREATURE(PLAYER1, ORC, MOST_EXPERIENCED, 1)
        KILL_CREATURE(PLAYER1, DRAGON, MOST_EXPERIENCED, 3)
        CREATURE_AVAILABLE(PLAYER1, VAMPIRE, 0, 0)
    ENDIF
    IF_SLAB_OWNER(7, 78, PLAYER_NEUTRAL)
        IF(PLAYER1, HEART_HEALTH == 30000)
            IF_CONTROLS(PLAYER1, Fly == 0)
                NEXT_COMMAND_REUSABLE
                ADD_CREATURE_TO_LEVEL(PLAYER1, FLY, PLAYER1, 1, 5, 0)
            ENDIF
        ENDIF
    ENDIF
ENDIF

rem "IMP respawn for computer"
IF_SLAB_OWNER(7, 78, PLAYER0)
    IF(PLAYER1, IMP < 5)
        IF(PLAYER1, TIMER6 >= 1000)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER1, IMP, PLAYER1, 1, 3, 0)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER1, IMP, PLAYER1, 1, 1, 0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER1, TIMER6)
        ENDIF
    ENDIF
ENDIF
rem "Wisp respawn for player with effect and first time message"

IF(PLAYER0, FLAG1 == 1)
    IF(PLAYER0, WISP == 0)
        IF(PLAYER1, FLAG0 == 0)
            NEXT_COMMAND_REUSABLE
            PLAY_MESSAGE(PLAYER0, SOUND, 778)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER1, FLAG0, 1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2, TIMER0)
        ENDIF
        IF(PLAYER2, TIMER0 >= 300)
            IF(PLAYER1, FLAG0 == 1)
                NEXT_COMMAND_REUSABLE
                CREATE_EFFECTS_LINE(PLAYER0, PLAYER0, 0, 0, 0, 48)
                NEXT_COMMAND_REUSABLE
                ADD_CREATURE_TO_LEVEL(PLAYER0, WISP, PLAYER0, 1, 1, 0)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER1, FLAG0, 0)
                DISPLAY_INFORMATION(3, PLAYER0)
            ENDIF
        ENDIF
    ENDIF
ENDIF

rem "Wisp respawn for computer"
IF(PLAYER1, DUNGEON_DESTROYED == 0)
    IF(PLAYER1, WISP == 1)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER1, TIMER5)
    ENDIF
    IF(PLAYER1, WISP == 0)
        IF(PLAYER1, TIMER5 >= 500)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER1, WISP, PLAYER1, 1, 1, 0)
        ENDIF
    ENDIF
ENDIF
rem "if hero hearth activ and computer reach ACTION_POINT 8 then then show message to PLAYER0 (other keeper is here) and start respawning waves of heros, Flag for speed on AI"

SET_TIMER(PLAYER0, TIMER2)
IF(PLAYER_GOOD, DUNGEON_DESTROYED == 0)
    IF_ACTION_POINT(8, ALL_PLAYERS)
        DISPLAY_INFORMATION(5, ALL_PLAYERS)
        PLAY_MESSAGE(PLAYER0, SOUND, 777)
        IF(PLAYER0, TIMER2 >= 6200)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, SteahltSpell, PLAYER_GOOD, 1)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, SteahltGold, PLAYER_GOOD, 1)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Attack, PLAYER_GOOD, 1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER0, TIMER2)
        ENDIF

    ENDIF
ENDIF

rem "Intro"
rem "set timer for intro begin"
rem "show message and set timer"
rem "destroy wall and set timer for hero invasion"
rem "spawn hero's and set timer"
rem "Show wisp message"

SET_TIMER(PLAYER0, TIMER0)
SET_ROOM_CONFIGURATION(TREASURE, Properties, 12)
SET_ROOM_CONFIGURATION(RESEARCH, Properties, 8)
SET_ROOM_CONFIGURATION(LAIR, Properties, 12)
SET_ROOM_CONFIGURATION(GARDEN, Properties, 12)
SET_ROOM_CONFIGURATION(TEMPLE, Properties, 8)
SET_ROOM_CONFIGURATION(WORKSHOP, Properties, 12)
SET_ROOM_CONFIGURATION(GUARD_POST, Properties, 9)
SET_ROOM_CONFIGURATION(PRISON, Properties, 8)
SET_ROOM_CONFIGURATION(TORTURE, Properties, 8)
SET_ROOM_CONFIGURATION(TRAINING, Properties, 8)
IF(PLAYER0, TIMER0 >= 160)
    PLAY_MESSAGE(PLAYER0, SPEECH, 7)
    SET_TIMER(PLAYER0, TIMER4)
    IF(PLAYER0, TIMER4 >= 80)
        DISPLAY_INFORMATION(4, 7)
        USE_POWER_AT_LOCATION(PLAYER1, 7, POWER_DESTROY_WALLs, 9, 1)
        SET_TIMER(PLAYER0, TIMER0)
        IF(PLAYER0, TIMER0 >= 80)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Cake3, 1, 1)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Fireworks, 1, 1)
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, PartyHard, 1, 1)
            SET_TIMER(PLAYER0, TIMER0)
            IF(PLAYER0, TIMER0 >= 80)
                DISPLAY_OBJECTIVE(1, PLAYER3)
                PLAY_MESSAGE(PLAYER0, SOUND, 785)
                IF(PLAYER0, FLAG1 == 0)
                    REM TODO need rework
                    IF(PLAYER_GOOD, TOTAL_CREATURES < 29)
                        REM Hidden Message
                        DISPLAY_OBJECTIVE(59, ALL_PLAYERS)
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

rem "if Heart destroyed then make effect, kill all creature and change rooms and slabs ownship to neutral, show message"

IF(Player0, HEART_HEALTH < 0)
    SET_FLAG(PLAYER0, FLAG1, 1)
    Set_Timer(PLAYER1, TIMER1)
    CREATE_EFFECTS_LINE(9, 23, 0, 1, 30, EFFECTELEMENT_RED_DOT)
    CREATE_EFFECTS_LINE(9, 25, 12, 1, 30, EFFECTELEMENT_RED_DOT)
    CREATE_EFFECTS_LINE(9, 25, -12, 1, 30, EFFECTELEMENT_RED_DOT)
    IF(PLAYER1, TIMER1 > 12)
        CREATE_EFFECTS_LINE(25, 26, 12, 1, 30, EFFECTELEMENT_RED_DOT)
        CREATE_EFFECTS_LINE(25, 26, -12, 1, 30, EFFECTELEMENT_RED_DOT)
    ENDIF
    IF(PLAYER1, TIMER1 > 24)
        CREATE_EFFECTS_LINE(26, 27, 12, 1, 30, EFFECTELEMENT_RED_DOT)
        CREATE_EFFECTS_LINE(26, 27, -12, 1, 30, EFFECTELEMENT_RED_DOT)
    ENDIF
    IF(PLAYER1, TIMER1 > 36)
        CREATE_EFFECTS_LINE(27, 24, 12, 1, 30, EFFECTELEMENT_RED_DOT)
        CREATE_EFFECTS_LINE(27, 24, -12, 1, 30, EFFECTELEMENT_RED_DOT)
    ENDIF
    PLAY_MESSAGE(PLAYER0, SOUND, 40)
    CREATE_EFFECT(14, 9)
    KILL_CREATURE(Player0, BUG, ANYWHERE, 10)
    KILL_CREATURE(Player0, BILE_DEMON, ANYWHERE, 10)
    KILL_CREATURE(Player0, DRAGON, ANYWHERE, 10)
    KILL_CREATURE(Player0, DARK_MISTRESS, ANYWHERE, 10)
    KILL_CREATURE(Player0, TENTACLE, ANYWHERE, 10)
    KILL_CREATURE(Player0, SORCEROR, ANYWHERE, 10)
    KILL_CREATURE(Player0, ORC, ANYWHERE, 10)
    KILL_CREATURE(Player0, Fly, ANYWHERE, 10)
    KILL_CREATURE(Player0, HELL_HOUND, ANYWHERE, 10)
    KILL_CREATURE(Player0, TROLL, ANYWHERE, 10)
    KILL_CREATURE(Player0, SPIDER, ANYWHERE, 10)
    KILL_CREATURE(Player0, IMP, ANYWHERE, 10)
    KILL_CREATURE(Player0, GHOST, ANYWHERE, 10)
    KILL_CREATURE(Player0, ACOLYTE, ANYWHERE, 10)
    CHANGE_SLAB_OWNER(15, 56, PLAYER_NEUTRAL, FLOOR)
    CHANGE_SLAB_OWNER(14, 73, PLAYER_NEUTRAL, FLOOR)
    DISPLAY_INFORMATION(6, PLAYER0)
    PLAY_MESSAGE(PLAYER0, SOUND, 787)
    SET_TIMER(PLAYER0, TIMER1)
ENDIF
rem "make effect on heart, set it to 1 hp, give imp and wisp, give spell and hand back, give some gold, set flag for wisp respawn"
IF(PLAYER0, FLAG1 == 1)
    IF(PLAYER0, TIMER1 >= 200)
        CREATE_EFFECTS_LINE(PLAYER0, PLAYER0, 0, 0, 0, 48)
        CREATE_EFFECTS_LINE(PLAYER0, PLAYER0, 0, 0, 0, 14)
        ADD_PARTY_TO_LEVEL(PLAYER0, NewBegin, PLAYER0, 1)
        ADD_PARTY_TO_LEVEL(PLAYER0, Wisp, PLAYER0, 1)
        ADD_HEART_HEALTH(PLAYER0, -29990, 1)
        ADD_GOLD_TO_PLAYER(PLAYER0, 5000)
        PLAY_MESSAGE(PLAYER0, SOUND, 777)
        DISPLAY_OBJECTIVE(2, PLAYER0)
        SET_ROOM_CONFIGURATION(TREASURE, Properties, 4)
        SET_ROOM_CONFIGURATION(RESEARCH, Properties, 0)
        SET_ROOM_CONFIGURATION(LAIR, Properties, 4)
        SET_ROOM_CONFIGURATION(GARDEN, Properties, 4)
        SET_ROOM_CONFIGURATION(TEMPLE, Properties, 0)
        SET_ROOM_CONFIGURATION(WORKSHOP, Properties, 4)
        SET_ROOM_CONFIGURATION(GUARD_POST, Properties, 1)
        SET_ROOM_CONFIGURATION(PRISON, Properties, 0)
        SET_ROOM_CONFIGURATION(TORTURE, Properties, 0)
        SET_ROOM_CONFIGURATION(TRAINING, Properties, 0)

        rem "reset room and spell avaiability"

        ROOM_AVAILABLE(PLAYER0, BARRACKS, 2, 0)
        ROOM_AVAILABLE(PLAYER0, GUARD_POST, 2, 0)
        ROOM_AVAILABLE(PLAYER0, TORTURE, 2, 0)
        ROOM_AVAILABLE(PLAYER0, TEMPLE, 2, 0)
        ROOM_AVAILABLE(PLAYER0, BRIDGE, 2, 0)
        ROOM_AVAILABLE(PLAYER0, WORKSHOP, 2, 0)
        ROOM_AVAILABLE(PLAYER0, PRISON, 2, 0)

        MAGIC_AVAILABLE(PLAYER0, POWER_HAND, 1, 1)
        MAGIC_AVAILABLE(PLAYER0, POWER_IMP, 1, 1)
        MAGIC_AVAILABLE(PLAYER0, POWER_SIGHT, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_CALL_TO_ARMS, 1, 0)
        IF_AVAILABLE(PLAYER0, POWER_CALL_TO_ARMS == 1)
            TRAP_AVAILABLE(PLAYER0, ALARM, 1, 0)
        ENDIF
        MAGIC_AVAILABLE(PLAYER0, POWER_HEAL_CREATURE, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_PROTECT, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_CHICKEN, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_SPEED, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_HOLD_AUDIENCE, 1, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_DISEASE, 0, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_LIGHTNING, 0, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_OBEY, 0, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_CAVE_IN, 0, 0)
        MAGIC_AVAILABLE(PLAYER0, POWER_ARMAGEDDON, 0, 0)
IF_SLAB_OWNER(19, 50, PLAYER0)
    CHANGE_SLAB_TYPE(74, 60, PATH)
ENDIF
    ENDIF
ENDIF


rem " AI shouldn't waste time and money with CTA"

SET_TIMER(PLAYER3, TIMER0)
IF_SLAB_OWNER(7, 78, PLAYER_NEUTRAL)
    IF(PLAYER3, TIMER0 >= 600)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER1, POWER_CALL_TO_ARMS, 0, 0)
        NEXT_COMMAND_REUSABLE
        MAGIC_AVAILABLE(PLAYER1, POWER_CALL_TO_ARMS, 1, 1)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER3, TIMER0)
    ENDIF
ENDIF

IF_ACTION_POINT(19, PLAYER0)
    SET_FLAG(PLAYER0, FLAG4, 1)
ENDIF
IF_ACTION_POINT(20, PLAYER0)
    SET_FLAG(PLAYER0, FLAG4, 1)
ENDIF
IF(PLAYER0, FLAG4 == 0)
    NEXT_COMMAND_REUSABLE
    CONCEAL_MAP_RECT(PLAYER0, 182, 232, 124, 27, 0)
    IF_ACTION_POINT(18, PLAYER0)
        NEXT_COMMAND_REUSABLE
        KILL_CREATURE(PLAYER0, ANY_CREATURE, AT_ACTION_POINT[18], 2)
        NEXT_COMMAND_REUSABLE
        RESET_ACTION_POINT(18)
    ENDIF
ENDIF



IF(PLAYER0, FLAG1 == 0)
    NEXT_COMMAND_REUSABLE
    CHANGE_SLAB_TYPE(18, 48, DIRT)
    NEXT_COMMAND_REUSABLE
    CHANGE_SLAB_TYPE(19, 48, DIRT)
    NEXT_COMMAND_REUSABLE
    CHANGE_SLAB_TYPE(17, 48, DIRT)
    NEXT_COMMAND_REUSABLE
    CHANGE_SLAB_TYPE(18, 49, TORCH_WALL)
ENDIF
IF(PLAYER0, FLAG1 >= 1)
    rem "Exploit protection"
    CHANGE_SLAB_TYPE(18, 48, PRETTY_PATH)
    CHANGE_SLAB_TYPE(18, 49, DIRT)
    CHANGE_SLAB_TYPE(10, 76, PRETTY_PATH)
    IF(PLAYER0, FLAG4 == 0)
        IF(PLAYER0, TIMER7 >= 80)
            IF_ACTION_POINT(16, PLAYER0)
                IF(PLAYER0, FLAG3 == 0)
                    NEXT_COMMAND_REUSABLE
                    SET_FLAG(PLAYER0, FLAG3, 1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0, TIMER3)
                ENDIF
                NEXT_COMMAND_REUSABLE
                KILL_CREATURE(PLAYER0, ANY_CREATURE, AT_ACTION_POINT[16], 8)
                NEXT_COMMAND_REUSABLE
                RESET_ACTION_POINT(16)
            ENDIF
            IF_ACTION_POINT(17, PLAYER0)
                IF(PLAYER0, FLAG3 == 0)
                    NEXT_COMMAND_REUSABLE
                    SET_FLAG(PLAYER0, FLAG3, 1)
                    NEXT_COMMAND_REUSABLE
                    SET_TIMER(PLAYER0, TIMER3)
                ENDIF
                NEXT_COMMAND_REUSABLE
                KILL_CREATURE(PLAYER0, ANY_CREATURE, AT_ACTION_POINT[17], 8)
                NEXT_COMMAND_REUSABLE
                RESET_ACTION_POINT(17)
            ENDIF
            IF(PLAYER0, FLAG3 == 1)
                NEXT_COMMAND_REUSABLE
                PLAY_MESSAGE(PLAYER0, SOUND, 785)
                NEXT_COMMAND_REUSABLE
                DISPLAY_INFORMATION(194, ALL_PLAYERS)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER0, FLAG3, 2)
            ENDIF
            IF(PLAYER0, FLAG3 >= 2)
                IF(PLAYER0, TIMER3 >= 1000)
                    NEXT_COMMAND_REUSABLE
                    SET_FLAG(PLAYER0, FLAG3, 0)
                ENDIF
            ENDIF
        ENDIF
    ENDIF
    rem "Heroes are healed if Player come back"
    SET_TIMER(PLAYER0, TIMER7)
    IF(PLAYER0, TIMER7 >= 1200)
        IF(PLAYER0, FLAG7 <= 20)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, SACRIFICED[ORC], 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, SACRIFICED[SPIDER], 1)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER0, FLAG7, 1)
        ENDIF
    ENDIF
ENDIF

rem " Scripts running also after finishing the game"
RUN_AFTER_VICTORY(1)

IF(PLAYER0, ALL_DUNGEONS_DESTROYED == 1)
    IF(PLAYER_GOOD, TOTAL_CREATURES_LEFT == 0)
        SET_TIMER(PLAYER0, TIMER6)
        PLAY_MESSAGE(PLAYER0, SOUND, 777)
        WIN_GAME
    ENDIF
ENDIF

IF_ACTION_POINT(21, PLAYER0)
    CHANGE_SLAB_TYPE(74, 60, PATH)
ENDIF

IF(PLAYER0, TIMER6 >= 300)
    PLAY_MESSAGE(PLAYER0, SOUND, 777)
    DISPLAY_INFORMATION(11, PLAYER0)
ENDIF
