#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "rok.h" #define MONK_AUTODROP 11 void divide_to_char args( ( CHAR_DATA *ch ) ); void divide2_to_char args( ( CHAR_DATA *ch ) ); void divide3_to_char args( ( CHAR_DATA *ch ) ); void divide4_to_char args( ( CHAR_DATA *ch ) ); void divide5_to_char args( ( CHAR_DATA *ch ) ); void divide6_to_char args( ( CHAR_DATA *ch ) ); void do_rand_typo args( ( CHAR_DATA *ch ) ); void autodrop args( ( CHAR_DATA *ch) ); #define MAX_QUOTES 5 void do_nosummon( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( arg[0] == '\0') { send_to_char( "Do you wish to switch summon ON or OFF?\n\r", ch ); return; } if (IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"on")) { REMOVE_BIT(ch->immune, IMM_SUMMON); send_to_char("You can no longer be the target of summon and portal.\n\r", ch); } else if (!IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"on")) { send_to_char("But your nosummon is already on!\n\r", ch); return;} else if (!IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"off")) { SET_BIT(ch->immune, IMM_SUMMON); send_to_char("You can now be the target of summon and portal.\n\r", ch); } else if (IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"off")) { send_to_char("But your nosummon is already off!\n\r", ch); return;} else send_to_char( "Do you wish to switch it ON or OFF?\n\r", ch ); return; } void divide_to_char(CHAR_DATA *ch) { send_to_char("-------------------------------------------------------------------------------\r\n", ch); } void divide2_to_char(CHAR_DATA *ch) { send_to_char("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\r\n", ch); } void divide3_to_char(CHAR_DATA *ch) { send_to_char("===============================================================================\r\n",ch); } void divide4_to_char(CHAR_DATA *ch) { send_to_char("-=[**]=-=[**]=-=[**]=-=[**]=-=[**]=-=[***]=-=[**]=-=[**]=-=[**]=-=[**]=-=[**]=-\r\n",ch); } void divide5_to_char(CHAR_DATA *ch) { send_to_char("-=[***********]=-------------=[***********]=-",ch); } void divide6_to_char(CHAR_DATA *ch) { send_to_char("- - - - - -- ---====*====--- -- - - - - -",ch); } struct quote_type { char * text; /* Declare the Quote table... */ char * author; }; const struct quote_type quote_table [MAX_QUOTES] = { { "Extraordinary Claims require Extraordinary evidence.", "Carl Sagan" }, /* Quote No 1 */ { "Eagles may soar high and free, but tigers never get sucked into jet engines...", "Anon" }, { "The mud says,'Good bye.' in it's best AOL voice.", "#4Xkilla#n" }, { "Bye!", "Xkilla" }, /* Thats 4 quotes! */ { "My thy blade stay sharp and thy heart forever dark!", "#3KaVir#n" }, }; void do_rand_quote( CHAR_DATA *ch ) { char buf[MAX_STRING_LENGTH]; int number; number = number_range( 1, MAX_QUOTES) - 1; sprintf ( buf, "\n\r#4%s\n\r - #1%s#n\n\r", quote_table[number].text, quote_table[number].author); /* NB Yellow quote, Red author */ send_to_char ( buf, ch ); return; } const char *typo_table [14] = { "Uhh, invalid command maybe!", "What is that suppose to be!", "What is your problem!", "What ever you say!", "#1Info#2->#4 You can't type!", "You're very dumb aren't you!", "What!!", "AAAAGGGGGGGHHHHHHHHH!!!!!", "Chance of that working next time is 2%", "Chance of that working next time is 95%", "Chance of that working next time is 0%", "NOT EVEN #2XKILLA#4 WOULD TYPE THAT!!!!", "NOT EVEN ERREON WOULD TYPE THAT!!!!", "Master I don't think he can type master" }; void do_rand_typo(CHAR_DATA *ch) { char buf[MAX_STRING_LENGTH]; int number; number = number_range(1, 13); sprintf(buf, "#1%s\n\r", typo_table[number]); send_to_char(buf, ch); return; } void do_circle( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_NINJA) || ch->pcdata->powers[NPOWER_NINGENNO] < 6) { send_to_char("Huh?\n\r", ch ); return;} if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { if (ch->fighting == NULL) { send_to_char( "They aren't here.\n\r", ch ); return;} else victim = ch->fighting; } if ( victim == ch ) { send_to_char( "How can you circle yourself?\n\r", ch ); return; } if ( is_safe( ch, victim ) ) return; check_killer( ch, victim ); if (number_percent() > 10) multi_hit( ch, victim, gsn_circle ); else damage( ch, victim, 0, gsn_circle ); WAIT_STATE( ch, 8 ); return; } void do_autostance(CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; argument = one_argument(argument,arg); if (IS_NPC(ch)) return; if (!str_cmp(arg,"none")) { send_to_char("You no longer autostance.\n\r", ch ); ch->stance[MONK_AUTODROP] = STANCE_NONE;} else if (!str_cmp(arg, "crane")) { send_to_char("You now autostance into the crane stance.\n\r",ch ); ch->stance[MONK_AUTODROP] = STANCE_CRANE;} else if (!str_cmp(arg, "crab")) { send_to_char("You now autostance into the crab stance.\n\r", ch ); ch->stance[MONK_AUTODROP] = STANCE_CRAB;} else if (!str_cmp(arg, "bull")) { send_to_char("You now autostance into the bull stance.\n\r", ch ); ch->stance[MONK_AUTODROP] = STANCE_BULL;} else if (!str_cmp(arg, "viper")) { send_to_char("You now autostance into the viper stance.\n\r", ch ); ch->stance[MONK_AUTODROP] = STANCE_VIPER;} else if (!str_cmp(arg, "mongoose")) { send_to_char("You now autostance into the mongoose stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_MONGOOSE;} else if (!str_cmp(arg, "mantis") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_VIPER] >= 200) { send_to_char("You now autostance into the mantis stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_MANTIS;} else if (!str_cmp(arg, "monkey") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { send_to_char("You now autostance into the monkey stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_MONKEY;} else if (!str_cmp(arg, "swallow") && ch->stance[STANCE_CRAB] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { send_to_char("You now autostance into the swallow stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_SWALLOW;} else if (!str_cmp(arg, "tiger") && ch->stance[STANCE_BULL] >= 200 && ch->stance[STANCE_VIPER] >= 200) { send_to_char("You now autostance into the tiger stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_TIGER;} else if (!str_cmp(arg, "dragon") && ch->stance[STANCE_CRAB] >= 200 && ch->stance[STANCE_BULL] >= 200) { send_to_char("You now autostance into the dragon stance.\n\r", ch); ch->stance[MONK_AUTODROP] = STANCE_DRAGON;} else send_to_char("You can't set your autostance to that!\n\r",ch); } void autodrop(CHAR_DATA *ch) { int st; char buf [MAX_INPUT_LENGTH]; char buf2 [MAX_INPUT_LENGTH]; char stancename [10]; if (IS_NPC(ch)) return; st = ch->stance[11]; if (st == STANCE_VIPER) sprintf(stancename,"viper"); else if (st == STANCE_CRANE) sprintf(stancename,"crane"); else if (st == STANCE_CRAB) sprintf(stancename,"crab"); else if (st == STANCE_MONGOOSE) sprintf(stancename,"mongoose"); else if (st == STANCE_BULL) sprintf(stancename,"bull"); else if (st == STANCE_MANTIS) sprintf(stancename,"mantis"); else if (st == STANCE_DRAGON) sprintf(stancename,"dragon"); else if (st == STANCE_TIGER) sprintf(stancename,"tiger"); else if (st == STANCE_MONKEY) sprintf(stancename,"monkey"); else if (st == STANCE_SWALLOW) sprintf(stancename,"swallow"); else return; if (ch->stance[0] < 1) { ch->stance[0] = st; sprintf(buf, "You autodrop into the %s stance.", stancename); act(buf, ch, NULL, NULL, TO_CHAR); sprintf(buf2, "$n autodrops into the %s stance.", stancename); act(buf2, ch, NULL, NULL, TO_ROOM); } } void do_level( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; char skill [20]; one_argument( argument, arg ); if (IS_NPC(ch)) return; send_to_char( "#7------------------------------------------------------------------------------\n\r",ch); send_to_char( " #6 -= Skill =- \n\r",ch); send_to_char( "#7------------------------------------------------------------------------------\n\r",ch); send_to_char( " #6 Weapon\n\r",ch); sprintf( buf, "#1Unarm: %-3d Slice: %-3d Stab: %-3d Slash: %-3d Whip : %-3d Claw: %-3d Blast: %-3d\n\r", ch->wpn[0],ch->wpn[1],ch->wpn[2],ch->wpn[3],ch->wpn[4],ch->wpn[5],ch->wpn[6]); send_to_char(buf,ch); sprintf( buf, "#1Pound: %-3d Crush: %-3d Grep: %-3d Bite: %-3d Pierce: %-3d Suck: %-3d\n\r", ch->wpn[7],ch->wpn[8],ch->wpn[9],ch->wpn[10], ch->wpn[11],ch->wpn[12]); send_to_char(buf,ch); send_to_char( "#7------------------------------------------------------------------------------\n\r",ch); send_to_char( " #6 Basic Stances\n\r",ch); sprintf( buf, "#0Viper : %-3d Crane: %-3d Crab : %-3d Mongoose: %-3d Bull: %-3d\n\r", ch->stance[1],ch->stance[2],ch->stance[3],ch->stance[4],ch->stance[5]); send_to_char(buf,ch); send_to_char( "#7------------------------------------------------------------------------------\n\r",ch); send_to_char( " #6 Advanced Stances\n\r",ch); sprintf( buf, "#2Mantis: %-3d Dragon: %-3d Tiger: %-3d Monkey: %-3d Swallow : %-3d\n\r", ch->stance[6],ch->stance[7],ch->stance[8],ch->stance[9],ch->stance[10]); send_to_char(buf,ch); send_to_char( "#7------------------------------------------------------------------------------\n\r",ch); send_to_char( " #6 Magic\n\r",ch); sprintf( buf, "#5Purple: %-3d #1Red: %-3d #4 Blue: %-3d #2 Green: %-3d #3Yellow: %-3d\n\r",ch->spl[0], ch->spl[1],ch->spl[2],ch->spl[3],ch->spl[4]); send_to_char(buf,ch); send_to_char( "#7------------------------------------------------------------------------------#n\n\r",ch); if ( IS_SET(ch->special, SPC_PRINCE) ) send_to_char("#0You are a prince! #n \n\r", ch); sprintf(skill, "#0Generation : %d #n \n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); sprintf(skill, "#0Recall Room : %d #n \n\r",ch->home); if ( IS_CLASS(ch, CLASS_DEMON) ) send_to_char("#0You are a demon! #n \n\r", ch); if ( IS_CLASS(ch, CLASS_MAGE) ) send_to_char("#0You are a mage! #n \n\r", ch); if ( IS_CLASS(ch, CLASS_WEREWOLF) ) send_to_char("#0You are a werewolf! #n \n\r", ch); if ( IS_CLASS(ch, CLASS_VAMPIRE) ) send_to_char("#0You are a vampire! #n \n\r", ch); return; } void do_affects( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; AFFECT_DATA *paf; if (IS_NPC(ch)) return; if ( ch->affected == NULL ) { send_to_char( "--------------------------------------------\n\r", ch); send_to_char( "You have nothing affecting you at this time.\n\r", ch); send_to_char( "--------------------------------------------\n\r", ch); return; } if ( ch->affected != NULL ) { send_to_char( "#4You are affected by:#n\n\r", ch ); for ( paf = ch->affected; paf != NULL; paf = paf->next ) { sprintf( buf, "#3Spell:#n '%s'", skill_table[paf->type].name ); send_to_char( buf, ch ); if ( ch->level >= 0 ) { sprintf( buf, " modifies %s by %d for %d hours with bits %s.\n\r", affect_loc_name( paf->location ), paf->modifier, paf->duration, affect_bit_name( paf->bitvector ) ); send_to_char( buf, ch ); } } } return; } void do_afk( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; if ( IS_NPC(ch) ) return; if (IS_SET(ch->flag2, EXTRA_AFK)) { free_string( ch->pcdata->title); ch->pcdata->title = str_dup( ch->short_descr ); free_string( ch->short_descr ); ch->short_descr = NULL; send_to_char( "#6You are no longer#2 AFK#6.#n\n\r", ch ); sprintf(buf,"#6%s is no longer #2AFK#6!#n",ch->name); do_info(ch,buf); REMOVE_BIT(ch->flag2,EXTRA_AFK); return; } else if (!IS_SET(ch->flag2,EXTRA_AFK)) { free_string( ch->short_descr ); ch->short_descr = str_dup( ch->pcdata->title ); free_string( ch->pcdata->title ); ch->pcdata->title = str_dup(".. #1A#2F#3K#n"); send_to_char( "#6You are now #2AFK#6.#n\n\r", ch ); sprintf(buf,"#6%s is now #2AFK#6!#n",ch->name); do_info(ch,buf); SET_BIT(ch->flag2,EXTRA_AFK); WAIT_STATE(ch, 25); return; } else return; } void do_apply ( CHAR_DATA *ch, char *argument ) { char arg1[MAX_INPUT_LENGTH]; argument = one_argument( argument, arg1 ); if (IS_NPC(ch)) send_to_char("Only Players can be Quest Trusted.\n\r",ch); if ( arg1[0] == '\0' ) { send_to_char( "Usage: APPLY QUEST\n\r", ch ); return; } if (!str_cmp( arg1, "quest" )) { if (IS_EXTRA(ch, EXTRA_TRUSTED)) { send_to_char("You are already Quest Trusted\n\r",ch); return; } send_to_char("Your application for Questing Trust has been recieved\n\r",ch); send_to_char("and is being processed.....\n\r\n\r",ch); if ( ( ch->pcdata->score[SCORE_NUM_QUEST] >= 2) && (ch->pcdata->score[SCORE_QUEST] >= 100)) { send_to_char("You have been blessed with Questing Trust.\n\r",ch); SET_BIT(ch->extra, EXTRA_TRUSTED); return; } else { send_to_char("Your Application has been Denied!\n\r",ch); send_to_char("You need to complete 2 quests,\n\r",ch); send_to_char("Must have 100 qp on hand.\n\r",ch); return; } } } void do_selfrestore( CHAR_DATA *ch, char *argument ) { if (IS_NPC(ch)) return; if (ch->in_room == NULL || ch->in_room->vnum != 3054) { send_to_char("You can only get a restore at the Temple Altar of Midgaard.\n\r",ch); return; } if ( ch->exp < 100000) { send_to_char("You need 100,000 xp to restore self.\n\r", ch); return; } ch->exp -= 100000; do_restore(ch,"self"); send_to_char("God answers you, you are restored.\n\r",ch); return; } void do_clanname( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg ); if ( IS_NPC(ch) ) return; if ( arg[0] == '\0' ) { send_to_char( "Who's clan do you wish to change or name?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( IS_NPC(victim) ) return; smash_tilde( argument ); if ( strlen(argument) < 0 || strlen(argument) > 13 ) { send_to_char( "Clan name should be between 0 and 13 letters long.\n\r", ch ); send_to_char( "Leave a blank to remove clan.\n\r", ch); return; } free_string( victim->clan ); victim->clan = str_dup( argument ); send_to_char("Clan set.\n\r", ch); send_to_char("Clan set.\n\r", victim); return; } void do_version( CHAR_DATA *ch, char *argument ) { send_to_char( "******************************************************\n\r", ch ); send_to_char( "* Revenge of Kalos Version: 1.0 *\n\r", ch ); send_to_char( "* Coded by: Xkilla *\n\r", ch ); send_to_char( "******************************************************\n\r", ch ); return; } void do_restore( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; CHAR_DATA *victim; DESCRIPTOR_DATA *d; sprintf(buf,"%s: Restore %s",ch->name,argument); if (ch->level < NO_WATCH) do_watching(ch,buf); one_argument( argument, arg ); if ( arg[0] == '\0' ) { send_to_char( "Restore whom?\n\r", ch ); return; } if ( get_trust(ch) >= MAX_LEVEL - 2 && !str_cmp(arg,"all")) { /* cure all */ for (d = descriptor_list; d != NULL; d = d->next) { victim = d->character; if (victim == NULL || IS_NPC(victim)) continue; { affect_strip(victim,gsn_poison); affect_strip(victim,gsn_blindness); affect_strip(victim,gsn_sleep); affect_strip(victim,gsn_sleep); affect_strip(victim,gsn_curse); victim->hit = victim->max_hit; victim->mana = victim->max_mana; victim->move = victim->max_move; update_pos( victim); if (victim->in_room != NULL) act("$n has restored you.",ch,NULL,victim,TO_VICT); } } send_to_char("All active players restored.\n\r",ch); return; } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if (IS_SET(victim->act, PLR_GODLESS) && get_trust(ch) < NO_GODLESS && !IS_SET(ch->extra , EXTRA_ANTI_GODLESS)) { send_to_char( "You failed.\n\r", ch ); return; } victim->hit = victim->max_hit; victim->mana = victim->max_mana; victim->move = victim->max_move; victim->loc_hp[0] = 0; victim->loc_hp[1] = 0; victim->loc_hp[2] = 0; victim->loc_hp[3] = 0; victim->loc_hp[4] = 0; victim->loc_hp[5] = 0; victim->loc_hp[6] = 0; update_pos( victim ); act( "$n has restored you.", ch, NULL, victim, TO_VICT ); send_to_char( "Ok.\n\r", ch ); return; } void do_newbiepack( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; if (IS_SET(ch->newbits,NEWBIE_PACK)) { send_to_char("Due to abuse you now may only create 1 newbie pack\n\r",ch); return; } else if (ch->level == 1) { ch->level = 12; ch->trust = 12; do_oload(ch,"2319"); do_oload(ch,"30333"); do_oload(ch,"30334"); do_oload(ch,"30335"); do_oload(ch,"30336"); do_oload(ch,"30337"); do_oload(ch,"30338"); do_oload(ch,"30339"); do_oload(ch,"30339"); do_oload(ch,"30340"); do_oload(ch,"30340"); do_oload(ch,"30341"); do_oload(ch,"30342"); do_oload(ch,"30342"); do_oload(ch,"30343"); do_oload(ch,"30343"); do_oload(ch,"30344"); do_oload(ch,"2622"); do_oload(ch,"2204"); ch->level = 1; ch->trust = 0; do_open(ch,"girdle"); sprintf(buf,"all girdle"); do_put(ch,buf); send_to_char("You now have a newbie pack!\n\r", ch); SET_BIT(ch->newbits,NEWBIE_PACK); } return; }