Index: README ================================================================== --- README +++ README @@ -141,30 +141,10 @@ * sql.doc: This file lists and documents each of the SQL functions and SQL tables that are available. This is not relevant to programming the rules of the game; it is used for user customization, and for performing batch operations when editing, and for producing reports. - -=== Conversion from other games === - -There are programs to convert from other engines, mostly in the misc/ -directory (except Hero Hearts, which is in the main directory). - -* Hero Hearts: Free Hero Mesh was invented to play puzzles from Everett -Kaser's MESH engine; in that case, the mbtofhm program is used. Give the -base name of the output files as the command-line argument, and receives -the contents of the .mb file from stdin. - -* Vampiric Tower: A DOS game. The misc/vtower.class contains class -definitions and vtower_export.ps is a PostScript program which converts -levels in the Vampiric Tower format to Free Hero Mesh export format. It -requires two command-line arguments, being the name of the level file -to read from, and the zero-based level number. The second argument is -optional; if it is omitted, then zero is assumed by default. - -(Hopefully there will be more in future.) - === Other files === Free Hero Mesh also includes the following other files, which are not the source code files, compilation files, or documentation files: Index: TODO ================================================================== --- TODO +++ TODO @@ -57,12 +57,11 @@ * Conversion from other games * DOS Hero Hearts * Berusky * PC Wanderer * Escape - * Brain N Bells * Chroma * Xsok * PuzzleScript (limited; not everything is or will be capable) * Sokoban * Puzzle Boy * Pitman/Catrap DELETED misc/vtower.class Index: misc/vtower.class ================================================================== --- misc/vtower.class +++ misc/vtower.class @@ -1,261 +0,0 @@ -(Misc4 ^Opaque) - -{define "CommonKeys" - (#ATTACK - "Killed by %i at (%u,%u)" From ,Class From ,Image From ,Loc (PopUp 4) - LoseLevel - ) - ('BACK IgnoreKey LocateMe) - ('UP N Move) - ('DOWN S Move) - ('LEFT W Move) - ('RIGHT E Move) -} - -(&SetTransforms dup =@Transforms $Transform swap 0 swap SetInventory) - -($Man - Player Input - (Image "MAN") - (Help - "This is the player character." - "Push arrows to move or push enter to fly." - "See the \iTransform:0\ icon the inventory tells you how many times you can fly." - ) - ^Opaque - (Height 100) - (Density 500) - (Strength 2) - (Weight 1) - (Climb 50) - (INIT Level &SetTransforms) - {CommonKeys} - ('ENTER - @Transforms if - @Transforms 1 - &SetTransforms - Destroy . - $Bat Loc 0 Dir Create . - then - ) - (HIT From #TOUCH Dir 0 ,Send) -) - -($Bat - Player Input - (Image "BAT") - (Help - "This is the player character, flying." - "Push arrows to move or push enter to walk." - "(Changing from flying to walking does not use up any \iTransform:0\)" - ) - ^Opaque - (Height 100) - (Density 500) - (Strength 1) - (Weight 1) - (Climb 100) - {CommonKeys} - ('ENTER - ObjBelow ,Height 50 le if - $Man Loc 0 Dir Create . - Destroy . - then - ) -) - -($Floor - (Image "FLOOR") - (Help "There is nothing here.") - (Density 2000) -) - -($Wall - (Image "WALL") - (Help "Impassable.") - ^Opaque - (Density 1000) - (Height 200) - (Weight 100) -) - -($Pillar - (Image "PILLAR") - (Help "Impassable, but pumpkins and ghosts can see through it.") - (Density 999) - (Height 200) - (Weight 80) -) - -($Stone - (Image "STONE") - (Help "Impassable.") - ^Opaque - (Density 999) - (Height 160) - (Weight 80) -) - -($Door - (Image "CDOOR" "ODOOR") - (Help - "The goal of the game is to go through this door." - "You need all of the red vials in order to open the door." - ) - ^Opaque - (Density 1001) - (Height 200) - (Weight 100) - (Arrivals InPlace) - (:init Image if 0 else 200 then =Height) - (INIT =:init) - (CREATE =:init) - (#OPEN 1 =Image =:init) - (ARRIVED $Man Loc ObjClassAt $Bat Loc ObjClassAt lor if WinLevel then) -) - -($RedVial - (Image "VIALR") - (Help "Collect all red vials to open the door and wake the ghosts.") - ^Opaque - (Density 500) - (Height 150) - (#TOUCH Destroy . $RedVial #NoOp 0 0 Broadcast lnot if 0 #OPEN 0 0 Broadcast . then bit21) -) - -($CyanVial - (Image "VIALC") - (Help "Push this cyan vial into spikes to destroy them (and the vial).") - ^Opaque - (Density 500) - (Height 150) - Shovable - (Weight 1) - (HIT - From $UpSpikes is if - From ,Destroy . - 1 =Departed - bit15 - then - ) - (DEPARTED Destroy .) -) - -($Transform - (Image "TRNSFORM") - (Help "Collecting this allows you to fly.") - ^Opaque - (Density 450) - (Height 75) - (#TOUCH @Transforms 1 + &SetTransforms Destroy . bit21) -) - -($Block - (Image "BLOCK") - (Help "Can be pushed.") - ^Opaque - (Density 600) - (Height 150) - Shovable - (Weight 1) -) - -($ClayPot - (Image "CLAYPOT") - (Help "Can be pushed, and you can also fly over it.") - ^Opaque - (Density 600) - (Height 75) - Shovable - (Weight 1) -) - -($BlockSpecial - (Image "SPBLOCK") - (Help "Can be pushed; destroys spikes it touches (without destroying itself).") - ^Opaque - (Density 600) - (Height 150) - Shovable - (Weight 1) - (HIT - From $UpSpikes is if - From ,Destroy . - bit15 - then - ) -) - -($Spikes - (Image "DSPIKE") - (Help - "This spikes can only be walked on once; after that the spikes are raised." - "It is possible to fly over the spikes without triggering them." - ) - (Density 1500) - (PLAYERMOVING - From Coloc From $Man is land if - Destroy . - $UpSpikes Loc 0 0 Create . - then - ) -) - -($UpSpikes - (Image "UPSPIKE") - (Help - "You cannot walk here, but you can fly over these spikes." - "The spikes can be removed by a Cyan Vial or Special Block." - ) - (Density 1500) - (Height 75) -) - -($Arrow - (Image "ARROWE" "ARROWN" "ARROWW" "ARROWS") - (Help "Disallows passing through in the opposite direction.") - (Density 1500) - (:init Image 1 lsh =Dir) - (INIT =:init) - (CREATE =:init) - (PLAYERMOVING Target From ,Dir Dir 4 bxor eq land) -) - -($Pumpkin - (Image "PUMPKIN") - (Help - "Kills you if it sees you in any of the four directions." - "Some objects can block its view." - ) - ^Opaque - (Density 600) - (Height 150) - (:init Image 3 band 2 * =Dir) - (INIT =:init) - (CREATE =:init) - (BEGIN_TURN (P Rook if F ,^Opaque again F #ATTACK next) .) -) - -($Ghost - (Image - "SGHOSTE" "SGHOSTN" "SGHOSTW" "SGHOSTS" - "WGHOSTE" "WGHOSTN" "WGHOSTW" "WGHOSTS" - ) - (Help - "Kills you if it sees you." - "Some objects can block its view." - "They cannot see you while sleeping; it wakes up if all red vials are collected." - ) - ^Opaque - (Density 600) - (Height 150) - (:init Image 3 band 2 * =Dir) - (INIT =:init) - (CREATE =:init) - (BEGIN_TURN - Image 4 - 2 * From Seek eq if - (P if F ,^Opaque again F #ATTACK) . - then - ) - (#OPEN Image 4 bor =Image) -) - DELETED misc/vtower_export.ps Index: misc/vtower_export.ps ================================================================== --- misc/vtower_export.ps +++ misc/vtower_export.ps @@ -1,66 +0,0 @@ -/F ARGUMENTS 0 get (r) file def -ARGUMENTS length 1 gt {F ARGUMENTS 1 get cvi 175 mul setfileposition} if -/D [ - [] - [(Wall 0)] - [(Block 0)] - [(RedVial 0)] - [(UpSpikes 0)] - [(Pillar 0)] - [(Door 0)] - [(Door 1)] - [(ClayPot 0)] - [(BlockSpecial 0)] - [(CyanVial 0)] - [(Stone 0)] - [(RedVial 0) (Transform 0)] - [(Pumpkin 0)] - [(Spikes 0)] - [(Arrow 3)] - [(Arrow 2)] - [(Arrow 0)] - [(Arrow 1)] - [(Ghost 3)] - [(Ghost 2)] - [(Ghost 0)] - [(Ghost 1)] - [(Ghost 7)] - [(Ghost 6)] - [(Ghost 4)] - [(Ghost 5)] - [(Spikes 0) (Block 0)] - [(Arrow 3) (Block 0)] - [(Arrow 2) (Block 0)] - [(Arrow 0) (Block 0)] - [(Arrow 1) (Block 0)] - [(Spikes 0) (BlockSpecial 0)] - [(Arrow 3) (BlockSpecial 0)] - [(Arrow 2) (BlockSpecial 0)] - [(Arrow 0) (BlockSpecial 0)] - [(Arrow 1) (BlockSpecial 0)] - [(Spikes 0) (ClayPot 0)] - [(Arrow 3) (ClayPot 0)] - [(Arrow 2) (ClayPot 0)] - [(Arrow 0) (ClayPot 0)] - [(Arrow 1) (ClayPot 0)] - [(Spikes 0) (CyanVial 0)] - [(Arrow 3) (CyanVial 0)] - [(Arrow 2) (CyanVial 0)] - [(Arrow 0) (CyanVial 0)] - [(Arrow 1) (CyanVial 0)] -] def -(D 13 13\n) print -/E ( 0 0 0 0\n) def -1 1 13 { - /X exch def - 1 1 13 { - /Y exch def - X =only ( ) print Y =only ( $Floor 0) print E print - D F read pop get {X =only ( ) print Y =only ( $) print print E print} forall - } for -} bind for -(@Floor ) print F read pop =only -(\\nRoom ) print F read pop =only (\n) print -F read pop 1 add =only ( ) print F read pop 1 add =only ( $Man 0) print E print -(C ) print F read pop = -flush quit