title Heroes of Sokoban II: Monsters author Jonah Ostroff text_color yellow key_repeat_interval 0.25 ======== OBJECTS ======== Background #989898 #C8C8C8 00000 00100 00000 00010 00000 Goal Brown Yellow .000. 00000 00010 00000 00000 Wall Darkgrey #222222 01000 11111 00010 00010 11111 Fighter (Warrior sounds better in-game, but I want different abbreviations for the classes in the editor.) #FF4444 Pink DarkBrown .000. .111. 00000 .000. .2.2. Wizard #2266FF Pink .000. .010. 00000 .000. 00000 Thief #66DD66 Pink DarkBrown .000. .010. 00000 .0.0. .0.0. Priest #FFFFAA Pink .000. .111. 00000 .000. 00000 SFighter #880000 Pink DarkBrown .000. .111. 00000 .000. .2.2. SWizard #000088 Pink .000. .010. 00000 .000. 00000 SThief #006600 Pink DarkBrown .000. .010. 00000 .0.0. .0.0. SPriest #B8B800 Pink .000. .111. 00000 .000. 00000 Crate Orange #552200 .111. 10001 10001 10001 .111. YellowSwitch Yellow Black ..... .111. .101. .111. ..... YellowOpen Yellow 0...0 ..... ..... ..... 0...0 YellowDoor Yellow #AA7722 01010 10001 00000 10001 01010 PurpleSwitch #6611CC Black ..... .111. .101. .111. ..... PurpleDoor #6611CC #220088 01010 10001 00000 10001 01010 PurpleOpen #6611CC 0...0 ..... ..... ..... 0...0 MonsterDoor DarkGrey #222222 Red 21002 22122 20212 20012 21112 Warpball Blue ShadowDoor Purple DragonLeft Green Red Orange Yellow DarkGreen ..... 1100. 3210. 1100. ...4. DragonRight Green Red Orange Yellow DarkGreen ..... .0011 .0123 .0011 .4... Goblin Green DarkBrown DarkGreen 0.2.0 00000 ..0.. .111. .1.1. Dying White Saved #D8D800 ..0.. .000. ..0.. ..0.. ..... HasSaved Yellow ..... ..... ..... ..... ..... Corpse #CCC .000. .000. 00000 .0.0. .0.0. LFireball Orange RFireball Orange DidNotMove Purple ======= LEGEND ======= Dragon = DragonLeft or DragonRight Player = Fighter or Wizard or Thief or Priest SPlayer = Swizard or Sthief or SFighter or SPriest Hero = Player or Splayer Healer = Priest or SPriest (Unlike the other heroes, priests must function even when inactive. "Healer" is the generic term for an active or inactive priest.) ClosedDoor = PurpleDoor or YellowDoor or MonsterDoor OpenDoor = YellowOpen or PurpleOpen Switch = PurpleSwitch or YellowSwitch Monster = Dragon or Goblin Moveable = Crate or SPlayer or Monster Static = Wall or ClosedDoor Weighing = Crate or Hero or Monster Vulnerable = Hero or Monster Invulnerable = Crate or Static Fireball = LFireball or RFireball . = Background # = Wall F = Fighter W = Wizard T = Thief P = Priest 1 = SFighter 2 = SThief 3 = SWizard 4 = SPriest * = Crate G = Goal [ = YellowDoor ] = PurpleDoor { = YellowSwitch } = PurpleSwitch L = DragonLeft R = DragonRight O = Goblin M = MonsterDoor ======= SOUNDS ======= Moveable move 82056307 Sfx0 21221308 (teleport) Endlevel 36315908 Sfx1 66399906 (switch player) Sfx2 92172900 (close door) Sfx3 15129100 (open door) Sfx4 69860105 (saved) Sfx5 63194902 (kill enemy) Sfx6 81996702 (dying player) EndGame 86793500 ================ COLLISIONLAYERS ================ Background Warpball, Dying Goal, Switch, OpenDoor, ShadowDoor ClosedDoor, Hero, Crate, Wall, Monster, Corpse RFireball, Saved, DidNotMove LFireball, HasSaved ====== RULES ====== [Saved] [Wall] -> [] [Wall HasSaved] (Remembering whether we saved someone last round by attaching a note to some wall.) [Corpse] -> Restart (Adds a DidNotMove to where the player currently is, to cancel moves where they bump into a wall.) [Player] -> [Player DidNotMove] [ > Fighter | Moveable ] -> [ > Fighter | > Moveable ] [ > Moveable | Moveable ] [ Fighter] -> [ > Moveable | > Moveable ] [ Fighter] (Fighters push.) [ < Thief | Moveable ] -> [ < Thief | < Moveable ] (Thieves pull.) [ > Wizard ] -> [ Wizard > Warpball] [ > Warpball | no Moveable no Static] -> [ | > Warpball] [ > Warpball | Static] [Wizard] -> [ | Static ] [> Wizard] [ > Warpball | Moveable ] [Wizard] -> [ | Wizard Sfx0] [Moveable] (Wizards telexport. What they really do is shoot a "warpball", which causes them to move normally if it hits a wall and warp if it hits something they can warp with.) (The following mess is for changing characters.) [ Action Fighter] [SThief] -> [SFighter] [Thief Sfx1] [ Action Thief] [SWizard] -> [SThief] [Wizard Sfx1] [ Action Wizard] [SPriest] -> [SWizard] [Priest Sfx1] [ Action Priest] [SFighter] -> [SPriest] [Fighter Sfx1] [ Action Fighter] [no SThief] [SWizard] -> [SFighter] [no SThief] [Wizard Sfx1] [ Action Thief] [no Swizard] [SPriest] -> [SThief] [no SWizard] [Priest Sfx1] [ Action Wizard] [no SPriest] [SFighter] -> [SWizard] [no SPriest] [Fighter Sfx1] [ Action Priest] [no SFighter] [SThief] -> [SPriest] [no SFighter] [Thief Sfx1] [ Action Fighter] [no SThief] [no SWizard] [SPriest] -> [SFighter] [no SThief] [no SWizard] [Priest Sfx1] [ Action Thief] [no SWizard] [no SPriest] [SFighter] -> [SThief] [no SWizard] [no SPriest] [Fighter Sfx1] [ Action Wizard] [no SPriest] [no SFighter] [SThief] -> [SWizard] [no SPriest] [no SFighter] [Thief Sfx1] [ Action Priest] [no SFighter] [no SThief] [SWizard] -> [SPriest] [no SFighter] [no SThief] [Wizard Sfx1] (Cancels the move if the player is in the same place that they started. Notice that switching characters negates this. Only matters in levels where one dragon has multiple targets.) Late [Player DidNotMove] -> Cancel Late [DidNotMove] -> [] (Now enemies attack.) Late [DragonLeft] -> [LFireball DragonLeft] Late [DragonRight] -> [RFireball DragonRight] Late RIGHT [RFireball | No Vulnerable no Invulnerable] -> [ | RFireball] Late LEFT [LFireball | No Vulnerable no Invulnerable] -> [ | LFireball] Late RIGHT [RFireball | Vulnerable] -> [ | Dying Vulnerable] Late Right [RFireball | Invulnerable] -> [ | Invulnerable] Late Left [LFireball | Vulnerable] -> [ | Dying Vulnerable] Late LEFT [LFireball | Invulnerable] -> [ | Invulnerable] Late [Goblin | Vulnerable] -> [Goblin | Dying Vulnerable] (Vulnerable objects that are attacked are designated as "Dying", but heroes can be saved by the Priest. Then the stuff that didn't get saved dies.) Late [Dying Healer] -> [Saved Healer] Late [Healer | Dying Hero] -> [Healer | Saved Hero] Late [Dying Monster] -> [Sfx5] Late [Dying Hero] -> [Corpse Sfx6] (Doors opening.) late [Weighing YellowSwitch] [YellowDoor] -> [Weighing YellowSwitch] [ShadowDoor] late [YellowSwitch no Weighing] [YellowOpen] -> [YellowSwitch] [YellowDoor sfx2] late [YellowSwitch no Weighing] [ShadowDoor] -> [YellowSwitch] [YellowDoor] late [ShadowDoor] -> [YellowOpen sfx3] late [Weighing PurpleSwitch] [PurpleDoor] -> [Weighing PurpleSwitch] [ShadowDoor] late [PurpleSwitch no Weighing] [PurpleOpen] -> [PurpleSwitch] [PurpleDoor sfx2] late [PurpleSwitch no Weighing] [ShadowDoor] -> [PurpleSwitch] [PurpleDoor] late [ShadowDoor] -> [PurpleOpen sfx3] late [MonsterDoor] -> [ShadowDoor] late [ShadowDoor] [Monster] -> [MonsterDoor] [Monster] late [ShadowDoor] -> [sfx3] (Looks for a HasSaved on a wall and moves it to the Priest. Then, if someone was saved this turn, plays the sound only if the Priest doesn't have the HasSaved note. Finally, cleans that up.) late [Wall HasSaved] [Healer] -> [Wall] [Healer HasSaved] late [Saved] [Healer no HasSaved] -> [Saved sfx4] [Healer] late [HasSaved] -> [] ============== WINCONDITIONS ============== All Hero on Goal All Goal on Hero ======= LEVELS ======= Message Welcome back. Message [You've played the original, yes?] Message [If not, this might be confusing.] ############# #.......[...# #.*.F.{.[.G.# ############# #.......[...# #.*.2.{.[.G.# ############# #.......[...# #.*.3.{.[.G.# ############# Message Watch out for goblins. ############# #F.O.......O# #...O.......# #.......O...# #O..........# #....O......# #O.......O..# #.O.....O.G.# ############# ############# ###O###O##### #W.*****...O# #..*****....# #####O###O..# #O########..# #*G...O.O...# ##..O..O.O..# ############# Message Goblins attack each other too. ############# #.......#...# #...*...#.G.# #.F...O.#...# #...*...##O## #...........# ############# Message Dragons breath fire. ############### #.............# #..T..###.....# #.....L.#.....# #.......#.....# #.............# #.....#.......# #.....#.R..G..# #.....###.....# #.............# ############### Message Fire hurts enemies. ############## #...#....O.RG# #.T.#......R.# #...#R*L...R.# #R*.#...#..R.# #...#...#..R.# #...O.*.#..R.# #.......#....# ############## ########### #3.O.O.O.T# #.######### #......G.G# #.######### #R.O.O.O.O# ########### Message Think fast! ############# #R.O.O.O.O.T# ###########{# ###########]# #G#3.[.}.G#G# #]########### #{########### #1..O...O..L# ############# Message Sorry about that one. ####### ##G*G## ##.G.## #R...## ##...## ##...## ##...## ##...L# ##...## ##F23## ####### Message Kill monsters to open the M wall. ########### #L...R#...# #.....#...# #.....M.G.# #.T.*.#...# #.....#...# ########### ############# #.......#...# #..O.O..#...# #R......M.G.# #.*.F.*.#...# #.......#...# ############# ############# #.......#...# #.{.*.{.#...# #..W.O..M.G.# #.{.*.[.#...# #.......#...# ############# Message Yellow priest is protected. ########### #...#O#O#O# #.P.......# #...**O**.# #********.# #R..G.....# ########### ########### #W#######G# #.#O#O#O#.# #.........# #.##O#O##.# #4#######G# ########### Message Heroes next to a priest are safe. ############ #...#.O#O### #.F.#......# #...#.##O..# #.4...O#G.G# #...#.##.O.# ############ ############ #.#..T..#4## #.#.{.*...L# #.#.....#..# #G[.*.{...L# #.#.....#..# #.#.{.*...L# #.#.....#G## ############ ########### #W...O#...# #.....#.G.# #..4..M...# #.....#.G.# #O...O#...# ########### ########### #.T.##O#O## #.........# #.4.#O#O..# ########.## #G..####.O# #G#.O###.## ###.###O..# #O..O#....# ##...*....# ########### ########### #{*F#.4#.3# #{*.#..#..# ###[#[###.# #R[.......# ####O#.##.# ######.##.# #G.G.G.#O*# ########### ########### #.T.####O## #.3......O# #.4.###O.## #####O##.## #.G..*.O.## #G.G#O##.## ########### ########### ##O#O#O#O## #T[.[.[.[.# ##{#{#{#{.# #.........# #.3G*G*G4.# #.........# ########### Message The final challenge. ############# #...#O.O#...# #.F.#G.G#.2.# #...#.O.#...# ##.###*###.## #R*L.....R*L# #.#.......#.# #R*L.....R*L# ##.###M###.## #...#...#...# #.3.#G.G#.4.# #...#...#...# ############# Message Thanks for playing!