REM *********************************************************
REM             Script for Level 2010.ʤĿɬ
REM *********************************************************             
REM             ͼߣ ʼٸ
REM                  QQ331672578
REM  ӭ1128460424³ػ - Dungeon KeeperȺ
REM *********************************************************
REM ͼĴο飺

REM 1нչѭˢ
REM     
REM 21Сʱһֹͣˢ
REM
REM 3ռмڻᴥս

REM 4ػ߲ռм

REM 5ҪõϵĽӹ࣬ȻῨ

REM ***********************************************************************

SET_GENERATE_SPEED(450)
MAX_CREATURES(PLAYER0,30)
START_MONEY(PLAYER0,20000)
START_MONEY(PLAYER1,50000)
START_MONEY(PLAYER2,50000)
START_MONEY(PLAYER3,50000)
COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
COMPUTER_PLAYER(PLAYER3,0)
ALLY_PLAYERS(PLAYER1,PLAYER3)
ALLY_PLAYERS(PLAYER2,PLAYER3)
ALLY_PLAYERS(PLAYER1,PLAYER2)
ALLY_PLAYERS(PLAYER1,PLAYER_GOOD)
ALLY_PLAYERS(PLAYER3,PLAYER_GOOD)
ALLY_PLAYERS(PLAYER2,PLAYER_GOOD)

REM *******************************ӹﵽ *********************************
REM   (ӵڵ,)

ADD_CREATURE_TO_POOL(ARCHER,15)
ADD_CREATURE_TO_POOL(DWARFA,15)
ADD_CREATURE_TO_POOL(SAMURAI,15)
ADD_CREATURE_TO_POOL(BARBARIAN,20)
ADD_CREATURE_TO_POOL(FAIRY,15)
ADD_CREATURE_TO_POOL(KNIGHT,20)
ADD_CREATURE_TO_POOL(WIZARD,15)
ADD_CREATURE_TO_POOL(GIANT,20)
ADD_CREATURE_TO_POOL(WITCH,15)
ADD_CREATURE_TO_POOL(MONK,20)
ADD_CREATURE_TO_POOL(AVATAR,1)

REM *******************************ָӪң/ֹڣأָ*********************************
REM  (,,1ֻ1,[1ļ/0ֹļ])

CREATURE_AVAILABLE(PLAYER0,ARCHER,1,1)
CREATURE_AVAILABLE(PLAYER0,DWARFA,1,1)
CREATURE_AVAILABLE(PLAYER0,SAMURAI,1,1)
CREATURE_AVAILABLE(PLAYER0,BARBARIAN,1,1)
CREATURE_AVAILABLE(PLAYER0,FAIRY,1,1)
CREATURE_AVAILABLE(PLAYER0,KNIGHT,1,1)
CREATURE_AVAILABLE(PLAYER0,WIZARD,1,1)
CREATURE_AVAILABLE(PLAYER0,GIANT,1,1)
CREATURE_AVAILABLE(PLAYER0,WITCH,1,1)
CREATURE_AVAILABLE(PLAYER0,MONK,1,1)
CREATURE_AVAILABLE(PLAYER0,AVATAR,1,1)

REM ********************ָӪң/ֹоͽָӣ**********************************
REM  (,,Ƿо[10ǽֹ],ǷѾɽ[1Ѿɽ/0о])

ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,SCAVENGER,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)

REM ********************ָӪң/ֹоʹָħ**********************************
REM  (,ħ,Ƿоʹ[10ǽֹ],ǷѾʹ[1Ѿɽ/0о])

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER3,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)

REM *********************ָӪң/ָֹ*********************************
REM  (,ŵ,[10ǽֹ],1[0Ѿ/͵]

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

REM *********************ָӪң/ָֹ*********************************
REM  (,,[10ǽֹ],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)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)

REM CREATE_PARTY =>齨                ()   
REM ADD_TO_PARTY=>ﵽ   (,,ȼ,ЯǮ,,ʱ)

CREATE_PARTY(FIRST)
    ADD_TO_PARTY(FIRST,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FIRST,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FIRST,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FIRST,VAMPIRE,8,5000,DEFEND_PARTY,0)
    ADD_TO_PARTY(FIRST,VAMPIRE,8,5000,DEFEND_PARTY,0)

CREATE_PARTY(SECOND)
    ADD_TO_PARTY(SECOND,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SECOND,VAMPIRE,8,5000,DEFEND_PARTY,0)
    ADD_TO_PARTY(SECOND,VAMPIRE,8,5000,DEFEND_PARTY,0)
    ADD_TO_PARTY(SECOND,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SECOND,DRAGON,8,0,ATTACK_ENEMIES,0)

CREATE_PARTY(THIRD)
    ADD_TO_PARTY(THIRD,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(THIRD,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(THIRD,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(THIRD,VAMPIRE,8,1800,DEFEND_PARTY,0)
    ADD_TO_PARTY(THIRD,VAMPIRE,8,1700,DEFEND_PARTY,0)

CREATE_PARTY(FOUR)
    ADD_TO_PARTY(FOUR,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FOUR,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FOUR,DRAGON,8,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FOUR,VAMPIRE,8,5000,DEFEND_PARTY,0)
    ADD_TO_PARTY(FOUR,VAMPIRE,8,5000,DEFEND_PARTY,0)

CREATE_PARTY(BRUTES_LIGHT)
    ADD_TO_PARTY(BRUTES_LIGHT,SKELETON,10,2200,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BRUTES_LIGHT,SKELETON,10,2200,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BRUTES_LIGHT,SKELETON,10,2200,DEFEND_PARTY,0)
    ADD_TO_PARTY(BRUTES_LIGHT,SKELETON,10,2200,ATTACK_ENEMIES,0)

CREATE_PARTY(DARK_MISTRESS_LIGHT)
    ADD_TO_PARTY(DARK_MISTRESS_LIGHT,DARK_MISTRESS,10,1850,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(DARK_MISTRESS_LIGHT,DARK_MISTRESS,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(DARK_MISTRESS_LIGHT,DARK_MISTRESS,10,1850,DEFEND_PARTY,0)
    ADD_TO_PARTY(DARK_MISTRESS_LIGHT,DARK_MISTRESS,10,1850,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(DARK_MISTRESS_LIGHT,DARK_MISTRESS,10,1950,DEFEND_PARTY,0)

CREATE_PARTY(MYSTIC_LIGHT)
    ADD_TO_PARTY(MYSTIC_LIGHT,DARK_MISTRESS,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(MYSTIC_LIGHT,SORCEROR,10,2200,STEAL_SPELLS,0)
    ADD_TO_PARTY(MYSTIC_LIGHT,SORCEROR,10,1900,DEFEND_PARTY,0)
    ADD_TO_PARTY(MYSTIC_LIGHT,SKELETON,10,1800,DEFEND_PARTY,0)
    ADD_TO_PARTY(MYSTIC_LIGHT,BILE_DEMON,10,1900,ATTACK_ROOMS,0)

CREATE_PARTY(BRUTES_HEAVY)
    ADD_TO_PARTY(BRUTES_HEAVY,BILE_DEMON,10,2500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BRUTES_HEAVY,BILE_DEMON,10,2500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BRUTES_HEAVY,SKELETON,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(BRUTES_HEAVY,SKELETON,10,2000,STEAL_SPELLS,0)

CREATE_PARTY(DARK_MISTRESS_HEAVY)
    ADD_TO_PARTY(DARK_MISTRESS_HEAVY,DARK_MISTRESS,10,2250,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(DARK_MISTRESS_HEAVY,DARK_MISTRESS,10,2500,STEAL_SPELLS,0)
    ADD_TO_PARTY(DARK_MISTRESS_HEAVY,DARK_MISTRESS,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(DARK_MISTRESS_HEAVY,DARK_MISTRESS,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(DARK_MISTRESS_HEAVY,DARK_MISTRESS,10,2250,DEFEND_PARTY,0)

CREATE_PARTY(MYSTIC_HEAVY)
    ADD_TO_PARTY(MYSTIC_HEAVY,DARK_MISTRESS,10,2500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(MYSTIC_HEAVY,SORCEROR,10,2500,STEAL_SPELLS,0)
    ADD_TO_PARTY(MYSTIC_HEAVY,SORCEROR,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(MYSTIC_HEAVY,DARK_MISTRESS,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(MYSTIC_HEAVY,BILE_DEMON,10,2000,ATTACK_ROOMS,0)

CREATE_PARTY(SUPPORT)
    ADD_TO_PARTY(SUPPORT,VAMPIRE,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SUPPORT,VAMPIRE,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SUPPORT,VAMPIRE,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(SUPPORT,VAMPIRE,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(SUPPORT,VAMPIRE,10,2000,ATTACK_ENEMIES,0)

CREATE_PARTY(BOSS)
    ADD_TO_PARTY(BOSS,VAMPIRE,10,2500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BOSS,KNIGHT,10,5000,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(BOSS,VAMPIRE,10,2500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BOSS,VAMPIRE,10,2500,DEFEND_PARTY,0)
    ADD_TO_PARTY(BOSS,HORNY,10,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(BOSS,HORNY,10,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(BOSS,HORNY,10,2000,ATTACK_ENEMIES,0)
   
REM ****************************ű(Ҫݡݣ**********************************

QUICK_OBJECTIVE(0,"Objective: Defend the enemy attack and claim the Sacred Portal in the central of the map. (Note: this level is very difficult! )",ALL_PLAYERS)

QUICK_INFORMATION(6,"After the second payday, the Devils and evil Dragons will keep attacking you for AN HOUR! Prepare yourself! A HA HA!")

SET_FLAG(PLAYER_GOOD,FLAG0,0)
SET_FLAG(PLAYER0,FLAG1,0)

IF(PLAYER0,IMP > 0)
    MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
ENDIF

IF(PLAYER0,TEMPLE >= 9)
    ROOM_AVAILABLE(PLAYER0,TEMPLE,0,0)
ENDIF

IF(PLAYER0,FLAG1 == 0)
    IF(PLAYER0,BRIDGE == 0)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
    ENDIF
ENDIF

IF(PLAYER0,FLAG1 == 0)
    IF(PLAYER0,BRIDGE == 1)
        NEXT_COMMAND_REUSABLE
        ROOM_AVAILABLE(PLAYER0,BRIDGE,0,0)
    ENDIF
ENDIF

IF(PLAYER0,FLAG1 == 1)
    ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
ENDIF

IF(PLAYER1,TOTAL_CREATURES == 0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,VAMPIRE,3,10,10,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,HORNY,3,10,10,0)
ENDIF

IF(PLAYER2,TOTAL_CREATURES == 0)  
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,VAMPIRE,5,10,10,0)
ENDIF

IF(PLAYER3,TOTAL_CREATURES == 0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,VAMPIRE,4,10,10,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,HORNY,4,10,10,0)
ENDIF

SET_TIMER(PLAYER0,TIMER0)

IF(PLAYER0,TIMER0 >= 20000)
    SET_FLAG(PLAYER0,FLAG0,1)
ENDIF

IF(PLAYER0,FLAG0 == 1)
    SET_TIMER(PLAYER_GOOD,TIMER0)
    SET_TIMER(PLAYER_GOOD,TIMER1)
    SET_TIMER(PLAYER_GOOD,TIMER2)
    SET_TIMER(PLAYER_GOOD,TIMER3)
    SET_TIMER(PLAYER_GOOD,TIMER4)
ENDIF

IF(PLAYER_GOOD,FLAG0 == 0)
    IF(PLAYER_GOOD,TIMER0 >= 10)
        IF(PLAYER_GOOD,TIMER1 > 1500)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIRST,-1,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD,TIMER1)
        ENDIF
    ENDIF
ENDIF


IF(PLAYER_GOOD,FLAG0 == 0)
    IF(PLAYER_GOOD,TIMER0 >= 3000)
        IF(PLAYER_GOOD,TIMER2 > 1500)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SECOND,-2,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD,TIMER2)
        ENDIF
    ENDIF
ENDIF


IF(PLAYER_GOOD,FLAG0 == 0)
    IF(PLAYER_GOOD,TIMER0 >= 4500)
        IF(PLAYER_GOOD,TIMER3 > 1500)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIRD,-3,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD,TIMER3)
        ENDIF
    ENDIF
ENDIF


IF(PLAYER_GOOD,FLAG0 == 0)
    IF(PLAYER_GOOD,TIMER0 >= 6000)
        IF(PLAYER_GOOD,TIMER4 > 1500)
            NEXT_COMMAND_REUSABLE
            ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-4,1)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER_GOOD,TIMER4)
        ENDIF
    ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER0 >= 30000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES_LIGHT,-5,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 35500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MYSTIC_LIGHT,-5,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 42500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DARK_MISTRESS_LIGHT,-5,1)
    SET_FLAG(PLAYER_GOOD,FLAG0,1)
    QUICK_OBJECTIVE(5,"You must defeat all the enemy Keepers before you can reach to the Sacred Portal!",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 42500)
    IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
        IF(PLAYER_GOOD,FLAG0 == 1)
            SET_FLAG(PLAYER_GOOD,FLAG0,2)
            SET_FLAG(PLAYER0,FLAG1,1)
            QUICK_OBJECTIVE(1,"Hurry up! Claim the Sacred Portal now!",ALL_PLAYERS)
        ENDIF
    ENDIF
ENDIF

IF_ACTION_POINT(1,PLAYER0)
    SET_TIMER(PLAYER_GOOD,TIMER5)
    QUICK_OBJECTIVE(2,"No! Unfortunately, you're late! The enemies have already claimed it and they are about to use it to spawn some creatures to attack you!",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,FLAG0 == 2)
    IF(PLAYER_GOOD,TIMER5 >= 1000)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES_HEAVY,-5,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES_HEAVY,-5,1)
        QUICK_OBJECTIVE(3,"Here the enemies come again!",PLAYER0)
    ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG0 == 2)
    IF(PLAYER_GOOD,TIMER5 >= 5000)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DARK_MISTRESS_HEAVY,-5,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MYSTIC_HEAVY,-5,1)
        SET_FLAG(PLAYER_GOOD,FLAG0,3)
    ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG0 == 3)
    IF(PLAYER_GOOD,TIMER5 >= 10000)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BOSS,1,3)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SUPPORT,1,3)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DARK_MISTRESS_HEAVY,-5,3)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DARK_MISTRESS_LIGHT,-5,3)
        SET_FLAG(PLAYER_GOOD,FLAG0,4)
    ENDIF
ENDIF

REM ****************************ʤ/ʧ**********************************

IF(PLAYER_GOOD,TIMER5 >= 10000)
    IF(PLAYER_GOOD,FLAG0 == 4)
        IF(PLAYER_GOOD,TOTAL_CREATURES == 0)
            QUICK_OBJECTIVE(4,"The enemies have been killed off and the Sacred Portal is yours now! Victory!",ALL_PLAYERS)
            WIN_GAME
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,DUNGEON_DESTROYED == 1)
    LOSE_GAME
ENDIF