/*************************************************************************** * STAR WARS REALITY 1.0 * *--------------------------------------------------------------------------* * Star Wars Reality Code Additions and changes from the Smaug Code * * copyright (c) 1997 by Sean Cooper * * -------------------------------------------------------------------------* * Starwars and Starwars Names copyright(c) Lucas Film Ltd. * *--------------------------------------------------------------------------* * SMAUG 1.0 (C) 1994, 1995, 1996 by Derek Snider * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, * * Scryn, Rennard, Swordbearer, Gorog, Grishnakh and Tricops * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * All SWR:SQL additions/modifications added by Rojan * * ------------------------------------------------------------------------ * * Table load/save Module * ****************************************************************************/ #include <time.h> #include <stdio.h> #include <string.h> #include "mud.h" /* global variables */ int top_sn; int top_herb; SKILLTYPE *skill_table[MAX_SKILL]; SKILLTYPE *herb_table[MAX_HERB]; char *const skill_tname[] = { "unknown", "Spell", "Skill", "Weapon", "Tongue", "Herb" }; SPELL_FUN *spell_function( char *name ) { if( !str_cmp( name, "spell_smaug" ) ) return spell_smaug; if( !str_cmp( name, "spell_acid_blast" ) ) return spell_acid_blast; if( !str_cmp( name, "spell_animate_dead" ) ) return spell_animate_dead; if( !str_cmp( name, "spell_astral_walk" ) ) return spell_astral_walk; if( !str_cmp( name, "spell_blindness" ) ) return spell_blindness; if( !str_cmp( name, "spell_burning_hands" ) ) return spell_burning_hands; if( !str_cmp( name, "spell_call_lightning" ) ) return spell_call_lightning; if( !str_cmp( name, "spell_cause_critical" ) ) return spell_cause_critical; if( !str_cmp( name, "spell_cause_light" ) ) return spell_cause_light; if( !str_cmp( name, "spell_cause_serious" ) ) return spell_cause_serious; if( !str_cmp( name, "spell_change_sex" ) ) return spell_change_sex; if( !str_cmp( name, "spell_charm_person" ) ) return spell_charm_person; if( !str_cmp( name, "spell_chill_touch" ) ) return spell_chill_touch; if( !str_cmp( name, "spell_colour_spray" ) ) return spell_colour_spray; if( !str_cmp( name, "spell_control_weather" ) ) return spell_control_weather; if( !str_cmp( name, "spell_create_food" ) ) return spell_create_food; if( !str_cmp( name, "spell_create_water" ) ) return spell_create_water; if( !str_cmp( name, "spell_cure_addiction" ) ) return spell_cure_addiction; if( !str_cmp( name, "spell_cure_blindness" ) ) return spell_cure_blindness; if( !str_cmp( name, "spell_cure_poison" ) ) return spell_cure_poison; if( !str_cmp( name, "spell_curse" ) ) return spell_curse; if( !str_cmp( name, "spell_detect_poison" ) ) return spell_detect_poison; if( !str_cmp( name, "spell_dispel_evil" ) ) return spell_dispel_evil; if( !str_cmp( name, "spell_dispel_magic" ) ) return spell_dispel_magic; if( !str_cmp( name, "spell_dream" ) ) return spell_dream; if( !str_cmp( name, "spell_earthquake" ) ) return spell_earthquake; if( !str_cmp( name, "spell_enchant_weapon" ) ) return spell_enchant_weapon; if( !str_cmp( name, "spell_energy_drain" ) ) return spell_energy_drain; if( !str_cmp( name, "spell_faerie_fire" ) ) return spell_faerie_fire; if( !str_cmp( name, "spell_faerie_fog" ) ) return spell_faerie_fog; if( !str_cmp( name, "spell_farsight" ) ) return spell_farsight; if( !str_cmp( name, "spell_fireball" ) ) return spell_fireball; if( !str_cmp( name, "spell_flamestrike" ) ) return spell_flamestrike; if( !str_cmp( name, "spell_gate" ) ) return spell_gate; if( !str_cmp( name, "spell_knock" ) ) return spell_knock; if( !str_cmp( name, "spell_harm" ) ) return spell_harm; if( !str_cmp( name, "spell_identify" ) ) return spell_identify; if( !str_cmp( name, "spell_invis" ) ) return spell_invis; if( !str_cmp( name, "spell_know_alignment" ) ) return spell_know_alignment; if( !str_cmp( name, "spell_lightning_bolt" ) ) return spell_lightning_bolt; if( !str_cmp( name, "spell_locate_object" ) ) return spell_locate_object; if( !str_cmp( name, "spell_magic_missile" ) ) return spell_magic_missile; if( !str_cmp( name, "spell_mist_walk" ) ) return spell_mist_walk; if( !str_cmp( name, "spell_pass_door" ) ) return spell_pass_door; if( !str_cmp( name, "spell_plant_pass" ) ) return spell_plant_pass; if( !str_cmp( name, "spell_poison" ) ) return spell_poison; if( !str_cmp( name, "spell_polymorph" ) ) return spell_polymorph; if( !str_cmp( name, "spell_possess" ) ) return spell_possess; if( !str_cmp( name, "spell_recharge" ) ) return spell_recharge; if( !str_cmp( name, "spell_remove_curse" ) ) return spell_remove_curse; if( !str_cmp( name, "spell_remove_invis" ) ) return spell_remove_invis; if( !str_cmp( name, "spell_remove_trap" ) ) return spell_remove_trap; if( !str_cmp( name, "spell_shocking_grasp" ) ) return spell_shocking_grasp; if( !str_cmp( name, "spell_sleep" ) ) return spell_sleep; if( !str_cmp( name, "spell_solar_flight" ) ) return spell_solar_flight; if( !str_cmp( name, "spell_suggest" ) ) return spell_suggest; if( !str_cmp( name, "spell_summon" ) ) return spell_summon; if( !str_cmp( name, "spell_teleport" ) ) return spell_teleport; if( !str_cmp( name, "spell_ventriloquate" ) ) return spell_ventriloquate; if( !str_cmp( name, "spell_weaken" ) ) return spell_weaken; if( !str_cmp( name, "spell_word_of_recall" ) ) return spell_word_of_recall; if( !str_cmp( name, "spell_acid_breath" ) ) return spell_acid_breath; if( !str_cmp( name, "spell_fire_breath" ) ) return spell_fire_breath; if( !str_cmp( name, "spell_frost_breath" ) ) return spell_frost_breath; if( !str_cmp( name, "spell_gas_breath" ) ) return spell_gas_breath; if( !str_cmp( name, "spell_lightning_breath" ) ) return spell_lightning_breath; if( !str_cmp( name, "spell_spiral_blast" ) ) return spell_spiral_blast; if( !str_cmp( name, "spell_scorching_surge" ) ) return spell_scorching_surge; if( !str_cmp( name, "spell_helical_flow" ) ) return spell_helical_flow; if( !str_cmp( name, "spell_transport" ) ) return spell_transport; if( !str_cmp( name, "spell_portal" ) ) return spell_portal; if( !str_cmp( name, "spell_ethereal_fist" ) ) return spell_ethereal_fist; if( !str_cmp( name, "spell_spectral_furor" ) ) return spell_spectral_furor; if( !str_cmp( name, "spell_hand_of_chaos" ) ) return spell_hand_of_chaos; if( !str_cmp( name, "spell_disruption" ) ) return spell_disruption; if( !str_cmp( name, "spell_sonic_resonance" ) ) return spell_sonic_resonance; if( !str_cmp( name, "spell_mind_wrack" ) ) return spell_mind_wrack; if( !str_cmp( name, "spell_mind_wrench" ) ) return spell_mind_wrench; if( !str_cmp( name, "spell_revive" ) ) return spell_revive; if( !str_cmp( name, "spell_sulfurous_spray" ) ) return spell_sulfurous_spray; if( !str_cmp( name, "spell_caustic_fount" ) ) return spell_caustic_fount; if( !str_cmp( name, "spell_acetum_primus" ) ) return spell_acetum_primus; if( !str_cmp( name, "spell_galvanic_whip" ) ) return spell_galvanic_whip; if( !str_cmp( name, "spell_magnetic_thrust" ) ) return spell_magnetic_thrust; if( !str_cmp( name, "spell_quantum_spike" ) ) return spell_quantum_spike; if( !str_cmp( name, "spell_black_hand" ) ) return spell_black_hand; if( !str_cmp( name, "spell_black_fist" ) ) return spell_black_fist; if( !str_cmp( name, "spell_black_lightning" ) ) return spell_black_lightning; if( !str_cmp( name, "spell_midas_touch" ) ) return spell_midas_touch; if( !str_cmp( name, "reserved" ) ) return NULL; if( !str_cmp( name, "spell_null" ) ) return spell_null; return spell_notfound; } /* DO_FUN *skill_function( char *name ) { switch ( name[3] ) { case 'a': if( !str_cmp( name, "do_aassign" ) ) return do_aassign; if( !str_cmp( name, "do_addbounty" ) ) return do_addbounty; if( !str_cmp( name, "do_addsenator" ) ) return do_addsenator; if( !str_cmp( name, "do_addpilot" ) ) return do_addpilot; if( !str_cmp( name, "do_add_patrol" ) ) return do_add_patrol; if( !str_cmp( name, "do_accelerate" ) ) return do_accelerate; if( !str_cmp( name, "do_advance" ) ) return do_advance; if( !str_cmp( name, "do_affected" ) ) return do_affected; if( !str_cmp( name, "do_afk" ) ) return do_afk; if( !str_cmp( name, "do_aid" ) ) return do_aid; if( !str_cmp( name, "do_allow" ) ) return do_allow; if( !str_cmp( name, "do_allships" ) ) return do_allships; if( !str_cmp( name, "do_allspeeders" ) ) return do_allspeeders; if( !str_cmp( name, "do_ammo" ) ) return do_ammo; if( !str_cmp( name, "do_ansi" ) ) return do_ansi; if( !str_cmp( name, "do_answer" ) ) return do_answer; if( !str_cmp( name, "do_apply" ) ) return do_apply; if( !str_cmp( name, "do_appraise" ) ) return do_appraise; if( !str_cmp( name, "do_appoint" ) ) return do_appoint; if( !str_cmp( name, "do_areas" ) ) return do_areas; if( !str_cmp( name, "do_arm" ) ) return do_arm; if( !str_cmp( name, "do_aset" ) ) return do_aset; if( !str_cmp( name, "do_ask" ) ) return do_ask; if( !str_cmp( name, "do_astat" ) ) return do_astat; if( !str_cmp( name, "do_at" ) ) return do_at; if( !str_cmp( name, "do_auction" ) ) return do_auction; if( !str_cmp( name, "do_authorize" ) ) return do_authorize; if( !str_cmp( name, "do_autorecharge" ) ) return do_autorecharge; if( !str_cmp( name, "do_autotrack" ) ) return do_autotrack; if( !str_cmp( name, "do_autopilot" ) ) return do_autopilot; if( !str_cmp( name, "do_avtalk" ) ) return do_avtalk; break; case 'b': if( !str_cmp( name, "do_backstab" ) ) return do_backstab; if( !str_cmp( name, "do_balzhur" ) ) return do_balzhur; if( !str_cmp( name, "do_bamfin" ) ) return do_bamfin; if( !str_cmp( name, "do_bamfout" ) ) return do_bamfout; if( !str_cmp( name, "do_ban" ) ) return do_ban; if( !str_cmp( name, "do_bank" ) ) return do_bank; if( !str_cmp( name, "do_bash" ) ) return do_bash; if( !str_cmp( name, "do_bashdoor" ) ) return do_bashdoor; if( !str_cmp( name, "do_beep" ) ) return do_beep; if( !str_cmp( name, "do_beg" ) ) return do_beg; if( !str_cmp( name, "do_berserk" ) ) return do_berserk; if( !str_cmp( name, "do_bestow" ) ) return do_bestow; if( !str_cmp( name, "do_bestowarea" ) ) return do_bestowarea; if( !str_cmp( name, "do_bio" ) ) return do_bio; if( !str_cmp( name, "do_board" ) ) return do_board; if( !str_cmp( name, "do_boards" ) ) return do_boards; if( !str_cmp( name, "do_bodybag" ) ) return do_bodybag; if( !str_cmp( name, "do_bomb" ) ) return do_bomb; if( !str_cmp( name, "do_bounties" ) ) return do_bounties; if( !str_cmp( name, "do_brandish" ) ) return do_brandish; if( !str_cmp( name, "do_brew" ) ) return do_brew; if( !str_cmp( name, "do_bribe" ) ) return do_bribe; if( !str_cmp( name, "do_bset" ) ) return do_bset; if( !str_cmp( name, "do_bstat" ) ) return do_bstat; if( !str_cmp( name, "do_bug" ) ) return do_bug; if( !str_cmp( name, "do_bury" ) ) return do_bury; if( !str_cmp( name, "do_buy" ) ) return do_buy; if( !str_cmp( name, "do_buyhome" ) ) return do_buyhome; if( !str_cmp( name, "do_buyship" ) ) return do_buyship; break; case 'c': if( !str_cmp( name, "do_calculate" ) ) return do_calculate; if( !str_cmp( name, "do_capture" ) ) return do_capture; if( !str_cmp( name, "do_cast" ) ) return do_cast; if( !str_cmp( name, "do_cedit" ) ) return do_cedit; if( !str_cmp( name, "do_chaff" ) ) return do_chaff; if( !str_cmp( name, "do_channels" ) ) return do_channels; if( !str_cmp( name, "do_chat" ) ) return do_chat; if( !str_cmp( name, "do_check_vnums" ) ) return do_check_vnums; if( !str_cmp( name, "do_circle" ) ) return do_circle; if( !str_cmp( name, "do_clans" ) ) return do_clans; if( !str_cmp( name, "do_clan_donate" ) ) return do_clan_donate; if( !str_cmp( name, "do_clan_withdraw" ) ) return do_clan_withdraw; if( !str_cmp( name, "do_clantalk" ) ) return do_clantalk; if( !str_cmp( name, "do_clanbuyship" ) ) return do_clanbuyship; if( !str_cmp( name, "do_climb" ) ) return do_climb; if( !str_cmp( name, "do_close" ) ) return do_close; if( !str_cmp( name, "do_clone" ) ) return do_clone; if( !str_cmp( name, "do_closebay" ) ) return do_closebay; if( !str_cmp( name, "do_closehatch" ) ) return do_closehatch; if( !str_cmp( name, "do_cmdtable" ) ) return do_cmdtable; if( !str_cmp( name, "do_color" ) ) return do_color; if( !str_cmp( name, "do_commands" ) ) return do_commands; if( !str_cmp( name, "do_comment" ) ) return do_comment; if( !str_cmp( name, "do_compare" ) ) return do_compare; if( !str_cmp( name, "do_compress" ) ) return do_compress; if( !str_cmp( name, "do_config" ) ) return do_config; if( !str_cmp( name, "do_consider" ) ) return do_consider; if( !str_cmp( name, "do_copyship" ) ) return do_copyship; if( !str_cmp( name, "do_credits" ) ) return do_credits; if( !str_cmp( name, "do_cset" ) ) return do_cset; break; case 'd': if( !str_cmp( name, "do_demote" ) ) return do_demote; if( !str_cmp( name, "do_deny" ) ) return do_deny; if( !str_cmp( name, "do_description" ) ) return do_description; if( !str_cmp( name, "do_destro" ) ) return do_destro; if( !str_cmp( name, "do_destroy" ) ) return do_destroy; if( !str_cmp( name, "do_detrap" ) ) return do_detrap; if( !str_cmp( name, "do_dig" ) ) return do_dig; if( !str_cmp( name, "do_disarm" ) ) return do_disarm; if( !str_cmp( name, "do_disconnect" ) ) return do_disconnect; if( !str_cmp( name, "do_disguise" ) ) return do_disguise; if( !str_cmp( name, "do_dismount" ) ) return do_dismount; if( !str_cmp( name, "do_dmesg" ) ) return do_dmesg; if( !str_cmp( name, "do_down" ) ) return do_down; if( !str_cmp( name, "do_drag" ) ) return do_drag; if( !str_cmp( name, "do_drink" ) ) return do_drink; if( !str_cmp( name, "do_drive" ) ) return do_drive; if( !str_cmp( name, "do_drop" ) ) return do_drop; break; case 'e': if( !str_cmp( name, "do_east" ) ) return do_east; if( !str_cmp( name, "do_eat" ) ) return do_eat; if( !str_cmp( name, "do_echo" ) ) return do_echo; if( !str_cmp( name, "do_elite_guard" ) ) return do_elite_guard; if( !str_cmp( name, "do_emote" ) ) return do_emote; if( !str_cmp( name, "do_empty" ) ) return do_empty; if( !str_cmp( name, "do_empower" ) ) return do_empower; if( !str_cmp( name, "do_enlist" ) ) return do_enlist; if( !str_cmp( name, "do_enter" ) ) return do_enter; if( !str_cmp( name, "do_equipment" ) ) return do_equipment; if( !str_cmp( name, "do_examine" ) ) return do_examine; if( !str_cmp( name, "do_exits" ) ) return do_exits; break; case 'f': if( !str_cmp( name, "do_feed" ) ) return do_feed; if( !str_cmp( name, "do_fill" ) ) return do_fill; if( !str_cmp( name, "do_fire" ) ) return do_fire; if( !str_cmp( name, "do_first_aid" ) ) return do_first_aid; if( !str_cmp( name, "do_fixchar" ) ) return do_fixchar; if( !str_cmp( name, "do_flee" ) ) return do_flee; if( !str_cmp( name, "do_fly" ) ) return do_fly; if( !str_cmp( name, "do_foldarea" ) ) return do_foldarea; if( !str_cmp( name, "do_follow" ) ) return do_follow; if( !str_cmp( name, "do_for" ) ) return do_for; if( !str_cmp( name, "do_force" ) ) return do_force; if( !str_cmp( name, "do_forceclose" ) ) return do_forceclose; if( !str_cmp( name, "do_form_password" ) ) return do_form_password; if( !str_cmp( name, "do_fquit" ) ) return do_fquit; if( !str_cmp( name, "do_freeze" ) ) return do_freeze; break; case 'g': if( !str_cmp( name, "do_gather_intelligence" ) ) return do_gather_intelligence; if( !str_cmp( name, "do_get" ) ) return do_get; if( !str_cmp( name, "do_gemcutting" ) ) return do_gemcutting; if( !str_cmp( name, "do_give" ) ) return do_give; if( !str_cmp( name, "do_glance" ) ) return do_glance; if( !str_cmp( name, "do_gold" ) ) return do_gold; if( !str_cmp( name, "do_goto" ) ) return do_goto; if( !str_cmp( name, "do_gouge" ) ) return do_gouge; if( !str_cmp( name, "do_group" ) ) return do_group; if( !str_cmp( name, "do_gtell" ) ) return do_gtell; if( !str_cmp( name, "do_guilds" ) ) return do_guilds; if( !str_cmp( name, "do_guildtalk" ) ) return do_guildtalk; break; case 'h': if( !str_cmp( name, "do_hail" ) ) return do_hail; if( !str_cmp( name, "do_hedit" ) ) return do_hedit; if( !str_cmp( name, "do_hell" ) ) return do_hell; if( !str_cmp( name, "do_help" ) ) return do_help; if( !str_cmp( name, "do_hide" ) ) return do_hide; if( !str_cmp( name, "do_hijack" ) ) return do_hijack; if( !str_cmp( name, "do_hitall" ) ) return do_hitall; if( !str_cmp( name, "do_hlist" ) ) return do_hlist; if( !str_cmp( name, "do_holylight" ) ) return do_holylight; if( !str_cmp( name, "do_homepage" ) ) return do_homepage; if( !str_cmp( name, "do_hotboot" ) ) return do_hotboot; if( !str_cmp( name, "do_hset" ) ) return do_hset; if( !str_cmp( name, "do_hyperspace" ) ) return do_hyperspace; break; case 'i': if( !str_cmp( name, "do_i103" ) ) return do_i103; if( !str_cmp( name, "do_i104" ) ) return do_i104; if( !str_cmp( name, "do_i105" ) ) return do_i105; if( !str_cmp( name, "do_ide" ) ) return do_ide; if( !str_cmp( name, "do_idea" ) ) return do_idea; if( !str_cmp( name, "do_immortalize" ) ) return do_immortalize; if( !str_cmp( name, "do_immtalk" ) ) return do_immtalk; if( !str_cmp( name, "do_info" ) ) return do_info; if( !str_cmp( name, "do_induct" ) ) return do_induct; if( !str_cmp( name, "do_installarea" ) ) return do_installarea; if( !str_cmp( name, "do_instaroom" ) ) return do_instaroom; if( !str_cmp( name, "do_instazone" ) ) return do_instazone; if( !str_cmp( name, "do_inventory" ) ) return do_inventory; if( !str_cmp( name, "do_invis" ) ) return do_invis; break; case 'j': if( !str_cmp( name, "do_jumpvector" ) ) return do_jumpvector; if( !str_cmp( name, "do_jail" ) ) return do_jail; break; case 'k': if( !str_cmp( name, "do_kick" ) ) return do_kick; if( !str_cmp( name, "do_kill" ) ) return do_kill; break; case 'l': if( !str_cmp( name, "do_languages" ) ) return do_languages; if( !str_cmp( name, "do_last" ) ) return do_last; if( !str_cmp( name, "do_land" ) ) return do_land; if( !str_cmp( name, "do_launch" ) ) return do_launch; if( !str_cmp( name, "do_leave" ) ) return do_leave; if( !str_cmp( name, "do_leaveship" ) ) return do_leaveship; if( !str_cmp( name, "do_level" ) ) return do_level; if( !str_cmp( name, "do_light" ) ) return do_light; if( !str_cmp( name, "do_list" ) ) return do_list; if( !str_cmp( name, "do_litterbug" ) ) return do_litterbug; if( !str_cmp( name, "do_loadarea" ) ) return do_loadarea; if( !str_cmp( name, "do_loadup" ) ) return do_loadup; if( !str_cmp( name, "do_lock" ) ) return do_lock; if( !str_cmp( name, "do_log" ) ) return do_log; if( !str_cmp( name, "do_look" ) ) return do_look; if( !str_cmp( name, "do_low_purge" ) ) return do_low_purge; break; case 'm': if( !str_cmp( name, "do_mailroom" ) ) return do_mailroom; if( !str_cmp( name, "do_make" ) ) return do_make; if( !str_cmp( name, "do_makearmor" ) ) return do_makearmor; if( !str_cmp( name, "do_makeblade" ) ) return do_makeblade; if( !str_cmp( name, "do_makeblaster" ) ) return do_makeblaster; if( !str_cmp( name, "do_makelightsaber" ) ) return do_makelightsaber; if( !str_cmp( name, "do_makespice" ) ) return do_makespice; if( !str_cmp( name, "do_makegrenade" ) ) return do_makegrenade; if( !str_cmp( name, "do_makelight" ) ) return do_makelight; if( !str_cmp( name, "do_makelandmine" ) ) return do_makelandmine; if( !str_cmp( name, "do_makecomlink" ) ) return do_makecomlink; if( !str_cmp( name, "do_makeshield" ) ) return do_makeshield; if( !str_cmp( name, "do_makecontainer" ) ) return do_makecontainer; if( !str_cmp( name, "do_makejewelry" ) ) return do_makejewelry; if( !str_cmp( name, "do_makeboard" ) ) return do_makeboard; if( !str_cmp( name, "do_makeclan" ) ) return do_makeclan; if( !str_cmp( name, "do_makeship" ) ) return do_makeship; if( !str_cmp( name, "do_makerepair" ) ) return do_makerepair; if( !str_cmp( name, "do_makeshop" ) ) return do_makeshop; if( !str_cmp( name, "do_makestarsystem" ) ) return do_makestarsystem; if( !str_cmp( name, "do_makewizlist" ) ) return do_makewizlist; if( !str_cmp( name, "do_makeplanet" ) ) return do_makeplanet; if( !str_cmp( name, "do_mass_propeganda" ) ) return do_mass_propeganda; if( !str_cmp( name, "do_mcreate" ) ) return do_mcreate; if( !str_cmp( name, "do_mdelete" ) ) return do_mdelete; if( !str_cmp( name, "do_memory" ) ) return do_memory; if( !str_cmp( name, "do_mfind" ) ) return do_mfind; if( !str_cmp( name, "do_minvoke" ) ) return do_minvoke; if( !str_cmp( name, "do_mine" ) ) return do_mine; if( !str_cmp( name, "do_mlist" ) ) return do_mlist; if( !str_cmp( name, "do_mount" ) ) return do_mount; if( !str_cmp( name, "do_mp_close_passage" ) ) return do_mp_close_passage; if( !str_cmp( name, "do_mp_damage" ) ) return do_mp_damage; if( !str_cmp( name, "do_mp_deposit" ) ) return do_mp_deposit; if( !str_cmp( name, "do_mp_open_passage" ) ) return do_mp_open_passage; if( !str_cmp( name, "do_mp_practice" ) ) return do_mp_practice; if( !str_cmp( name, "do_mp_restore" ) ) return do_mp_restore; if( !str_cmp( name, "do_mp_slay" ) ) return do_mp_slay; if( !str_cmp( name, "do_mp_withdraw" ) ) return do_mp_withdraw; if( !str_cmp( name, "do_mpadvance" ) ) return do_mpadvance; if( !str_cmp( name, "do_mpapply" ) ) return do_mpapply; if( !str_cmp( name, "do_mpapplyb" ) ) return do_mpapplyb; if( !str_cmp( name, "do_mpasound" ) ) return do_mpasound; if( !str_cmp( name, "do_mpat" ) ) return do_mpat; if( !str_cmp( name, "do_mpdream" ) ) return do_mpdream; if( !str_cmp( name, "do_mpecho" ) ) return do_mpecho; if( !str_cmp( name, "do_mpechoaround" ) ) return do_mpechoaround; if( !str_cmp( name, "do_mpechoat" ) ) return do_mpechoat; if( !str_cmp( name, "do_mpedit" ) ) return do_mpedit; if( !str_cmp( name, "do_mpgain" ) ) return do_mpgain; if( !str_cmp( name, "do_mpforce" ) ) return do_mpforce; if( !str_cmp( name, "do_mpgoto" ) ) return do_mpgoto; if( !str_cmp( name, "do_mpinvis" ) ) return do_mpinvis; if( !str_cmp( name, "do_mpjunk" ) ) return do_mpjunk; if( !str_cmp( name, "do_mpkill" ) ) return do_mpkill; if( !str_cmp( name, "do_mpmload" ) ) return do_mpmload; if( !str_cmp( name, "do_mpnothing" ) ) return do_mpnothing; if( !str_cmp( name, "do_mpoload" ) ) return do_mpoload; if( !str_cmp( name, "do_mppkset" ) ) return do_mppkset; if( !str_cmp( name, "do_mppurge" ) ) return do_mppurge; if( !str_cmp( name, "do_mpstat" ) ) return do_mpstat; if( !str_cmp( name, "do_mptransfer" ) ) return do_mptransfer; if( !str_cmp( name, "do_mrange" ) ) return do_mrange; if( !str_cmp( name, "do_mset" ) ) return do_mset; if( !str_cmp( name, "do_mstat" ) ) return do_mstat; if( !str_cmp( name, "do_murde" ) ) return do_murde; if( !str_cmp( name, "do_murder" ) ) return do_murder; if( !str_cmp( name, "do_music" ) ) return do_music; if( !str_cmp( name, "do_mwhere" ) ) return do_mwhere; break; case 'n': if( !str_cmp( name, "do_name" ) ) return do_name; if( !str_cmp( name, "do_newbiechat" ) ) return do_newbiechat; if( !str_cmp( name, "do_newbieset" ) ) return do_newbieset; if( !str_cmp( name, "do_newclan" ) ) return do_newclan; if( !str_cmp( name, "do_newzones" ) ) return do_newzones; if( !str_cmp( name, "do_noemote" ) ) return do_noemote; if( !str_cmp( name, "do_noresolve" ) ) return do_noresolve; if( !str_cmp( name, "do_north" ) ) return do_north; if( !str_cmp( name, "do_northeast" ) ) return do_northeast; if( !str_cmp( name, "do_northwest" ) ) return do_northwest; if( !str_cmp( name, "do_notell" ) ) return do_notell; if( !str_cmp( name, "do_notitle" ) ) return do_notitle; if( !str_cmp( name, "do_noteroom" ) ) return do_noteroom; break; case 'o': if( !str_cmp( name, "do_ocreate" ) ) return do_ocreate; if( !str_cmp( name, "do_odelete" ) ) return do_odelete; if( !str_cmp( name, "do_ofind" ) ) return do_ofind; * if ( !str_cmp( name, "do_ogrub" )) return do_ogrub; * if( !str_cmp( name, "do_oinvoke" ) ) return do_oinvoke; if( !str_cmp( name, "do_oldscore" ) ) return do_oldscore; if( !str_cmp( name, "do_olist" ) ) return do_olist; if( !str_cmp( name, "do_ooc" ) ) return do_ooc; if( !str_cmp( name, "do_opedit" ) ) return do_opedit; if( !str_cmp( name, "do_open" ) ) return do_open; if( !str_cmp( name, "do_openbay" ) ) return do_openbay; if( !str_cmp( name, "do_openhatch" ) ) return do_openhatch; * if ( !str_cmp( name, "do_opentourney" )) return do_opentourney; * if( !str_cmp( name, "do_opstat" ) ) return do_opstat; if( !str_cmp( name, "do_orange" ) ) return do_orange; if( !str_cmp( name, "do_order" ) ) return do_order; if( !str_cmp( name, "do_orders" ) ) return do_orders; if( !str_cmp( name, "do_ordertalk" ) ) return do_ordertalk; if( !str_cmp( name, "do_oset" ) ) return do_oset; if( !str_cmp( name, "do_ostat" ) ) return do_ostat; if( !str_cmp( name, "do_outcast" ) ) return do_outcast; if( !str_cmp( name, "do_owhere" ) ) return do_owhere; break; case 'p': if( !str_cmp( name, "do_pager" ) ) return do_pager; if( !str_cmp( name, "do_pcrename" ) ) return do_pcrename; if( !str_cmp( name, "do_pardon" ) ) return do_pardon; if( !str_cmp( name, "do_password" ) ) return do_password; if( !str_cmp( name, "do_peace" ) ) return do_peace; if( !str_cmp( name, "do_pick" ) ) return do_pick; if( !str_cmp( name, "do_pickshiplock" ) ) return do_pickshiplock; if( !str_cmp( name, "do_planets" ) ) return do_planets; if( !str_cmp( name, "do_pluogus" ) ) return do_pluogus; if( !str_cmp( name, "do_poison_weapon" ) ) return do_poison_weapon; if( !str_cmp( name, "do_postguard" ) ) return do_postguard; if( !str_cmp( name, "do_practice" ) ) return do_practice; if( !str_cmp( name, "do_prompt" ) ) return do_prompt; if( !str_cmp( name, "do_propeganda" ) ) return do_propeganda; if( !str_cmp( name, "do_pull" ) ) return do_pull; if( !str_cmp( name, "do_punch" ) ) return do_punch; if( !str_cmp( name, "do_purge" ) ) return do_purge; if( !str_cmp( name, "do_push" ) ) return do_push; if( !str_cmp( name, "do_put" ) ) return do_put; break; case 'q': if( !str_cmp( name, "do_quaff" ) ) return do_quaff; if( !str_cmp( name, "do_quest" ) ) return do_quest; if( !str_cmp( name, "do_qui" ) ) return do_qui; if( !str_cmp( name, "do_quit" ) ) return do_quit; break; case 'r': if( !str_cmp( name, "do_radar" ) ) return do_radar; if( !str_cmp( name, "do_rank" ) ) return do_rank; if( !str_cmp( name, "do_rat" ) ) return do_rat; if( !str_cmp( name, "do_rdelete" ) ) return do_rdelete; if( !str_cmp( name, "do_reboo" ) ) return do_reboo; if( !str_cmp( name, "do_reboot" ) ) return do_reboot; if( !str_cmp( name, "do_recharge" ) ) return do_recharge; if( !str_cmp( name, "do_recho" ) ) return do_recho; if( !str_cmp( name, "do_recall" ) ) return do_recall; if( !str_cmp( name, "do_recite" ) ) return do_recite; if( !str_cmp( name, "do_recite" ) ) return do_recite; if( !str_cmp( name, "do_redit" ) ) return do_redit; if( !str_cmp( name, "do_refuel" ) ) return do_refuel; if( !str_cmp( name, "do_reinforcements" ) ) return do_reinforcements; if( !str_cmp( name, "do_regoto" ) ) return do_regoto; if( !str_cmp( name, "do_reload" ) ) return do_reload; if( !str_cmp( name, "do_remove" ) ) return do_remove; if( !str_cmp( name, "do_rempilot" ) ) return do_rempilot; if( !str_cmp( name, "do_remsenator" ) ) return do_remsenator; if( !str_cmp( name, "do_rent" ) ) return do_rent; if( !str_cmp( name, "do_repair" ) ) return do_repair; if( !str_cmp( name, "do_repairset" ) ) return do_repairset; if( !str_cmp( name, "do_repairship" ) ) return do_repairship; if( !str_cmp( name, "do_repairshops" ) ) return do_repairshops; if( !str_cmp( name, "do_repairstat" ) ) return do_repairstat; if( !str_cmp( name, "do_reply" ) ) return do_reply; if( !str_cmp( name, "do_report" ) ) return do_report; if( !str_cmp( name, "do_rescue" ) ) return do_rescue; if( !str_cmp( name, "do_reset" ) ) return do_reset; if( !str_cmp( name, "do_resetship" ) ) return do_resetship; if( !str_cmp( name, "do_resign" ) ) return do_resign; if( !str_cmp( name, "do_rest" ) ) return do_rest; if( !str_cmp( name, "do_restore" ) ) return do_restore; if( !str_cmp( name, "do_restoretime" ) ) return do_restoretime; if( !str_cmp( name, "do_restrict" ) ) return do_restrict; if( !str_cmp( name, "do_retire" ) ) return do_retire; if( !str_cmp( name, "do_retran" ) ) return do_retran; if( !str_cmp( name, "do_return" ) ) return do_return; if( !str_cmp( name, "do_revert" ) ) return do_revert; if( !str_cmp( name, "do_rip" ) ) return do_rip; if( !str_cmp( name, "do_rlist" ) ) return do_rlist; if( !str_cmp( name, "do_rpedit" ) ) return do_rpedit; if( !str_cmp( name, "do_rpstat" ) ) return do_rpstat; if( !str_cmp( name, "do_rset" ) ) return do_rset; if( !str_cmp( name, "do_rstat" ) ) return do_rstat; break; case 's': if( !str_cmp( name, "do_sacrifice" ) ) return do_sacrifice; if( !str_cmp( name, "do_save" ) ) return do_save; if( !str_cmp( name, "do_savearea" ) ) return do_savearea; if( !str_cmp( name, "do_say" ) ) return do_say; if( !str_cmp( name, "do_scan" ) ) return do_scan; if( !str_cmp( name, "do_score" ) ) return do_score; if( !str_cmp( name, "do_scribe" ) ) return do_scribe; if( !str_cmp( name, "do_search" ) ) return do_search; if( !str_cmp( name, "do_sedit" ) ) return do_sedit; if( !str_cmp( name, "do_seduce" ) ) return do_seduce; if( !str_cmp( name, "do_sell" ) ) return do_sell; if( !str_cmp( name, "do_sellship" ) ) return do_sellship; if( !str_cmp( name, "do_senate" ) ) return do_senate; if( !str_cmp( name, "do_setblaster" ) ) return do_setblaster; if( !str_cmp( name, "do_set_boot_time" ) ) return do_set_boot_time; if( !str_cmp( name, "do_setclan" ) ) return do_setclan; if( !str_cmp( name, "do_setship" ) ) return do_setship; if( !str_cmp( name, "do_setstarsystem" ) ) return do_setstarsystem; if( !str_cmp( name, "do_setplanet" ) ) return do_setplanet; if( !str_cmp( name, "do_ships" ) ) return do_ships; if( !str_cmp( name, "do_shops" ) ) return do_shops; if( !str_cmp( name, "do_shopset" ) ) return do_shopset; if( !str_cmp( name, "do_shopstat" ) ) return do_shopstat; if( !str_cmp( name, "do_shout" ) ) return do_shout; if( !str_cmp( name, "do_shove" ) ) return do_shove; if( !str_cmp( name, "do_showclan" ) ) return do_showclan; if( !str_cmp( name, "do_showship" ) ) return do_showship; if( !str_cmp( name, "do_showstarsystem" ) ) return do_showstarsystem; if( !str_cmp( name, "do_shutdow" ) ) return do_shutdow; if( !str_cmp( name, "do_shutdown" ) ) return do_shutdown; if( !str_cmp( name, "do_silence" ) ) return do_silence; if( !str_cmp( name, "do_sit" ) ) return do_sit; if( !str_cmp( name, "do_sla" ) ) return do_sla; if( !str_cmp( name, "do_slay" ) ) return do_slay; if( !str_cmp( name, "do_sleep" ) ) return do_sleep; if( !str_cmp( name, "do_slice" ) ) return do_slice; if( !str_cmp( name, "do_slist" ) ) return do_slist; if( !str_cmp( name, "do_slookup" ) ) return do_slookup; if( !str_cmp( name, "do_smalltalk" ) ) return do_smalltalk; if( !str_cmp( name, "do_smoke" ) ) return do_smoke; if( !str_cmp( name, "do_snipe" ) ) return do_snipe; if( !str_cmp( name, "do_snoop" ) ) return do_snoop; if( !str_cmp( name, "do_sober" ) ) return do_sober; if( !str_cmp( name, "do_socials" ) ) return do_socials; if( !str_cmp( name, "do_south" ) ) return do_south; if( !str_cmp( name, "do_sound" ) ) return do_sound; if( !str_cmp( name, "do_southeast" ) ) return do_southeast; if( !str_cmp( name, "do_southwest" ) ) return do_southwest; if( !str_cmp( name, "do_speak" ) ) return do_speak; if( !str_cmp( name, "do_speeders" ) ) return do_speeders; if( !str_cmp( name, "do_split" ) ) return do_split; if( !str_cmp( name, "do_sset" ) ) return do_sset; if( !str_cmp( name, "do_stand" ) ) return do_stand; if( !str_cmp( name, "do_starsystems" ) ) return do_starsystems; if( !str_cmp( name, "do_status" ) ) return do_status; if( !str_cmp( name, "do_steal" ) ) return do_steal; if( !str_cmp( name, "do_stun" ) ) return do_stun; if( !str_cmp( name, "do_switch" ) ) return do_switch; if( !str_cmp( name, "do_shiptalk" ) ) return do_shiptalk; if( !str_cmp( name, "do_spacetalk" ) ) return do_spacetalk; if( !str_cmp( name, "do_special_forces" ) ) return do_special_forces; if( !str_cmp( name, "do_suicide" ) ) return do_suicide; if( !str_cmp( name, "do_systemtalk" ) ) return do_systemtalk; break; case 't': if( !str_cmp( name, "do_takedrug" ) ) return do_takedrug; if( !str_cmp( name, "do_tamp" ) ) return do_tamp; if( !str_cmp( name, "do_target" ) ) return do_target; if( !str_cmp( name, "do_teach" ) ) return do_teach; if( !str_cmp( name, "do_tell" ) ) return do_tell; if( !str_cmp( name, "do_throw" ) ) return do_throw; if( !str_cmp( name, "do_time" ) ) return do_time; if( !str_cmp( name, "do_timecmd" ) ) return do_timecmd; if( !str_cmp( name, "do_title" ) ) return do_title; if( !str_cmp( name, "do_torture" ) ) return do_torture; if( !str_cmp( name, "do_track" ) ) return do_track; if( !str_cmp( name, "do_tractorbeam" ) ) return do_tractorbeam; if( !str_cmp( name, "do_train" ) ) return do_train; if( !str_cmp( name, "do_trajectory" ) ) return do_trajectory; if( !str_cmp( name, "do_transfer" ) ) return do_transfer; if( !str_cmp( name, "do_transship" ) ) return do_transship; if( !str_cmp( name, "do_trust" ) ) return do_trust; if( !str_cmp( name, "do_typo" ) ) return do_typo; break; case 'u': if( !str_cmp( name, "do_unfoldarea" ) ) return do_unfoldarea; if( !str_cmp( name, "do_unhell" ) ) return do_unhell; if( !str_cmp( name, "do_unlock" ) ) return do_unlock; if( !str_cmp( name, "do_unsilence" ) ) return do_unsilence; if( !str_cmp( name, "do_up" ) ) return do_up; if( !str_cmp( name, "do_use" ) ) return do_use; if( !str_cmp( name, "do_users" ) ) return do_users; break; case 'v': if( !str_cmp( name, "do_value" ) ) return do_value; if( !str_cmp( name, "do_vassign" ) ) return do_vassign; if( !str_cmp( name, "do_visible" ) ) return do_visible; if( !str_cmp( name, "do_vnums" ) ) return do_vnums; if( !str_cmp( name, "do_vsearch" ) ) return do_vsearch; break; case 'w': if( !str_cmp( name, "do_wake" ) ) return do_wake; if( !str_cmp( name, "do_wartalk" ) ) return do_wartalk; if( !str_cmp( name, "do_wear" ) ) return do_wear; if( !str_cmp( name, "do_weather" ) ) return do_weather; if( !str_cmp( name, "do_west" ) ) return do_west; if( !str_cmp( name, "do_where" ) ) return do_where; if( !str_cmp( name, "do_who" ) ) return do_who; if( !str_cmp( name, "do_whois" ) ) return do_whois; if( !str_cmp( name, "do_wimpy" ) ) return do_wimpy; if( !str_cmp( name, "do_wizhelp" ) ) return do_wizhelp; if( !str_cmp( name, "do_wizlist" ) ) return do_wizlist; if( !str_cmp( name, "do_wizlock" ) ) return do_wizlock; break; case 'y': if( !str_cmp( name, "do_yell" ) ) return do_yell; break; case 'z': if( !str_cmp( name, "do_zap" ) ) return do_zap; if( !str_cmp( name, "do_zones" ) ) return do_zones; } return skill_notfound; } */ DO_FUN *skill_function( char *name ) { switch( name[3] ) { #include "stab2.h" } return skill_notfound; } char *spell_name( SPELL_FUN * spell ) { if( spell == spell_smaug ) return "spell_smaug"; if( spell == spell_acid_blast ) return "spell_acid_blast"; if( spell == spell_animate_dead ) return "spell_animate_dead"; if( spell == spell_astral_walk ) return "spell_astral_walk"; if( spell == spell_blindness ) return "spell_blindness"; if( spell == spell_burning_hands ) return "spell_burning_hands"; if( spell == spell_call_lightning ) return "spell_call_lightning"; if( spell == spell_cause_critical ) return "spell_cause_critical"; if( spell == spell_cause_light ) return "spell_cause_light"; if( spell == spell_cause_serious ) return "spell_cause_serious"; if( spell == spell_change_sex ) return "spell_change_sex"; if( spell == spell_charm_person ) return "spell_charm_person"; if( spell == spell_chill_touch ) return "spell_chill_touch"; if( spell == spell_colour_spray ) return "spell_colour_spray"; if( spell == spell_control_weather ) return "spell_control_weather"; if( spell == spell_create_food ) return "spell_create_food"; if( spell == spell_create_water ) return "spell_create_water"; if( spell == spell_cure_blindness ) return "spell_cure_blindness"; if( spell == spell_cure_poison ) return "spell_cure_poison"; if( spell == spell_curse ) return "spell_curse"; if( spell == spell_detect_poison ) return "spell_detect_poison"; if( spell == spell_dispel_evil ) return "spell_dispel_evil"; if( spell == spell_dispel_magic ) return "spell_dispel_magic"; if( spell == spell_dream ) return "spell_dream"; if( spell == spell_earthquake ) return "spell_earthquake"; if( spell == spell_enchant_weapon ) return "spell_enchant_weapon"; if( spell == spell_energy_drain ) return "spell_energy_drain"; if( spell == spell_faerie_fire ) return "spell_faerie_fire"; if( spell == spell_faerie_fog ) return "spell_faerie_fog"; if( spell == spell_farsight ) return "spell_farsight"; if( spell == spell_fireball ) return "spell_fireball"; if( spell == spell_flamestrike ) return "spell_flamestrike"; if( spell == spell_gate ) return "spell_gate"; if( spell == spell_knock ) return "spell_knock"; if( spell == spell_harm ) return "spell_harm"; if( spell == spell_identify ) return "spell_identify"; if( spell == spell_invis ) return "spell_invis"; if( spell == spell_know_alignment ) return "spell_know_alignment"; if( spell == spell_lightning_bolt ) return "spell_lightning_bolt"; if( spell == spell_locate_object ) return "spell_locate_object"; if( spell == spell_magic_missile ) return "spell_magic_missile"; if( spell == spell_mist_walk ) return "spell_mist_walk"; if( spell == spell_pass_door ) return "spell_pass_door"; if( spell == spell_plant_pass ) return "spell_plant_pass"; if( spell == spell_poison ) return "spell_poison"; if( spell == spell_polymorph ) return "spell_polymorph"; if( spell == spell_possess ) return "spell_possess"; if( spell == spell_recharge ) return "spell_recharge"; if( spell == spell_remove_curse ) return "spell_remove_curse"; if( spell == spell_remove_invis ) return "spell_remove_invis"; if( spell == spell_remove_trap ) return "spell_remove_trap"; if( spell == spell_shocking_grasp ) return "spell_shocking_grasp"; if( spell == spell_sleep ) return "spell_sleep"; if( spell == spell_solar_flight ) return "spell_solar_flight"; if( spell == spell_summon ) return "spell_summon"; if( spell == spell_teleport ) return "spell_teleport"; if( spell == spell_ventriloquate ) return "spell_ventriloquate"; if( spell == spell_weaken ) return "spell_weaken"; if( spell == spell_word_of_recall ) return "spell_word_of_recall"; if( spell == spell_acid_breath ) return "spell_acid_breath"; if( spell == spell_fire_breath ) return "spell_fire_breath"; if( spell == spell_frost_breath ) return "spell_frost_breath"; if( spell == spell_gas_breath ) return "spell_gas_breath"; if( spell == spell_lightning_breath ) return "spell_lightning_breath"; if( spell == spell_spiral_blast ) return "spell_spiral_blast"; if( spell == spell_scorching_surge ) return "spell_scorching_surge"; if( spell == spell_helical_flow ) return "spell_helical_flow"; if( spell == spell_transport ) return "spell_transport"; if( spell == spell_portal ) return "spell_portal"; if( spell == spell_suggest ) return "spell_suggest"; if( spell == spell_cure_addiction ) return "spell_cure_addiction"; if( spell == spell_ethereal_fist ) return "spell_ethereal_fist"; if( spell == spell_spectral_furor ) return "spell_spectral_furor"; if( spell == spell_hand_of_chaos ) return "spell_hand_of_chaos"; if( spell == spell_disruption ) return "spell_disruption"; if( spell == spell_sonic_resonance ) return "spell_sonic_resonance"; if( spell == spell_mind_wrack ) return "spell_mind_wrack"; if( spell == spell_mind_wrench ) return "spell_mind_wrench"; if( spell == spell_revive ) return "spell_revive"; if( spell == spell_sulfurous_spray ) return "spell_sulfurous_spray"; if( spell == spell_caustic_fount ) return "spell_caustic_fount"; if( spell == spell_acetum_primus ) return "spell_acetum_primus"; if( spell == spell_galvanic_whip ) return "spell_galvanic_whip"; if( spell == spell_magnetic_thrust ) return "spell_magnetic_thrust"; if( spell == spell_quantum_spike ) return "spell_quantum_spike"; if( spell == spell_black_hand ) return "spell_black_hand"; if( spell == spell_black_fist ) return "spell_black_fist"; if( spell == spell_black_lightning ) return "spell_black_lightning"; if( spell == spell_midas_touch ) return "spell_midas_touch"; if( spell == spell_null ) return "spell_null"; return "reserved"; } /* char *skill_name( DO_FUN * skill ) { if( skill == do_i103 ) return "do_i103"; if( skill == do_i104 ) return "do_i104"; if( skill == do_i105 ) return "do_i105"; if( skill == do_teach ) return "do_teach"; if( skill == do_gather_intelligence ) return "do_gather_intellingence"; if( skill == do_add_patrol ) return "do_add_patrol"; if( skill == do_special_forces ) return "do_special_forces"; if( skill == do_jail ) return "do_jail"; if( skill == do_elite_guard ) return "do_elite_guard"; if( skill == do_smalltalk ) return "do_smalltalk"; if( skill == do_propeganda ) return "do_propeganda"; if( skill == do_bribe ) return "do_bribe"; if( skill == do_seduce ) return "do_seduce"; if( skill == do_mass_propeganda ) return "do_mass_propeganda"; if( skill == do_senate ) return "do_senate"; if( skill == do_autopilot ) return "do_autopilot"; if( skill == do_allspeeders ) return "do_allspeeders"; if( skill == do_speeders ) return "do_speeders"; if( skill == do_suicide ) return "do_suicide"; if( skill == do_train ) return "do_train"; if( skill == do_clone ) return "do_clone"; if( skill == do_copyship ) return "do_copyship"; if( skill == do_hijack ) return "do_hijack"; if( skill == do_pickshiplock ) return "do_pickshiplock"; if( skill == do_makejewelry ) return "do_makejewelry"; if( skill == do_spacetalk ) return "do_spacetalk"; if( skill == do_shiptalk ) return "do_shiptalk"; if( skill == do_systemtalk ) return "do_systemtalk"; if( skill == do_planets ) return "do_planets"; if( skill == do_makeplanet ) return "do_makeplanet"; if( skill == do_setplanet ) return "do_setplanet"; if( skill == do_hail ) return "do_hail"; if( skill == do_appoint ) return "do_appoint"; if( skill == do_demote ) return "do_demote"; if( skill == do_empower ) return "do_empower"; if( skill == do_capture ) return "do_capture"; if( skill == do_newclan ) return "do_newclan"; if( skill == do_arm ) return "do_arm"; if( skill == do_chaff ) return "do_chaff"; if( skill == do_allships ) return "do_allships"; if( skill == do_fly ) return "do_fly"; if( skill == do_bomb ) return "do_bomb"; if( skill == do_bank ) return "do_bank"; if( skill == do_drive ) return "do_drive"; if( skill == do_setblaster ) return "do_setblaster"; if( skill == do_ammo ) return "do_ammo"; if( skill == do_takedrug ) return "do_takedrug"; if( skill == do_use ) return "do_use"; if( skill == do_enlist ) return "do_enlist"; if( skill == do_resign ) return "do_resign"; if( skill == do_pluogus ) return "do_pluogus"; if( skill == do_tractorbeam ) return "do_tractorbeam"; if( skill == do_makearmor ) return "do_makearmor"; if( skill == do_gemcutting ) return "do_gemcutting"; if( skill == do_reinforcements ) return "do_reinforcements"; if( skill == do_postguard ) return "do_postguard"; if( skill == do_torture ) return "do_torture"; if( skill == do_throw ) return "do_throw"; if( skill == do_snipe ) return "do_snipe"; if( skill == do_disguise ) return "do_disguise"; if( skill == do_mine ) return "do_mine"; if( skill == do_first_aid ) return "do_first_aid"; if( skill == do_jumpvector ) return "do_jumpvector"; if( skill == do_autotrack ) return "do_autotrack"; if( skill == do_openbay ) return "do_openbay"; if( skill == do_closebay ) return "do_openbay"; if( skill == do_reload ) return "do_reload"; if( skill == do_radar ) return "do_radar"; if( skill == do_recall ) return "do_recall"; if( skill == do_buyship ) return "do_buyship"; if( skill == do_buyhome ) return "do_buyhome"; if( skill == do_clanbuyship ) return "do_clanbuyship"; if( skill == do_sellship ) return "do_sellship"; if( skill == do_info ) return "do_info"; if( skill == do_autorecharge ) return "do_autorecharge"; if( skill == do_openhatch ) return "do_openhatch"; if( skill == do_closehatch ) return "do_closehatch"; if( skill == do_hyperspace ) return "do_hyperspace"; if( skill == do_target ) return "do_target"; if( skill == do_fire ) return "do_fire"; if( skill == do_calculate ) return "do_calculate"; if( skill == do_recharge ) return "do_recharge"; if( skill == do_repairship ) return "do_repairship"; if( skill == do_refuel ) return "do_refuel"; if( skill == do_addpilot ) return "do_addpilot"; if( skill == do_addsenator ) return "do_addsenator"; if( skill == do_rempilot ) return "do_rempilot"; if( skill == do_aassign ) return "do_aassign"; if( skill == do_accelerate ) return "do_accelerate"; if( skill == do_addbounty ) return "do_addbounty"; if( skill == do_advance ) return "do_advance"; if( skill == do_affected ) return "do_affected"; if( skill == do_afk ) return "do_afk"; if( skill == do_aid ) return "do_aid"; if( skill == do_allow ) return "do_allow"; if( skill == do_ansi ) return "do_ansi"; if( skill == do_sound ) return "do_sound"; if( skill == do_answer ) return "do_answer"; if( skill == do_apply ) return "do_apply"; if( skill == do_appraise ) return "do_appraise"; if( skill == do_areas ) return "do_areas"; if( skill == do_aset ) return "do_aset"; if( skill == do_ask ) return "do_ask"; if( skill == do_astat ) return "do_astat"; if( skill == do_at ) return "do_at"; if( skill == do_auction ) return "do_auction"; if( skill == do_authorize ) return "do_authorize"; if( skill == do_avtalk ) return "do_avtalk"; if( skill == do_backstab ) return "do_backstab"; if( skill == do_balzhur ) return "do_balzhur"; if( skill == do_bamfin ) return "do_bamfin"; if( skill == do_bamfout ) return "do_bamfout"; if( skill == do_ban ) return "do_ban"; if( skill == do_bash ) return "do_bash"; if( skill == do_bashdoor ) return "do_bashdoor"; if( skill == do_beep ) return "do_beep"; if( skill == do_beg ) return "do_beg"; if( skill == do_berserk ) return "do_berserk"; if( skill == do_bestow ) return "do_bestow"; if( skill == do_bestowarea ) return "do_bestowarea"; if( skill == do_bio ) return "do_bio"; if( skill == do_board ) return "do_board"; if( skill == do_boards ) return "do_boards"; if( skill == do_bodybag ) return "do_bodybag"; if( skill == do_bounties ) return "do_bounties"; if( skill == do_brandish ) return "do_brandish"; if( skill == do_brew ) return "do_brew"; if( skill == do_bset ) return "do_bset"; if( skill == do_bstat ) return "do_bstat"; if( skill == do_bug ) return "do_bug"; if( skill == do_bury ) return "do_bury"; if( skill == do_buy ) return "do_buy"; if( skill == do_cast ) return "do_cast"; if( skill == do_cedit ) return "do_cedit"; if( skill == do_channels ) return "do_channels"; if( skill == do_chat ) return "do_chat"; if( skill == do_ooc ) return "do_ooc"; if( skill == do_check_vnums ) return "do_check_vnums"; if( skill == do_circle ) return "do_circle"; if( skill == do_clans ) return "do_clans"; if( skill == do_clan_donate ) return "do_clan_donate"; if( skill == do_clan_withdraw ) return "do_clan_withdraw"; if( skill == do_clantalk ) return "do_clantalk"; if( skill == do_climb ) return "do_climb"; if( skill == do_close ) return "do_close"; if( skill == do_cmdtable ) return "do_cmdtable"; if( skill == do_color ) return "do_color"; if( skill == do_commands ) return "do_commands"; if( skill == do_comment ) return "do_comment"; if( skill == do_compare ) return "do_compare"; if( skill == do_compress ) return "do_compress"; if( skill == do_config ) return "do_config"; if( skill == do_consider ) return "do_consider"; if( skill == do_credits ) return "do_credits"; if( skill == do_cset ) return "do_cset"; if( skill == do_deny ) return "do_deny"; if( skill == do_description ) return "do_description"; if( skill == do_destro ) return "do_destro"; if( skill == do_destroy ) return "do_destroy"; if( skill == do_detrap ) return "do_detrap"; if( skill == do_dig ) return "do_dig"; if( skill == do_disarm ) return "do_disarm"; if( skill == do_disconnect ) return "do_disconnect"; if( skill == do_dismount ) return "do_dismount"; if( skill == do_dmesg ) return "do_dmesg"; if( skill == do_down ) return "do_down"; if( skill == do_drag ) return "do_drag"; if( skill == do_drink ) return "do_drink"; if( skill == do_drop ) return "do_drop"; * if ( skill == do_diagnose ) return "do_diagnose"; * if( skill == do_east ) return "do_east"; if( skill == do_eat ) return "do_eat"; if( skill == do_echo ) return "do_echo"; if( skill == do_emote ) return "do_emote"; if( skill == do_empty ) return "do_empty"; if( skill == do_enter ) return "do_enter"; if( skill == do_equipment ) return "do_equipment"; if( skill == do_examine ) return "do_examine"; if( skill == do_exits ) return "do_exits"; if( skill == do_feed ) return "do_feed"; if( skill == do_fill ) return "do_fill"; if( skill == do_fixchar ) return "do_fixchar"; if( skill == do_flee ) return "do_flee"; if( skill == do_foldarea ) return "do_foldarea"; if( skill == do_follow ) return "do_follow"; if( skill == do_for ) return "do_for"; if( skill == do_force ) return "do_force"; if( skill == do_forceclose ) return "do_forceclose"; if( skill == do_form_password ) return "do_form_password"; if( skill == do_fquit ) return "do_fquit"; if( skill == do_freeze ) return "do_freeze"; if( skill == do_get ) return "do_get"; if( skill == do_give ) return "do_give"; if( skill == do_glance ) return "do_glance"; if( skill == do_gold ) return "do_gold"; if( skill == do_goto ) return "do_goto"; if( skill == do_gouge ) return "do_gouge"; if( skill == do_group ) return "do_group"; * if ( skill == do_grub ) return "do_grub"; * if( skill == do_gtell ) return "do_gtell"; if( skill == do_guilds ) return "do_guilds"; if( skill == do_guildtalk ) return "do_guildtalk"; if( skill == do_hedit ) return "do_hedit"; if( skill == do_hell ) return "do_hell"; if( skill == do_help ) return "do_help"; if( skill == do_hide ) return "do_hide"; if( skill == do_hitall ) return "do_hitall"; if( skill == do_hlist ) return "do_hlist"; if( skill == do_holylight ) return "do_holylight"; if( skill == do_homepage ) return "do_homepage"; if( skill == do_hotboot ) return "do_hotboot"; if( skill == do_hset ) return "do_hset"; if( skill == do_ide ) return "do_ide"; if( skill == do_idea ) return "do_idea"; if( skill == do_immortalize ) return "do_immortalize"; if( skill == do_immtalk ) return "do_immtalk"; if( skill == do_induct ) return "do_induct"; if( skill == do_installarea ) return "do_installarea"; if( skill == do_instaroom ) return "do_instaroom"; if( skill == do_instazone ) return "do_instazone"; if( skill == do_inventory ) return "do_inventory"; if( skill == do_invis ) return "do_invis"; if( skill == do_kick ) return "do_kick"; if( skill == do_kill ) return "do_kill"; if( skill == do_languages ) return "do_languages"; if( skill == do_last ) return "do_last"; if( skill == do_land ) return "do_land"; if( skill == do_launch ) return "do_launch"; if( skill == do_leave ) return "do_leave"; if( skill == do_leaveship ) return "do_leaveship"; if( skill == do_level ) return "do_level"; if( skill == do_light ) return "do_light"; if( skill == do_list ) return "do_list"; if( skill == do_litterbug ) return "do_litterbug"; if( skill == do_loadarea ) return "do_loadarea"; if( skill == do_loadup ) return "do_loadup"; if( skill == do_lock ) return "do_lock"; if( skill == do_log ) return "do_log"; if( skill == do_look ) return "do_look"; if( skill == do_low_purge ) return "do_low_purge"; if( skill == do_mailroom ) return "do_mailroom"; if( skill == do_make ) return "do_make"; if( skill == do_makelight ) return "do_makelight"; if( skill == do_makecomlink ) return "do_makecomlink"; if( skill == do_makegrenade ) return "do_makegrenade"; if( skill == do_makelandmine ) return "do_makelandmine"; if( skill == do_makecontainer ) return "do_makecontainer"; if( skill == do_makeshield ) return "do_makeshield"; if( skill == do_makeblade ) return "do_makeblade"; if( skill == do_makeblaster ) return "do_makeblaster"; if( skill == do_makelightsaber ) return "do_makelightsaber"; if( skill == do_makespice ) return "do_makespice"; if( skill == do_makeboard ) return "do_makeboard"; if( skill == do_makeclan ) return "do_makeclan"; if( skill == do_makerepair ) return "do_makerepair"; if( skill == do_makeshop ) return "do_makeshop"; if( skill == do_makeship ) return "do_makeship"; if( skill == do_makestarsystem ) return "do_makestarsystem"; if( skill == do_makewizlist ) return "do_makewizlist"; if( skill == do_mcreate ) return "do_mcreate"; if( skill == do_mdelete ) return "do_mdelete"; if( skill == do_memory ) return "do_memory"; if( skill == do_mfind ) return "do_mfind"; if( skill == do_minvoke ) return "do_minvoke"; if( skill == do_mlist ) return "do_mlist"; if( skill == do_mount ) return "do_mount"; if( skill == do_mp_close_passage ) return "do_mp_close_passage"; if( skill == do_mp_damage ) return "do_mp_damage"; if( skill == do_mp_deposit ) return "do_mp_deposit"; if( skill == do_mp_open_passage ) return "do_mp_open_passage"; if( skill == do_mp_practice ) return "do_mp_practice"; if( skill == do_mp_restore ) return "do_mp_restore"; if( skill == do_mp_slay ) return "do_mp_slay"; if( skill == do_mp_withdraw ) return "do_mp_withdraw"; if( skill == do_mpadvance ) return "do_mpadvance"; if( skill == do_mpapply ) return "do_mpapply"; if( skill == do_mpapplyb ) return "do_mpapplyb"; if( skill == do_mpasound ) return "do_mpasound"; if( skill == do_mpat ) return "do_mpat"; if( skill == do_mpdream ) return "do_mpdream"; if( skill == do_mpecho ) return "do_mpecho"; if( skill == do_mpechoaround ) return "do_mpechoaround"; if( skill == do_mpechoat ) return "do_mpechoat"; if( skill == do_mpedit ) return "do_mpedit"; if( skill == do_mpgain ) return "do_mpgain"; if( skill == do_mpforce ) return "do_mpforce"; if( skill == do_mpgoto ) return "do_mpgoto"; if( skill == do_mpinvis ) return "do_mpinvis"; if( skill == do_mpjunk ) return "do_mpjunk"; if( skill == do_mpkill ) return "do_mpkill"; if( skill == do_mpmload ) return "do_mpmload"; if( skill == do_mpnothing ) return "do_mpnothing"; if( skill == do_mpoload ) return "do_mpoload"; if( skill == do_mppkset ) return "do_mppkset"; if( skill == do_mppurge ) return "do_mppurge"; if( skill == do_mpstat ) return "do_mpstat"; if( skill == do_mptransfer ) return "do_mptransfer"; if( skill == do_mrange ) return "do_mrange"; if( skill == do_mset ) return "do_mset"; if( skill == do_mstat ) return "do_mstat"; if( skill == do_murde ) return "do_murde"; if( skill == do_murder ) return "do_murder"; if( skill == do_music ) return "do_music"; if( skill == do_mwhere ) return "do_mwhere"; if( skill == do_name ) return "do_name"; if( skill == do_newbiechat ) return "do_newbiechat"; if( skill == do_newbieset ) return "do_newbieset"; if( skill == do_newzones ) return "do_newzones"; if( skill == do_noemote ) return "do_noemote"; if( skill == do_noresolve ) return "do_noresolve"; if( skill == do_north ) return "do_north"; if( skill == do_northeast ) return "do_northeast"; if( skill == do_northwest ) return "do_northwest"; if( skill == do_notell ) return "do_notell"; if( skill == do_notitle ) return "do_notitle"; if( skill == do_noteroom ) return "do_noteroom"; if( skill == do_ocreate ) return "do_ocreate"; if( skill == do_odelete ) return "do_odelete"; if( skill == do_ofind ) return "do_ofind"; if( skill == do_oinvoke ) return "do_oinvoke"; if( skill == do_oldscore ) return "do_oldscore"; if( skill == do_olist ) return "do_olist"; if( skill == do_opedit ) return "do_opedit"; if( skill == do_open ) return "do_open"; * if ( skill == do_opentourney ) return "do_opentourney"; * if( skill == do_opstat ) return "do_opstat"; if( skill == do_orange ) return "do_orange"; if( skill == do_order ) return "do_order"; if( skill == do_orders ) return "do_orders"; if( skill == do_ordertalk ) return "do_ordertalk"; if( skill == do_oset ) return "do_oset"; if( skill == do_ostat ) return "do_ostat"; if( skill == do_outcast ) return "do_outcast"; if( skill == do_owhere ) return "do_owhere"; if( skill == do_pager ) return "do_pager"; if( skill == do_pcrename ) return "do_pcrename"; if( skill == do_pardon ) return "do_pardon"; if( skill == do_password ) return "do_password"; if( skill == do_peace ) return "do_peace"; if( skill == do_pick ) return "do_pick"; if( skill == do_poison_weapon ) return "do_poison_weapon"; if( skill == do_practice ) return "do_practice"; if( skill == do_prompt ) return "do_prompt"; if( skill == do_pull ) return "do_pull"; if( skill == do_punch ) return "do_punch"; if( skill == do_purge ) return "do_purge"; if( skill == do_push ) return "do_push"; if( skill == do_put ) return "do_put"; if( skill == do_quaff ) return "do_quaff"; if( skill == do_quest ) return "do_quest"; if( skill == do_qui ) return "do_qui"; if( skill == do_quit ) return "do_quit"; if( skill == do_rank ) return "do_rank"; if( skill == do_rat ) return "do_rat"; if( skill == do_rdelete ) return "do_rdelete"; if( skill == do_reboo ) return "do_reboo"; if( skill == do_reboot ) return "do_reboot"; if( skill == do_recho ) return "do_recho"; if( skill == do_recite ) return "do_recite"; if( skill == do_redit ) return "do_redit"; if( skill == do_regoto ) return "do_regoto"; if( skill == do_remove ) return "do_remove"; if( skill == do_rent ) return "do_rent"; if( skill == do_repair ) return "do_repair"; if( skill == do_repairset ) return "do_repairset"; if( skill == do_repairshops ) return "do_repairshops"; if( skill == do_repairstat ) return "do_repairstat"; if( skill == do_reply ) return "do_reply"; if( skill == do_report ) return "do_report"; if( skill == do_rescue ) return "do_rescue"; if( skill == do_reset ) return "do_reset"; if( skill == do_resetship ) return "do_resetship"; if( skill == do_rest ) return "do_rest"; if( skill == do_restore ) return "do_restore"; if( skill == do_restoretime ) return "do_restoretime"; if( skill == do_restrict ) return "do_restrict"; if( skill == do_retire ) return "do_retire"; if( skill == do_retran ) return "do_retran"; if( skill == do_return ) return "do_return"; if( skill == do_revert ) return "do_revert"; if( skill == do_rip ) return "do_rip"; if( skill == do_rlist ) return "do_rlist"; if( skill == do_rpedit ) return "do_rpedit"; if( skill == do_rpstat ) return "do_rpstat"; if( skill == do_rset ) return "do_rset"; if( skill == do_rstat ) return "do_rstat"; if( skill == do_sacrifice ) return "do_sacrifice"; if( skill == do_save ) return "do_save"; if( skill == do_savearea ) return "do_savearea"; if( skill == do_say ) return "do_say"; if( skill == do_scan ) return "do_scan"; if( skill == do_score ) return "do_score"; if( skill == do_scribe ) return "do_scribe"; if( skill == do_search ) return "do_search"; if( skill == do_sedit ) return "do_sedit"; if( skill == do_sell ) return "do_sell"; if( skill == do_set_boot_time ) return "do_set_boot_time"; if( skill == do_setclan ) return "do_setclan"; if( skill == do_setship ) return "do_setship"; if( skill == do_setstarsystem ) return "do_setstarsystem"; if( skill == do_ships ) return "do_ships"; if( skill == do_shops ) return "do_shops"; if( skill == do_shopset ) return "do_shopset"; if( skill == do_shopstat ) return "do_shopstat"; if( skill == do_shout ) return "do_shout"; if( skill == do_shove ) return "do_shove"; if( skill == do_showclan ) return "do_showclan"; if( skill == do_showship ) return "do_showship"; if( skill == do_showstarsystem ) return "do_showstarsystem"; if( skill == do_shutdow ) return "do_shutdow"; if( skill == do_shutdown ) return "do_shutdown"; if( skill == do_silence ) return "do_silence"; if( skill == do_sit ) return "do_sit"; if( skill == do_sla ) return "do_sla"; if( skill == do_slay ) return "do_slay"; if( skill == do_sleep ) return "do_sleep"; if( skill == do_slice ) return "do_slice"; if( skill == do_slist ) return "do_slist"; if( skill == do_slookup ) return "do_slookup"; if( skill == do_smoke ) return "do_smoke"; if( skill == do_snoop ) return "do_snoop"; if( skill == do_sober ) return "do_sober"; if( skill == do_socials ) return "do_socials"; if( skill == do_south ) return "do_south"; if( skill == do_southeast ) return "do_southeast"; if( skill == do_southwest ) return "do_southwest"; if( skill == do_speak ) return "do_speak"; if( skill == do_split ) return "do_split"; if( skill == do_sset ) return "do_sset"; if( skill == do_stand ) return "do_stand"; if( skill == do_status ) return "do_status"; if( skill == do_starsystems ) return "do_starsystems"; if( skill == do_steal ) return "do_steal"; if( skill == do_stun ) return "do_stun"; if( skill == do_switch ) return "do_switch"; if( skill == do_tamp ) return "do_tamp"; if( skill == do_tell ) return "do_tell"; if( skill == do_time ) return "do_time"; if( skill == do_timecmd ) return "do_timecmd"; if( skill == do_title ) return "do_title"; if( skill == do_track ) return "do_track"; if( skill == do_trajectory ) return "do_trajectory"; if( skill == do_transfer ) return "do_transfer"; if( skill == do_transship ) return "do_transship"; if( skill == do_trust ) return "do_trust"; if( skill == do_typo ) return "do_typo"; if( skill == do_unfoldarea ) return "do_unfoldarea"; if( skill == do_unhell ) return "do_unhell"; if( skill == do_unlock ) return "do_unlock"; if( skill == do_unsilence ) return "do_unsilence"; if( skill == do_up ) return "do_up"; if( skill == do_users ) return "do_users"; if( skill == do_value ) return "do_value"; if( skill == do_vassign ) return "do_vassign"; if( skill == do_visible ) return "do_visible"; if( skill == do_vnums ) return "do_vnums"; if( skill == do_vsearch ) return "do_vsearch"; if( skill == do_wake ) return "do_wake"; if( skill == do_wartalk ) return "do_wartalk"; if( skill == do_wear ) return "do_wear"; if( skill == do_weather ) return "do_weather"; if( skill == do_west ) return "do_west"; if( skill == do_where ) return "do_where"; if( skill == do_who ) return "do_who"; if( skill == do_whois ) return "do_whois"; if( skill == do_wimpy ) return "do_wimpy"; if( skill == do_wizhelp ) return "do_wizhelp"; if( skill == do_wizlist ) return "do_wizlist"; if( skill == do_wizlock ) return "do_wizlock"; if( skill == do_yell ) return "do_yell"; if( skill == do_zap ) return "do_zap"; if( skill == do_zones ) return "do_zones"; return "reserved"; } */ char *skill_name( DO_FUN *skill ) { #include "stab.h" return "reserved"; } /* * Function used by qsort to sort skills */ int skill_comp( SKILLTYPE ** sk1, SKILLTYPE ** sk2 ) { SKILLTYPE *skill1 = ( *sk1 ); SKILLTYPE *skill2 = ( *sk2 ); if( !skill1 && skill2 ) return 1; if( skill1 && !skill2 ) return -1; if( !skill1 && !skill2 ) return 0; if( skill1->type < skill2->type ) return -1; if( skill1->type > skill2->type ) return 1; return strcmp( skill1->name, skill2->name ); } /* * Sort the skill table with qsort */ void sort_skill_table( ) { log_string( "Sorting skill table..." ); qsort( &skill_table[1], top_sn - 1, sizeof( SKILLTYPE * ), ( int ( * )( const void *, const void * ) )skill_comp ); } /* * Write skill data to a file */ void fwrite_skill( FILE * fpout, SKILLTYPE * skill ) { SMAUG_AFF *aff; fprintf( fpout, "Name %s~\n", skill->name ); fprintf( fpout, "Type %s\n", skill_tname[skill->type] ); fprintf( fpout, "Flags %d\n", skill->flags ); if( skill->target ) fprintf( fpout, "Target %d\n", skill->target ); if( skill->minimum_position ) fprintf( fpout, "Minpos %d\n", skill->minimum_position ); if( skill->saves ) fprintf( fpout, "Saves %d\n", skill->saves ); if( skill->slot ) fprintf( fpout, "Slot %d\n", skill->slot ); if( skill->min_mana ) fprintf( fpout, "Mana %d\n", skill->min_mana ); if( skill->beats ) fprintf( fpout, "Rounds %d\n", skill->beats ); if( skill->guild != -1 ) fprintf( fpout, "Guild %d\n", skill->guild ); if( skill->skill_fun ) fprintf( fpout, "Code %s\n", skill_name( skill->skill_fun ) ); else if( skill->spell_fun ) fprintf( fpout, "Code %s\n", spell_name( skill->spell_fun ) ); fprintf( fpout, "Dammsg %s~\n", skill->noun_damage ); if( skill->msg_off && skill->msg_off[0] != '\0' ) fprintf( fpout, "Wearoff %s~\n", skill->msg_off ); if( skill->hit_char && skill->hit_char[0] != '\0' ) fprintf( fpout, "Hitchar %s~\n", skill->hit_char ); if( skill->hit_vict && skill->hit_vict[0] != '\0' ) fprintf( fpout, "Hitvict %s~\n", skill->hit_vict ); if( skill->hit_room && skill->hit_room[0] != '\0' ) fprintf( fpout, "Hitroom %s~\n", skill->hit_room ); if( skill->miss_char && skill->miss_char[0] != '\0' ) fprintf( fpout, "Misschar %s~\n", skill->miss_char ); if( skill->miss_vict && skill->miss_vict[0] != '\0' ) fprintf( fpout, "Missvict %s~\n", skill->miss_vict ); if( skill->miss_room && skill->miss_room[0] != '\0' ) fprintf( fpout, "Missroom %s~\n", skill->miss_room ); if( skill->die_char && skill->die_char[0] != '\0' ) fprintf( fpout, "Diechar %s~\n", skill->die_char ); if( skill->die_vict && skill->die_vict[0] != '\0' ) fprintf( fpout, "Dievict %s~\n", skill->die_vict ); if( skill->die_room && skill->die_room[0] != '\0' ) fprintf( fpout, "Dieroom %s~\n", skill->die_room ); if( skill->imm_char && skill->imm_char[0] != '\0' ) fprintf( fpout, "Immchar %s~\n", skill->imm_char ); if( skill->imm_vict && skill->imm_vict[0] != '\0' ) fprintf( fpout, "Immvict %s~\n", skill->imm_vict ); if( skill->imm_room && skill->imm_room[0] != '\0' ) fprintf( fpout, "Immroom %s~\n", skill->imm_room ); if( skill->dice && skill->dice[0] != '\0' ) fprintf( fpout, "Dice %s~\n", skill->dice ); if( skill->value ) fprintf( fpout, "Value %d\n", skill->value ); if( skill->difficulty ) fprintf( fpout, "Difficulty %d\n", skill->difficulty ); if( skill->participants ) fprintf( fpout, "Participants %d\n", skill->participants ); if( skill->components && skill->components[0] != '\0' ) fprintf( fpout, "Components %s~\n", skill->components ); if( skill->teachers && skill->teachers[0] != '\0' ) fprintf( fpout, "Teachers %s~\n", skill->teachers ); for( aff = skill->affects; aff; aff = aff->next ) fprintf( fpout, "Affect '%s' %d '%s' %d\n", aff->duration, aff->location, aff->modifier, aff->bitvector ); if( skill->alignment ) fprintf( fpout, "Alignment %d\n", skill->alignment ); if( skill->type != SKILL_HERB ) { fprintf( fpout, "Minlevel %d\n", skill->min_level ); } fprintf( fpout, "End\n\n" ); } /* * Save the skill table to disk */ void save_skill_table( ) { int x; FILE *fpout; if( ( fpout = fopen( SKILL_FILE, "w" ) ) == NULL ) { bug( "Cannot open skills.dat for writting", 0 ); perror( SKILL_FILE ); return; } for( x = 0; x < top_sn; x++ ) { if( !skill_table[x]->name || skill_table[x]->name[0] == '\0' ) break; fprintf( fpout, "#SKILL\n" ); fwrite_skill( fpout, skill_table[x] ); } fprintf( fpout, "#END\n" ); fclose( fpout ); } /* * Save the herb table to disk */ void save_herb_table( ) { int x; FILE *fpout; if( ( fpout = fopen( HERB_FILE, "w" ) ) == NULL ) { bug( "Cannot open herbs.dat for writting", 0 ); perror( HERB_FILE ); return; } for( x = 0; x < top_herb; x++ ) { if( !herb_table[x]->name || herb_table[x]->name[0] == '\0' ) break; fprintf( fpout, "#HERB\n" ); fwrite_skill( fpout, herb_table[x] ); } fprintf( fpout, "#END\n" ); fclose( fpout ); } /* * Save the socials to disk */ void save_socials( ) { FILE *fpout; SOCIALTYPE *social; int x; if( ( fpout = fopen( SOCIAL_FILE, "w" ) ) == NULL ) { bug( "Cannot open socials.dat for writting", 0 ); perror( SOCIAL_FILE ); return; } for( x = 0; x < 27; x++ ) { for( social = social_index[x]; social; social = social->next ) { if( !social->name || social->name[0] == '\0' ) { bug( "Save_socials: blank social in hash bucket %d", x ); continue; } fprintf( fpout, "#SOCIAL\n" ); fprintf( fpout, "Name %s~\n", social->name ); if( social->char_no_arg ) fprintf( fpout, "CharNoArg %s~\n", social->char_no_arg ); else bug( "Save_socials: NULL char_no_arg in hash bucket %d", x ); if( social->others_no_arg ) fprintf( fpout, "OthersNoArg %s~\n", social->others_no_arg ); if( social->char_found ) fprintf( fpout, "CharFound %s~\n", social->char_found ); if( social->others_found ) fprintf( fpout, "OthersFound %s~\n", social->others_found ); if( social->vict_found ) fprintf( fpout, "VictFound %s~\n", social->vict_found ); if( social->char_auto ) fprintf( fpout, "CharAuto %s~\n", social->char_auto ); if( social->others_auto ) fprintf( fpout, "OthersAuto %s~\n", social->others_auto ); fprintf( fpout, "End\n\n" ); } } fprintf( fpout, "#END\n" ); fclose( fpout ); } int get_skill( char *skilltype ) { if( !str_cmp( skilltype, "Spell" ) ) return SKILL_SPELL; if( !str_cmp( skilltype, "Skill" ) ) return SKILL_SKILL; if( !str_cmp( skilltype, "Weapon" ) ) return SKILL_WEAPON; if( !str_cmp( skilltype, "Tongue" ) ) return SKILL_TONGUE; if( !str_cmp( skilltype, "Herb" ) ) return SKILL_HERB; return SKILL_UNKNOWN; } /* * Save the commands to disk */ void save_commands( ) { FILE *fpout; CMDTYPE *command; int x; if( ( fpout = fopen( COMMAND_FILE, "w" ) ) == NULL ) { bug( "Cannot open commands.dat for writing", 0 ); perror( COMMAND_FILE ); return; } for( x = 0; x < 126; x++ ) { for( command = command_hash[x]; command; command = command->next ) { if( !command->name || command->name[0] == '\0' ) { bug( "Save_commands: blank command in hash bucket %d", x ); continue; } fprintf( fpout, "#COMMAND\n" ); fprintf( fpout, "Name %s~\n", command->name ); fprintf( fpout, "Code %s\n", skill_name( command->do_fun ) ); fprintf( fpout, "Position %d\n", command->position ); fprintf( fpout, "Level %d\n", command->level ); fprintf( fpout, "Log %d\n", command->log ); fprintf( fpout, "End\n\n" ); } } fprintf( fpout, "#END\n" ); fclose( fpout ); } SKILLTYPE *fread_skill( FILE * fp ) { char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; SKILLTYPE *skill; CREATE( skill, SKILLTYPE, 1 ); skill->guild = -1; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'A': KEY( "Alignment", skill->alignment, fread_number( fp ) ); if( !str_cmp( word, "Affect" ) ) { SMAUG_AFF *aff; CREATE( aff, SMAUG_AFF, 1 ); aff->duration = str_dup( fread_word( fp ) ); aff->location = fread_number( fp ); aff->modifier = str_dup( fread_word( fp ) ); aff->bitvector = fread_number( fp ); aff->next = skill->affects; skill->affects = aff; fMatch = TRUE; break; } break; case 'C': if( !str_cmp( word, "Code" ) ) { SPELL_FUN *spellfun; DO_FUN *dofun; char *w = fread_word( fp ); fMatch = TRUE; if( ( spellfun = spell_function( w ) ) != spell_notfound ) skill->spell_fun = spellfun; else if( ( dofun = skill_function( w ) ) != skill_notfound ) skill->skill_fun = dofun; else { sprintf( buf, "fread_skill: unknown skill/spell %s", w ); bug( buf, 0 ); skill->spell_fun = spell_null; } break; } KEY( "Code", skill->spell_fun, spell_function( fread_word( fp ) ) ); KEY( "Components", skill->components, fread_string_nohash( fp ) ); break; case 'D': KEY( "Dammsg", skill->noun_damage, fread_string_nohash( fp ) ); KEY( "Dice", skill->dice, fread_string_nohash( fp ) ); KEY( "Diechar", skill->die_char, fread_string_nohash( fp ) ); KEY( "Dieroom", skill->die_room, fread_string_nohash( fp ) ); KEY( "Dievict", skill->die_vict, fread_string_nohash( fp ) ); KEY( "Difficulty", skill->difficulty, fread_number( fp ) ); break; case 'E': if( !str_cmp( word, "End" ) ) return skill; break; case 'F': KEY( "Flags", skill->flags, fread_number( fp ) ); break; case 'G': KEY( "Guild", skill->guild, fread_number( fp ) ); break; case 'H': KEY( "Hitchar", skill->hit_char, fread_string_nohash( fp ) ); KEY( "Hitroom", skill->hit_room, fread_string_nohash( fp ) ); KEY( "Hitvict", skill->hit_vict, fread_string_nohash( fp ) ); break; case 'I': KEY( "Immchar", skill->imm_char, fread_string_nohash( fp ) ); KEY( "Immroom", skill->imm_room, fread_string_nohash( fp ) ); KEY( "Immvict", skill->imm_vict, fread_string_nohash( fp ) ); break; case 'M': KEY( "Mana", skill->min_mana, fread_number( fp ) ); KEY( "Minlevel", skill->min_level, fread_number( fp ) ); KEY( "Minpos", skill->minimum_position, fread_number( fp ) ); KEY( "Misschar", skill->miss_char, fread_string_nohash( fp ) ); KEY( "Missroom", skill->miss_room, fread_string_nohash( fp ) ); KEY( "Missvict", skill->miss_vict, fread_string_nohash( fp ) ); break; case 'N': KEY( "Name", skill->name, fread_string_nohash( fp ) ); break; case 'P': KEY( "Participants", skill->participants, fread_number( fp ) ); break; case 'R': KEY( "Rounds", skill->beats, fread_number( fp ) ); break; case 'S': KEY( "Slot", skill->slot, fread_number( fp ) ); KEY( "Saves", skill->saves, fread_number( fp ) ); break; case 'T': KEY( "Target", skill->target, fread_number( fp ) ); KEY( "Teachers", skill->teachers, fread_string_nohash( fp ) ); KEY( "Type", skill->type, get_skill( fread_word( fp ) ) ); break; case 'V': KEY( "Value", skill->value, fread_number( fp ) ); break; case 'W': KEY( "Wearoff", skill->msg_off, fread_string_nohash( fp ) ); break; } if( !fMatch ) { sprintf( buf, "Fread_skill: no match: %s", word ); bug( buf, 0 ); } } } void load_skill_table( ) { FILE *fp; if( ( fp = fopen( SKILL_FILE, "r" ) ) != NULL ) { top_sn = 0; for( ;; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_skill_table: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "SKILL" ) ) { if( top_sn >= MAX_SKILL ) { bug( "load_skill_table: more skills than MAX_SKILL %d", MAX_SKILL ); fclose( fp ); return; } skill_table[top_sn++] = fread_skill( fp ); continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_skill_table: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open skills.dat", 0 ); exit( 0 ); } } void load_herb_table( ) { FILE *fp; if( ( fp = fopen( HERB_FILE, "r" ) ) != NULL ) { top_herb = 0; for( ;; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_herb_table: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "HERB" ) ) { if( top_herb >= MAX_HERB ) { bug( "load_herb_table: more herbs than MAX_HERB %d", MAX_HERB ); fclose( fp ); return; } herb_table[top_herb++] = fread_skill( fp ); if( herb_table[top_herb - 1]->slot == 0 ) herb_table[top_herb - 1]->slot = top_herb - 1; continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_herb_table: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open herbs.dat", 0 ); exit( 0 ); } } void fread_social( FILE * fp ) { char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; SOCIALTYPE *social; CREATE( social, SOCIALTYPE, 1 ); for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'C': KEY( "CharNoArg", social->char_no_arg, fread_string_nohash( fp ) ); KEY( "CharFound", social->char_found, fread_string_nohash( fp ) ); KEY( "CharAuto", social->char_auto, fread_string_nohash( fp ) ); break; case 'E': if( !str_cmp( word, "End" ) ) { if( !social->name ) { bug( "Fread_social: Name not found", 0 ); free_social( social ); return; } if( !social->char_no_arg ) { bug( "Fread_social: CharNoArg not found", 0 ); free_social( social ); return; } add_social( social ); return; } break; case 'N': KEY( "Name", social->name, fread_string_nohash( fp ) ); break; case 'O': KEY( "OthersNoArg", social->others_no_arg, fread_string_nohash( fp ) ); KEY( "OthersFound", social->others_found, fread_string_nohash( fp ) ); KEY( "OthersAuto", social->others_auto, fread_string_nohash( fp ) ); break; case 'V': KEY( "VictFound", social->vict_found, fread_string_nohash( fp ) ); break; } if( !fMatch ) { sprintf( buf, "Fread_social: no match: %s", word ); bug( buf, 0 ); } } } void load_socials( ) { FILE *fp; if( ( fp = fopen( SOCIAL_FILE, "r" ) ) != NULL ) { top_sn = 0; for( ;; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_socials: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "SOCIAL" ) ) { fread_social( fp ); continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_socials: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open socials.dat", 0 ); exit( 0 ); } } void fread_command( FILE * fp ) { char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; CMDTYPE *command; CREATE( command, CMDTYPE, 1 ); for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'C': KEY( "Code", command->do_fun, skill_function( fread_word( fp ) ) ); break; case 'E': if( !str_cmp( word, "End" ) ) { if( !command->name ) { bug( "Fread_command: Name not found", 0 ); free_command( command ); return; } if( !command->do_fun ) { bug( "Fread_command: Function not found", 0 ); free_command( command ); return; } add_command( command ); return; } break; case 'L': KEY( "Level", command->level, fread_number( fp ) ); KEY( "Log", command->log, fread_number( fp ) ); break; case 'N': KEY( "Name", command->name, fread_string_nohash( fp ) ); break; case 'P': KEY( "Position", command->position, fread_number( fp ) ); break; } if( !fMatch ) { sprintf( buf, "Fread_command: no match: %s", word ); bug( buf, 0 ); } } } void load_commands( ) { FILE *fp; if( ( fp = fopen( COMMAND_FILE, "r" ) ) != NULL ) { top_sn = 0; for( ;; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_commands: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "COMMAND" ) ) { fread_command( fp ); continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_commands: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open commands.dat", 0 ); exit( 0 ); } }