#include <glib.h> #include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <merc.h> #include <tables.h> /* wiznet table and prototype for future flag setting */ const struct wiznet_type wiznet_table [] = { { "on", WIZ_ON, LEVEL_IMMORTAL }, { "prefix", WIZ_PREFIX, LEVEL_IMMORTAL }, { "ticks", WIZ_TICKS, LEVEL_IMMORTAL }, { "logins", WIZ_LOGINS, LEVEL_IMMORTAL }, { "sites", WIZ_SITES, LEVEL_QUESTMAKER }, { "decap", WIZ_DECAP, LEVEL_QUESTMAKER }, { "newbies", WIZ_NEWBIE, LEVEL_IMMORTAL }, { "spam", WIZ_SPAM, LEVEL_QUESTMAKER }, { "deaths", WIZ_DEATHS, LEVEL_IMMORTAL }, { "resets", WIZ_RESETS, LEVEL_QUESTMAKER }, { "debug", WIZ_DEBUG, LEVEL_JUDGE }, { "flags", WIZ_FLAGS, LEVEL_QUESTMAKER }, { "penalties", WIZ_PENALTIES, LEVEL_QUESTMAKER }, { "saccing", WIZ_SACCING, LEVEL_QUESTMAKER }, { "levels", WIZ_LEVELS, LEVEL_IMMORTAL }, { "load", WIZ_LOAD, LEVEL_QUESTMAKER }, { "restore", WIZ_RESTORE, LEVEL_QUESTMAKER }, { "snoops", WIZ_SNOOPS, LEVEL_QUESTMAKER }, { "switches", WIZ_SWITCHES, LEVEL_QUESTMAKER }, { "general", WIZ_GENERAL, LEVEL_IMMORTAL }, { "link", WIZ_LINK, LEVEL_QUESTMAKER }, { "board", WIZ_BOARD, LEVEL_IMMORTAL }, { "glibdebug", WIZ_GLIB, LEVEL_IMPLEMENTOR}, { NULL, 0, 0 } }; /* Sect table, cause I hated how they were set up. */ const struct sect_type sect_table[]= { { SECT_INDEPENDENT, "Independent", SPC_INDEPENDENT, "{W","Independent" }, { SECT_SABBAT , "Sabbat", SPC_SABBAT , "{R","Sabbat" }, { SECT_CAMARILLA, "Camarilla", SPC_CAMARILLA , "{C","Camarilla" }, { SECT_FOLLOWERS, "Followers", SPC_FOLLOWERS , "{B","Followers" }, { SECT_WYRM , "Wyrm", SPC_WYRM , "{M","Wyrm" }, //{ SECT_PACK , "The Pack", SPC_PACK , "{g","ThePack" }, { SECT_PACK , "The Pack", SPC_PACK , "{g","ThePack" }, { SECT_NEWPACK, "New Pack", SPC_NEWPACK , "{G","NewPack" }, { SECT_TECHNOCRACY, "Technocracy", SPC_TECHNOCRACY, "{Y","Technocracy" }, { SECT_TRADITIONS, "Traditions", SPC_TRADITIONS , "{y","Traditions" }, { SECT_ANARCHS, "Anarchs", SPC_ANARCH , "{R","Anarchs" }, { SECT_INCONNU, "Inconnu", SPC_INCONNU , "{W","Inconnu" }, { SECT_NEPHANDI, "Nephandi", 0 , "{m","Nephandi" }, /* New Sect for Mages */ { SECT_MARAUDERS, "Marauders", 0 , "{c","Marauders" }, /* New Sect for Mages */ { SECT_MARAUDERS, "Marauders", 0 , "{c","Marauders" } /* New Sect for Mages */ }; const struct iclan_type iclan_table []= { { CLAN_NONE , "Clanless", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_BAALI , "Baali", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_BLOOD_BROTHERS,"BloodBros", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_BRUJAH , "Brujah", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_CAPPADOCIANS, "Cappadocian", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_HARBINGERS_OF_SKULLS,"Harbingers", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_DAUGHTERS_OF_CACOPHONY,"Daughters", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_GANGREL , "Gangrel", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_GARGOYLES , "Gargoyles", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_GIOVANNI , "Giovanni", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_KINDRED_OF_THE_EAST, "KindredEast", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_LASOMBRA , "Lasombra", SPC_SABBAT, "{R", CLASS_VAMPIRE }, { CLAN_LAMIA , "Lamia", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_LHIANNAN , "Lhiannan", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_LIABON , "Liabon", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_MALKAVIAN , "Malkavian", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_NAGARAJA , "Nagaraja", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_NOSFERATU , "Nosferatu", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_NICTUKU , "Nictuku", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_RAVNOS , "Ravnos", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_SALUBRI , "Salubri", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_SAMEDI , "Samedi", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_SETITES , "Setites", SPC_FOLLOWERS, "{R", CLASS_VAMPIRE }, { CLAN_TOREADOR , "Toreador", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_TREMERE , "Tremere", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_TRUE_BRUJAH, "TrueBrujah", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_TZIMISCE , "Tzimisce", SPC_SABBAT, "{R", CLASS_VAMPIRE }, { CLAN_VENTRUE , "Ventrue", SPC_CAMARILLA, "{R", CLASS_VAMPIRE }, { CLAN_CATIFF , "Catiff", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { TRIBE_BASTET , "Bastet", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_BLACK_FURIES, "BlackFuries", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_BSD, "BlackSpiral", SPC_WYRM, "{G", CLASS_WEREWOLF }, { TRIBE_BONE_GNAWERS, "BoneGnawers", SPC_SABBAT, "{G", CLASS_WEREWOLF }, { TRIBE_CHILD_OF_SPIRAL, "ChildofSpiral", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_FIANNA , "Fianna", SPC_NEWPACK, "{G", CLASS_WEREWOLF }, { TRIBE_GET_OF_FENRIS, "GetofFenris", SPC_NEWPACK, "{G", CLASS_WEREWOLF }, { TRIBE_GLASSWALKERS, "GlassWalkers", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_RED_TALONS, "RedTalons", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_SHADOW_LORDS, "ShadowLords", SPC_NEWPACK, "{G", CLASS_WEREWOLF }, { TRIBE_SILENT_STRIDERS, "SilentStrider", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_SILVER_FANGS, "SilverFangs", SPC_PACK, "{G", CLASS_WEREWOLF }, { TRIBE_STARGAZERS, "Stargazers", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_UKTENA, "Uktena", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_WENDIGO, "Wendigo", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { TRIBE_RONIN, "Ronin", SPC_INDEPENDENT, "{G", CLASS_WEREWOLF }, { CLAN_AKASHIC_BROTHERHOOD, "Akashic", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_CELESTRIAL_CHORUS , "CelestChorus", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_CULT_OF_ECSTASY , "CultEcstasy", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_DREAMSPEAKERS , "Dreamspeakr", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_EUTHANATOS , "Euthanatos", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_HOLLOW_ONES , "HollowOnes", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_ORDER_OF_HERMES , "OrderHermes", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_SONS_OF_ETHER , "SonsEther", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_VERBENA , "Verbena", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_ITERATION_X , "IterationX", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_PROGENITORS , "Progenitors", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_SYNDICATE , "Syndicate", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_NEW_WORLD_ORDER , "NewWorldOrder", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_VOID_ENGINEERS , "VoidEngineer", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_ASHAMED , "Ashamed", SPC_INDEPENDENT, "{C", CLASS_MAGE }, { CLAN_ASSAMITES , "Assamites", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_GAKI , "Gaki", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_BUSHI , "Bushi", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_ASSAMITES , "Assamites", SPC_INDEPENDENT, "{R", CLASS_VAMPIRE }, { CLAN_LEOPOLD , "Leopold", SPC_SOCIETY_LEO, "{R", CLASS_HUNTER } }; const struct haunt_type breed_table[]= { { "Homid" }, { "Lupus" }, { "Metis" } }; const struct haunt_type auspice_table[]= { { "Ragabash" }, { "Theurge" }, { "Philodox" }, { "Galliard" }, { "Ahroun" } }; const struct haunt_type tribe_table[]= { { "Black Furies" }, { "Bone Gnawers" }, { "Children of Gaia" }, { "Fianna" }, { "Get of Fenris" }, { "Glass Walkers" }, { "Red Talons" }, { "Shadow Lords" }, { "Silent Striders" }, { "Silver Fangs" }, { "Stargazers" }, { "Uktena" }, { "Wendigo" }, { "Ronin" }, { "Child of Spiral" }, { "Black Spiral Dancers" } }; const struct haunt_type disc_table[]= { { "Abombwe" }, { "Animalism" }, { "Auspex" }, { "Celerity" }, { "Chimerstry" }, { "Daimoinon" }, { "Demios" }, { "Dementation" }, { "Dominate" }, { "Fortitude" }, { "Grotesquous" }, { "Kai" }, { "Melpominee" }, { "Mortis" }, { "Necromancy" }, { "Nihilistics" }, { "Obeah" }, { "Obfuscate" }, { "Obtenebration" }, { "Ogham" }, { "Potence" }, { "Presence" }, { "Protean" }, { "Quietus" }, { "Rift" }, { "Sanguinus" }, { "Serpentis" }, { "Temporis" }, { "Thanatosis" }, { "Thaumaturgy" }, { "Vicissitude" }, { "Visceratika" }, { "" } }; const struct haunt_type stance_msg_table[]= { {""}, {"$n arches $s body into the viper fighting stance."}, {"$n swings $s body into the crane fighting stance."}, {"$n squats down into the crab fighting stance. "}, {"$n twists into the mongoose fighting stance. "}, {"$n hunches down into the bull fighting stance. "}, {"$n spins $s body into the mantis fighting stance."}, {"$n coils $s body into the dragon fighting stance."}, {"$n lunges into the tiger fighting stance."}, {"$n rotates $s body into the monkey fighting stance."}, {"$n slides into the swallow fighting stance."}, { "" } }; const struct haunt_type remember_table[]= { {"Your ass is mine!"}, //0 {"Did you think I have forgotten you?"}, {"Ah, we meet again!"}, {"Let's see how you fare this round!"}, {"My memory is not as short as your lifespan!"}, {"Did you think I have forgotten you? "}, //5 {"This time, to the death..."}, {"So you want to play rough do you?"}, {"You just saw your last fight!"}, { "" } }; const struct haunt_type haunt_table[]= { {"Someone examines you closely, looking for your weaknesses."}, {"The white aura around your body fades."}, {"Nah... You feel too relaxed..."}, {"You can't see a thing!"}, {"You have been killed!"}, {"You become visible."}, {"You dodge the web!"}, {"You have been stunned!"}, {"Someone's claw strikes you {Wtoo HARD to comprehend!{x"}, {"Someone's hit strikes you {Wtoo HARD to comprehend!{x"}, {"Someone's slap strikes you {Wtoo HARD to comprehend!{x"}, { "" } }; const struct mage_sphere_type mage_sphere_table[]= { { "correspondence", SPHERE_CORRESPONDENCE }, { "entropy", SPHERE_ENTROPY }, { "forces", SPHERE_FORCES }, { "mind", SPHERE_MIND }, { "matter", SPHERE_MATTER }, { "prime", SPHERE_PRIME }, { "spirit", SPHERE_SPIRIT }, { "life", SPHERE_LIFE }, { "time", SPHERE_TIME }, { "", 0 } }; const struct renown_rank_type ragabash_table[]= { { 0, 0, 0 }, //0 { 1, 1, 1 }, { 2, 3, 2 }, { 4, 4, 4 }, { 6, 5, 6 }, { 8, 8, 7 }, //5 }; const struct renown_rank_type theurge_table[]= { { 0, 0, 0 }, //0 { 0, 0, 3 }, { 1, 0, 5 }, { 2, 1, 7 }, { 4, 2, 9 }, { 5, 3, 10 }, //5 }; const struct renown_rank_type philodox_table[]= { { 0, 0, 0 }, //0 { 0, 3, 0 }, { 1, 5, 1 }, { 3, 7, 4 }, { 3, 9, 7 }, { 4, 10, 9 }, //5 }; const struct renown_rank_type galliard_table[]= { { 0, 0, 0 }, //0 { 2, 0, 1 }, { 4, 0, 3 }, { 6, 1, 5 }, { 8, 2, 6 }, { 10, 3, 8 }, //5 }; const struct renown_rank_type ahroun_table[]= { { 0, 0, 0 }, //0 { 2, 1, 0 }, { 5, 3, 1 }, { 7, 5, 1 }, { 9, 7, 2 }, { 10, 8, 3 }, //5 }; const struct mage_spell_type mage_affect_table[]= { { "Entropy Shield", "You are surrounded by an entropy shield.", "Your entropy shield fades away." }, { "TrueSight", "You can see more clear.\n\r", "Your sight get muddled.\n\r" }, { "Life Shield", "You are surrounded by a life shield.", "Your life shield fades away." }, { "NightSight", "Your sight is no longer hindered by the dark.", "The darkness now affects your sight." }, { "Shield", "You are now shielded.", "You are no longer shielded." }, { "Force Shield", "You are surrounded by a force shield.", "Your force shield fades away." }, { "Mind Shield", "You are surrounded by a mind shield.", "Your mind shield fades away." }, { "Prime Shield", "You are surrounded by a prime shield.", "Your prime shield fades away." }, { "Spirit Shield", "You are surrounded by a spirit shield.", "Your spirit shield fades away." }, { "Mana Shield", "A blue shield surrounds your body.\n\r", "A blue shield fades from your body.\n\r" }, { "Charged Bolt", "", "" }, { "Shadowplane", "Your body becomes a shadow.\n\r", "You return to normal.\n\r" }, { "Spiritplane", "Your body becomes a spirit.\n\r", "You return to normal.\n\r" }, { "Shadowsight", "Your sight becomes a shadowed.\n\r", "Your sight returns to normal.\n\r" }, { "Slowtime", "Your body becomes lag.\n\r", "The lag frees your body.\n\r" }, { "Speedtime", "Your body becomes faster then light.\n\r", "You feel slow.\n\r" }, { "Flames of Purification", "The Flames of Pureification burn at your inner soul.\n\r","The flames around your soul are freed" }, { "Mist Poly", "You body becomes mist.\n\r","Your Body returns to normal.\n\r" }, { "Nightfall", "","The Nightfall around your body disappears.\n\r" }, { "Insane", "","Your feeling alot more sane.\n\r" }, { "Haunt", "","Your personal demons are gone. (For now)\n\r" }, { "Vanish","Your body dissapears in a shroud.\n\r","You start to see your skin as your shroud dissapears\n\r" }, { "Tainted","Your mind becomes tainted.\n\r","Your mind becomes clear and you can think again.\n\r" }, { "False Pride","You have a sence of pride in you!\n\r","You loose that sence of pride.\n\r"}, { "Night Sight","Your eyes become alive in the night sky.\n\r","Your eyes loose that alive feeling.\n\r" }, { "Cloak EQ", "Your eq dissapears.\n\r","Your eq appears instantly.\n\r"}, { "Regen", "You feel as if you have the healing power of Garou!\n\r","You have lost your regeneration ability.\n\r"}, { "Confuse Mind", "you feel confused.\n\r","You lost that confusion.\n\r"}, { "Square Circle", "You concentrait on paradox.. and how to not get it.\n\r","You stop concentrating.\n\r"}, { "Porcupine", "Long quill-like spines extend from your body.\n\r","The porcupine like quills retract from your body.\n\r"}, { "Bacchantes' Rage", "You feel the Bacchantes' Rage.\n\r","The rage leaves your body.\n\r"}, { "giftofspriggan", "You howl in rage as your body grows.\n\r","Your body shriks to normal.\n\r"}, { "lunasavenger", "Your body has a erie aura aournd you.\n\r","Your body turns to normal as you are no longer are protected by luna's avenger.\n\r"}, { "spiritsight", "Your eyes glows as you can now see the lands of the dead.\n\r","You can no longer notice spirits.\n\r"}, { "Detectinvis", "\n\r","You can no longer detect invisable things.\n\r"}, { "DetectMagic", "\n\r","You can no longer detect magic.\n\r"}, { "DetectHidden", "\n\r","You can no longer detect hidden things.\n\r"}, { "DetectEvil", "\n\r","You can no longer detect alignments.\n\r"}, { "", "", "" } }; /* * Attribute bonus tables. */ const struct str_app_type str_app [26] = { { -5, -4, 0, 0 }, /* 0 */ { -5, -4, 3, 1 }, /* 1 */ { -3, -2, 3, 2 }, { -3, -1, 10, 3 }, /* 3 */ { -2, -1, 25, 4 }, { -2, -1, 55, 5 }, /* 5 */ { -1, 0, 80, 6 }, { -1, 0, 90, 7 }, { 0, 0, 100, 8 }, { 0, 0, 100, 9 }, { 0, 0, 115, 10 }, /* 10 */ { 0, 0, 115, 11 }, { 0, 0, 140, 12 }, { 0, 0, 140, 13 }, /* 13 */ { 0, 1, 170, 14 }, { 1, 1, 170, 15 }, /* 15 */ { 1, 2, 195, 16 }, { 2, 3, 220, 22 }, { 2, 4, 250, 25 }, /* 18 */ { 3, 5, 400, 30 }, { 3, 6, 500, 35 }, /* 20 */ { 4, 7, 600, 40 }, { 5, 7, 700, 45 }, { 6, 8, 800, 50 }, { 8, 10, 900, 55 }, { 10, 12, 999, 60 } /* 25 */ }; const struct int_app_type int_app [26] = { { 1 }, /* 0 */ { 1 }, /* 1 */ { 1 }, { 1 }, /* 3 */ { 1 }, { 1 }, /* 5 */ { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, /* 10 */ { 1 }, { 1 }, { 2 }, { 2 }, { 2 }, /* 15 */ { 2 }, { 3 }, { 3 }, /* 18 */ { 3 }, { 4 }, /* 20 */ { 4 }, { 4 }, { 6 }, { 6 }, { 5 } /* 25 */ }; const struct wis_app_type wis_app [26] = { { 0 }, /* 0 */ { 0 }, /* 1 */ { 0 }, { 0 }, /* 3 */ { 0 }, { 1 }, /* 5 */ { 1 }, { 1 }, { 1 }, { 2 }, { 2 }, /* 10 */ { 2 }, { 2 }, { 2 }, { 2 }, { 3 }, /* 15 */ { 3 }, { 4 }, { 5 }, /* 18 */ { 5 }, { 5 }, /* 20 */ { 6 }, { 6 }, { 6 }, { 6 }, { 7 } /* 25 */ }; const struct dex_app_type dex_app [26] = { { 60 }, /* 0 */ { 50 }, /* 1 */ { 50 }, { 40 }, { 30 }, { 20 }, /* 5 */ { 10 }, { 0 }, { 0 }, { 0 }, { 0 }, /* 10 */ { 0 }, { 0 }, { 0 }, { 0 }, { - 10 }, /* 15 */ { - 15 }, { - 20 }, { - 30 }, { - 40 }, { - 50 }, /* 20 */ { - 60 }, { - 75 }, { - 90 }, { -105 }, { -120 } /* 25 */ }; const struct con_app_type con_app [26] = { { -4, 20 }, /* 0 */ { -3, 25 }, /* 1 */ { -2, 30 }, { -2, 35 }, /* 3 */ { -1, 40 }, { -1, 45 }, /* 5 */ { -1, 50 }, { 0, 55 }, { 0, 60 }, { 0, 65 }, { 0, 70 }, /* 10 */ { 0, 75 }, { 0, 80 }, { 0, 85 }, { 0, 88 }, { 1, 90 }, /* 15 */ { 2, 95 }, { 2, 97 }, { 3, 99 }, /* 18 */ { 3, 99 }, { 4, 99 }, /* 20 */ { 4, 99 }, { 5, 99 }, { 6, 99 }, { 7, 99 }, { 8, 99 } /* 25 */ };