/**************************************************************************/
// const.cpp - constant tables (well were all constant once upon a time)
/***************************************************************************
* The Dawn of Time v1.69r (c)1997-2004 Michael Garratt *
* >> A number of people have contributed to the Dawn codebase, with the *
* majority of code written by Michael Garratt - www.dawnoftime.org *
* >> To use this source code, you must fully comply with all the licenses *
* in licenses.txt... In particular, you may not remove this copyright *
* notice. *
***************************************************************************
* >> Original Diku Mud copyright (c)1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, & Katja Nyboe. *
* >> Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* >> ROM 2.4 is copyright 1993-1995 Russ Taylor and has been brought to *
* you by the ROM consortium: Russ Taylor(rtaylor@pacinfo.com), *
* Gabrielle Taylor(gtaylor@pacinfo.com) & Brian Moore(rom@rom.efn.org) *
* >> Oblivion 1.2 is copyright 1996 Wes Wagner *
**************************************************************************/
#include "include.h" // dawn standard includes
#include "magic.h"
#include "interp.h"
#include "d2magsys.h"
#define IMO LEVEL_IMMORTAL
char * const he_she [] = { "it", "he", "she" };
char * const him_her [] = { "it", "him", "her" };
char * const his_her [] = { "its", "his", "her" };
/***************************************************************************/
/* item type list */
const struct item_type item_table [] =
{
{ 0, ""},
{ ITEM_LIGHT, "light" },
{ ITEM_SCROLL, "scroll" },
{ ITEM_WAND, "wand" },
{ ITEM_STAFF, "staff" },
{ ITEM_WEAPON, "weapon" }, /* 5 OLC */
{ ITEM_COMPONENT, "component" }, // Component
{ ITEM_RP, "rp" },
{ ITEM_TREASURE, "treasure" }, /* 8 OLC */
{ ITEM_ARMOR, "armor" },
{ ITEM_POTION, "potion" },
{ ITEM_CLOTHING, "clothing" },
{ ITEM_FURNITURE, "furniture" },
{ ITEM_TRASH, "trash" }, /* 13 OLC */
{ ITEM_PARCHMENT, "parchment" },
{ ITEM_CONTAINER, "container" },
{ ITEM_INSTRUMENT, "instrument" },
{ ITEM_DRINK_CON, "drink" }, /* 17 OLC */
{ ITEM_KEY, "key" },
{ ITEM_FOOD, "food" },
{ ITEM_MONEY, "money" }, /* 20 OLC */
{ ITEM_HERB, "herb" },
{ ITEM_BOAT, "boat" }, /* 22 OLC */
{ ITEM_CORPSE_NPC, "npc_corpse" },
{ ITEM_CORPSE_PC, "pc_corpse" },
{ ITEM_FOUNTAIN, "fountain" },
{ ITEM_PILL, "pill" },
{ ITEM_PROTECT, "protect" },
{ ITEM_MAP, "map" },
{ ITEM_PORTAL, "portal" },
{ ITEM_WARP_STONE, "warp_stone" },
{ ITEM_ROOM_KEY, "room_key" },
{ ITEM_GEM, "gem" },
{ ITEM_JEWELRY, "jewelry" },
{ ITEM_JUKEBOX, "jukebox" },
{ ITEM_TOKEN, "token" },
{ ITEM_POULTICE, "poultice" },
{ ITEM_MORTAR, "mortar" },
{ ITEM_CAULDRON, "cauldron" },
{ ITEM_FLASK, "flask" },
{ ITEM_ORE, "ore" },
{ ITEM_PICK, "pick" },
{ ITEM_POLE, "pole" },
{ ITEM_FISH, "fish" },
{ ITEM_FINISH, "finish" },
{ ITEM_FLYER, "flyer" },
{ ITEM_ATHENSFLAG, "athensflag" },
{ ITEM_MEGARAFLAG, "megaraflag" },
{ ITEM_CARGO, "cargo" },
{ ITEM_COMMODITY, "commodity" },
{ 0, NULL }
};
/***************************************************************************/
game_settings_type tgs2;
#define GETBYTE_OFFSET(field) (int)(((char*) &(tgs2.field)) \
-((char*) &tgs2))
/***************************************************************************/
/* weapon selection table */
const struct weapon_type weapon_table [] =
{
{ "exotic", -1, 0, NULL },
{ "sword", GETBYTE_OFFSET(obj_vnum_outfit_sword), WEAPON_SWORD, &gsn_sword },
{ "dagger", GETBYTE_OFFSET(obj_vnum_outfit_dagger), WEAPON_DAGGER, &gsn_dagger },
{ "staff", GETBYTE_OFFSET(obj_vnum_outfit_staff), WEAPON_STAFF, &gsn_staff },
{ "mace", GETBYTE_OFFSET(obj_vnum_outfit_mace), WEAPON_MACE, &gsn_mace },
{ "axe", GETBYTE_OFFSET(obj_vnum_outfit_axe), WEAPON_AXE, &gsn_axe },
{ "flail", GETBYTE_OFFSET(obj_vnum_outfit_flail), WEAPON_FLAIL, &gsn_flail },
{ "whip", GETBYTE_OFFSET(obj_vnum_outfit_whip), WEAPON_WHIP, &gsn_whip },
{ "polearm", GETBYTE_OFFSET(obj_vnum_outfit_polearm),WEAPON_POLEARM, &gsn_polearm },
{ "sickle", GETBYTE_OFFSET(obj_vnum_outfit_sickle), WEAPON_SICKLE, &gsn_sickle },
{ NULL, 0, 0, NULL }
};
/***************************************************************************/
/* wiznet table and prototype for future flag setting */
const struct wiznet_type wiznet_table[]={
{ "on", WIZ_ON, IM },
{ "beta", WIZ_BETA, L6 },
{ "bugs", WIZ_BUGS, L6 },
{ "deaths", WIZ_DEATHS, IM },
{ "flags", WIZ_FLAGS, L5 },
{ "levels", WIZ_LEVELS, IM },
{ "links", WIZ_LINKS, L7 },
{ "load", WIZ_LOAD, L2 },
{ "logins", WIZ_LOGINS, IM },
{ "mobdeaths", WIZ_MOBDEATHS, L4 },
{ "memcheck", WIZ_MEMCHECK, L2 },
{ "newbies", WIZ_NEWBIE, IM },
{ "nohelp", WIZ_NOHELP, IM },
{ "penalties", WIZ_PENALTIES, L5 },
{ "playerlog", WIZ_PLAYER_LOG, L1 },
{ "prayers/dreams",WIZ_PRAYERS_DREAMS,IM },
{ "questing", WIZ_QUESTING, IM },
{ "resets", WIZ_RESETS, L4 },
{ "autoon", WIZ_AUTOON, IM },
{ "rpexp", WIZ_RPEXP, IM },
{ "rpmonitor", WIZ_RPMONITOR, IM },
{ "secure", WIZ_SECURE, L2 },
{ "sites", WIZ_SITES, L4 },
{ "showchannel", WIZ_SHOWCHANNEL,IM },
{ "snoops", WIZ_SNOOPS, L2 },
{ "spam", WIZ_SPAM, L5 },
{ "switches", WIZ_SWITCHES, L2 },
{ "thefts", WIZ_THEFTS, IM },
{ "ticks", WIZ_TICKS, IM },
{ "whispers", WIZ_WHISPERS, IM },
{ "newbietells", WIZ_NEWBIETELL, IM },
{ NULL, 0, 0 }
};
/***************************************************************************/
/* attack table -- not very organized :( */
const struct attack_type attack_table [] =
{
{ "none", "hit", -1 }, // 0
{ "slice", "slice", DAM_SLASH },
{ "stab", "stab", DAM_PIERCE },
{ "slash", "slash", DAM_SLASH },
{ "whip", "whip", DAM_SLASH },
{ "claw", "claw", DAM_SLASH }, // 5
{ "blast", "blast", DAM_BASH },
{ "pound", "pound", DAM_BASH },
{ "crush", "crush", DAM_BASH },
{ "grep", "grep", DAM_SLASH },
{ "bite", "bite", DAM_PIERCE }, // 10
{ "pierce", "pierce", DAM_PIERCE },
{ "suction", "suction", DAM_BASH },
{ "beating", "beating", DAM_BASH },
{ "digestion", "digestion", DAM_ACID },
{ "charge", "charge", DAM_BASH }, // 15
{ "slap", "slap", DAM_BASH },
{ "punch", "punch", DAM_BASH },
{ "wrath", "wrath", DAM_ENERGY },
{ "magic", "magic", DAM_ENERGY },
{ "divine", "divine power", DAM_HOLY }, // 20
{ "cleave", "cleave", DAM_SLASH },
{ "scratch", "scratch", DAM_PIERCE },
{ "peck", "peck", DAM_PIERCE },
{ "peckb", "peck", DAM_BASH },
{ "chop", "chop", DAM_SLASH }, // 25
{ "sting", "sting", DAM_PIERCE },
{ "smash", "smash", DAM_BASH },
{ "shbite", "shocking bite",DAM_LIGHTNING },
{ "flbite", "flaming bite", DAM_FIRE },
{ "frbite", "freezing bite",DAM_COLD }, // 30
{ "acbite", "acidic bite", DAM_ACID },
{ "chomp", "chomp", DAM_PIERCE },
{ "drain", "life drain", DAM_NEGATIVE },
{ "thrust", "thrust", DAM_PIERCE },
{ "slime", "slime", DAM_ACID }, // 35
{ "shock", "shock", DAM_LIGHTNING },
{ "thwack", "thwack", DAM_BASH },
{ "flame", "flame", DAM_FIRE },
{ "chill", "chill", DAM_COLD },
{ "gunshot", "gunshot", DAM_PIERCE }, // 40
{ "radiance", "radiance", DAM_LIGHT }, // 41
{ "phantasm", "phantasm", DAM_ILLUSION }, // 42
{ "mental", "mental blast", DAM_MENTAL }, // 43
// if you add any here, make sure to increase MAX_DAMAGE_MESSAGE
// at the top of fight.cpp - Kal, Jan 2004
{ NULL, NULL, 0 }
};
/***************************************************************************/
// Totems
const struct totem_type totem_table [TOTEM_MAX+1] =
{
{ TOTEM_BEAR, "bear" },
{ TOTEM_STAG, "stag" },
{ TOTEM_SWALLOW, "swallow" },
{ TOTEM_OSPREY, "osprey" },
{ TOTEM_TORTOISE, "tortoise" },
{ TOTEM_RAVEN, "raven" },
{ TOTEM_BAT, "bat" },
{ TOTEM_WOLF, "wolf" },
{ TOTEM_SERPENT, "serpent" },
{ TOTEM_TOAD, "toad" },
{ TOTEM_OWL, "owl" },
{ TOTEM_HARE, "hare" }
};
/***************************************************************************/
struct classgroup_type classgroup_table[31]=
{
{ "allmage", 0, "All classes with any mage aspect",
{A | F,0,0,0,0}, "mage spellfilcher"},
{ "allcleric", 1, "All classes with any mage aspect",
{B,0,0,0,0},"cleric paladin"},
{ "allthief", 2, "All classes with any thief aspect",
{C | I,0,0,0,0},"thief spellfilcher"},
{ "allwarrior", 3, "All classes with any warrior aspect",
{D,0,0,0,0},"warrior paladin ranger"},
{ "alldruid", 4, "All classes with any druid aspect",
{E,0,0,0,0},"druid ranger"},
{ "coremage", 0, "All classes with mage as a core",
{A | F,0,0,0,0}, "mage"},
{ "corecleric", 1, "All classes with cleric as a core",
{B,0,0,0,0},"cleric"},
{ "corethief", 2, "All classes with thief as a core",
{C | I,0,0,0,0},"thief spellfilcher"},
{ "corewarrior", 3, "All classes with warrior as a core",
{D,0,0,0,0},"warrior paladin ranger"},
{ "coredruid", 4, "All classes with druid as a core",
{E,0,0,0,0},"druid"},
{ "corecivilian", 5, "All classes with civilian as a core",
{J,0,0,0,0},""},
{ "", 0, ""}
};
/*
struct objrestrict_affect_type
{
char * name;
char * description;
int flags;
char * wear_message;
sh_int wear_location;
sh_int wear_amount;
char * //forced_drop_message;
char * remove_message;
sh_int move_chance; // how often the move affect will happen - percentage
sh_int move_location;
sh_int move_amount;
char * move_message;
sh_int tick_chance; // how often the tick affect will happen - percentage
sh_int tick_location;
sh_int tick_amount;
char * tick_message;
};
*/
/***************************************************************************/
struct affectprofile_type affectprofile_table[50]=
{
{
"mage-armour", //name
"Affects when a mage puts on armour", //description
0, //flags
"You feel a dampening sensation as you put $p on.", //wear_message
APPLY_MANA, //wear_location
-300, //wear_amount
"", //forced_drop_message
"The dampening sensation from $p lifts as you remove it.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"cleric-armour", //name
"Affects when a cleric puts on armour", //description
0, //flags
"You are overwhelmed by an emptiness as you put on $p.", //wear_message
APPLY_MANA, //wear_location
-300, //wear_amount
"", //forced_drop_message
"The emptiness is lifted as you remove $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"" //message
},
{
"druid-armour", //name
"Affects when a druid puts on armour", //description
0, //flags
"You feel out of touch with nature as you put $p on.", //wear_message
APPLY_MANA, //wear_location
-300, //wear_amount
"", //forced_drop_message
"You feel more in touch with nature as you remove $p on.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"thief-armour", //name
"Affects when a thief puts on armour", //description
0, //flags
"Your movements are encumbered as you put on $p.", //wear_message
APPLY_QU, //wear_location
-50, //wear_amount
"", ////forced_drop_message
"Your movements are less encumbered as you remove $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"warrior-armour", //name
"Affects when a warrior puts on armour", //description
0, //flags
"Your battle insticts are blinded by an intense aura as you put $p on.", //wear_message
APPLY_AC, //wear_location
-100, //wear_amount
"", //forced_drop_message
"Your feel more intune to your battle insticts as you remove $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"mage-weapon-sword", //name
"Affects when a mage wields an sword", //description
0, //flags
"You feel as though $p is draining your energy as you wield it.", //wear_message
APPLY_MANA, //wear_apply
-300, //wear_amount
"", ////forced_drop_message
"The draining sensation from $p appears to have been subdued.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"mage-weapon-axe", //name
"Affects when a mage wields an axe", //description
0, //flags
"You can barely lift $p over your head.", //wear_message
APPLY_ST, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less burdened as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"mage-weapon-polearm", //name
"Affects when a mage wields an polearm", //description
0, //flags
"You can barely lift $p over your head.", //wear_message
APPLY_ST, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less burdened as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"mage-weapon-flail", //name
"Affects when a mage wields an flail", //description
0, //flags
"You feel as though $p is draining your energy as you wield it.", //wear_message
APPLY_MANA, //wear_apply
-300, //wear_amount
"", ////forced_drop_message
"The draining sensation from $p appears to have been subdued.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"mage-weapon-club", //name
"Affects when a mage wields an club", //description
0, //flags
"You feel as though $p is draining your energy as you wield it.", //wear_message
APPLY_MANA, //wear_apply
-300, //wear_amount
"", ////forced_drop_message
"The draining sensation from $p appears to have been subdued.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"druid-weapon-nonnatural", //name
"Affects when a druid wields an non-natural weapon", //description
0, //flags
"The stink of $p brings on a nauseating feeling.", //wear_message
APPLY_MANA, //wear_apply
-300, //wear_amount
"", ////forced_drop_message
"The nauseating feeling from $p appears to have subdued.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"thief-weapon-polearm", //name
"Affects when a thief wields an polearm", //description
0, //flags
"You can barely lift $p over your head.", //wear_message
APPLY_ST, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less burdened as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"thief-weapon-flail", //name
"Affects when a thief wields an flail", //description
0, //flags
"You can barely lift $p over your head.", //wear_message
APPLY_ST, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less burdened as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"thief-weapon-sword", //name
"Affects when a thief wields an sword", //description
0, //flags
"Your movements are encumbered as you wield $p.", //wear_message
APPLY_QU, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less encumbered as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
{
"thief-weapon-axe", //name
"Affects when a thief wields an axe", //description
0, //flags
"Your movements are encumbered as you wield $p.", //wear_message
APPLY_QU, //wear_apply
-100, //wear_amount
"", ////forced_drop_message
"Your movements are less encumbered as you stop wielding $p.", //remove_message
// == movement == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
// == ticks == //
0, //chance
APPLY_NONE, //location
0, //amount
"", //message
},
// MARK END OF TABLE
{""}
};
/* {
"mage-armour", // name
"Affect when mages put on armour", // description
0, // flags
"You feel a dampening sensation as you put $p on.", // wear_message
APPLY_MANA, // wear_location
-300, // wear_amount
"", // //forced_drop_message
"The dampening sensation from $p lifts as you remove it.",// remove_message
// == movement == //
0, //chance
0, // location
0, // amount
"",// message
// ==- ticks -== //
0, //chance
0, // location
0, // amount
""// message
},
{
"mage-weapon-sword", // name
"Affect when mages wields a sword", // description
0, // flags
"You feel as though $p is draining your energy as you wield it.", // wear_message
APPLY_MANA, // wear_location
-300, // wear_amount
"", // //forced_drop_message
"The draining sensation from $p appears to have been subdued.",// remove_message
// == movement ==
0, //chance
0, // location
0, // amount
"",// message
// ==- ticks -==
0, //chance
0, // location
0, // amount
""// message
},
*/
/***************************************************************************/
/*
* Class table.
*/
struct class_type class_table [MAX_CLASS+1] =
{
{
NULL, "", {0, 0}
}
};
/***************************************************************************/
/*
* Liquid properties.
* Used in world.obj.
*/
const struct liq_type liq_table [] =
{
// name color proof, full, thirst, food, ssize
{ "water", "clear", { 0, 1, 10, 0, 16 } },
{ "ambrosia", "amber", { 12, 1, 8, 1, 12 } },
{ "red wine", "burgundy", { 30, 1, 8, 1, 5 } },
// { "ale", "brown", { 15, 1, 8, 1, 12 } },
// { "dark ale", "dark", { 16, 1, 8, 1, 12 } },
// { "whisky", "golden", { 120, 1, 5, 0, 2 } },
// { "lemonade", "pink", { 0, 1, 9, 2, 12 } },
// { "firebreather", "boiling", { 190, 0, 4, 0, 2 } },
{ "local specialty", "clear", { 151, 1, 3, 0, 2 } },
// { "slime mold juice", "green", { 0, 2, -8, 1, 2 } },
{ "milk", "white", { 0, 2, 9, 3, 12 } },
// { "tea", "tan", { 0, 1, 8, 0, 6 } },
// { "coffee", "black", { 0, 1, 8, 0, 6 } },
// { "blood", "red", { 0, 2, -1, 2, 6 } },
{ "salt water", "clear", { 0, 1, -2, 0, 1 } },
// { "coke", "brown", { 0, 2, 9, 2, 12 } },
// { "root beer", "brown", { 0, 2, 9, 2, 12 } },
// { "elvish wine", "green", { 35, 2, 8, 1, 5 } },
{ "white wine", "golden", { 28, 1, 8, 1, 5 } },
// { "champagne", "golden", { 32, 1, 8, 1, 5 } },
// { "mead", "honey-coloured",{ 34, 2, 8, 2, 12 } },
{ "rose wine", "pink", { 26, 1, 8, 1, 5 } },
// { "benedictine wine", "burgundy", { 40, 1, 8, 1, 5 } },
// { "vodka", "clear", { 130, 1, 5, 0, 2 } },
// { "cranberry juice", "red", { 0, 1, 9, 2, 12 } },
// { "orange juice", "orange", { 0, 2, 9, 3, 12 } },
// { "absinthe", "green", { 200, 1, 4, 0, 2 } },
// { "brandy", "golden", { 80, 1, 5, 0, 4 } },
// { "aquavit", "clear", { 140, 1, 5, 0, 2 } },
// { "schnapps", "clear", { 90, 1, 5, 0, 2 } },
// { "icewine", "purple", { 50, 2, 6, 1, 5 } },
// { "amontillado", "burgundy", { 35, 2, 8, 1, 5 } },
// { "sherry", "red", { 38, 2, 7, 1, 5 } },
// { "framboise", "red", { 50, 1, 7, 1, 5 } },
/// { "rum", "amber", { 151, 1, 10, 0, 2 } },
// { "cordial", "clear", { 100, 1, 5, 0, 2 } },
// { "martini", "clear", { 100, 1, 5, 0, 2 } },
// { "bloodwine", "vermillion", { 80, 1, 5, 0, 4 } },
// { "pineapple juice", "yellow", { 0, 0, 8, 1, 12 } },
// { "fruit punch", "red", { 0, 1, 9, 0, 12 } },
{ "applewine", "tea-coloured", { 30, 1, 8, 1, 5 } },
{ "plumwine", "dark-purple", { 30, 1, 8, 1, 5 } },
{ "mulled wine", "purple", { 30, 1, 8, 1, 5 } },
{ "honey wine", "golden", { 34, 2, 8, 2, 12 } },
{ "apple cider", "golden", { 26, 1, 8, 1, 5 } },
// { "porter", "green", { 35, 2, 8, 1, 5 } },
// { "spiced tea", "crimson", { 0, 1, 10, 0, 6 } },
{ "olive oil", "green", { 0, 0, 0, 0, 6 } },
{ "apple juice", "golden", { 0, 0, 8, 1, 12 } },
{ "grape juice", "purple", { 0, 0, 8, 1, 12 } },
// { "watermelon juice", "pink", { 0, 0, 8, 1, 12 } },
// { "starfruit juice", "yellow", { 0, 0, 8, 1, 12 } },
// { "untainted water", "crystal-clear",{ 0, 1, 12, 0, 16 } },
{ NULL, NULL, { 0, 0, 0, 0, 0 } }
};
/***************************************************************************/
/*
* The skill and spell table.
* Slot numbers must never be changed as they appear in #OBJECTS sections.
*/
#define SLOT(n) n
#define RACE_R(n) n
#define S_FLAGS(n) n
class skill_type skill_table[MAX_SKILL];
/***************************************************************************/
struct skillgroup_type skillgroup_table[MAX_SKILLGROUP+1] =
{
{NULL}
};
/***************************************************************************/
struct group_type group_table [MAX_GROUP_TABLE+1] =
{
// NOTE: YOU SHOULD NOT BE EDITING THIS, INSTEAD DO ANY CHANGES
// USING THE OLC BASED SKILL GROUP EDITOR!
{
"dawn basics", { 0, 0, 0, 0,0,0,0,0,0 },
{ "recall" }
},
{
"mage basics", { 0, -1, -1, -1,-1,-1,-1,-1,-1 },
{ "dagger","scrolls", "wands" }
},
{
"cleric basics", { -1, 0, -1, -1, -1,-1,-1,-1,-1 },
{ "mace", "scrolls", "staves" }
},
{
"thief basics", { -1, -1, 0, -1,-1,-1,-1,-1,-1 },
{ "dagger", "steal" }
},
{
"warrior basics", { -1, -1, -1, 0,-1,-1,-1,-1,-1 },
{ "sword" }
},
{
"druid basics", { -1, -1, -1, -1,0,-1,-1,-1,-1 },
{ "mace", "scrolls"}
},
{
"paladin basics", { -1, -1, -1, -1,-1,0,-1,-1,-1 },
{"sword", "staves", "scrolls"}
},
{
"ranger basics", { -1, -1, -1, -1,-1,-1,0,-1,-1 },
{"sword", "awareness"}
},
{
"barbarian basics", {-1,-1,-1,-1,-1,-1,-1,0,-1},
{"berserk", "bash", "axe"}
},
{
"spellfilcher basics", {-1,-1,-1,-1,-1,-1,-1,-1,0},
{"dagger", "lore", "steal", "scrolls", "wands"}
},
{
"mage default", { 40, -1, -1, -1,-1,-1,-1,-1,-1 }, // 41 points worth
{"scan", "essence", "alteration", "evocation", "dodge", "conjuration",
"necromancy", "conjuration", "summoning"}
},
{
"cleric default", { -1, 40, -1, -1,-1,-1,-1,-1,-1 }, // 42 cp for 40
{ "scan", "convocation", "protection", "healing", "death",
"meditation", "combat"}
},
{
"thief default", { -1, -1, 40, -1,-1,-1,-1,-1,-1 },
{ "mace", "dirt kicking", "backstab", "disarm", "dodge",
"second attack", "hide", "peek", "pick lock", "sneak" }
},
{
"warrior default", { -1, -1, -1, 40,-1,-1,-1,-1,-1 },
{ "weaponsmaster", "shield block", "bash", "disarm", "enhanced damage",
"parry", "rescue", "third attack" }
},
{
"ranger default", { -1, -1, -1, -1,-1,-1,40,-1,-1 }, // 41 for 40
{"scan", "sneak", "build", "awareness", "staff", "axe", //17
"animal training", "domesticate", //4
"land", "water", "plant","animal"} // 20
},
{
"druid default", { -1, -1, -1, -1,40,-1,-1,-1,-1 }, // 44 for
{ "scan", "hand to hand", "animal training", //9
"summer", "winter", "autumn", "spring", // 20
"plant", "animal", "land" }, // 15
},
{
"paladin default", { -1, -1, -1, -1,-1,40,-1,-1,-1 }, // 41 for 40
{ "scan", "second attack", "third attack", //11
"lay on hands", "shield block" // 5
"convocation", "healing", "death", "combat", "protection"} // 25
},
{
"barbarian default", {-1,-1,-1,-1,-1,-1,-1,40,-1},
{ "weaponsmaster", "enhanced damage", "dodge", "fast healing",
"ultra damage", "second attack", "scan", "hand to hand" }
},
{
"spellfilcher default", {-1,-1,-1,-1,-1,-1,-1,-1,40}, // 42 for 40
{ "scan", "backstab", "second attack", // 12
"dirt kicking", "sneak", "hide", "peek"//15
"evocation", "conjuration", "summoning"} //15
},
{
"weaponsmaster", { -1, -1, -1, 15,-1,18,20,10,-1 },
{ "axe", "dagger", "flail", "mace", "polearm", "staff", "sword","whip" },
},
{ NULL}
};
/***************************************************************************/
//
// for use of a more IC time system, in 24 hour format
const struct timefield_type timefield_table [] =
{
// TYPE Lowhour Highour Name
{ TIME_NONE, -1, -1, "none" },
{ TIME_SMALL_HOURS, 1, 4, "during the small hours of the night" },
{ TIME_DAWN, 5, 5, "at dawn" },
{ TIME_MORNING, 6, 11, "in the morning" },
{ TIME_NOON, 12, 12, "at noon" },
{ TIME_AFTERNOON, 13, 18, "in the afternoon" },
{ TIME_DUSK, 19, 19, "at dusk" },
{ TIME_EVENING, 20, 23, "in the evening" },
{ TIME_MIDNIGHT, 0, 0, "at midnight" },
{ 0, -1, -1, NULL }
};
/***************************************************************************/
// Difficulty settings for skills and such things
const struct modifier_type modifier_table [] =
{
{ DIFF_NONE, "none", 0 },
{ DIFF_TRIVIAL, "trivial", 30 },
{ DIFF_EASY, "easy", 20 },
{ DIFF_LIGHT, "light", 10 },
{ DIFF_MEDIUM, "medium", 0 },
{ DIFF_HARD, "hard", -10 },
{ DIFF_VERY_HARD, "very_hard", -25 },
{ DIFF_ABSURD, "absurd", -50 },
{ DIFF_SHEER_FOLLY, "sheer_folly", -75 },
{ 0, NULL, 0 }
};
/***************************************************************************/
/***************************************************************************/