/**************************************************************************** * Eldhamud Codebase V2.2 * * ------------------------------------------------------------------------ * * EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi) * * ------------------------------------------------------------------------ * * * ****************************************************************************/ /***************************************************** ** _________ __ ** ** \_ ___ \_____|__| _____ ________ ___ ** ** / \ \/_ __ \ |/ \/ ___/_ \/ \ ** ** \ \___| | \/ | | | \___ \ / ) | \ ** ** \______ /__| |__|__|_| /____ \__/__| / ** ** ____\/____ _ \/ ___ \/ \/ ** ** \______ \ |_____ __| _/___ ** ** | | _/ |\__ \/ __ | __ \ ** ** | | \ |_/ __ \ / | ___/_ ** ** |_____ /__/____ /_ /___ / ** ** \/Antipode\/ \/ \/ ** ****************************************************** ****************************************************** ** Copyright 2000-2003 Crimson Blade ** ****************************************************** ** Contributors: Noplex, Krowe, Emberlyna, Lanthos ** ******************************************************/ /**************************************************************************** * Version History * **************************************************************************** * (v1.0) - Liquidtable converted into linked list, original 15 Smaug liqs * * now read from a .dat file in /system * * (v1.5) - OLC support added to create, edit, and delete liquids while * * the game is still running, automatic edit. * * (v2.0) - Mixture support code added. Liquids can now be mixed with * * other liquids to form a result. * * (v2.2) - Liquid statistics command added (liquids) shows all information* * about the given liquid. * * (v2.3) - OLC addition for mixtures. * * (v2.4) - Mixtures are now saved into a seperate file and one linked list* * because of some saving and loading issues. All the code has * * been modified to accept the new format. "liq_can_mix" function * * introduced. "mix" command introduced to mix liquids. * * (v2.5) - Thanks to Samson for some polishing and bugfixing, we now have * * a (hopefully) fully funcitonal copy =). * * (v2.6) - "Fill" and "Empty" functions have been fixed to allow for the * * new liquidsystem. * * (v2.7) - Forgot to fix blood support... fixed. * * - IS_VAMPIRE ifcheck placed in do_drink * * - Blood fix for blood on the ground. * * - do_look/do_exam fix from Sirek. * * (v2.8) - Ability to mix objects into liquids. * * (original code/concept -Sirek) * ****************************************************************************/ /* * File: liquids.h * Name: Liquidtable Module (3.0b) * Author: John 'Noplex' Bellone (jbellone@comcast.net) * Terms: * If this file is to be re-disributed; you must send an email * to the author. All headers above the #include calls must be * kept intact. All license requirements must be met. License * can be found in the included license.txt document or on the * website. * Description: * This module is a rewrite of the original module which allowed for * a SMAUG mud to have a fully online editable liquidtable; adding liquids; * removing them; and editing them online. It allows an near-endless supply * of liquids for builder's to work with. * A second addition to this module allowed for builder's to create mixtures; * when two liquids were mixed together they would produce a different liquid. * Yet another adaptation to the above concept allowed for objects to be mixed * with liquids to produce a liquid. * This newest version offers a cleaner running code; smaller; and faster in * all ways around. Hopefully it'll knock out the old one ten fold ;) * Also in the upcoming 'testing' phase of this code; new additions will be added * including a better alchemey system for creating poitions as immortals; and as * mortals. */ #ifndef MIL #define MIL MAX_INPUT_LENGTH #endif #ifndef MSL #define MSL MAX_STRING_LENGTH #endif /* hard-coded max liquids */ #define MAX_LIQUIDS 100 typedef struct liquid_table LIQ_TABLE; typedef struct mixture_list MIX_TABLE; /* globals */ extern LIQ_TABLE *liquid_table[MAX_LIQUIDS]; extern MIX_TABLE *first_mixture; extern MIX_TABLE *last_mixture; extern int top_liquid; typedef enum { LIQTYPE_NORMAL, LIQTYPE_ALCOHOL, LIQTYPE_POISON, LIQTYPE_BLOOD, LIQTYPE_TOP } liquid_struct_types; /* * Conditions (moved from mud.h) */ typedef enum { COND_DRUNK, COND_FULL, COND_THIRST, COND_BLOODTHIRST, MAX_CONDS } conditions; struct liquid_table { char *name; char *shortdesc; char *color; int vnum; int type; int mod[MAX_CONDS]; }; struct mixture_list { MIX_TABLE *next; MIX_TABLE *prev; char *name; int data[3]; bool object; }; DECLARE_DO_FUN( do_mix ); DECLARE_DO_FUN( do_setliquid ); DECLARE_DO_FUN( do_setmixture ); LIQ_TABLE *get_liq_vnum( int vnum ); void load_liquids( void ); void load_mixtures( void );