/***************************************************************************
* ANATOLIA 2.0 is copyright 1996-1997 Serdar BULUT, Ibrahim CANPUNAR *
* ANATOLIA has been brought to you by ANATOLIA consortium *
* Murat BICER {KIO} mbicer@rorqual.cc.metu.edu.tr *
* Serdar BULUT {Chronos} bulut@rorqual.cc.metu.edu.tr *
* D.Baris ACAR {Powerman} dbacar@rorqual.cc.metu.edu.tr *
* Ibrahim Canpunar {Asena} canpunar@rorqual.cc.metu.edu.tr *
* By using this code, you have agreed to follow the terms of the *
* ANATOLIA license, in the file Anatolia/anatolia.licence *
***************************************************************************/
/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
/***************************************************************************
* ROM 2.4 is copyright 1993-1995 Russ Taylor *
* ROM 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) *
* By using this code, you have agreed to follow the terms of the *
* ROM license, in the file Rom24/doc/rom.license *
***************************************************************************/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <time.h>
#include "merc.h"
#include "tables.h"
/* for position */
const struct position_type position_table[] =
{
{ "dead", "dead" },
{ "mortally wounded", "mort" },
{ "incapacitated", "incap" },
{ "stunned", "stun" },
{ "sleeping", "sleep" },
{ "resting", "rest" },
{ "sitting", "sit" },
{ "fighting", "fight" },
{ "standing", "stand" },
{ NULL, NULL }
};
/* for sex */
const struct sex_type sex_table[] =
{
{ "none" },
{ "male" },
{ "female" },
{ "either" },
{ NULL }
};
/* for sizes */
const struct size_type size_table[] =
{
{ "tiny" },
{ "small" },
{ "medium" },
{ "large" },
{ "huge", },
{ "giant" },
{ "gargantuan" },
{ NULL }
};
/* various flag tables */
const struct flag_type act_flags[] =
{
{ "npc", A, FALSE },
{ "sentinel", B, TRUE },
{ "scavenger", C, TRUE },
{ "aggressive", F, TRUE },
{ "stay_area", G, TRUE },
{ "wimpy", H, TRUE },
{ "pet", I, TRUE },
{ "train", J, TRUE },
{ "practice", K, TRUE },
{ "undead", O, TRUE },
{ "cleric", Q, TRUE },
{ "mage", R, TRUE },
{ "thief", S, TRUE },
{ "warrior", T, TRUE },
{ "noalign", U, TRUE },
{ "nopurge", V, TRUE },
{ "outdoors", W, TRUE },
{ "indoors", Y, TRUE },
{ "healer", aa, TRUE },
{ "gain", bb, TRUE },
{ "update_always", cc, TRUE },
{ "changer", dd, TRUE },
{ NULL, 0, FALSE }
};
const struct flag_type plr_flags[] =
{
{ "npc", A, FALSE },
{ "autoassist", C, FALSE },
{ "autoexit", D, FALSE },
{ "autoloot", E, FALSE },
{ "autosac", F, FALSE },
{ "autogold", G, FALSE },
{ "autosplit", H, FALSE },
{ "holylight", N, FALSE },
{ "can_loot", P, FALSE },
{ "nosummon", Q, FALSE },
{ "nofollow", R, FALSE },
{ "permit", U, TRUE },
{ "log", W, FALSE },
{ "deny", X, FALSE },
{ "freeze", Y, FALSE },
{ "thief", Z, FALSE },
{ "killer", aa, FALSE },
{ "questor", bb, FALSE },
{ "vampire", cc, FALSE },
{ NULL, 0, 0 }
};
const struct flag_type affect_flags[] =
{
{ "blind", A, TRUE },
{ "invisible", B, TRUE },
{ "sanctuary", H, TRUE },
{ "faerie_fire", I, TRUE },
{ "infrared", J, TRUE },
{ "curse", K, TRUE },
{ "poison", M, TRUE },
{ "protect_evil", N, TRUE },
{ "protect_good", O, TRUE },
{ "sneak", P, TRUE },
{ "hide", Q, TRUE },
{ "sleep", R, TRUE },
{ "charm", S, TRUE },
{ "flying", T, TRUE },
{ "pass_door", U, TRUE },
{ "haste", V, TRUE },
{ "calm", W, TRUE },
{ "plague", X, TRUE },
{ "weaken", Y, TRUE },
{ "wstun", Z, TRUE },
{ "berserk", aa, TRUE },
{ "swim", bb, TRUE },
{ "regeneration", cc, TRUE },
{ "slow", dd, TRUE },
{ "camouflage", ee, TRUE },
{ NULL, 0, 0 }
};
const struct flag_type off_flags[] =
{
{ "area_attack", A, TRUE },
{ "backstab", B, TRUE },
{ "bash", C, TRUE },
{ "berserk", D, TRUE },
{ "disarm", E, TRUE },
{ "dodge", F, TRUE },
{ "fade", G, TRUE },
{ "fast", H, TRUE },
{ "kick", I, TRUE },
{ "dirt_kick", J, TRUE },
{ "parry", K, TRUE },
{ "rescue", L, TRUE },
{ "tail", M, TRUE },
{ "trip", N, TRUE },
{ "crush", O, TRUE },
{ "assist_all", P, TRUE },
{ "assist_align", Q, TRUE },
{ "assist_race", R, TRUE },
{ "assist_players", S, TRUE },
{ "assist_guard", T, TRUE },
{ "assist_vnum", U, TRUE },
{ NULL, 0, 0 }
};
const struct flag_type imm_flags[] =
{
{ "summon", A, TRUE },
{ "charm", B, TRUE },
{ "magic", C, TRUE },
{ "weapon", D, TRUE },
{ "bash", E, TRUE },
{ "pierce", F, TRUE },
{ "slash", G, TRUE },
{ "fire", H, TRUE },
{ "cold", I, TRUE },
{ "lightning", J, TRUE },
{ "acid", K, TRUE },
{ "poison", L, TRUE },
{ "negative", M, TRUE },
{ "holy", N, TRUE },
{ "energy", O, TRUE },
{ "mental", P, TRUE },
{ "disease", Q, TRUE },
{ "drowning", R, TRUE },
{ "light", S, TRUE },
{ "sound", T, TRUE },
{ "wood", X, TRUE },
{ "silver", Y, TRUE },
{ "iron", Z, TRUE },
{ NULL, 0, 0 }
};
const struct flag_type form_flags[] =
{
{ "edible", FORM_EDIBLE, TRUE },
{ "poison", FORM_POISON, TRUE },
{ "magical", FORM_MAGICAL, TRUE },
{ "instant_decay", FORM_INSTANT_DECAY, TRUE },
{ "other", FORM_OTHER, TRUE },
{ "animal", FORM_ANIMAL, TRUE },
{ "sentient", FORM_SENTIENT, TRUE },
{ "undead", FORM_UNDEAD, TRUE },
{ "construct", FORM_CONSTRUCT, TRUE },
{ "mist", FORM_MIST, TRUE },
{ "intangible", FORM_INTANGIBLE, TRUE },
{ "biped", FORM_BIPED, TRUE },
{ "centaur", FORM_CENTAUR, TRUE },
{ "insect", FORM_INSECT, TRUE },
{ "spider", FORM_SPIDER, TRUE },
{ "crustacean", FORM_CRUSTACEAN, TRUE },
{ "worm", FORM_WORM, TRUE },
{ "blob", FORM_BLOB, TRUE },
{ "mammal", FORM_MAMMAL, TRUE },
{ "bird", FORM_BIRD, TRUE },
{ "reptile", FORM_REPTILE, TRUE },
{ "snake", FORM_SNAKE, TRUE },
{ "dragon", FORM_DRAGON, TRUE },
{ "amphibian", FORM_AMPHIBIAN, TRUE },
{ "fish", FORM_FISH , TRUE },
{ "cold_blood", FORM_COLD_BLOOD, TRUE },
{ NULL, 0, 0 }
};
const struct flag_type part_flags[] =
{
{ "head", PART_HEAD, TRUE },
{ "arms", PART_ARMS, TRUE },
{ "legs", PART_LEGS, TRUE },
{ "heart", PART_HEART, TRUE },
{ "brains", PART_BRAINS, TRUE },
{ "guts", PART_GUTS, TRUE },
{ "hands", PART_HANDS, TRUE },
{ "feet", PART_FEET, TRUE },
{ "fingers", PART_FINGERS, TRUE },
{ "ear", PART_EAR, TRUE },
{ "eye", PART_EYE, TRUE },
{ "long_tongue", PART_LONG_TONGUE, TRUE },
{ "eyestalks", PART_EYESTALKS, TRUE },
{ "tentacles", PART_TENTACLES, TRUE },
{ "fins", PART_FINS, TRUE },
{ "wings", PART_WINGS, TRUE },
{ "tail", PART_TAIL, TRUE },
{ "claws", PART_CLAWS, TRUE },
{ "fangs", PART_FANGS, TRUE },
{ "horns", PART_HORNS, TRUE },
{ "scales", PART_SCALES, TRUE },
{ "tusks", PART_TUSKS, TRUE },
{ NULL, 0, 0 }
};
const struct flag_type comm_flags[] =
{
{ "quiet", COMM_QUIET, TRUE },
{ "deaf", COMM_DEAF, TRUE },
{ "nowiz", COMM_NOWIZ, TRUE },
{ "nogossip", COMM_NOGOSSIP, TRUE },
{ "noquestion", COMM_NOQUESTION, TRUE },
{ "nomusic", COMM_NOMUSIC, TRUE },
{ "noquote", COMM_NOQUOTE, TRUE },
{ "shoutsoff", COMM_SHOUTSOFF, TRUE },
{ "true_trust", COMM_TRUE_TRUST, TRUE },
{ "compact", COMM_COMPACT, TRUE },
{ "brief", COMM_BRIEF, TRUE },
{ "prompt", COMM_PROMPT, TRUE },
{ "combine", COMM_COMBINE, TRUE },
{ "telnet_ga", COMM_TELNET_GA, TRUE },
{ "show_affects", COMM_SHOW_AFFECTS, TRUE },
{ "nograts", COMM_NOGRATS, TRUE },
{ "noemote", COMM_NOEMOTE, FALSE },
{ "noshout", COMM_NOSHOUT, FALSE },
{ "notell", COMM_NOTELL, FALSE },
{ "nochannels", COMM_NOCHANNELS, FALSE },
{ "snoop_proof", COMM_SNOOP_PROOF, FALSE },
{ "afk", COMM_AFK, TRUE },
{ NULL, 0, 0 }
};
/* <longname> <shortname> <cabal item> <cabal shrine> NULL */
struct cabal_type cabal_table [] =
{
{ "None", "None",0,0,NULL },
{ "the Rulers of Anatolia", "RULER", 511,512,NULL },
{ "the Dark Raiders of Anatolia", "INVADER", 561,568,NULL },
{ "the Barons of Chaos", "CHAOS", 552,554,NULL },
{ "the Masters of the Arcane Arts", "SHALAFI", 531,530,NULL },
{ "the Masters of the Martial Arts", "BATTLERAGER", 541,548,NULL },
{ "the Knights of Anatolia", "KNIGHT", 522,524,NULL },
{ "the Leaders of Forests", "LION", 502,504,NULL },
{ "the Mercanary of Anatolia", "HUNTER", 571,573,NULL }
};
const struct prac_type prac_table[] =
{
{ "none", "group_none", GROUP_NONE },
{ "weaponsmaster","group_weaponsmaster", GROUP_WEAPONSMASTER },
{ "attack", "group_attack", GROUP_ATTACK },
{ "beguiling", "group_beguiling", GROUP_BEGUILING },
{ "benedictions", "group_benedictions", GROUP_BENEDICTIONS },
{ "combat", "group_combat", GROUP_COMBAT },
{ "creation", "group_creation", GROUP_CREATION },
{ "curative", "group_curative", GROUP_CURATIVE },
{ "detection", "group_detection", GROUP_DETECTION },
{ "draconian", "group_draconian", GROUP_DRACONIAN },
{ "enchantment", "group_enchantment", GROUP_ENCHANTMENT },
{ "enhancement", "group_enhancement", GROUP_ENHANCEMENT },
{ "harmful", "group_harmful", GROUP_HARMFUL },
{ "healing", "group_healing", GROUP_HEALING },
{ "illusion", "group_illusion", GROUP_ILLUSION },
{ "maladictions", "group_maladictions", GROUP_MALADICTIONS },
{ "protective", "group_protective", GROUP_PROTECTIVE },
{ "transportation","group_transportation",GROUP_TRANSPORTATION },
{ "weather", "group_weather", GROUP_WEATHER },
{ "fightmaster", "group_fightmaster", GROUP_FIGHTMASTER },
{ "suddendeath", "group_suddendeath", GROUP_SUDDENDEATH },
{ "meditation", "group_meditation", GROUP_MEDITATION },
{ "cabal", "group_cabal", GROUP_CABAL },
{ "defensive", "group_defensive", GROUP_DEFENSIVE },
{ "wizard", "group_wizard", GROUP_WIZARD },
{ NULL, NULL, 0 }
};