rem		LEVELPACK				rem
rem		Undivine Dungeon		rem
rem		05, CAIRTA BHARAD    rem
rem		by Shinthoras0815		rem

LEVEL_VERSION(1)

SET_GENERATE_SPEED(400)

START_MONEY(ALL_PLAYERS, 2500)

MAX_CREATURES(PLAYER0, 20)
MAX_CREATURES(PLAYER1, 15)
MAX_CREATURES(PLAYER2, 15)

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

ALLY_PLAYERS(PLAYER0, PLAYER3, 3)

rem to disable the ai for less log messages
SET_COMPUTER_GLOBALS(PLAYER3, 0, 0, 0, 0, 100, 0)

SET_COMPUTER_GLOBALS(PLAYER1, 90, 40, 5, 100, 100, 1)
SET_COMPUTER_CHECKS(PLAYER1, "CHECK FOR NEUTRAL PLACES", 9999999, 0, 0, 0, 9999999)
SET_COMPUTER_CHECKS(PLAYER1, "CHECK FOR QUICK ATTACK", 9999999, 200, 2000, 1, 9999999)
SET_COMPUTER_CHECKS(PLAYER1, "MOVE CREATURE TO ROOM", 500, 50, 6, 0, 7000)
SET_COMPUTER_CHECKS(PLAYER1, "CHECK MONEY", 100, 100, -100000, 0, 0)
SET_COMPUTER_CHECKS(PLAYER1, "MOVE CREATURE TO BEST ROOM", 500, 75, 0, 0, 7000)
SET_COMPUTER_PROCESS(PLAYER1, "ATTACK PLAN 1", 0, 2000, 10, 200, 0)
SET_COMPUTER_PROCESS(PLAYER1, "BUILD A HATCHERY", 0, 5, 5, 13, 7)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A TORTURE ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A TEMPLE ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A GRAVEYARD ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A TREASURE ROOM", 10, 4, 4, 2, 6)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A RESEARCH ROOM", 0, 4, 4, 3, 7)
rem SET_COMPUTER_PROCESS(PLAYER1, "BUILD A BARRACK ROOM", 0, 2000, 10, 2000, 0)
SET_COMPUTER_PROCESS(PLAYER1, "BUILD A WORKSHOP ROOM", 0, 5, 5, 8, 13)
SET_COMPUTER_PROCESS(PLAYER1, "BUILD A TRAINING ROOM", 0, 5, 5, 6, 13)
SET_COMPUTER_PROCESS(PLAYER1, "ATTACK SAFE ATTACK", 0, 2000, 10, 200, 0)
SET_COMPUTER_PROCESS(PLAYER1, "DIG TO CLOSE GOLD", 0, 30999, 10000, 5, 30)
rem SET_COMPUTER_EVENT(PLAYER1,"EVENT CHECK ROOMS FULL",9999999,0,0,5,0)
rem SET_COMPUTER_CHECKS(PLAYER1,"CHECK EXPAND ROOM",9999999,0,0,0,0)

SET_COMPUTER_GLOBALS(PLAYER2, 90, 40, 5, 100, 100, 1)
SET_COMPUTER_CHECKS(PLAYER2, "CHECK FOR NEUTRAL PLACES", 9999999, 0, 0, 0, 9999999)
SET_COMPUTER_CHECKS(PLAYER2, "CHECK FOR QUICK ATTACK", 9999999, 200, 2000, 1, 9999999)
SET_COMPUTER_CHECKS(PLAYER2, "CHECK EXPAND ROOM", 9999999, 0, 0, 0, 0)
SET_COMPUTER_CHECKS(PLAYER2, "MOVE CREATURE TO ROOM", 500, 50, 6, 0, 7000)
SET_COMPUTER_CHECKS(PLAYER2, "CHECK MONEY", 999999, 100, -100000, 0, 0)
SET_COMPUTER_CHECKS(PLAYER2, "MOVE CREATURE TO BEST ROOM", 500, 75, 0, 0, 7000)
SET_COMPUTER_PROCESS(PLAYER2, "ATTACK PLAN 1", 0, 2000, 10, 200, 0)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A LAIR ROOM", 0, 5, 5, 14, 7)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A TORTURE ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A TEMPLE ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A GRAVEYARD ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A TREASURE ROOM", 10, 4, 4, 2, 6)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A RESEARCH ROOM", 0, 4, 4, 3, 7)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A BARRACK ROOM", 0, 2000, 10, 2000, 0)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A WORKSHOP ROOM", 0, 4, 4, 6, 13)
rem SET_COMPUTER_PROCESS(PLAYER2, "BUILD A TRAINING ROOM", 0, 5, 5, 6, 13)
SET_COMPUTER_PROCESS(PLAYER2, "ATTACK SAFE ATTACK", 0, 2000, 10, 200, 0)
SET_COMPUTER_PROCESS(PLAYER2, "DIG TO CLOSE GOLD", 0, 30999, 10000, 5, 30)
SET_COMPUTER_EVENT(PLAYER2, "EVENT CHECK ROOMS FULL", 9999999, 0, 0, 5, 0)
SET_COMPUTER_PROCESS(PLAYER2, "DIG TO AN ENTRANCE", 0, 999999, 0, 0, 0)

COMPUTER_DIG_TO_LOCATION(PLAYER1, 16, 18)

ADD_CREATURE_TO_POOL(FLY, 2)
ADD_CREATURE_TO_POOL(BUG, 2)
ADD_CREATURE_TO_POOL(DEMONSPAWN, 5)
ADD_CREATURE_TO_POOL(TROLL, 5)
ADD_CREATURE_TO_POOL(SPIDER, 5)
ADD_CREATURE_TO_POOL(HELL_HOUND, 2)
ADD_CREATURE_TO_POOL(TENTACLE, 5)
ADD_CREATURE_TO_POOL(SORCEROR, 5)
ADD_CREATURE_TO_POOL(ORC, 5)
ADD_CREATURE_TO_POOL(BILE_DEMON, 5)
ADD_CREATURE_TO_POOL(DRAGON, 5)
ADD_CREATURE_TO_POOL(DARK_MISTRESS, 5)
ADD_CREATURE_TO_POOL(DRUID, 5)

CREATURE_AVAILABLE(PLAYER0, FLY, 1, 0)
CREATURE_AVAILABLE(PLAYER0, BUG, 1, 0)
CREATURE_AVAILABLE(PLAYER0, DEMONSPAWN, 1, 0)
CREATURE_AVAILABLE(PLAYER0, TROLL, 1, 0)
CREATURE_AVAILABLE(PLAYER0, SPIDER, 1, 0)
CREATURE_AVAILABLE(PLAYER0, HELL_HOUND, 1, 0)
CREATURE_AVAILABLE(PLAYER0, TENTACLE, 1, 0)
CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DRUID, 1, 1)

NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, DEMONSPAWN, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, TROLL, 1, 0)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, SPIDER, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, TENTACLE, 1, 0)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, SORCEROR, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER1, DRUID, 1, 1)
IF(PLAYER0, TEMPLE < 1)


    IF(PLAYER1, DEMONSPAWN > PLAYER0, DEMONSPAWN)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, DEMONSPAWN, 0, 0)
    ENDIF
    IF(PLAYER1, TROLL > PLAYER0, TROLL)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, TROLL, 0, 0)
    ENDIF
    IF(PLAYER1, SPIDER > PLAYER0, SPIDER)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, SPIDER, 0, 0)
    ENDIF
    IF(PLAYER1, TENTACLE > PLAYER0, TENTACLE)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, TENTACLE, 0, 0)
    ENDIF
    IF(PLAYER1, SORCEROR > PLAYER0, SORCEROR)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, SORCEROR, 0, 0)
    ENDIF
    IF(PLAYER1, DRUID > PLAYER0, DRUID)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER1, DRUID, 0, 0)
    ENDIF
ENDIF

NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, DEMONSPAWN, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, TROLL, 1, 0)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, SPIDER, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, TENTACLE, 1, 0)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, SORCEROR, 1, 1)
NEXT_COMMAND_REUSABLE
CREATURE_AVAILABLE(PLAYER2, DRUID, 1, 1)
IF(PLAYER0, TORTURE < 1)
    IF(PLAYER2, DEMONSPAWN > PLAYER0, DEMONSPAWN)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, DEMONSPAWN, 0, 0)
    ENDIF
    IF(PLAYER2, TROLL > PLAYER0, TROLL)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, TROLL, 0, 0)
    ENDIF
    IF(PLAYER2, SPIDER > PLAYER0, SPIDER)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, SPIDER, 0, 0)
    ENDIF
    IF(PLAYER2, TENTACLE > PLAYER0, TENTACLE)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, TENTACLE, 0, 0)
    ENDIF
    IF(PLAYER2, SORCEROR > PLAYER0, SORCEROR)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, SORCEROR, 0, 0)
    ENDIF
    IF(PLAYER2, DRUID > PLAYER0, DRUID)
        NEXT_COMMAND_REUSABLE
        CREATURE_AVAILABLE(PLAYER2, DRUID, 0, 0)
    ENDIF
ENDIF

CREATURE_AVAILABLE(PLAYER0, ORC, 1, 0)
IF(PLAYER0, ORC >= 1)
    CREATURE_AVAILABLE(ALL_PLAYERS, ORC, 1, 0)
ENDIF
CREATURE_AVAILABLE(PLAYER0, BILE_DEMON, 1, 0)
IF(PLAYER0, BILE_DEMON >= 1)
    CREATURE_AVAILABLE(ALL_PLAYERS, BILE_DEMON, 1, 0)
ENDIF
CREATURE_AVAILABLE(PLAYER0, DRAGON, 1, 0)
IF(PLAYER0, DRAGON >= 1)
    CREATURE_AVAILABLE(ALL_PLAYERS, DRAGON, 1, 2)
ENDIF
CREATURE_AVAILABLE(PLAYER0, DARK_MISTRESS, 1, 0)
IF(PLAYER0, DARK_MISTRESS >= 1)
    CREATURE_AVAILABLE(ALL_PLAYERS, DARK_MISTRESS, 1, 0)
ENDIF

SET_CREATURE_MAX_LEVEL(ALL_PLAYERS, WISP_B, 9)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS, FAIRYWISP, 9)

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, BRIDGE, 2, 0)
ROOM_AVAILABLE(PLAYER0, GUARD_POST, 1, 0)
ROOM_AVAILABLE(PLAYER0, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER0, PRISON, 1, 0)
ROOM_AVAILABLE(PLAYER0, TORTURE, 1, 0)
ROOM_AVAILABLE(PLAYER0, BARRACKS, 1, 0)
ROOM_AVAILABLE(PLAYER0, TEMPLE, 1, 0)
ROOM_AVAILABLE(PLAYER0, GRAVEYARD, 1, 0)

IF(PLAYER2, TREASURE < 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER2, TREASURE, 1, 1)
ENDIF
IF(PLAYER2, TREASURE >= 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER2, TREASURE, 0, 0)
    ROOM_AVAILABLE(PLAYER2, LAIR, 1, 1)
    ROOM_AVAILABLE(PLAYER2, GARDEN, 1, 1)
    ROOM_AVAILABLE(PLAYER2, TRAINING, 1, 1)
    ROOM_AVAILABLE(PLAYER2, RESEARCH, 1, 1)
ENDIF

ROOM_AVAILABLE(PLAYER2, GUARD_POST, 1, 0)
ROOM_AVAILABLE(PLAYER2, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER2, PRISON, 1, 0)
ROOM_AVAILABLE(PLAYER2, TORTURE, 1, 0)
ROOM_AVAILABLE(PLAYER2, BARRACKS, 1, 0)
ROOM_AVAILABLE(PLAYER2, TEMPLE, 1, 0)
ROOM_AVAILABLE(PLAYER2, GRAVEYARD, 1, 0)

IF(PLAYER1, TREASURE < 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, TREASURE, 1, 1)
ENDIF
IF(PLAYER1, TREASURE >= 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, TREASURE, 0, 0)
ENDIF
IF(PLAYER1, TREASURE > 1)
    IF(PLAYER1, LAIR < 25)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER1, LAIR, 1, 1)
    ENDIF
    IF(PLAYER1, LAIR >= 25)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER1, LAIR, 0, 0)
    ENDIF
ENDIF

IF(PLAYER1, GARDEN < 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, GARDEN, 1, 1)
ENDIF
IF(PLAYER1, GARDEN >= 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, GARDEN, 0, 0)
ENDIF
IF(PLAYER1, TRAINING < 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, TRAINING, 1, 1)
ENDIF
IF(PLAYER1, TRAINING >= 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, TRAINING, 0, 0)
ENDIF
IF(PLAYER1, RESEARCH < 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, RESEARCH, 1, 1)
ENDIF
IF(PLAYER1, RESEARCH >= 25)
    NEXT_COMMAND_REUSABLE
    ROOM_AVAILABLE(PLAYER1, RESEARCH, 0, 0)
ENDIF
ROOM_AVAILABLE(PLAYER1, WORKSHOP, 1, 0)
IF_AVAILABLE(PLAYER1, WORKSHOP == 1)
    IF(PLAYER1, WORKSHOP < 25)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER1, WORKSHOP, 1, 1)
    ENDIF
    IF(PLAYER1, WORKSHOP >= 25)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER1, WORKSHOP, 0, 0)
    ENDIF
ENDIF

MAGIC_AVAILABLE(ALL_PLAYERS, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_SIGHT, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_SPEED, 1, 0)
IF_AVAILABLE(PLAYER0, GRAVEYARD == 1)
    MAGIC_AVAILABLE(ALL_PLAYERS, POWER_SPEED, 1, 0)
ENDIF
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_OBEY, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CALL_TO_ARMS, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CHICKEN, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_DESTROY_WALLS, 1, 0)

TRAP_AVAILABLE(ALL_PLAYERS, LIGHTNING, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, SlOWVEIL, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, CANNON, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, LIGHTNING_BALL, 1, 0)
DOOR_AVAILABLE(ALL_PLAYERS, BRACED, 1, 2)
DOOR_AVAILABLE(ALL_PLAYERS, STEEL, 1, 0)

NEXT_COMMAND_REUSABLE
LEVEL_UP_CREATURE(ALL_PLAYERS, SKELETONTRAP, LEAST_EXPERIENCED, 10)

SET_TRAP_CONFIGURATION(MONSTERBOX, Model, Bonepile)
SET_TRAP_CONFIGURATION(MONSTERBOX, ModelSize, 150)
SET_TRAP_CONFIGURATION(MONSTERBOX, SymbolSprites, trap_skullbox64, trap_skullbox32)
SET_TRAP_CONFIGURATION(MONSTERBOX, PointerSprites, tiletr_trap_skullbox)
SET_TRAP_CONFIGURATION(MONSTERBOX, AnimationSpeed, 0)
SET_TRAP_CONFIGURATION(MONSTERBOX, Unanimated, 1)
SET_TRAP_CONFIGURATION(MONSTERBOX, EffectType, 37)
SET_OBJECT_CONFIGURATION(WRKBOX_MBOX, AnimationID, Bonepile)
SET_OBJECT_CONFIGURATION(WRKBOX_MBOX, MaximumSize, 150)
SET_OBJECT_CONFIGURATION(WRKBOX_MBOX, AnimationSpeed, 0)
SET_OBJECT_CONFIGURATION(HEARTFLAME_BLUE, Properties, DESTROYED_ON_ROOM_PLACE)
SET_OBJECT_CONFIGURATION(DUMMY4, MaximumSize, 400)

rem Start Objective
PLAY_MESSAGE(PLAYER0, SOUND, 777)
DISPLAY_OBJECTIVE(57, Player0)

rem ---------------------------------------------------Hero Dirtside Wave Spawn----------------------------------

REM FLAGS:
REM PLAYER_GOOD,FLAG0 start attack from Hero Dungeon DirtSide
REM PLAYER_GOOD,FLAG1 Dirt-/HeartSide Hero Variation
REM PLAYER_GOOD,FLAG2 Dirt-/HeartSide Hero Variation Switch
REM PLAYER_GOOD,FLAG3 HeroGate1 Riverside activated
REM PLAYER_GOOD,FLAG4 Riverside Hero Variation
REM PLAYER_GOOD,FLAG5 Riverside Hero Variation Switch
REM PLAYER_GOOD,FLAG6 Heartside Hero Gate activated
REM PLAYER_GOOD,FLAG7 Riverside Hero Goal Randomizer


REM TIMERs:
REM PLAYER_GOOD,TIMER0 HEROGATE3 start spawner playerside
REM PLAYER_GOOD,TIMER1 HEROGATE1 start spawner riverside
REM PLAYER_GOOD,TIMER2 LOCK Secret Doors riverside


rem-------------------- if Player0 conquer herocastle-------------------
IF_SLAB_OWNER(35, 69, PLAYER0)
    IF_SLAB_OWNER(47, 65, PLAYER0)
        HIDE_HERO_GATE(1, 1)
        SET_TIMER(PLAYER_GOOD, TIMER0)
        SET_FLAG(PLAYER_GOOD, FLAG1, 0)
        SET_FLAG(PLAYER_GOOD, FLAG2, 0)
        SET_FLAG(PLAYER_GOOD, FLAG6, 1)
    ENDIF
ENDIF
IF_SLAB_OWNER(35, 69, PLAYER0)
    HIDE_HERO_GATE(3, 1)
ENDIF
IF_SLAB_OWNER(47, 65, PLAYER0)
    HIDE_HERO_GATE(1, 1)
ENDIF
IF_SLAB_OWNER(63, 68, PLAYER0)
    HIDE_HERO_GATE(2, 1)
ENDIF
rem-------------------- if Player1 conquer herocastle-------------------
IF_SLAB_OWNER(35, 69, PLAYER1)
    IF_SLAB_OWNER(47, 65, PLAYER1)
        HIDE_HERO_GATE(1, 1)
        SET_TIMER(PLAYER_GOOD, TIMER0)
        SET_FLAG(PLAYER_GOOD, FLAG1, 0)
        SET_FLAG(PLAYER_GOOD, FLAG2, 0)
        SET_FLAG(PLAYER_GOOD, FLAG6, 1)
    ENDIF
ENDIF
IF_SLAB_OWNER(35, 69, PLAYER1)
    HIDE_HERO_GATE(3, 1)
ENDIF
IF_SLAB_OWNER(47, 65, PLAYER1)
    HIDE_HERO_GATE(1, 1)
ENDIF
IF_SLAB_OWNER(63, 68, PLAYER1)
    HIDE_HERO_GATE(2, 1)
ENDIF
rem-------------------- if Player2 conquer herocastle-------------------
IF_SLAB_OWNER(35, 69, PLAYER2)
    IF_SLAB_OWNER(47, 65, PLAYER2)
        HIDE_HERO_GATE(1, 1)
        SET_TIMER(PLAYER_GOOD, TIMER0)
        SET_FLAG(PLAYER_GOOD, FLAG1, 0)
        SET_FLAG(PLAYER_GOOD, FLAG2, 0)
        SET_FLAG(PLAYER_GOOD, FLAG6, 1)
    ENDIF
ENDIF
IF_SLAB_OWNER(35, 69, PLAYER2)
    HIDE_HERO_GATE(3, 1)
ENDIF
IF_SLAB_OWNER(47, 65, PLAYER2)
    HIDE_HERO_GATE(1, 1)
ENDIF
IF_SLAB_OWNER(63, 68, PLAYER2)
    HIDE_HERO_GATE(2, 1)
ENDIF
rem --------------------Player0 side hero waves-------------------
CREATE_PARTY(DirtSide1)
ADD_TO_PARTY(DirtSide1, ARCHER, 3, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(DirtSide1, DWARFA, 3, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(DirtSide1, BARBARIAN, 3, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(DirtSide2)
ADD_TO_PARTY(DirtSide2, WIZARD, 3, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(DirtSide2, GIANT, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(DirtSide2, BARBARIAN, 3, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(DirtSide3)
ADD_TO_PARTY(DirtSide3, WITCH, 4, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(DirtSide3, GIANT, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(DirtSide3, SAMURAI, 3, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(DirtSide4)
ADD_TO_PARTY(DirtSide4, THIEF, 5, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(DirtSide4, MONK, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(DirtSide4, TIME_MAGE, 3, 0, STEAL_SPELLS, 0)

IF_ACTION_POINT(2, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG0, 1)
ENDIF

IF_SLAB_OWNER(35, 69, PLAYER_GOOD)
    IF(PLAYER_GOOD, FLAG0 == 1)
        SET_TIMER(PLAYER_GOOD, TIMER0)
        IF(PLAYER_GOOD, TIMER0 >= 4500)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD, TIMER0)
        ENDIF
    ENDIF
    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 0)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DirtSide1, -3, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF
    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 1)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DirtSide2, -3, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF
    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 2)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DirtSide3, -3, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF
    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 3)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DirtSide4, -3, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG2, 0)
        ENDIF
    ENDIF
ENDIF
rem -------------------------------------------Hero Riverside Wave Spawn-----------------------------
IF_ACTION_POINT(11, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG3, 1)
ENDIF
IF_ACTION_POINT(13, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG3, 1)
ENDIF
IF_ACTION_POINT(14, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG3, 1)
ENDIF
IF_ACTION_POINT(15, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG3, 1)
ENDIF
IF_ACTION_POINT(12, PLAYER0)
    SET_FLAG(PLAYER_GOOD, FLAG3, 1)
ENDIF

CREATE_PARTY(Riverside1_1)
ADD_TO_PARTY(Riverside1_1, ARCHER, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_1, DWARFA, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_1, BARBARIAN, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_1, FAIRY, 5, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Riverside1_2)
ADD_TO_PARTY(Riverside1_2, WIZARD, 5, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Riverside1_2, GIANT, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_2, BARBARIAN, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_2, FAIRY, 5, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Riverside1_3)
ADD_TO_PARTY(Riverside1_3, WITCH, 6, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Riverside1_3, GIANT, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_3, SAMURAI, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_3, FAIRY, 5, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Riverside1_4)
ADD_TO_PARTY(Riverside1_4, TIME_MAGE, 6, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Riverside1_4, MONK, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Riverside1_4, THIEF, 7, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(Riverside1_4, FAIRY, 5, 0, STEAL_SPELLS, 0)

IF_SLAB_OWNER(35, 69, PLAYER0)
    IF(PLAYER_GOOD, FLAG3 == 1)
        IF_SLAB_OWNER(47, 65, PLAYER_GOOD)
            SET_TIMER(PLAYER_GOOD, TIMER1)
            IF(PLAYER_GOOD, TIMER1 >= 3500)
                NEXT_COMMAND_REUSABLE
                SET_FLAG(PLAYER_GOOD, FLAG4, 1)
                NEXT_COMMAND_REUSABLE
                SET_TIMER(PLAYER_GOOD, TIMER1)
            ENDIF
        ENDIF
    ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG4 == 1)
    NEXT_COMMAND_REUSABLE
    RANDOMISE_FLAG(PLAYER_GOOD, FLAG7, 4)
    IF(PLAYER_GOOD, FLAG5 == 0)
        NEXT_COMMAND_REUSABLE
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Riverside1_1, -1, 1)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD, FLAG4, 0)
        NEXT_COMMAND_REUSABLE
        ADD_TO_FLAG(PLAYER_GOOD, FLAG5, 1)
    ENDIF
    IF(PLAYER_GOOD, FLAG5 == 1)
        NEXT_COMMAND_REUSABLE
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Riverside1_2, -1, 1)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD, FLAG4, 0)
        NEXT_COMMAND_REUSABLE
        ADD_TO_FLAG(PLAYER_GOOD, FLAG5, 1)
    ENDIF
    IF(PLAYER_GOOD, FLAG5 == 2)
        NEXT_COMMAND_REUSABLE
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Riverside1_3, -1, 1)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD, FLAG4, 0)
        NEXT_COMMAND_REUSABLE
        ADD_TO_FLAG(PLAYER_GOOD, FLAG5, 1)
    ENDIF
    IF(PLAYER_GOOD, FLAG5 == 3)
        NEXT_COMMAND_REUSABLE
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Riverside1_4, -1, 1)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD, FLAG4, 0)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD, FLAG5, 0)
    ENDIF
ENDIF
rem------------ SecretDoor Settings----------------
rem open(attack) Player0 Side Door
rem in 3 out of 5 cases
IF(PLAYER_GOOD, FLAG7 > 0)
    IF(PLAYER_GOOD, FLAG7 > 2)
        NEXT_COMMAND_REUSABLE
        SET_DOOR(UNLOCKED, 44, 66)
    ENDIF
    rem open(attack) Player1/2 Side Door
    rem in 2 out of 5 cases
    IF(PLAYER_GOOD, FLAG7 < 3)
        NEXT_COMMAND_REUSABLE
        SET_DOOR(UNLOCKED, 47, 62)
    ENDIF
ENDIF
rem close the secret doors again
IF(PLAYER_GOOD, FLAG7 == 0)
    NEXT_COMMAND_REUSABLE
    SET_TIMER(PLAYER_GOOD, TIMER2)
ENDIF
IF(PLAYER_GOOD, TIMER2 > 900)
    NEXT_COMMAND_REUSABLE
    SET_DOOR(LOCKED, 44, 66)
    NEXT_COMMAND_REUSABLE
    SET_DOOR(LOCKED, 47, 62)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER_GOOD, FLAG7, 0)
ENDIF


rem-----------------------------------------Hero Heart Wave Spawn---------------------------------------------------

CREATE_PARTY(Heartside3_1)
ADD_TO_PARTY(Heartside3_1, ARCHER, 7, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_1, DWARFA, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_1, BARBARIAN, 7, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_1, TIME_MAGE, 8, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Heartside3_2)
ADD_TO_PARTY(Heartside3_2, WIZARD, 8, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Heartside3_2, GIANT, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_2, BARBARIAN, 7, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_2, TIME_MAGE, 8, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Heartside3_3)
ADD_TO_PARTY(Heartside3_3, WITCH, 8, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Heartside3_3, GIANT, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_3, SAMURAI, 7, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_3, TIME_MAGE, 8, 0, STEAL_SPELLS, 0)

CREATE_PARTY(Heartside3_4)
ADD_TO_PARTY(Heartside3_4, FAIRY, 9, 0, STEAL_SPELLS, 0)
ADD_TO_PARTY(Heartside3_4, MONK, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(Heartside3_4, THIEF, 10, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(Heartside3_4, TIME_MAGE, 8, 0, STEAL_SPELLS, 0)

IF(PLAYER_GOOD, FLAG6 == 1)
    IF_SLAB_OWNER(35, 71, PLAYER_GOOD)
        SET_TIMER(PLAYER_GOOD, TIMER0)
        IF(PLAYER_GOOD, TIMER0 >= 3000)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD, TIMER0)
        ENDIF
    ENDIF

    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 0)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Heartside3_1, -2, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF
    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 1)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Heartside3_2, -2, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF

    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 2)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Heartside3_3, -2, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            ADD_TO_FLAG(PLAYER_GOOD, FLAG2, 1)
        ENDIF
    ENDIF

    IF(PLAYER_GOOD, FLAG1 == 1)
        IF(PLAYER_GOOD, FLAG2 == 3)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Heartside3_4, -2, 1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG1, 0)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER_GOOD, FLAG2, 0)
        ENDIF
    ENDIF
ENDIF

rem ---------------------------------------------------------------"Hero Dungeon Defense"-------------------------------------
rem Action Points:
rem 1 Hero Barrack Dirtside
rem 2 Hero Door Dirtside
rem 3 Hero Workshop
rem 4 Hero Tresuary
rem 5 Hero empty room
rem 6 Hero Lair
rem 7 Hero Barrack Riverside
rem 8 Hero Gravyard
rem 9 Hero Temple
rem 10 Hero Heart
rem 11 River Hero aktivation
rem 12 River Hero aktivation
rem 13 River Hero aktivation
rem 14 River Hero aktivation
rem 15 River Hero aktivation
rem 16 PLAYER1 Gem Dig
rem 17 ???
rem 18 PLAYER1 Gem Dig
rem 19 Hero Tunneller SpawnPoint
rem Hero gates:
rem 1 Riverside
rem 2 Hero Heart
rem 3 Dirtside

CREATE_PARTY(Defend1)
ADD_TO_PARTY(Defend1, ARCHER, 3, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend1, ARCHER, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend1, GIANT, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend1, THIEF, 4, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(Defend2)
ADD_TO_PARTY(Defend2, ARCHER, 5, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend2, ARCHER, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend2, GIANT, 5, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Defend2, SAMURAI, 6, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(Wrkshpdefend)
ADD_TO_PARTY(Wrkshpdefend, ARCHER, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Wrkshpdefend, BARBARIAN, 5, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(Wrkshpdefend, GIANT, 4, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(TrsrDef)
ADD_TO_PARTY(TrsrDef, TUNNELLER, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TrsrDef, DWARFA, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TrsrDef, DWARFA, 6, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TrsrDef, TUNNELLER, 4, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(ERmmDef)
ADD_TO_PARTY(ERmmDef, ARCHER, 5, 0, DEFEND_LOCATION, 0)
ADD_TO_PARTY(ERmmDef, WIZARD, 4, 0, DEFEND_LOCATION, 0)
ADD_TO_PARTY(ERmmDef, THIEF, 7, 0, DEFEND_LOCATION, 0)
ADD_TO_PARTY(ERmmDef, DWARFA, 5, 0, DEFEND_LOCATION, 0)
ADD_TO_PARTY(ERmmDef, FAIRY, 4, 0, DEFEND_LOCATION, 0)
ADD_TO_PARTY(ERmmDef, GIANT, 6, 0, DEFEND_LOCATION, 0)

CREATE_PARTY(LrDef)
ADD_TO_PARTY(LrDef, GIANT, 5, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(LrDef, GIANT, 4, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(LrDef, BARBARIAN, 6, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(LrDef, BARBARIAN, 4, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(GrvyrdDef)
ADD_TO_PARTY(GrvyrdDef, MONK, 5, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(GrvyrdDef, WITCH, 6, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(GrvyrdDef, GHOST, 8, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(GrvyrdDef, GHOST, 8, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(TmplDef)
ADD_TO_PARTY(TmplDef, MONK, 7, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TmplDef, WIZARD, 7, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TmplDef, WITCH, 7, 0, DEFEND_ROOMS, 0)
ADD_TO_PARTY(TmplDef, SAMURAI, 7, 0, DEFEND_ROOMS, 0)

CREATE_PARTY(HrtDef1)
ADD_TO_PARTY(HrtDef1, KNIGHT, 10, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef1, SAMURAI, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef1, WIZARD, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef1, GIANT, 7, 0, DEFEND_HEART, 0)

CREATE_PARTY(HrtDef2)
ADD_TO_PARTY(HrtDef2, SAMURAI, 10, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef2, DWARFA, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef2, ARCHER, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef2, MONK, 7, 0, DEFEND_HEART, 0)

CREATE_PARTY(HrtDef3)
ADD_TO_PARTY(HrtDef3, WITCH, 10, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef3, WIZARD, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef3, FAIRY, 7, 0, DEFEND_HEART, 0)
ADD_TO_PARTY(HrtDef3, THIEF, 9, 0, DEFEND_HEART, 0)

ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Defend1, -3, 1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Defend2, -1, 1)

IF_ACTION_POINT(1, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, Wrkshpdefend, 3, 1)
ENDIF

IF_ACTION_POINT(3, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, TrsrDef, 4, 1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ERmmDef, 5, 1)
ENDIF

IF_ACTION_POINT(5, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, LrDef, 6, 1)
ENDIF

IF_ACTION_POINT(21, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GrvyrdDef, 8, 1)
ENDIF

IF_ACTION_POINT(7, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, TmplDef, 9, 1)
ENDIF

IF_ACTION_POINT(17, PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, HrtDef1, -2, 1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, HrtDef2, -2, 1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD, HrtDef3, -2, 1)
ENDIF
rem ----------------------------------------------------------------"Wisp respawn"-----------------------------------------------
REM FLAGS:
REM PLAYER0, FLAG0 Player Wisp switch
REM TIMERS:
REM PLAYER0, TIMER0 PLAYER0 Wisp respawn
REM PLAYER1, TIMER0 PLAYER1 Wisp respawn
REM PLAYER2, TIMER0 PLAYER2 Wisp respawn
REM PLAYER_GOOD, TIMER2 HERO Wisp respawn

CREATE_EFFECTS_LINE(PLAYER0, PLAYER0, 0, 0, 0, 48)
ADD_CREATURE_TO_LEVEL(PLAYER0, WISP_B, PLAYER0, 1, 1, 0)

IF(PLAYER0, WISP_B == 0)
    IF(PLAYER0, FLAG0 == 0)
        NEXT_COMMAND_REUSABLE
        PLAY_MESSAGE(PLAYER0, SOUND, 778)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER0, FLAG0, 1)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER0, TIMER0)
    ENDIF
    IF(PLAYER0, TIMER0 >= 300)
        IF(PLAYER0, FLAG0 == 1)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(PLAYER0, PLAYER0, 0, 0, 0, 48)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER0, WISP_B, PLAYER0, 1, 1, 0)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER0, FLAG0, 0)
        ENDIF
    ENDIF
ENDIF

rem "COMPUTER PLAYER1"
IF(PLAYER1, WISP_B == 1)
    NEXT_COMMAND_REUSABLE
    SET_TIMER(PLAYER1, TIMER0)
ENDIF
IF(PLAYER1, WISP_B == 0)
    IF(PLAYER1, TIMER0 >= 500)
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER1, WISP_B, PLAYER1, 1, 1, 0)
    ENDIF
ENDIF

rem "COMPUTER PLAYER2"
IF(PLAYER2, WISP_B == 1)
    NEXT_COMMAND_REUSABLE
    SET_TIMER(PLAYER2, TIMER0)
ENDIF
IF(PLAYER2, WISP_B == 0)
    IF(PLAYER2, TIMER0 >= 500)
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER2, WISP_B, PLAYER2, 1, 1, 0)
    ENDIF
ENDIF

rem "COMPUTER PLAYER_GOOD"
IF_SLAB_OWNER(63, 68, PLAYER_GOOD)
    IF(PLAYER_GOOD, FAIRYWISP == 1)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER_GOOD, TIMER3)
    ENDIF
    IF(PLAYER_GOOD, FAIRYWISP == 0)
        IF(PLAYER_GOOD, TIMER3 >= 2000)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, FAIRYWISP, -2, 1, 1, 0)
        ENDIF
    ENDIF
ENDIF
rem---------------------------------------------------------------------------------------------------------
rem Flags:
rem PLAYER3, FLAG0 Prisonsacrifice Bloodeffect?
rem PLAYER3, FLAG1 Prisonsacrifice has started?
rem Timers:
rem PLAYER3, TIMER0 Prisonsacrifice Timer for effects and spells


SET_FLAG(PLAYER3, FLAG0, 1)
IF_SLAB_OWNER(63, 79, PLAYER0)
    DISPLAY_INFORMATION(53, 25)
    rem if Creatures of Player1,Player2 or Player_good are thrown in the center...
    IF(PLAYER3, FLAG1 == 0)
        IF_ACTION_POINT(21, PLAYER_GOOD)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER3, FLAG1, 1)
        ENDIF
    ENDIF
    IF(PLAYER3, FLAG1 == 0)
        IF_ACTION_POINT(21, PLAYER1)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER3, FLAG1, 1)
        ENDIF
    ENDIF
    IF(PLAYER3, FLAG1 == 0)
        IF_ACTION_POINT(21, PLAYER2)
            NEXT_COMMAND_REUSABLE
            SET_FLAG(PLAYER3, FLAG1, 1)
        ENDIF
    ENDIF
ENDIF
rem ... start timer for nice effects...
IF(PLAYER3, FLAG1 != 1)
    NEXT_COMMAND_REUSABLE
    SET_TIMER(PLAYER3, TIMER0)
ENDIF
IF(PLAYER3, TIMER0 > 2)
    IF(PLAYER3, TIMER0 < 10)
        NEXT_COMMAND_REUSABLE
        PLAY_MESSAGE(PLAYER0, SOUND, 157)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER3, FLAG0, 0)
    ENDIF
    IF(PLAYER3, TIMER0 > 0)
        IF(PLAYER3, TIMER0 < 10)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(24, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(25, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(26, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(27, 21, 3, 20, 1, 64)
        ENDIF
    ENDIF
    IF(PLAYER3, TIMER0 > 15)
        IF(PLAYER3, TIMER0 < 25)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(24, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(25, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(26, 21, 3, 20, 1, 64)
            NEXT_COMMAND_REUSABLE
            CREATE_EFFECTS_LINE(27, 21, 3, 20, 1, 64)
        ENDIF
    ENDIF
    rem~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rem ... and hold the creature till the end of the ritual...
    IF(PLAYER3, TIMER0 < 45)
        NEXT_COMMAND_REUSABLE
        USE_SPELL_ON_CREATURE(PLAYER_GOOD, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
        NEXT_COMMAND_REUSABLE
        USE_SPELL_ON_CREATURE(PLAYER1, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
        NEXT_COMMAND_REUSABLE
        USE_SPELL_ON_CREATURE(PLAYER2, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
    ENDIF
ENDIF
rem ...where the creature is teleported away...
IF(PLAYER3, TIMER0 >= 40)
    NEXT_COMMAND_REUSABLE
    CHANGE_CREATURE_OWNER(PLAYER_GOOD, ANY_CREATURE, AT_ACTION_POINT[21], PLAYER3)
    NEXT_COMMAND_REUSABLE
    USE_SPELL_ON_CREATURE(PLAYER3, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
ENDIF
IF(PLAYER3, TIMER0 >= 40)
    NEXT_COMMAND_REUSABLE
    CHANGE_CREATURE_OWNER(PLAYER1, ANY_CREATURE, AT_ACTION_POINT[21], PLAYER3)
    NEXT_COMMAND_REUSABLE
    USE_SPELL_ON_CREATURE(PLAYER3, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
ENDIF
IF(PLAYER3, TIMER0 >= 40)
    NEXT_COMMAND_REUSABLE
    CHANGE_CREATURE_OWNER(PLAYER2, ANY_CREATURE, AT_ACTION_POINT[21], PLAYER3)
    NEXT_COMMAND_REUSABLE
    USE_SPELL_ON_CREATURE(PLAYER3, ANY_CREATURE, AT_ACTION_POINT[21], SPELL_TELEPORT, 0)
ENDIF
rem ...a lightning appears and the box is generated,....
IF_ACTION_POINT(22, PLAYER3)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER3, FLAG1, 0)
    NEXT_COMMAND_REUSABLE
    USE_POWER_AT_LOCATION(PLAYER1, 21, POWER_LIGHTNING, 1, 1)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER3, FLAG0, 1)
    rem "next command exist because, the very first box refuses to appear otherwise..."
    ADD_OBJECT_TO_LEVEL(WRKBOX_MBOX, 23, 0)
    IF(PLAYER3, FLAG1 == 1)
        NEXT_COMMAND_REUSABLE
        ADD_OBJECT_TO_LEVEL(WRKBOX_MBOX, 23, 0)
    ENDIF
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(22)
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(21)
ENDIF
rem ... also  a lot of blood appears
IF(PLAYER3, FLAG0 >= 1)
    IF(PLAYER3, FLAG0 <= 20)
        NEXT_COMMAND_REUSABLE
        CREATE_EFFECT(9, 22)
        NEXT_COMMAND_REUSABLE
        ADD_TO_FLAG(PLAYER3, FLAG0, 1)
    ENDIF
ENDIF
rem now the ritual could used again
IF(PLAYER3, TIMER0 >= 50)
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(21)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER3, FLAG1, 0)
ENDIF

rem Creaturs who are teleported back, can go "home"
NEXT_COMMAND_REUSABLE
KILL_CREATURE(PLAYER3, ANY_CREATURE, AT_ACTION_POINT[28], 1)


IF(PLAYER0, ALL_DUNGEONS_DESTROYED == 1)
    WIN_GAME
ENDIF

RUN_AFTER_VICTORY(1)
