Zyraen
June 10th, 2011, 05:42
Here's an idea for a "Sandbox" style level for DK1.
Basically you start with 4 gem faces and a portal and can build everything. You can generally attract any Creature you like, except the usual - Ghosts, Skeletons, Vampires, Horned Reapers - you get them through applying your rooms.
There is 1 Hero Keep and 2 Keepers. Within the Hero Keep is the Avatar who you need to defeat / kill to win. Both Keepers do not have Bridge nor Scavenger Room, so you can effectively ignore them.
The map is separated into 5 portions, all separated by Lava
1) Your Area - The Biggest South portion stretches an area of about 30-40% of the map, and is basically your turf to build as you please. At the 2 far ends are 2 Hero Gates, ie Southwest / Southeast. Your Gems are closer to the Southeast Hero Gate.
2) Enemy Keepers - The East and West sides, stretching to the Northeast and Northwest, are occupied by Enemy Keepers. They each have 2 gem sides to mine for sustenance. Both Keepers cannot build Bridge nor Scavenger Room, and need not be killed to win the game.
3) Hero Keep - on the "opposite" North side of the map. Basically 1 small room for the Avatar and his bodyguard, 2 large rooms on both sides for the defensive parties, each room having an Increase Level. These 3 rooms are all locked, and there is another "external" room with a functional Hero Gate and Gems and some shooting areas.
4) Central - A very large block of dirt (probably about 10%-15% of the map area), with two Gem sides in the middle. Its basically North of your Turf, between you and the Hero Keep, and also between the 2 Keepers. Basically, a central staging ground.
Apart from your own section, all the other 4 sections have 2 gem faces. This is just meant as a reward if you choose to "hold" the area, which isn't difficult. You won't need these Gem faces anyway, since at 4 Gem Faces you won't run out of gold.
None of the Keepers nor the Heroes are allied. Being the sole builder of Bridges, you will be able to "direct" the fight in any way you please. This includes letting the Keepers fight each other, or bringing on a Hero Invasion upon the 2 Keepers and observing how they fare. In fact that is the purpose of the "Central" Block, to "encourage" competition.
To compensate for the inability to add Heroes / Creatures dynamically to your Sandbox level like in DK2, the following rooms serve as "settings" for the Hero spawns, but only at large room sizes :
- Barracks : determines the level of the Hero Spawns. the larger, the stronger the heroes.
- Temple : determines the frequency of Hero Spawns. the larger, the more frequent spawns will occur. Note that it defaults at Nothing, meaning the Heroes will Never Spawn to Attack you
- Torture Chamber : determines the spawning of Heroes with Tunnelers from the side gates on the same Southern area as you. The settings are Southwest (easier) or Southeast (harder) or Both Gates. Note that with Lava Traps its not difficult to block them off. Note the spawns are synchronised with the other spawns and follow the same timer as set by the Temple.
- Graveyard : determines the composition of the Spawns. It defaults to 5 man party that has more Melee and weaker Unit types, increases to a 6 man mid-difficulty party, finally a 7 man tougher Melee-Ranged blend. Generally, the larger the Graveyard setting the harder.
The first Room Settings generally only kick in at 26 tiles, followed by 30, then 35. In other words, you build a 5x5+1 block to change the first setting, then expand it by one row of 5 to change to the next setting. Of course any shape works, this is just for reference.
I chose the above room assuming that no one would Need to build them up to that kind of size to make use of the Rooms. Alternatively, would using less useful traps/doors like Alarm Trap, Poison Gas Trap, Wooden and Braced doors to adjust the settings be better?
The Hero's Total Creatures are generally capped at 100, separate from the 256 Creature Cap.
Note that even if there are no Hero spawns, ie your Temple is small, the Graveyard and Barracks settings will also affect the difficulty of your final fights. Not bothering to build up both rooms will make the final fight a general walk-over except for the Avatar himself.
Alternatively, you can build up all the rooms and kill 1000s of Heroes and convert as many as you like until the game stops producing more Creatures. You can also adjust it so that you keep capturing and converting powerful Hero units (and killing the rest, probably), so you can turn your whole army into nothing but Knights and Samurais if you so please.
Any general comments are welcome regards the interest and usability of such "Sandbox" settings? What would be the Portal Limit for the Keepers (yourself and your opponents) that would make it interesting? I was thinking of 40 35 35 for a start, or if the Player is at a disadvantage, 30,35,35
PS : for those wondering, I've started building the map in Adikted already. The script is still something I'm mulling over, hence this thread. Of course if there's no Sandbox DK1 market, then I'll just fit it as a Single Player map and drop the Sandbox Script.
This would merely mean more gold and no gems in the Player1 Turf, 4 gem faces in Enemy Keeper's area, removing some Lava for a landbridge to the centre, which would contain 2 gem faces (ie for you to hold). Plus the standard Room / Spell / Trap etc changes to make it challenging.
Update
This is what I've got so far. I don't think I'll change the layout from here, think it fits, but of course subject to User's feedback. Will be populating it and testing out the Scripts.
788
Update
The Map Script Content. Most of the comments inside are pretty straightforward.
It tentatively uses exactly 48/48 IFs. Sorry about the Lack of Indentation, if you want the actual TXT file I can send it to you.
Meantime, I will be Testing it before release
REM Sandbox Level. Kill the Avatar to win
SET_GENERATE_SPEED(400)
MAX_CREATURES(PLAYER0,30)
MAX_CREATURES(PLAYER1,40)
MAX_CREATURES(PLAYER2,40)
START_MONEY(ALL_PLAYERS,15000)
ADD_CREATURE_TO_POOL(BILE_DEMON,50)
ADD_CREATURE_TO_POOL(DRAGON,50)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,50)
ADD_CREATURE_TO_POOL(ORC,50)
ADD_CREATURE_TO_POOL(SORCEROR,35)
ADD_CREATURE_TO_POOL(HELL_HOUND,35)
ADD_CREATURE_TO_POOL(TROLL,35)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(FLY,20)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
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,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0 )
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1, 0)
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_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1, 0)
MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,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)
TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
REM Computer Player stuff
COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
REM Party of 5 - Samurai leading Barbarian, Giant, Fairy, Archer
CREATE_PARTY(ONE)
ADD_TO_PARTY(ONE,BARBARIAN,5,200,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(ONE,SAMURAI,5,200,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(ONE,GIANT,5,200,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ONE,FAIRY,5,200,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ONE,ARCHER,5,200,ATTACK_DUNGEON_HEART ,0)
REM Party of 6 - Knight leading Samurai, Barbarian, Wizard, Fairy, Priestess
CREATE_PARTY(TWO)
ADD_TO_PARTY(TWO,SAMURAI,7,250,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(TWO,KNIGHT,8,250,ATTACK_DUNGEON_HEART ,0)
ADD_TO_PARTY(TWO,BARBARIAN,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(TWO,FAIRY,8,250,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(TWO,WIZARD,7,250,ATTACK_DUNGEON_HEART ,0)
ADD_TO_PARTY(TWO,WITCH,8,250,ATTACK_DUNGEON_HEART, 0)
CREATE_PARTY(FOUR)
ADD_TO_PARTY(FOUR,SAMURAI,10,500,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(FOUR,KNIGHT,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FOUR,BARBARIAN,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(FOUR,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(FOUR,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FOUR,WITCH,10,500,ATTACK_DUNGEON_HEAR T,0)
REM Party of 7 - Knight leading 2 Samurai, 2 Wizards, 2 Fairies
REM Note that at Level 10, everyone except the Knight can Freeze
CREATE_PARTY(THREE)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(THREE,KNIGHT,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEAR T,0)
CREATE_PARTY(FIVE)
ADD_TO_PARTY(FIVE,SAMURAI,10,500,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(FIVE,KNIGHT,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,SAMURAI,8,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
REM Avatar & Bodyguard. 2 Tiers only.
CREATE_PARTY(AVATARA)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARA,AVATAR,10,5000,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_H EART,0)
CREATE_PARTY(AVATARC)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,AVATAR,10,5000,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_ HEART,0)
REM 11/16 Parties
REM Main Spawn Flag
SET_FLAG(PLAYER0,FLAG0,0)
REM Avatar Spawn Flag
SET_FLAG(PLAYER0,FLAG1,0)
REM Defensive Spawn Flag
SET_FLAG(PLAYER0,FLAG2,0)
SET_FLAG(PLAYER_GOOD,FLAG0,0)
SET_TIMER(PLAYER_GOOD,TIMER0)
DISPLAY_OBJECTIVE(909,PLAYER0)
REM Set the Spawns using the Barracks
REM Flag simply defaults as low and ends up at the highest possible flag.
REM This automatically downgrades the Flag when you reduce the Temple size
REM 0+5 = 5/48 IF used
IF(PLAYER0,BARRACKS < 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,1)
ENDIF
IF(PLAYER0,BARRACKS >= 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,2)
IF(PLAYER0,BARRACKS >= 25)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,3)
IF(PLAYER0,BARRACKS >= 30)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,4)
IF(PLAYER0,BARRACKS >= 35)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,5)
ENDIF
ENDIF
ENDIF
ENDIF
REM Timers to Trigger the Spawns. the Timer is initialised upon the Map starting
REM 3 Timer tiers of 40, 25, 15 corresponding to Temple Tiles 26 30 35
REM the Timer is always re-started at 40 mins
REM 5+8 = 13/48 IF used
IF(PLAYER0,TEMPLE >= 26)
IF(PLAYER0,TEMPLE >= 30)
IF(PLAYER0,TEMPLE >= 35)
IF(PLAYER_GOOD,TIMER0 >= 18000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 30000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 48000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER_GOOD,TOTAL_CREATURES < 100)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,2)
ENDIF
ENDIF
REM Spawns by Trigger / Gate
REM Hero Gates
REM 1 - East of Avatar (def) / 2 - West of Avatar (def) / 3 - Main Assault Gate
REM 4 - West of Heart / 5 - East of Heart, nearer to Gems / 6 - Avatar Room
REM Action Points
REM 1 - entrance to HG1 / 2 - entrance to HG2 / 3 - entering Avatar Room
REM 3 - Main Assault Gate. This ALWAYS triggers so long the Spawn is Set
REM 13+8 = 21 IFs used
IF(PLAYER_GOOD,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-3,1)
ENDIF
REM added an extra 2 IFs inside (not included in above count of 8 IFs)
REM as a Hidden "Bonus", the Main Gate spawns the AvatarC party
REM if you have a Barracks more than 7x7
IF(PLAYER0,FLAG0 == 5)
IF(PLAYER0,BARRACKS < 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-3,1)
ENDIF
IF(PLAYER0,BARRACKS >= 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
IF(PLAYER0,TORTURE >=31)
SET_FLAG(PLAYER_GOOD,FLAG4,1)
IF(PLAYER0,TORTURE >=36)
SET_FLAG(PLAYER_GOOD,FLAG5,1)
ENDIF
ENDIF
ENDIF
REM Gates 4 & 5 - Heart Gates
REM 21+12 = 33 IFs used
IF(PLAYER_GOOD,FLAG4 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG4,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-4,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-4,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-4,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG5 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG5,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-5,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-5,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-5,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
REM 1 & 2, the Defensive Gates. They always spawn together
REM 33 + 3 = 36 IFs used
IF(PLAYER_GOOD,FLAG2 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,2)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER1)
IF(PLAYER0,FLAG0 <= 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ENDIF
ENDIF
REM Action Points 1 & 2, whichever occurs first, triggers the first "Defence"
REM 36 + 3 = 39 IF Used
IF(PLAYER_GOOD,FLAG2 == 0)
IF_ACTION_POINT(1,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
IF_ACTION_POINT(2,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
ENDIF
REM Action Point 3 triggers the Avatar & Defences
REM 39 + 3 = 42 IF Used
REM unlike most other commands, this occurs ONCE only
IF_ACTION_POINT(3,PLAYER0)
SET_FLAG(PLAYER_GOOD,FLAG1,1)
IF(PLAYER0,FLAG0 <= 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARA,-3,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
REM If the Avatar is slain after being spawned, you win
REM 42+2 = 44 IFs Used
IF(PLAYER0,FLAG1 == 1)
IF(PLAYER0,AVATAR==0)
WIN_GAME
ENDIF
ENDIF
REM Beyond this are EXTRA things
REM This Timer Resets the "Defensive" Spawns every 10 Minutes.
REM It can easily be Bypassed simply by dropping your Creatures
REM 44+1 = 45 IFs Used
IF(PLAYER_GOOD,TIMER1 >= 12000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,0)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(1)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(2)
ENDIF
REM Extra 2 IFs added to Main Gate, which may Spawn Avatar Parties.
REM 45+2 = 47 IFs used
REM Extra IF for Temple checking.
REM This is a pre-built Large Temple used for Testing the Timers
IF(PLAYER0, TEMPLE >= 1)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,1)
END
Basically you start with 4 gem faces and a portal and can build everything. You can generally attract any Creature you like, except the usual - Ghosts, Skeletons, Vampires, Horned Reapers - you get them through applying your rooms.
There is 1 Hero Keep and 2 Keepers. Within the Hero Keep is the Avatar who you need to defeat / kill to win. Both Keepers do not have Bridge nor Scavenger Room, so you can effectively ignore them.
The map is separated into 5 portions, all separated by Lava
1) Your Area - The Biggest South portion stretches an area of about 30-40% of the map, and is basically your turf to build as you please. At the 2 far ends are 2 Hero Gates, ie Southwest / Southeast. Your Gems are closer to the Southeast Hero Gate.
2) Enemy Keepers - The East and West sides, stretching to the Northeast and Northwest, are occupied by Enemy Keepers. They each have 2 gem sides to mine for sustenance. Both Keepers cannot build Bridge nor Scavenger Room, and need not be killed to win the game.
3) Hero Keep - on the "opposite" North side of the map. Basically 1 small room for the Avatar and his bodyguard, 2 large rooms on both sides for the defensive parties, each room having an Increase Level. These 3 rooms are all locked, and there is another "external" room with a functional Hero Gate and Gems and some shooting areas.
4) Central - A very large block of dirt (probably about 10%-15% of the map area), with two Gem sides in the middle. Its basically North of your Turf, between you and the Hero Keep, and also between the 2 Keepers. Basically, a central staging ground.
Apart from your own section, all the other 4 sections have 2 gem faces. This is just meant as a reward if you choose to "hold" the area, which isn't difficult. You won't need these Gem faces anyway, since at 4 Gem Faces you won't run out of gold.
None of the Keepers nor the Heroes are allied. Being the sole builder of Bridges, you will be able to "direct" the fight in any way you please. This includes letting the Keepers fight each other, or bringing on a Hero Invasion upon the 2 Keepers and observing how they fare. In fact that is the purpose of the "Central" Block, to "encourage" competition.
To compensate for the inability to add Heroes / Creatures dynamically to your Sandbox level like in DK2, the following rooms serve as "settings" for the Hero spawns, but only at large room sizes :
- Barracks : determines the level of the Hero Spawns. the larger, the stronger the heroes.
- Temple : determines the frequency of Hero Spawns. the larger, the more frequent spawns will occur. Note that it defaults at Nothing, meaning the Heroes will Never Spawn to Attack you
- Torture Chamber : determines the spawning of Heroes with Tunnelers from the side gates on the same Southern area as you. The settings are Southwest (easier) or Southeast (harder) or Both Gates. Note that with Lava Traps its not difficult to block them off. Note the spawns are synchronised with the other spawns and follow the same timer as set by the Temple.
- Graveyard : determines the composition of the Spawns. It defaults to 5 man party that has more Melee and weaker Unit types, increases to a 6 man mid-difficulty party, finally a 7 man tougher Melee-Ranged blend. Generally, the larger the Graveyard setting the harder.
The first Room Settings generally only kick in at 26 tiles, followed by 30, then 35. In other words, you build a 5x5+1 block to change the first setting, then expand it by one row of 5 to change to the next setting. Of course any shape works, this is just for reference.
I chose the above room assuming that no one would Need to build them up to that kind of size to make use of the Rooms. Alternatively, would using less useful traps/doors like Alarm Trap, Poison Gas Trap, Wooden and Braced doors to adjust the settings be better?
The Hero's Total Creatures are generally capped at 100, separate from the 256 Creature Cap.
Note that even if there are no Hero spawns, ie your Temple is small, the Graveyard and Barracks settings will also affect the difficulty of your final fights. Not bothering to build up both rooms will make the final fight a general walk-over except for the Avatar himself.
Alternatively, you can build up all the rooms and kill 1000s of Heroes and convert as many as you like until the game stops producing more Creatures. You can also adjust it so that you keep capturing and converting powerful Hero units (and killing the rest, probably), so you can turn your whole army into nothing but Knights and Samurais if you so please.
Any general comments are welcome regards the interest and usability of such "Sandbox" settings? What would be the Portal Limit for the Keepers (yourself and your opponents) that would make it interesting? I was thinking of 40 35 35 for a start, or if the Player is at a disadvantage, 30,35,35
PS : for those wondering, I've started building the map in Adikted already. The script is still something I'm mulling over, hence this thread. Of course if there's no Sandbox DK1 market, then I'll just fit it as a Single Player map and drop the Sandbox Script.
This would merely mean more gold and no gems in the Player1 Turf, 4 gem faces in Enemy Keeper's area, removing some Lava for a landbridge to the centre, which would contain 2 gem faces (ie for you to hold). Plus the standard Room / Spell / Trap etc changes to make it challenging.
Update
This is what I've got so far. I don't think I'll change the layout from here, think it fits, but of course subject to User's feedback. Will be populating it and testing out the Scripts.
788
Update
The Map Script Content. Most of the comments inside are pretty straightforward.
It tentatively uses exactly 48/48 IFs. Sorry about the Lack of Indentation, if you want the actual TXT file I can send it to you.
Meantime, I will be Testing it before release
REM Sandbox Level. Kill the Avatar to win
SET_GENERATE_SPEED(400)
MAX_CREATURES(PLAYER0,30)
MAX_CREATURES(PLAYER1,40)
MAX_CREATURES(PLAYER2,40)
START_MONEY(ALL_PLAYERS,15000)
ADD_CREATURE_TO_POOL(BILE_DEMON,50)
ADD_CREATURE_TO_POOL(DRAGON,50)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,50)
ADD_CREATURE_TO_POOL(ORC,50)
ADD_CREATURE_TO_POOL(SORCEROR,35)
ADD_CREATURE_TO_POOL(HELL_HOUND,35)
ADD_CREATURE_TO_POOL(TROLL,35)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(FLY,20)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
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,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0 )
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1, 0)
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_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1, 0)
MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,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)
TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
REM Computer Player stuff
COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
REM Party of 5 - Samurai leading Barbarian, Giant, Fairy, Archer
CREATE_PARTY(ONE)
ADD_TO_PARTY(ONE,BARBARIAN,5,200,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(ONE,SAMURAI,5,200,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(ONE,GIANT,5,200,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ONE,FAIRY,5,200,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ONE,ARCHER,5,200,ATTACK_DUNGEON_HEART ,0)
REM Party of 6 - Knight leading Samurai, Barbarian, Wizard, Fairy, Priestess
CREATE_PARTY(TWO)
ADD_TO_PARTY(TWO,SAMURAI,7,250,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(TWO,KNIGHT,8,250,ATTACK_DUNGEON_HEART ,0)
ADD_TO_PARTY(TWO,BARBARIAN,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(TWO,FAIRY,8,250,ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(TWO,WIZARD,7,250,ATTACK_DUNGEON_HEART ,0)
ADD_TO_PARTY(TWO,WITCH,8,250,ATTACK_DUNGEON_HEART, 0)
CREATE_PARTY(FOUR)
ADD_TO_PARTY(FOUR,SAMURAI,10,500,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(FOUR,KNIGHT,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FOUR,BARBARIAN,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(FOUR,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(FOUR,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FOUR,WITCH,10,500,ATTACK_DUNGEON_HEAR T,0)
REM Party of 7 - Knight leading 2 Samurai, 2 Wizards, 2 Fairies
REM Note that at Level 10, everyone except the Knight can Freeze
CREATE_PARTY(THREE)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(THREE,KNIGHT,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEAR T,0)
CREATE_PARTY(FIVE)
ADD_TO_PARTY(FIVE,SAMURAI,10,500,ATTACK_DUNGEON_HE ART,0)
ADD_TO_PARTY(FIVE,KNIGHT,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,SAMURAI,8,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEA RT,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEAR T,0)
REM Avatar & Bodyguard. 2 Tiers only.
CREATE_PARTY(AVATARA)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARA,AVATAR,10,5000,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_H EART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_H EART,0)
CREATE_PARTY(AVATARC)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,AVATAR,10,5000,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON _HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_ HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_ HEART,0)
REM 11/16 Parties
REM Main Spawn Flag
SET_FLAG(PLAYER0,FLAG0,0)
REM Avatar Spawn Flag
SET_FLAG(PLAYER0,FLAG1,0)
REM Defensive Spawn Flag
SET_FLAG(PLAYER0,FLAG2,0)
SET_FLAG(PLAYER_GOOD,FLAG0,0)
SET_TIMER(PLAYER_GOOD,TIMER0)
DISPLAY_OBJECTIVE(909,PLAYER0)
REM Set the Spawns using the Barracks
REM Flag simply defaults as low and ends up at the highest possible flag.
REM This automatically downgrades the Flag when you reduce the Temple size
REM 0+5 = 5/48 IF used
IF(PLAYER0,BARRACKS < 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,1)
ENDIF
IF(PLAYER0,BARRACKS >= 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,2)
IF(PLAYER0,BARRACKS >= 25)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,3)
IF(PLAYER0,BARRACKS >= 30)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,4)
IF(PLAYER0,BARRACKS >= 35)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,5)
ENDIF
ENDIF
ENDIF
ENDIF
REM Timers to Trigger the Spawns. the Timer is initialised upon the Map starting
REM 3 Timer tiers of 40, 25, 15 corresponding to Temple Tiles 26 30 35
REM the Timer is always re-started at 40 mins
REM 5+8 = 13/48 IF used
IF(PLAYER0,TEMPLE >= 26)
IF(PLAYER0,TEMPLE >= 30)
IF(PLAYER0,TEMPLE >= 35)
IF(PLAYER_GOOD,TIMER0 >= 18000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 30000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 48000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER_GOOD,TOTAL_CREATURES < 100)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,2)
ENDIF
ENDIF
REM Spawns by Trigger / Gate
REM Hero Gates
REM 1 - East of Avatar (def) / 2 - West of Avatar (def) / 3 - Main Assault Gate
REM 4 - West of Heart / 5 - East of Heart, nearer to Gems / 6 - Avatar Room
REM Action Points
REM 1 - entrance to HG1 / 2 - entrance to HG2 / 3 - entering Avatar Room
REM 3 - Main Assault Gate. This ALWAYS triggers so long the Spawn is Set
REM 13+8 = 21 IFs used
IF(PLAYER_GOOD,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-3,1)
ENDIF
REM added an extra 2 IFs inside (not included in above count of 8 IFs)
REM as a Hidden "Bonus", the Main Gate spawns the AvatarC party
REM if you have a Barracks more than 7x7
IF(PLAYER0,FLAG0 == 5)
IF(PLAYER0,BARRACKS < 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-3,1)
ENDIF
IF(PLAYER0,BARRACKS >= 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
IF(PLAYER0,TORTURE >=31)
SET_FLAG(PLAYER_GOOD,FLAG4,1)
IF(PLAYER0,TORTURE >=36)
SET_FLAG(PLAYER_GOOD,FLAG5,1)
ENDIF
ENDIF
ENDIF
REM Gates 4 & 5 - Heart Gates
REM 21+12 = 33 IFs used
IF(PLAYER_GOOD,FLAG4 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG4,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-4,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-4,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-4,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG5 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG5,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-5,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-5,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-5,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
REM 1 & 2, the Defensive Gates. They always spawn together
REM 33 + 3 = 36 IFs used
IF(PLAYER_GOOD,FLAG2 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,2)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER1)
IF(PLAYER0,FLAG0 <= 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ENDIF
ENDIF
REM Action Points 1 & 2, whichever occurs first, triggers the first "Defence"
REM 36 + 3 = 39 IF Used
IF(PLAYER_GOOD,FLAG2 == 0)
IF_ACTION_POINT(1,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
IF_ACTION_POINT(2,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
ENDIF
REM Action Point 3 triggers the Avatar & Defences
REM 39 + 3 = 42 IF Used
REM unlike most other commands, this occurs ONCE only
IF_ACTION_POINT(3,PLAYER0)
SET_FLAG(PLAYER_GOOD,FLAG1,1)
IF(PLAYER0,FLAG0 <= 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARA,-3,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
REM If the Avatar is slain after being spawned, you win
REM 42+2 = 44 IFs Used
IF(PLAYER0,FLAG1 == 1)
IF(PLAYER0,AVATAR==0)
WIN_GAME
ENDIF
ENDIF
REM Beyond this are EXTRA things
REM This Timer Resets the "Defensive" Spawns every 10 Minutes.
REM It can easily be Bypassed simply by dropping your Creatures
REM 44+1 = 45 IFs Used
IF(PLAYER_GOOD,TIMER1 >= 12000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,0)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(1)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(2)
ENDIF
REM Extra 2 IFs added to Main Gate, which may Spawn Avatar Parties.
REM 45+2 = 47 IFs used
REM Extra IF for Temple checking.
REM This is a pre-built Large Temple used for Testing the Timers
IF(PLAYER0, TEMPLE >= 1)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,1)
END