------------------------------------------------- Towns design: ------------------------------------------------- In the original Apple II game, the towns menus tree and associated calculations go like this: ARMORY LIST ITEMS Display the first 15 items available in town CONTINUE LIST Display the rest of the items (loop the list after a while) BUY ITEM BUY WHICH ITEM Cost of an item is calculated like this: Cost = int(ItemPrice[Item] ^ 2 / 5 * TownPricesMultiplier + 1) A character can carry up to 9 items. ItemPrice is a table located at offset 90 in the file TINFO.BIN and containing 180 entries: 0x00,0x00,0x01,0x02,0x03,0x05,0x07,0x0a,0x0c,0x0f,0x13, 0x16,0x1a,0x1e,0x23,0x28,0x2d,0x33,0x39,0x3f,0x00,0x02, 0x06,0x0b,0x11,0x19,0x22,0x2d,0x39,0x46,0x38,0x47,0x57, 0x68,0x7a,0x8d,0xa0,0xb5,0xca,0xe1,0x00,0x01,0x02,0x03, 0x04,0x06,0x07,0x09,0x0b,0x0d,0x0f,0x11,0x14,0x16,0x19, 0x1b,0x1e,0x20,0x23,0x26,0x29,0x2c,0x2f,0x32,0x35,0x39, 0x3c,0x3f,0x43,0x46,0x69,0x6e,0x73,0x78,0x7d,0x82,0x87, 0x8c,0x91,0x96,0x9b,0xa0,0xa5,0xaa,0xaf,0xb4,0xb9,0xbe, 0xc3,0xc8,0xcd,0xd2,0xd7,0xdc,0xe1,0xe6,0xeb,0xf0,0xf5, 0xfa,0x07,0x0d,0x11,0x15,0x19,0x1d,0x21,0x24,0x28,0x2b, 0x0c,0x13,0x19,0x1e,0x22,0x27,0x2b,0x2f,0x33,0x36,0x16, 0x13,0x0b,0x01,0x09,0x12,0x16,0x14,0x0e,0x04,0x06,0x10, 0x15,0x15,0x10,0x07,0x03,0x0d,0x14,0x16,0xbc,0x91,0x7a, 0x96,0xc0,0xd4,0xc5,0x9d,0x7c,0x8a,0x2a,0x31,0x38,0x3f, 0x46,0x4d,0x54,0x5b,0x62,0x6a,0x71,0x78,0x7f,0x86,0x8d, 0x94,0x9b,0xa2,0xa9,0xb0,0xb7,0xbe,0xc5,0xcd,0xd4,0xdb, 0xe2,0xe9,0xf0,0xf7 ANOTHER SHOPPER Select another character EXIT ARMORY GUILD SPELLS Characters have a maximum number of spells they can learn which is calculated like this: Fighters: LEVEL * INTELLIGENCE ^ 1.177 / 90 * CLASS + 1 - 3 All other classes: LEVEL * INTELLIGENCE ^ 1.177 / 90 * CLASS + 1 Cost of learning a spell: Cost = int(TownPricesMultiplier * 9000 / CHARISMA / INTELLIGENCE * LEVEL / (9 - CLASS)) Spell is learned is a random percentage is lesser than (INTELLIGENCE * 5) percent Also the character's age value is increased by 2. TRAINING Characters can be trained up to level 15 Experience is calculated like this: Thiefs: (2 * DEXTERITY + STRENGTH) / 19.8 Monks: (STRENGTH + INTELLIGENCE + DEXTERITY) / 49.5 Rangers: (STRENGTH + INTELLIGENCE + CHARISMA) / 52.8 Fighters: (DEXTERITY + 2 * STRENGTH) / 33 Priests: (STRENGTH + 2 * INTELLIGENCE) / 36.3 Wizards: (2 * INTELLIGENCE + LUCK) / 42.9 Value = int(EXPERIENCE - (1000 * (-.8 + 1.8 ^ LEVEL) / Above_Calculated_Value)) Value must be > 0 for level upgrade Cost for training is calculated like this (max. 15000): TownPricesMultiplier * (20 - CHARISMA) ^ 2 * LEVEL) ^ 2.2 ADD Add a member to the party DROP Drop a member from the party LIST List the roster NEW MEMBER Create a character Note that random creatures can't be anything else than THIEFS or FIGHTERS. Base attributes calculations: STRENGTH, INTELLIGENCE, DEXTERITY, CONSTITUTION & CHARISMA are calculated like this: The result value can't be lower than 3 or higher than 21: Value = int(rnd(1) ^ .6 * 6) + int(rnd(1) ^ .6 * 6) + int(rnd(1) ^ .6 * 6) + 3 Value = Value + AttrClass[Class * 5 + Attribute] - 10 if Value > 18 then Value = 18 Value = Value + AttrRace[Race * 5 + Attribute] - 10 if Value < 3 then Value = 3 AttrClass is a table located in TINFO.BIN file at offset 350 (30 values with 5 per class): THIEF: 0x08,0x0a,0x0c,0x0a,0x09 MONK: 0x0a,0x0a,0x0b,0x0a,0x0a RANGER: 0x0a,0x0b,0x0a,0x0a,0x0b FIGHTER: 0x0c,0x08,0x0b,0x0a,0x09 PRIEST: 0x0a,0x0c,0x0a,0x0a,0x0a WIZARD: 0x06,0x0d,0x08,0x0a,0x0b AttrRace is a table located in TINFO.BIN file at offset 275 (30 values with 5 per race): THIEF: 0x0a,0x0a,0x0a,0x0a,0x0a MONK: 0x0c,0x09,0x09,0x0b,0x09 RANGER: 0x09,0x0b,0x0b,0x09,0x0a FIGHTER: 0x08,0x0a,0x0c,0x0a,0x09 PRIEST: 0x0b,0x09,0x0a,0x0b,0x09 WIZARD: 0x08,0x0a,0x0d,0x08,0x09 Max magic points calculation: MagicPoints[Class * 15 + Level] MagicPoints is a table located in TINFO.BIN file at offset 750 (15 levels values per class): THIEF: 0x06,0x06,0x07,0x07,0x08,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0d,0x0e,0x0e,0x0f MONK: 0x0a,0x0a,0x0a,0x0b,0x0b,0x0b,0x0c,0x0c,0x0c,0x0d,0x0d,0x0e,0x10,0x12,0x14 RANGER: 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x12,0x12,0x12,0x13 FIGHTER: 0x07,0x07,0x08,0x08,0x09,0x09,0x0a,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x12 PRIEST: 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x14,0x14,0x14,0x14 WIZARD: 0x0a,0x0b,0x0b,0x0c,0x0d,0x0e,0x0e,0x0f,0x10,0x10,0x11,0x11,0x12,0x13,0x14 Skills calculation [1..255]: Value = Skill + Skills[Class * 150 + Level * 10 + Skill] / 2 + DefaultSkill) - 49.5 Skills is a table located in TINFO.BIN file at offset 830 (10 values per skill for 15 level which gives 150 values per class): THIEF: 0x46,0x32,0x25,0x3c,0x3c,0x1f,0x00,0x33,0x00,0x2a, 0x4b,0x32,0x25,0x3c,0x36,0x26,0x00,0x35,0x00,0x30, 0x50,0x37,0x29,0x3c,0x36,0x2d,0x00,0x37,0x00,0x37, 0x55,0x37,0x29,0x3c,0x36,0x33,0x00,0x38,0x00,0x3e, 0x5a,0x3c,0x2d,0x41,0x36,0x3a,0x00,0x3a,0x00,0x44, 0x5f,0x3c,0x2d,0x41,0x36,0x41,0x00,0x3c,0x00,0x4b, 0x64,0x41,0x31,0x41,0x36,0x47,0x00,0x3e,0x00,0x52, 0x69,0x41,0x31,0x41,0x36,0x4e,0x00,0x40,0x00,0x59, 0x6e,0x41,0x35,0x46,0x36,0x55,0x00,0x41,0x00,0x59, 0x73,0x41,0x35,0x46,0x39,0x5b,0x00,0x43,0x00,0x59, 0x78,0x41,0x39,0x46,0x39,0x62,0x00,0x45,0x00,0x59, 0x7d,0x41,0x3d,0x46,0x39,0x69,0x00,0x47,0x00,0x59, 0x82,0x41,0x41,0x4b,0x39,0x6f,0x00,0x48,0x00,0x59, 0x87,0x41,0x45,0x4b,0x39,0x76,0x00,0x4a,0x00,0x59, 0x8c,0x41,0x4d,0x4b,0x3c,0x8a,0x00,0x4c,0x00,0x59 MONK: 0x50,0x3c,0x0d,0x23,0x2f,0x1f,0x00,0x2c,0x00,0x2a, 0x55,0x3c,0x0d,0x23,0x28,0x1f,0x00,0x2c,0x00,0x2f, 0x5f,0x41,0x11,0x23,0x25,0x23,0x00,0x2c,0x00,0x35, 0x64,0x41,0x11,0x23,0x22,0x23,0x00,0x2c,0x00,0x3b, 0x69,0x46,0x15,0x23,0x22,0x26,0x00,0x2c,0x00,0x41, 0x6e,0x46,0x15,0x23,0x1f,0x26,0x00,0x2c,0x00,0x47, 0x78,0x4b,0x19,0x23,0x1b,0x29,0x00,0x2c,0x00,0x4d, 0x7d,0x4b,0x19,0x23,0x1b,0x2d,0x00,0x2c,0x00,0x54, 0x82,0x50,0x1d,0x46,0x18,0x2d,0x00,0x2c,0x00,0x54, 0x8c,0x55,0x1d,0x46,0x18,0x30,0x00,0x2c,0x00,0x54, 0x91,0x5a,0x21,0x46,0x15,0x30,0x00,0x2c,0x00,0x54, 0x96,0x5f,0x21,0x46,0x0e,0x33,0x00,0x2c,0x00,0x54, 0x9b,0x64,0x25,0x5f,0x08,0x33,0x00,0x2c,0x00,0x54, 0xa0,0x69,0x25,0x5f,0x01,0x37,0x00,0x2c,0x00,0x54, 0xaa,0x6e,0x29,0x5f,0x04,0x37,0x00,0x2c,0x00,0x54 RANGER: 0x5a,0x3c,0x08,0x05,0x08,0x00,0x00,0x06,0x00,0x2a, 0x5f,0x3c,0x08,0x05,0x08,0x04,0x00,0x06,0x00,0x32, 0x64,0x3c,0x08,0x05,0x08,0x07,0x00,0x06,0x00,0x3a, 0x73,0x3c,0x08,0x05,0x08,0x0a,0x00,0x06,0x00,0x43, 0x7d,0x41,0x08,0x05,0x08,0x0e,0x00,0x06,0x00,0x4b, 0x87,0x46,0x0c,0x05,0x0b,0x11,0x00,0x06,0x00,0x54, 0x91,0x4b,0x0c,0x05,0x0b,0x14,0x00,0x06,0x00,0x54, 0xa0,0x50,0x0c,0x05,0x0b,0x18,0x00,0x06,0x00,0x54, 0xaa,0x55,0x0c,0x05,0x0b,0x1b,0x00,0x06,0x00,0x54, 0xb4,0x55,0x0c,0x05,0x0b,0x1e,0x00,0x06,0x00,0x54, 0xbe,0x55,0x10,0x05,0x0e,0x22,0x00,0x06,0x00,0x54, 0xc8,0x55,0x18,0x05,0x0e,0x25,0x00,0x06,0x00,0x54, 0xd7,0x55,0x20,0x05,0x0e,0x28,0x00,0x06,0x00,0x54, 0xeb,0x55,0x28,0x05,0x0e,0x2c,0x00,0x06,0x00,0x54, 0xfa,0x55,0x30,0x41,0x2f,0x90,0x00,0x0d,0x00,0x54 FIGHTER: 0x64,0x32,0x00,0x05,0x01,0x00,0x00,0x02,0x00,0x2a, 0x6e,0x37,0x00,0x05,0x01,0x00,0x00,0x02,0x00,0x32, 0x78,0x37,0x00,0x05,0x01,0x00,0x00,0x02,0x00,0x3a, 0x87,0x37,0x00,0x05,0x01,0x04,0x00,0x02,0x00,0x43, 0x91,0x3c,0x04,0x0a,0x01,0x04,0x00,0x02,0x00,0x4b, 0x9b,0x3c,0x04,0x0a,0x01,0x04,0x00,0x04,0x00,0x54, 0xa5,0x3c,0x04,0x0a,0x01,0x07,0x00,0x04,0x00,0x54, 0xb4,0x41,0x04,0x0a,0x01,0x07,0x00,0x04,0x00,0x54, 0xbe,0x41,0x08,0x0f,0x01,0x07,0x00,0x04,0x00,0x54, 0xc8,0x41,0x08,0x0f,0x01,0x0a,0x00,0x04,0x00,0x54, 0xd2,0x46,0x08,0x0f,0x01,0x0a,0x00,0x06,0x00,0x54, 0xdc,0x46,0x08,0x0f,0x01,0x0a,0x00,0x06,0x00,0x54, 0xeb,0x46,0x0c,0x14,0x01,0x0e,0x00,0x06,0x00,0x54, 0xf5,0x46,0x0c,0x14,0x01,0x0e,0x00,0x06,0x00,0x54, 0xff,0x46,0x18,0x14,0x01,0x0e,0x00,0x06,0x00,0x54 PRIEST: 0x50,0x32,0x00,0x05,0x08,0x00,0x00,0x04,0x00,0x2a, 0x5a,0x32,0x00,0x05,0x08,0x00,0x00,0x04,0x00,0x2e, 0x64,0x32,0x00,0x05,0x08,0x04,0x00,0x04,0x00,0x32, 0x6e,0x32,0x04,0x05,0x08,0x04,0x00,0x04,0x00,0x36, 0x78,0x37,0x04,0x0a,0x08,0x07,0x00,0x04,0x00,0x3a, 0x7d,0x37,0x04,0x0a,0x08,0x07,0x00,0x05,0x00,0x3e, 0x87,0x37,0x08,0x0a,0x08,0x0a,0x00,0x05,0x00,0x43, 0x91,0x37,0x08,0x0a,0x08,0x0a,0x00,0x05,0x00,0x47, 0x9b,0x37,0x08,0x0a,0x08,0x0e,0x00,0x05,0x00,0x4b, 0xa5,0x3c,0x0c,0x0f,0x08,0x0e,0x00,0x05,0x00,0x4f, 0xaf,0x3c,0x0c,0x0f,0x08,0x11,0x00,0x06,0x00,0x4f, 0xb4,0x3c,0x0c,0x0f,0x08,0x11,0x00,0x06,0x00,0x4f, 0xbe,0x3c,0x10,0x0f,0x08,0x14,0x00,0x06,0x00,0x4f, 0xc8,0x3c,0x10,0x14,0x08,0x14,0x00,0x06,0x00,0x4f, 0xd2,0x3c,0x18,0x14,0x08,0x18,0x00,0x06,0x00,0x4f WIZARD: 0x46,0x28,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x2a, 0x46,0x2d,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x2d, 0x4b,0x32,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x30, 0x4b,0x37,0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x34, 0x50,0x3c,0x00,0x05,0x01,0x04,0x00,0x00,0x00,0x37, 0x50,0x3c,0x04,0x0a,0x01,0x04,0x00,0x03,0x00,0x3a, 0x55,0x3c,0x04,0x0a,0x01,0x04,0x00,0x03,0x00,0x3e, 0x55,0x3c,0x04,0x0a,0x01,0x04,0x00,0x03,0x00,0x41, 0x5a,0x3c,0x08,0x0a,0x01,0x07,0x00,0x03,0x00,0x44, 0x5a,0x3c,0x08,0x0a,0x01,0x07,0x00,0x03,0x00,0x48, 0x5f,0x3c,0x0c,0x0f,0x01,0x07,0x00,0x06,0x00,0x4b, 0x5f,0x3c,0x0c,0x0f,0x01,0x07,0x00,0x06,0x00,0x4e, 0x64,0x3c,0x08,0x0f,0x01,0x07,0x00,0x06,0x00,0x4e, 0x64,0x3c,0x14,0x0f,0x01,0x0a,0x00,0x06,0x00,0x4e, 0x7d,0x3c,0x18,0x0f,0x01,0x0e,0x00,0x06,0x00,0x4e Max hit points calculation [1..255]: Value = HitPoints[Class * 15 + Level] * (CONSTITUTION) + 5) / 16 Value is then used to generate a random number like this: HitPoint = 0 for i = 1 to Value HitPoint = HitPoint + int(rnd(1) * 3 + 1) next i The calculated Max hit points value can't be lower than or equal to the previous value (which is 0 when creating a character). HitPoints is a table located in TINFO.BIN file at offset 0 (15 levels values per class): THIEF: 0x03,0x05,0x09,0x0b,0x10,0x14,0x18,0x1b,0x1e,0x23,0x27,0x2b,0x2f,0x33,0x37 MONK: 0x04,0x05,0x09,0x0b,0x10,0x16,0x1b,0x1f,0x23,0x28,0x2c,0x30,0x34,0x38,0x3c RANGER: 0x04,0x09,0x0e,0x14,0x19,0x1e,0x24,0x2a,0x30,0x37,0x3c,0x41,0x46,0x4b,0x50 FIGHTER: 0x05,0x0a,0x10,0x16,0x1c,0x23,0x29,0x2f,0x35,0x3c,0x41,0x46,0x4b,0x50,0x55 PRIEST: 0x04,0x06,0x0a,0x0f,0x14,0x19,0x1e,0x23,0x28,0x2d,0x31,0x35,0x39,0x3d,0x41 WIZARD: 0x03,0x04,0x06,0x08,0x0b,0x0e,0x11,0x13,0x16,0x19,0x1c,0x1f,0x22,0x25,0x28 Learnable spells calculation: A character can learn a spell when: LearnableSpellsLevels[Class * 60 + Spell] == Level + 1 LearnableSpellsLevels is a table located in TINFO.BIN file at offset 380 (60 values per class = 360 values): THIEF: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 MONK: 0x00,0x00,0x00,0x00,0x01,0x03,0x06,0x08,0x0a,0x0e, 0x00,0x00,0x07,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x09,0x0b,0x0d,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x07,0x00,0x02, 0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00,0x00,0x00 RANGER: 0x01,0x04,0x06,0x08,0x01,0x09,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x07,0x00,0x00, 0x09,0x0c,0x0f,0x00,0x03,0x0b,0x00,0x00,0x05,0x0a, 0x00,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00, 0x00,0x0b,0x00,0x0d,0x00,0x00,0x00,0x00,0x03,0x00, 0x07,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 FIGHTER: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00, 0x0c,0x00,0x09,0x00,0x0f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 PRIEST: 0x01,0x03,0x05,0x08,0x00,0x00,0x09,0x0a,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x09,0x0e, 0x02,0x05,0x07,0x0c,0x04,0x07,0x0c,0x0e,0x02,0x06, 0x0b,0x0d,0x00,0x0b,0x00,0x00,0x0a,0x00,0x0d,0x00, 0x00,0x04,0x08,0x09,0x00,0x00,0x00,0x0f,0x03,0x00, 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 WIZARD: 0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x07,0x01,0x03, 0x09,0x0d,0x02,0x04,0x0b,0x0e,0x00,0x00,0x00,0x00, 0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x06,0x08,0x0a,0x0c,0x07,0x09,0x0b,0x0e, 0x02,0x00,0x00,0x00,0x08,0x07,0x0f,0x0c,0x00,0x06, 0x08,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00 RENAME Rename a character from the roster PURGE Remove a character from the roster EXIT GUILD MYSTIC Show party score and evaluate characters: Party score is calculated like this: - Each beast rune adds 10 points. - Each orb adds 20 points. Characters evaluation: - Character score of > 150 adds 5 points - Party score > 10 adds 1 point - Party score > 60 adds 1 point - Party score > 90 adds 1 point "NOVICE ADVENTURERS" (0 Points) "EXPERIENCED ADVENTURERS" (1 Points) "READY TO DESTROY THE ORB" (2 Points) "NOT YET READY TO DESTROY THE ORB" (3 Points) "IN NEED OF THE ORB" (4 Points) (Party is in possession of beast runes but not of the orb) "HEROES OF FERRONRAH" (5 Points) "ALSO HEROES OF GELNOR" Will be additionally displayed if any character is in possession of the WAND OF NIKADEMUS. Each character score is then brought up to party's one if it's lower. INN Restore magic and hit points there's also 20% * Max class magic - character max magic that character max magic points would increase. BANK WITHDRAW GOLD PIECES Gather characters gold into party's pot (max. 65000 pieces in the pot). DEPOSIT CARRIED GOLD That actually allow the player to divide gold AND experience points between characters, so the menu entry is a little bit misleading, is calculated like this: EXPERIENCE = EXPERIENCE + (Share * (10 * EarnedExperience / TotalShare)) GOLD = GOLD + (Share * (EarnedGold / TotalShare)) Max. character's gold is 65535 (0xffff) Max. character's experience is 8388608 (0x800000) EXIT BANK LEAVE TOWN (Can only leave if there's at least 1 character in party) - Game is saved before leaving - Party score is set to highest character score CAST SPELL (Only HEALINGx, RESURRECTION and TRANSPORTATION work in towns) WHO WILL CAST THE SPELL WHICH SPELL ON WHOM Spell magic points cost: Cost = SpellNumber - 4 * int((SpellNumber - 1) / 4) USE ITEMS WHO WILL USE USE WHAT ON WHOM - Characters have to examine amulets to get beast runes - The FILMON WAND can't be used by a character if it's score isn't 200, it adds 50 points to character's score and increase it's STRENGTH, INTELLIGENCE, DEXTERITY, CONSTITUTION & CHARISMA value like this: if LUCK > 11 then if Value >= 0 and Value < 9 then value = value + 3 else if Value >= 9 and Value < 18 then value = value + 2 else if Value >= 18 and Value < 20 then value = value + 1 Value + (Value < 20) + (Value < 9) + (Value < 18) - Healing items increase character's hit points (within the limit of it's maximum hit points) like this: HEAL POTION 1: 1 point HEAL POTION 2: 4 points HEAL POTION 3: 9 points HEAL POTION 4: 16 points HEAL POTION 5: 25 points HEAL POTION 6: 36 points HEAL POTION 7: 49 points HEAL POTION 8: 64 points HEAL POTION 9: 81 points HEAL POTION 10: 100 points Formula is: (Potion_Number - 100) ^ 2 Where Potion_Number starts at 101st item. - Magic items increase character's current magic (within the limit of it's maximum magic points) like this: MAGIC POTION 1: 3 points MAGIC POTION 2: 6 points MAGIC POTION 3: 9 points MAGIC POTION 4: 12 points MAGIC POTION 5: 15 points MAGIC POTION 6: 18 points MAGIC POTION 7: 21 points MAGIC POTION 8: 24 points MAGIC POTION 9: 27 points MAGIC POTION 10: 30 points Formula is : Potion_Number * 3 - 330 Where Potion_Number starts at 111st item. DISTRIBUTE AND SELL ITEMS (Item selection) GIVE ITEM TO WHICH PERSON? (7 TO SELL) Gold earned when selling an item is calculated like this: Money = int(ItemPrice[Item] ^ 2 / 8) Town's stocks for an item can't grow bigger than 99. SAVE GAME (DEPOSIT CARRIED GOLD command is issued before saving anything) ------------------------------------------------- We'll have a cut down version of that by first removing the GUILD as we obviously can't have any characters roster (we could have some fixed read-only characters on the CD but the process of creation is so fast that it isn't worth the hassle). The exit menus will be removed and instead be accessible via the cancel (BLUE) button. The characters creation is rather simple & straight forward process 1. Choose the race 2. Choose the class then the Game randomly generates strength, intelligence, dexterity, constitution & charisma, it asks if the generated stats ok then the player must enter the character's name, the game completes the rest of the stats and that's it. Our menus tree structure should be somewhat simpler: CREATE CHARACTER (only available if there's less than 6 characters in party) Character creating sequence CONSULT MYSTIC Mystic characters evaluation message REST AT INN Inn Message WITHDRAW GOLD DEPOSIT GOLD List of characters names TRAINING LEARN SPELL BUY This will open another popup menu with all available items from the armory the player will be able to select any quantity before validating (RED button) or cancelling (BLUE button) the operation. SELL Sell items to the town's shop. DISTRIBUTE Give items to other characters CAST SPELL USE ITEM DROP SAVE GAME LEAVE TOWN