// // C Implementation: commands.c // // Description: This c file will comtain any commands that dont realy have a permant home // // // Author: robo <powell123@yahoo.com>, (C) 2005 // // // #include <stdio.h> #include <string.h> #include <stdlib.h> #include "mud.h" #include "commands.h" void do_pk_toggle( CHAR_DATA *ch, char *argument ) { int cost=500000; /* Cost to change */ CHAR_DATA *mob; // char arg[MAX_INPUT_LENGTH]; // cost = 100000; // argument = one_argument( argument, arg ); if ( argument[0] == '\0' ) { send_to_char("&RSyntax: pk-toggle on\n\r", ch); send_to_char("&RSyntax: pk-toggle off\n\r", ch); send_to_char("&RSee &YHELP pk-toggle &Rfor more info.\n\r", ch); return; } /* check for toggle mob */ for ( mob = ch->in_room->first_person; mob; mob = mob->next_in_room ) { if ( IS_NPC(mob) && xIS_SET(mob->act, ACT_PKTOGGLE) ) { break; } else { send_to_char("&wThere doesn't seem to be anyone here who can help you with that!\n\r", ch); return; } } if ( !str_cmp( argument, "on" ) ) { if ( get_age( ch ) < 18 ) { send_to_char("&rYou be 18 years of age to be a Player Killer.\n\r", ch); } else { if ( CAN_PKILL ( ch ) ) { send_to_char("&rYou are already a Player Killer!\n\r", ch); } else { send_to_char("&rPK has been toggled on, you are now a Deadly Player!!!\n\r", ch); SET_BIT(ch->pcdata->flags, PCFLAG_DEADLY); xREMOVE_BIT(ch->act, PLR_NICE); save_char_obj( ch ); saving_char = NULL; } } return; } if ( !str_cmp( argument, "off" ) ) { if ( !CAN_PKILL ( ch )) { send_to_char( "&rYou are already peaceful!\n\r", ch ); return; } else { if( ch->gold < cost) { send_to_char( "&rYou do not have enough money to toggle PK off!\n\r", ch); return; } else { ch->gold -= cost; REMOVE_BIT(ch->pcdata->flags, PCFLAG_DEADLY ); xSET_BIT(ch->act, PLR_NICE); send_to_char( "&wPk has been toggled off. You are now a peacfull player.\n\r", ch); save_char_obj( ch ); saving_char = NULL; } } return; } } void do_travel(CHAR_DATA *ch, char *argument) { CHAR_DATA *travel_mage; CHAR_DATA *mount; char buf[MAX_STRING_LENGTH]; char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; argument = one_argument( argument, arg1); argument = one_argument( argument, arg2); travel_mage = NULL; for (travel_mage = ch->in_room->first_person; travel_mage; travel_mage = travel_mage->next_in_room) { if (IS_NPC(travel_mage) && xIS_SET(travel_mage->act, ACT_TRAVELMAGE)) break; } if (!travel_mage) { ch_printf (ch, "There is no travel mage here.\n\r"); return; } if (arg1[0] == '\0' || !strcmp(arg1, "list")) { int i; ch_printf (ch, "I offer the following locations...\n\r"); ch_printf (ch, " \n\r"); ch_printf (ch, "[Location Name ] [Price ]\n\r"); ch_printf (ch, "---------------------------------------------------\n\r"); for (i = 0; i < (MAX_TRAVEL_LOCATION-1); i++) { sprintf (buf, "[%-40s] [%-6ld]\n\r", travel_table[i].long_desc, travel_table[i].cost); ch_printf (ch, buf); } ch_printf (ch, " \n\r"); ch_printf (ch, "Please type 'travel buy <location>' and have your gold ready!\n\r"); ch_printf (ch, "For more information type 'help travelmage' and read!\n\r"); return; } if (!strcmp(arg1, "buy")) { if (arg2[0] == '\0') { sprintf(buf, "%s You must tell me where you wish to travel to.\n\r", ch->name); send_to_char(buf, travel_mage); return; } int j; for (j = 0; j < MAX_TRAVEL_LOCATION; j++) { if (!str_cmp(arg2, travel_table[j].keyword)) { if (ch->gold < travel_table[j].cost) { sprintf(buf, "%s Sorry you dont have enough gold to travel to %s\n\r", ch->name, travel_table[j].long_desc); send_to_char(buf, travel_mage); return; } ch->gold -= travel_table[j].cost; act( AT_PLAIN,"$n disappears in a violet fog.\n\r", ch, NULL, NULL, TO_ROOM ); sprintf(buf, "You are surrounded by a violet fog.{x\n\r"); char_from_room (ch); char_to_room (ch, get_room_index(travel_table[j].vnum)); ch_printf(ch, buf); mount = ch->mount; if (ch->mount != NULL && ch->mount->in_room == ch->in_room) { char_from_room(mount); char_to_room (mount, get_room_index(travel_table[j].vnum)); act(AT_PLAIN,"&M$n disappears in a violet fog.&x\n\r", ch, NULL, NULL, TO_ROOM); } do_look (ch, ""); return; } } send_to_char("Sorry, that location is not on the list.\n\r", ch); return; } } void do_heal(CHAR_DATA *ch, char *argument) { CHAR_DATA *mob; char arg[MAX_INPUT_LENGTH]; int cost,sn; SPELL_FUN *spell; char *words; /* Search for an act_healer */ for ( mob = ch->in_room->first_person; mob; mob = mob->next_in_room ) { if ( IS_NPC(mob) && xIS_SET(mob->act, ACT_HEALER) ) break; } if ( mob == NULL ) { send_to_char( "You can't do that here.\n\r", ch ); return; } one_argument(argument,arg); if (arg[0] == '\0') { /* display price list */ act(AT_PLAIN,"$N says 'I offer the following spells:'",ch,NULL,mob,TO_CHAR); send_to_char(" light: cure light wounds 1000 gold\n\r",ch); send_to_char(" serious: cure serious wounds 1500 gold\n\r",ch); send_to_char(" critical: cure critical wounds 2500 gold\n\r",ch); send_to_char(" heal: healing spell 5000 gold\n\r",ch); send_to_char(" blind: cure blindness 2000 gold\n\r",ch); send_to_char(" poison: cure poison 2500 gold\n\r",ch); send_to_char(" curse: remove curse 5000 gold\n\r",ch); send_to_char(" refresh: restore movement 500 gold\n\r",ch); send_to_char(" mana: restore mana 1000 gold\n\r",ch); send_to_char(" Type heal <type> to be healed.\n\r",ch); return; } if (!str_cmp(arg,"light")) { spell = spell_smaug; sn = skill_lookup("cure light"); words = "judicandus dies"; cost = 1000; } else if (!str_cmp(arg,"serious")) { spell = spell_smaug; sn = skill_lookup("cure serious"); words = "judicandus gzfuajg"; cost = 1600; } else if (!str_cmp(arg,"critical")) { spell = spell_smaug; sn = skill_lookup("cure critical"); words = "judicandus qfuhuqar"; cost = 2500; } else if (!str_cmp(arg,"heal")) { spell = spell_smaug; sn = skill_lookup("heal"); words = "pzar"; cost = 5000; } else if (!str_cmp(arg,"blind")) { spell = spell_cure_blindness; sn = skill_lookup("cure blindness"); words = "judicandus noselacri"; cost = 2000; } else if (!str_cmp(arg,"poison")) { spell = spell_cure_poison; sn = skill_lookup("cure poison"); words = "judicandus sausabru"; cost = 2500; } else if (!str_cmp(arg,"curse")) { spell = spell_remove_curse; sn = skill_lookup("remove curse"); words = "candussido judifgz"; cost = 5000; } else if (!str_cmp(arg,"mana")) { spell = NULL; sn = -1; words = "energizer"; cost = 1000; } else if (!str_cmp(arg,"refresh") ) { spell = spell_smaug; sn = skill_lookup("refresh"); words = "candusima"; cost = 500; } else { act(AT_PLAIN,"$N says ' Type 'heal' for a list of spells.'", ch,NULL,mob,TO_CHAR); return; } if (cost > ch->gold ) { act(AT_PLAIN,"$N says 'You do not have enough gold for my services.'", ch,NULL,mob,TO_CHAR); return; } WAIT_STATE(ch, PULSE_VIOLENCE); ch->gold -= cost; act(AT_PLAIN,"$n utters the words '$T'.",mob,NULL,words,TO_ROOM); if (spell == NULL) { ch->mana += dice(2,8) + ch->level / 3; ch->mana += UMIN(ch->level,ch->max_mana - ch->mana); send_to_char("A warm glow passes through you.\n\r",ch); return; } if (sn == -1) return; spell(sn,ch->level,mob,ch); }