******************************************************************************** "SkillMUD" technology preview release 1 This file last updated: 6/29/2004 3:00AM SkullMUD is developed by Jeremy Hill <jeremyhill@cox.net> (Tamraine) Area files and some help files by other SkullMUD developers This codebase has been developed on and off since approximately 1/23/04. ******************************************************************************** Note: This code is, simply, a mess. It is 100% not ready for public consumption. It is especially not ready for a player base. Nothing is completed. For example, who wants to play on a MUD where skills exist but cannot be cast? :) It is being released primarily for developers looking for new ideas. I arbitrarily consider each of the following parts that have begun implementation a % done: Skill system (underlying system): 80% Magic system (based on above): 10% Programs: 25% Menus: 80% Events (underlying system): 90% There are many more things that haven't even begun implementation. Check out comments prefixed with //JH to see some of my notes. The code is primarily in C with some C++ traces. I have recently begun exploring C++ and have discovered it to be a very powerful language. As I develop my knowledge of the language, new and more powerful code will begin to appear and less C-style code will be added. Much of the magic system and races will not make sense because I have removed them from the helpfiles and elsewhere. This is to preserve the IP of the game while allowing outsiders to take a look at the code base. I release the event code and skill code as open source on the caveat that you e-mail me telling me that you are planning on using it. I am interested in what becomes of the code I release to the open source community. ******************************************************************************** Changes: C++: Compiles with g++, C++ compatible; most is still extern "C" though. Only tested under linux. - Requires at least g++ version 3. - Uses STL libraries (skill system: vector, sort.) (Compiled with: gcc version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6) (should compile with most linux distros so long as g++ is up-to-date) Help system: - 1stMUD-style Help function - addition: help find <argument> - help_area_data removed (buggy, worthless, no need), single help.txt impl. Taglines: Added to many parts of the game, see 'help tagline' for more info. Search the code for tagline_to_char to see everywhere it is used. Originally written by : imapopsyckle@hotmail.com However, I completely rewrote his code to suit my own purposes, such as creating tagline strings (see the various tagline_output calls). Magic: Magic system is significantly different than rom's; 4 types of magic. Magic is level-based and prerequisite based. <unfinished> Programs: Significantly altered. %% dealy. Many object and room commands added, such as 'input' trigger--basically a quick and dirty way for a program to have its own command, such as 'fire ballista'. Menus: 'menu' command Completely different from SmaugWiz's. Probably not as cleanly implemented. Events: 'event' command Affects: Event-driven Polls: An example of a menu that does not lock to a player. Skills: Completely rewritten, now 90% created in game. 'Better' than Smaug's skill editing. Small changes: Sit changed to be more versatile (now 'ensconce'); kneel, squat, etc. Old rom note system replaces hateful board system. Can 'note write', though. Weapons now are table-based (on level) for damage unless extra-flagged exceptional. See const.c, weapon_table. Example: {"sword", OBJ_VNUM_SCHOOL_SWORD, WEAPON_SWORD, &gsn_dummy, 2, 4, 1, 1}, This means, at level 1-9, damage is 2d4. At level 10-19, 3d5. Level 20, 4d6. This is optional--you can set an object 'exceptional' Secret doors. Can only open secret doors by knowing their keyword. See 'help secret doors' Alignment removed from the game; it is an artificiality that is not needed. Objects that have been placed in other object can, after being triggered, continue to execute their code. (an important part of delayed program execution) 'logf' changed to 'writelogf'. Logf conflicts with built-in logf with GCC/FreeBSD [exp(3)]. (float logf(float x);) This code loads and saves area files that are nowhere near to being ROM compatible :) Objects have v0-v9 (was v0-v4) now for future expansion. ******************************************************************************** ------------Future/todo:------------- Implement cast Add 'aura' string field to skills, replaces e.g. "(White Aura)" hardcode vector on player for learned skills (impossible to do a flat table) Conversations Program rewrite Variables in programs Menus in programs Wilderness NPC Quests (relates to conversations) Library Would like to somehow link skill functions back to the Skill they are part of Would like to rewrite menus to be a C++ class Would like to rewrite events to be a C++ class Would like to use SQL for certain things ********************************************************************************