/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ #include <glib.h> #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <merc.h> #include <player.h> #include <interp.h> #include <tables.h> /* * Wraith stuff to go here :P */ void do_wraith(CHAR_DATA *ch, char *argument){ if (ch->plane != PLANE_DEAD){ send_to_char("huh?\n\r",ch); return; } if (IS_CLASS(ch,CLASS_VAMPIRE)){ send_to_char("Umm your already classed.. You can only type killme.\n\r",ch); return; } if (IS_CLASS(ch,CLASS_SWWF)){ send_to_char("Umm your already classed.. You can only type killme.\n\r",ch); return; } if (IS_CLASS(ch,CLASS_MAGE)){ send_to_char("Umm your already classed.. You can only type killme.\n\r",ch); return; } REMOVE_BIT(ch->added,ADDED_HARDCORE); ch->sect = SECT_INDEPENDENT; ch->clan = CLAN_NONE; ch->plane = PLANE_SPIRIT; ch->creature = CLASS_WRAITH; shift_obj_plane(ch); send_to_char("Welcome to Lurking Fear spirit!\n\r",ch); send_to_char("Please type help wraith for more information.\n\r",ch); return; } void do_killme(CHAR_DATA *ch, char *argument){ if (ch->plane != PLANE_DEAD){ send_to_char("huh?\n\r",ch); return; } } int max_pathos(CHAR_DATA *ch){ int max_pathos = 0; return max_pathos; } int max_corpus(CHAR_DATA *ch){ int max_corpus = 0; return max_corpus; } //This is how many Hp you get vs how much pathos you put in to corpus int get_corpus_hp(CHAR_DATA *ch){ int hit_amount = 0; if (IS_NPC(ch)) return 0; hit_amount = (ch->pcdata->ghost_hit * 100); return hit_amount; } int get_corpus_mana(CHAR_DATA *ch){ int mana_amount = 0; if (IS_NPC(ch)) return 0; mana_amount = (ch->pcdata->ghost_mana * 100); return mana_amount; } int get_corpus_move(CHAR_DATA *ch){ int move_amount = 0; if (IS_NPC(ch)) return 0; move_amount = (ch->pcdata->ghost_move * 100); return move_amount; } //Show list of affects char has purchase void get_corpus_affects(CHAR_DATA *ch){ char buf[MSL]; int loop; //loop through the affect table and if set display the name in the table. for (loop = 0; ghostaffect_table[loop].name != NULL;loop++){ if (IS_SET(ch->pcdata->ghost_affects,ghostaffect_table[loop].ghost_flag)) sprintf(buf,"%s [x]",ghostaffect_table[loop].name); else sprintf(buf,"%s [ ]",ghostaffect_table[loop].name); } send_to_char(buf,ch); return; } int get_corpus_damroll(CHAR_DATA *ch){ int damroll_amount = 0; if (IS_NPC(ch)) return 0; damroll_amount = (ch->pcdata->ghost_damroll * 100); return damroll_amount; } int get_corpus_hitroll(CHAR_DATA *ch){ int hitroll_amount = 0; if (IS_NPC(ch)) return 0; hitroll_amount = (ch->pcdata->ghost_hitroll * 100); return hitroll_amount; } int get_corpus_ac(CHAR_DATA *ch){ int ac_amount = 0; if (IS_NPC(ch)) return 0; ac_amount = (ch->pcdata->ghost_ac * 100); return ac_amount; } /* * This is the command to assign points from the Corpus pool * so when the cross over, they have real stats */ void do_corpus( CHAR_DATA *ch, char *argument){ char arg1[MSL]; char arg2[MSL]; char buf[MSL]; int loop; int value=0; argument = one_argument(argument,arg1); argument = one_argument(argument,arg2); if (IS_NPC(ch)) return; if (!IS_CLASS(ch,CLASS_WRAITH)){ send_to_char("Huh?\n\r",ch); return; } //Show commands with a blank arg1 if (arg1[0] == '\0'){ send_to_char("Syntax: corpus (field) (value)\n\r",ch); send_to_char("Fields: reset,show,hp,mana,move,affects,damroll,hitroll,ac\n\r",ch); return; } if (!strcmp(arg1,"reset")){ ch->pcdata->ghost_hit = 0; ch->pcdata->ghost_mana = 0; ch->pcdata->ghost_move = 0; ch->pcdata->ghost_hitroll = 0; ch->pcdata->ghost_damroll = 0; ch->pcdata->ghost_ac = 0; ch->pcdata->ghost_affects = 0; return; } if (!strcmp(arg1,"show")){ return; } if (arg2[0] == '\0'){ send_to_char("You must have a value to set.\n\r",ch); return; } if (ch->pcdata->gnosis >= max_corpus(ch)){ send_to_char("You have already converted your max pathos points to corpus, you can spend no more.\n\r You may reset your stats by using 'corpus reset'\n\r",ch); return; } if (!strcmp(arg1,"affects")){ for (loop=0;ghostaffect_table[loop].name != NULL;loop++){ if (!str_prefix(arg2,ghostaffect_table[loop].name)){ if (IS_SET(ch->pcdata->ghost_affects,ghostaffect_table[loop].ghost_flag)){ REMOVE_BIT(ch->pcdata->ghost_affects,ghostaffect_table[loop].ghost_flag); send_to_char("affect removed\n\r",ch); ch->pcdata->gnosis -= 50; return; } else{ SET_BIT(ch->pcdata->ghost_affects,ghostaffect_table[loop].ghost_flag); send_to_char("affect removed\n\r",ch); ch->pcdata->gnosis += 50; return; } } } send_to_char("Affect not found.\n\r Valid affects are:\n\r",ch); for (loop=0;ghostaffect_table[loop].name != NULL;loop++){ sprintf(buf,"%s\n\r",ghostaffect_table[loop].name); } return; } value = atoi(arg2); if (!strcmp(arg1,"hp")){ ch->pcdata->ghost_hit += value; ch->pcdata->gnosis += value; return; } if (!strcmp(arg1,"mana")){ ch->pcdata->ghost_mana += value; ch->pcdata->gnosis += value; return; } if (!strcmp(arg1,"move")){ ch->pcdata->ghost_move += value; ch->pcdata->gnosis += value; return; } if (!strcmp(arg1,"damroll")){ ch->pcdata->ghost_damroll += value; ch->pcdata->gnosis += value; return; } if (!strcmp(arg1,"hitroll")){ ch->pcdata->ghost_hitroll += value; ch->pcdata->gnosis += value; return; } if (!strcmp(arg1,"ac")){ ch->pcdata->ghost_ac += value; ch->pcdata->gnosis += value; return; } send_to_char("Field not found.\n\r",ch); return; }