/* ************************************************************************ * File: act.other.c Part of CircleMUD * * Usage: Miscellaneous player-level commands * * * * All rights reserved. See license.doc for complete information. * * * * Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University * * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. * ************************************************************************ */ #define __ACT_OTHER_C__ #include "conf.h" #include "sysdep.h" #include "structs.h" #include "utils.h" #include "comm.h" #include "interpreter.h" #include "handler.h" #include "db.h" #include "spells.h" #include "screen.h" #include "house.h" #include "dg_scripts.h" /* extern variables */ extern char arg1 [MAX_INPUT_LENGTH]; extern char arg2 [MAX_INPUT_LENGTH]; extern int spell_sort_info[MAX_SKILLS+1]; extern struct str_app_type str_app[]; extern struct room_data *world; extern struct descriptor_data *descriptor_list; extern struct dex_skill_type dex_app_skill[]; extern struct spell_info_type spell_info[]; extern struct index_data *mob_index; extern char *class_abbrevs[]; extern struct spell_entry spells[]; extern int free_rent; extern int pt_allowed; extern int max_filesize; extern int nameserver_is_slow; extern int top_of_world; extern int auto_save; extern sh_int r_death_start_room; /* extern procedures */ void list_skills(struct char_data * ch); void appear(struct char_data * ch); void perform_immort_vis(struct char_data *ch); SPECIAL(shop_keeper); ACMD(do_gen_comm); void die(struct char_data * ch, struct char_data * killer); void Crash_rentsave(struct char_data * ch, int cost); void make_corpse(struct char_data * ch); /* local functions */ ACMD(do_quit); ACMD(do_save); ACMD(do_fly); ACMD(do_not_here); ACMD(do_SWIFTNESS); ACMD(do_hide); ACMD(do_steal); ACMD(do_practice); ACMD(do_visible); ACMD(do_title); int perform_group(struct char_data *ch, struct char_data *vict); void print_group(struct char_data *ch); ACMD(do_group); ACMD(do_ungroup); ACMD(do_inplant); ACMD(do_report); ACMD(do_split); ACMD(do_ssj); ACMD(do_kaioken); ACMD(do_spar); ACMD(do_sparkick); ACMD(do_sparpunch); ACMD(do_sparelbow); ACMD(do_sparknee); ACMD(do_sparkiblast); ACMD(do_transform); ACMD(do_learn); ACMD(do_use); ACMD(do_repair); ACMD(do_wimpy); ACMD(do_display); ACMD(do_stealth); ACMD(do_gen_write); ACMD(do_powerup); ACMD(do_powerdown); ACMD(do_gen_tog); ACMD(do_ingest); ACMD(do_upgrade); ACMD(do_quit) { sh_int save_room; struct descriptor_data *d, *next_d; if (IS_NPC(ch) || !ch->desc) return; if (AFF_FLAGGED(ch, AFF_MAJIN)) { send_to_char("Your master won't let you.\r\n", ch); return; } if (AFF_FLAGGED(ch, AFF_HALTED)) { send_to_char("You can't!\r\n", ch); return; } if (IS_SET(ROOM_FLAGS(ch->in_room), ROOM_ND)) { send_to_char("You cannot quit in the next dimension.\r\n", ch); return; } if (GET_POS(ch) == POS_FIGHTING) { send_to_char("You cannot quit while fighting.\r\n", ch); return; } if (PRF_FLAGGED(ch, PRF_OOZARU)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_OOZARU); send_to_char("You revert to humanoid form before you leave..\r\n", ch); GET_MAX_HIT(ch) -= 10000; GET_MAX_MANA(ch) -= 10000; } if (subcmd != SCMD_QUIT && GET_LEVEL(ch) < LVL_IMMORT) send_to_char("You have to type quit--no less, to quit!\r\n", ch); else if (GET_POS(ch) == POS_FIGHTING) send_to_char("No way! You're fighting for your life!\r\n", ch); else if (GET_POS(ch) < POS_STUNNED) { char_to_room(ch, 4500); die(ch, NULL); } else { if (!GET_INVIS_LEV(ch)) act("$n has left the game.", TRUE, ch, 0, 0, TO_ROOM); sprintf(buf, "%s has quit the game.", GET_NAME(ch)); mudlog(buf, NRM, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE); send_to_char("Goodbye, friend.. Come back soon!\r\n", ch); /* * kill off all sockets connected to the same player as the one who is * trying to quit. Helps to maintain sanity as well as prevent duping. */ for (d = descriptor_list; d; d = next_d) { next_d = d->next; if (d == ch->desc) continue; if (d->character && (GET_IDNUM(d->character) == GET_IDNUM(ch))) STATE(d) = CON_DISCONNECT; } save_room = ch->in_room; if (free_rent) Crash_rentsave(ch, 0); extract_char(ch); /* Char is saved in extract char */ /* If someone is quitting in their house, let them load back here */ if (ROOM_FLAGGED(save_room, ROOM_HOUSE)) save_char(ch, save_room); } } ACMD(do_save) { if (IS_NPC(ch) || !ch->desc) return; /* Only tell the char we're saving if they actually typed "save" */ if (cmd) { /* * This prevents item duplication by two PC's using coordinated saves * (or one PC with a house) and system crashes. Note that houses are * still automatically saved without this enabled. */ if (auto_save) { send_to_char("Manual saving is disabled.\r\n", ch); return; } sprintf(buf, "Saving %s.\r\n", GET_NAME(ch)); send_to_char(buf, ch); } save_char(ch, NOWHERE); Crash_crashsave(ch); if (ROOM_FLAGGED(ch->in_room, ROOM_HOUSE_CRASH)) House_crashsave(GET_ROOM_VNUM(IN_ROOM(ch))); } /* generic function for commands which are normally overridden by special procedures - i.e., shop commands, mail commands, etc. */ ACMD(do_not_here) { send_to_char("Sorry, but you cannot do that here!\r\n", ch); } ACMD(do_SWIFTNESS) { struct affected_type af; byte percent; send_to_char("You starts moving so fast you cannot be seen.\r\n", ch); if (AFF_FLAGGED(ch, AFF_SWIFTNESS)) affect_from_char(ch, SKILL_SWIFTNESS); percent = number(1, 101); /* 101% is a complete failure */ if (percent > GET_SKILL(ch, SKILL_SWIFTNESS) + dex_app_skill[GET_DEX(ch)].SWIFTNESS) return; af.type = SKILL_SWIFTNESS; af.duration = GET_LEVEL(ch); af.modifier = 0; af.location = APPLY_NONE; af.bitvector = AFF_SWIFTNESS; affect_to_char(ch, &af); } ACMD(do_hide) { byte percent; send_to_char("You attempt to hide yourself.\r\n", ch); if (AFF_FLAGGED(ch, AFF_HIDE)) REMOVE_BIT(AFF_FLAGS(ch), AFF_HIDE); percent = number(1, 101); /* 101% is a complete failure */ if (percent > GET_SKILL(ch, SKILL_HIDE) + dex_app_skill[GET_DEX(ch)].hide) return; SET_BIT(AFF_FLAGS(ch), AFF_HIDE); } ACMD(do_steal) { struct char_data *vict; struct obj_data *obj; char vict_name[MAX_INPUT_LENGTH], obj_name[MAX_INPUT_LENGTH]; int percent, gold, eq_pos, pcsteal = 0, ohoh = 0; if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL)) { send_to_char("This room just has such a peaceful, easy feeling...\r\n", ch); return; } argument = one_argument(argument, obj_name); one_argument(argument, vict_name); if (!(vict = get_char_room_vis(ch, vict_name))) { send_to_char("Steal what from who?\r\n", ch); return; } else if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } /* 101% is a complete failure */ percent = number(1, 101) - dex_app_skill[GET_DEX(ch)].p_pocket; if (GET_POS(vict) < POS_SLEEPING) percent = -1; /* ALWAYS SUCCESS */ if (!pt_allowed && !IS_NPC(vict)) pcsteal = 1; /* NO NO With Imp's and Shopkeepers, and if player thieving is not allowed */ if (GET_LEVEL(vict) >= LVL_IMMORT || pcsteal || GET_MOB_SPEC(vict) == shop_keeper) percent = 101; /* Failure */ if (str_cmp(obj_name, "coins") && str_cmp(obj_name, "gold")) { if (!(obj = get_obj_in_list_vis(vict, obj_name, vict->carrying))) { for (eq_pos = 0; eq_pos < NUM_WEARS; eq_pos++) if (GET_EQ(vict, eq_pos) && (isname(obj_name, GET_EQ(vict, eq_pos)->name)) && CAN_SEE_OBJ(ch, GET_EQ(vict, eq_pos))) { obj = GET_EQ(vict, eq_pos); break; } if (!obj) { act("$E hasn't got that item.", FALSE, ch, 0, vict, TO_CHAR); return; } else { /* It is equipment */ if ((GET_POS(vict) > POS_STUNNED)) { send_to_char("Steal the equipment now? Impossible!\r\n", ch); return; } else { act("You unequip $p and steal it.", FALSE, ch, obj, 0, TO_CHAR); act("$n steals $p from $N.", FALSE, ch, obj, vict, TO_NOTVICT); obj_to_char(unequip_char(vict, eq_pos), ch); } } } else { /* obj found in inventory */ percent += GET_OBJ_WEIGHT(obj); /* Make heavy harder */ if (AWAKE(vict) && (percent > GET_SKILL(ch, SKILL_STEAL))) { ohoh = TRUE; act("Oops..", FALSE, ch, 0, 0, TO_CHAR); act("$n tried to steal something from you!", FALSE, ch, 0, vict, TO_VICT); act("$n tries to steal something from $N.", TRUE, ch, 0, vict, TO_NOTVICT); } else { /* Steal the item */ if ((IS_CARRYING_N(ch) + 1 < CAN_CARRY_N(ch))) { if ((IS_CARRYING_W(ch) + GET_OBJ_WEIGHT(obj)) < CAN_CARRY_W(ch)) { obj_from_char(obj); obj_to_char(obj, ch); send_to_char("Got it!\r\n", ch); } } else send_to_char("You cannot carry that much.\r\n", ch); } } } else { /* Steal some coins */ if (AWAKE(vict) && (percent > GET_SKILL(ch, SKILL_STEAL))) { ohoh = TRUE; act("Oops..", FALSE, ch, 0, 0, TO_CHAR); act("You discover that $n has $s hands in your wallet.", FALSE, ch, 0, vict, TO_VICT); act("$n tries to steal gold from $N.", TRUE, ch, 0, vict, TO_NOTVICT); } else { /* Steal some gold coins */ gold = (int) ((GET_GOLD(vict) * number(1, 10)) / 100); gold = MIN(1782, gold); if (gold > 0) { GET_GOLD(ch) += gold; GET_GOLD(vict) -= gold; if (gold > 1) { sprintf(buf, "Bingo! You got %d gold coins.\r\n", gold); send_to_char(buf, ch); } else { send_to_char("You manage to swipe a solitary gold coin.\r\n", ch); } } else { send_to_char("You couldn't get any gold...\r\n", ch); } } } if (ohoh && IS_NPC(vict) && AWAKE(vict)) hit(vict, ch, TYPE_UNDEFINED); } ACMD(do_practice) { one_argument(argument, arg); if (*arg) send_to_char("You can only practice skills in your guild.\r\n", ch); else list_skills(ch); } ACMD(do_visible) { if (GET_LEVEL(ch) >= LVL_IMMORT) { perform_immort_vis(ch); return; } if AFF_FLAGGED(ch, AFF_INVISIBLE) { appear(ch); send_to_char("You break the spell of invisibility.\r\n", ch); } else send_to_char("You are already visible.\r\n", ch); } ACMD(do_title) { skip_spaces(&argument); delete_doubledollar(argument); if (IS_NPC(ch)) send_to_char("Your title is fine... go away.\r\n", ch); else if (PLR_FLAGGED(ch, PLR_NOTITLE)) send_to_char("You can't title yourself -- you shouldn't have abused it!\r\n", ch); else if (strstr(argument, "(") || strstr(argument, ")")) send_to_char("Titles can't contain the ( or ) characters.\r\n", ch); else if (strlen(argument) > MAX_TITLE_LENGTH) { sprintf(buf, "Sorry, titles can't be longer than %d characters.\r\n", MAX_TITLE_LENGTH); send_to_char(buf, ch); } else { set_title(ch, argument); sprintf(buf, "Okay, you're now %s %s.\r\n", GET_NAME(ch), GET_TITLE(ch)); send_to_char(buf, ch); } } int perform_group(struct char_data *ch, struct char_data *vict) { if (AFF_FLAGGED(vict, AFF_GROUP) || !CAN_SEE(ch, vict)) return 0; SET_BIT(AFF_FLAGS(vict), AFF_GROUP); if (ch != vict) act("$N is now a member of your group.", FALSE, ch, 0, vict, TO_CHAR); act("You are now a member of $n's group.", FALSE, ch, 0, vict, TO_VICT); act("$N is now a member of $n's group.", FALSE, ch, 0, vict, TO_NOTVICT); return 1; } void print_group(struct char_data *ch) { struct char_data *k; struct follow_type *f; if (!AFF_FLAGGED(ch, AFF_GROUP)) send_to_char("But you are not the member of a group!\r\n", ch); else { send_to_char("Your group consists of:\r\n", ch); k = (ch->master ? ch->master : ch); if (AFF_FLAGGED(k, AFF_GROUP)) { sprintf(buf, " [%3dH %3dM %3dV] [%s] $N (Head of group)", GET_HIT(k), GET_MANA(k), GET_MOVE(k), CLASS_ABBR(k)); act(buf, FALSE, ch, 0, k, TO_CHAR); } for (f = k->followers; f; f = f->next) { if (!AFF_FLAGGED(f->follower, AFF_GROUP)) continue; sprintf(buf, " [%3dH %3dM %3dV] [%s] $N", GET_HIT(f->follower), GET_MANA(f->follower), GET_MOVE(f->follower), CLASS_ABBR(f->follower)); act(buf, FALSE, ch, 0, f->follower, TO_CHAR); } } } ACMD(do_group) { struct char_data *vict; struct follow_type *f; int found; one_argument(argument, buf); if (!*buf) { print_group(ch); return; } if (ch->master) { act("You can not enroll group members without being head of a group.", FALSE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(buf, "all")) { perform_group(ch, ch); for (found = 0, f = ch->followers; f; f = f->next) found += perform_group(ch, f->follower); if (!found) send_to_char("Everyone following you is already in your group.\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, buf))) send_to_char(NOPERSON, ch); else if ((vict->master != ch) && (vict != ch)) act("$N must follow you to enter your group.", FALSE, ch, 0, vict, TO_CHAR); else { if (!AFF_FLAGGED(vict, AFF_GROUP)) perform_group(ch, vict); else { if (ch != vict) act("$N is no longer a member of your group.", FALSE, ch, 0, vict, TO_CHAR); act("You have been kicked out of $n's group!", FALSE, ch, 0, vict, TO_VICT); act("$N has been kicked out of $n's group!", FALSE, ch, 0, vict, TO_NOTVICT); REMOVE_BIT(AFF_FLAGS(vict), AFF_GROUP); } } } ACMD(do_ungroup) { struct follow_type *f, *next_fol; struct char_data *tch; one_argument(argument, buf); if (!*buf) { if (ch->master || !(AFF_FLAGGED(ch, AFF_GROUP))) { send_to_char("But you lead no group!\r\n", ch); return; } sprintf(buf2, "%s has disbanded the group.\r\n", GET_NAME(ch)); for (f = ch->followers; f; f = next_fol) { next_fol = f->next; if (AFF_FLAGGED(f->follower, AFF_GROUP)) { REMOVE_BIT(AFF_FLAGS(f->follower), AFF_GROUP); send_to_char(buf2, f->follower); if (!AFF_FLAGGED(f->follower, AFF_MAJIN)) stop_follower(f->follower); } } REMOVE_BIT(AFF_FLAGS(ch), AFF_GROUP); send_to_char("You disband the group.\r\n", ch); return; } if (!(tch = get_char_room_vis(ch, buf))) { send_to_char("There is no such person!\r\n", ch); return; } if (tch->master != ch) { send_to_char("That person is not following you!\r\n", ch); return; } if (!AFF_FLAGGED(tch, AFF_GROUP)) { send_to_char("That person isn't in your group.\r\n", ch); return; } REMOVE_BIT(AFF_FLAGS(tch), AFF_GROUP); act("$N is no longer a member of your group.", FALSE, ch, 0, tch, TO_CHAR); act("You have been kicked out of $n's group!", FALSE, ch, 0, tch, TO_VICT); act("$N has been kicked out of $n's group!", FALSE, ch, 0, tch, TO_NOTVICT); if (!AFF_FLAGGED(tch, AFF_MAJIN)) stop_follower(tch); } ACMD(do_report) { struct char_data *k; struct follow_type *f; if (!AFF_FLAGGED(ch, AFF_GROUP)) { send_to_char("But you are not a member of any group!\r\n", ch); return; } sprintf(buf, "%s reports: %d/%dH, %d/%dK, %d/%dV\r\n", GET_NAME(ch), GET_HIT(ch), GET_MAX_HIT(ch), GET_MANA(ch), GET_MAX_MANA(ch), GET_MOVE(ch), GET_MAX_MOVE(ch)); CAP(buf); k = (ch->master ? ch->master : ch); for (f = k->followers; f; f = f->next) if (AFF_FLAGGED(f->follower, AFF_GROUP) && f->follower != ch) send_to_char(buf, f->follower); if (k != ch) send_to_char(buf, k); send_to_char("You report to the group.\r\n", ch); } ACMD(do_split) { int amount, num, share; struct char_data *k; struct follow_type *f; if (IS_NPC(ch)) return; one_argument(argument, buf); if (is_number(buf)) { amount = atoi(buf); if (amount <= 0) { send_to_char("Sorry, you can't do that.\r\n", ch); return; } if (amount > GET_GOLD(ch)) { send_to_char("You don't seem to have that much gold to split.\r\n", ch); return; } k = (ch->master ? ch->master : ch); if (AFF_FLAGGED(k, AFF_GROUP) && (k->in_room == ch->in_room)) num = 1; else num = 0; for (f = k->followers; f; f = f->next) if (AFF_FLAGGED(f->follower, AFF_GROUP) && (!IS_NPC(f->follower)) && (f->follower->in_room == ch->in_room)) num++; if (num && AFF_FLAGGED(ch, AFF_GROUP)) share = amount / num; else { send_to_char("With whom do you wish to share your gold?\r\n", ch); return; } GET_GOLD(ch) -= share * (num - 1); if (AFF_FLAGGED(k, AFF_GROUP) && (k->in_room == ch->in_room) && !(IS_NPC(k)) && k != ch) { GET_GOLD(k) += share; sprintf(buf, "%s splits %d coins; you receive %d.\r\n", GET_NAME(ch), amount, share); send_to_char(buf, k); } for (f = k->followers; f; f = f->next) { if (AFF_FLAGGED(f->follower, AFF_GROUP) && (!IS_NPC(f->follower)) && (f->follower->in_room == ch->in_room) && f->follower != ch) { GET_GOLD(f->follower) += share; sprintf(buf, "%s splits %d coins; you receive %d.\r\n", GET_NAME(ch), amount, share); send_to_char(buf, f->follower); } } sprintf(buf, "You split %d coins among %d members -- %d coins each.\r\n", amount, num, share); send_to_char(buf, ch); } else { send_to_char("How many coins do you wish to split with your group?\r\n", ch); return; } } ACMD(do_use) { struct obj_data *mag_item; int equipped = 1; half_chop(argument, arg, buf); if (!*arg) { sprintf(buf2, "What do you want to %s?\r\n", CMD_NAME); send_to_char(buf2, ch); return; } mag_item = GET_EQ(ch, WEAR_SHIELD); if (!mag_item || !isname(arg, mag_item->name)) { switch (subcmd) { case SCMD_SWALLOW: case SCMD_PLANT: equipped = 0; if (!(mag_item = get_obj_in_list_vis(ch, arg, ch->carrying))) { sprintf(buf2, "You don't seem to have %s %s.\r\n", AN(arg), arg); send_to_char(buf2, ch); return; } break; case SCMD_USE: sprintf(buf2, "You don't seem to be wearing %s %s.\r\n", AN(arg), arg); send_to_char(buf2, ch); return; default: log("SYSERR: Unknown subcmd %d passed to do_use.", subcmd); return; } } switch (subcmd) { case SCMD_PLANT: if (GET_OBJ_TYPE(mag_item) != ITEM_SAIBAKIT) { send_to_char("You can only plant seeds.", ch); return; } break; case SCMD_SWALLOW: if (GET_OBJ_TYPE(mag_item) != ITEM_SENZU) { send_to_char("You can only swallow senzu's.", ch); return; } break; case SCMD_USE: if ((GET_OBJ_TYPE(mag_item) != ITEM_SCOUTER) && (GET_OBJ_TYPE(mag_item) != ITEM_STAFF)) { send_to_char("You can't seem to figure out how to use it.\r\n", ch); return; } break; } mag_objectmagic(ch, mag_item, buf); } ACMD(do_wimpy) { int wimp_lev; /* 'wimp_level' is a player_special. -gg 2/25/98 */ if (IS_NPC(ch)) return; one_argument(argument, arg); if (!*arg) { if (GET_WIMP_LEV(ch)) { sprintf(buf, "Your current wimp level is %d hit points.\r\n", GET_WIMP_LEV(ch)); send_to_char(buf, ch); return; } else { send_to_char("At the moment, you're not a wimp. (sure, sure...)\r\n", ch); return; } } if (isdigit(*arg)) { if ((wimp_lev = atoi(arg))) { if (wimp_lev < 0) send_to_char("Heh, heh, heh.. we are jolly funny today, eh?\r\n", ch); else if (wimp_lev > GET_MAX_HIT(ch)) send_to_char("That doesn't make much sense, now does it?\r\n", ch); else if (wimp_lev > (GET_MAX_HIT(ch) / 2)) send_to_char("You can't set your wimp level above half your hit points.\r\n", ch); else { sprintf(buf, "Okay, you'll wimp out if you drop below %d hit points.\r\n", wimp_lev); send_to_char(buf, ch); GET_WIMP_LEV(ch) = wimp_lev; } } else { send_to_char("Okay, you'll now tough out fights to the bitter end.\r\n", ch); GET_WIMP_LEV(ch) = 0; } } else send_to_char("Specify at how many hit points you want to wimp out at. (0 to disable)\r\n", ch); return; } ACMD(do_display) { size_t i; if (IS_NPC(ch)) { send_to_char("Mosters don't need displays. Go away.\r\n", ch); return; } skip_spaces(&argument); if (!*argument) { send_to_char("Usage: prompt { { H | M | V } | all | none }\r\n", ch); return; } if ((!str_cmp(argument, "on")) || (!str_cmp(argument, "all"))) SET_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE); else { REMOVE_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE); for (i = 0; i < strlen(argument); i++) { switch (LOWER(argument[i])) { case 'h': SET_BIT(PRF_FLAGS(ch), PRF_DISPHP); break; case 'm': SET_BIT(PRF_FLAGS(ch), PRF_DISPMANA); break; case 'v': SET_BIT(PRF_FLAGS(ch), PRF_DISPMOVE); break; default: send_to_char("Usage: prompt { { H | M | V } | all | none }\r\n", ch); return; break; } } } send_to_char(OK, ch); } ACMD(do_gen_write) { FILE *fl; char *tmp, buf[MAX_STRING_LENGTH]; const char *filename; struct stat fbuf; time_t ct; switch (subcmd) { case SCMD_BUG: filename = BUG_FILE; break; case SCMD_TYPO: filename = TYPO_FILE; break; case SCMD_IDEA: filename = IDEA_FILE; break; default: return; } ct = time(0); tmp = asctime(localtime(&ct)); if (IS_NPC(ch)) { send_to_char("Monsters can't have ideas - Go away.\r\n", ch); return; } skip_spaces(&argument); delete_doubledollar(argument); if (!*argument) { send_to_char("That must be a mistake...\r\n", ch); return; } sprintf(buf, "%s %s: %s", GET_NAME(ch), CMD_NAME, argument); mudlog(buf, CMP, LVL_IMMORT, FALSE); if (stat(filename, &fbuf) < 0) { perror("Error statting file"); return; } if (fbuf.st_size >= max_filesize) { send_to_char("Sorry, the file is full right now.. try again later.\r\n", ch); return; } if (!(fl = fopen(filename, "a"))) { perror("do_gen_write"); send_to_char("Could not open the file. Sorry.\r\n", ch); return; } fprintf(fl, "%-8s (%6.6s) [%5d] %s\n", GET_NAME(ch), (tmp + 4), GET_ROOM_VNUM(IN_ROOM(ch)), argument); fclose(fl); send_to_char("Okay. Thanks!\r\n", ch); } #define TOG_OFF 0 #define TOG_ON 1 #define PRF_TOG_CHK(ch,flag) ((TOGGLE_BIT(PRF_FLAGS(ch), (flag))) & (flag)) ACMD(do_gen_tog) { long result; const char *tog_messages[][2] = { {"Nohassle disabled.\r\n", "Nohassle enabled.\r\n"}, {"Brief mode off.\r\n", "Brief mode on.\r\n"}, {"Compact mode off.\r\n", "Compact mode on.\r\n"}, {"You can now hear tells.\r\n", "You are now deaf to tells.\r\n"}, {"You can now hear oocs.\r\n", "You are now deaf to oocs.\r\n"}, {"You can now hear shouts.\r\n", "You are now deaf to shouts.\r\n"}, {"You can now hear telepathic messages.\r\n", "You are now deaf to telepathic messages.\r\n"}, {"You can now hear the congratulation messages.\r\n", "You are now deaf to the congratulation messages.\r\n"}, {"You can now hear the Wiz-channel.\r\n", "You are now deaf to the Wiz-channel.\r\n"}, {"You are no longer part of the Quest.\r\n", "Okay, you are part of the Quest!\r\n"}, {"You will no longer see the room flags.\r\n", "You will now see the room flags.\r\n"}, {"You will now have your communication repeated.\r\n", "You will no longer have your communication repeated.\r\n"}, {"HolyLight mode off.\r\n", "HolyLight mode on.\r\n"}, {"Nameserver_is_slow changed to NO; IP addresses will now be resolved.\r\n", "Nameserver_is_slow changed to YES; sitenames will no longer be resolved.\r\n"}, {"Autoexits disabled.\r\n", "Autoexits enabled.\r\n"}, {"AFK flag is now off.\r\n", "AFK flag is now on.\r\n"}, {"You pack up and clean out your camp.\r\n", "&15You start a small fire and open camp to rest.\r\n"}, }; if (IS_NPC(ch)) return; switch (subcmd) { case SCMD_NOHASSLE: result = PRF_TOG_CHK(ch, PRF_NOHASSLE); break; case SCMD_BRIEF: result = PRF_TOG_CHK(ch, PRF_BRIEF); break; case SCMD_COMPACT: result = PRF_TOG_CHK(ch, PRF_COMPACT); break; case SCMD_NOTELL: result = PRF_TOG_CHK(ch, PRF_NOTELL); break; case SCMD_NOooc: result = PRF_TOG_CHK(ch, PRF_NOooc); break; case SCMD_DEAF: result = PRF_TOG_CHK(ch, PRF_DEAF); break; case SCMD_NOGOSSIP: result = PRF_TOG_CHK(ch, PRF_NOGOSS); break; case SCMD_NOGRATZ: result = PRF_TOG_CHK(ch, PRF_NOGRATZ); break; case SCMD_NOWIZ: result = PRF_TOG_CHK(ch, PRF_NOWIZ); break; case SCMD_QUEST: result = PRF_TOG_CHK(ch, PRF_QUEST); break; case SCMD_ROOMFLAGS: result = PRF_TOG_CHK(ch, PRF_ROOMFLAGS); break; case SCMD_NOREPEAT: result = PRF_TOG_CHK(ch, PRF_NOREPEAT); break; case SCMD_HOLYLIGHT: result = PRF_TOG_CHK(ch, PRF_HOLYLIGHT); break; case SCMD_SLOWNS: result = (nameserver_is_slow = !nameserver_is_slow); break; case SCMD_AUTOEXIT: result = PRF_TOG_CHK(ch, PRF_AUTOEXIT); break; case SCMD_AFK: result = PRF_TOG_CHK(ch, PRF_AFK); if (PRF_FLAGGED(ch, PRF_AFK)) act("$n has gone AFK.", TRUE, ch, 0, 0, TO_ROOM); else act("$n has come back from AFK.", TRUE, ch, 0, 0, TO_ROOM); break; case SCMD_CAMP: result = PRF_TOG_CHK(ch, PRF_CAMP); if (PRF_FLAGGED(ch, PRF_CAMP)) act("$n sprawls out on the ground and sets up camp.", TRUE, ch, 0, 0, TO_ROOM); else act("$n packs up some stuff and leaves their camp.", TRUE, ch, 0, 0, TO_ROOM); break; default: log("SYSERR: Unknown subcmd %d in do_gen_toggle.", subcmd); return; } if (result) send_to_char(tog_messages[subcmd][TOG_ON], ch); else send_to_char(tog_messages[subcmd][TOG_OFF], ch); return; } ACMD(do_repair) { int MOVE = 0, HIT = 0; if (!GET_SKILL(ch, SKILL_REPAIR)) { send_to_char("You can't do that!\r\n", ch); return; } else if (IS_ANDROID(ch) &&GET_MOVE(ch) <= GET_LEVEL(ch)*2-1) { act("You don't have enough energy to repair your circuits.", TRUE, ch, 0, 0, TO_CHAR); } else if (IS_ANDROID(ch) &&GET_HIT(ch) < GET_MAX_HIT(ch) && GET_MOVE(ch) >= GET_LEVEL(ch)*2+1) { send_to_char("You stand still for a moment and repair your internal circuits.\r\n", ch); act("&10$n repairs $s internal circuits.&00", TRUE, ch, 0, 0, TO_ROOM); MOVE = number(GET_LEVEL(ch)*2+10, GET_LEVEL(ch)*2+10); HIT = number(GET_LEVEL(ch)+10, GET_LEVEL(ch)+10); GET_MOVE(ch) = GET_MOVE(ch) - MOVE; GET_HIT(ch) = GET_HIT(ch) + HIT; } else if (IS_ANDROID(ch) &&GET_HIT(ch) >= GET_MAX_HIT(ch)) { act("You are already fully repaired.", TRUE, ch, 0, 0, TO_CHAR); } } ACMD(do_kaioken) { int MANA = 0, HIT = 0; one_argument(argument, arg); if (!GET_SKILL(ch, SKILL_KAIOKEN)) { send_to_char("You don't know that technique!\r\n", ch); return; } else if (!*argument) { send_to_char("Usage: Kaioken (1-20)\r\n", ch); return; } if (!str_cmp(arg,"1") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"1") && GET_MANA(ch) >= GET_MAX_MANA(ch)+100){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"1")){ send_to_char("&10You begin over working your body by reaching kaioken level 1.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 1!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(100, 100); HIT = number(100, 100); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"2") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"2") && GET_MANA(ch) >= GET_MAX_MANA(ch)+300){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"2")){ send_to_char("&10You begin over working your body by reaching kaioken level 2.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 2!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(300, 300); HIT = number(300, 300); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"3") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"3") && GET_MANA(ch) >= GET_MAX_MANA(ch)+600){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"3")){ send_to_char("&10You begin over working your body by reaching kaioken level 3.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 3!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(600, 600); HIT = number(600, 600); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"4") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"4") && GET_MANA(ch) >= GET_MAX_MANA(ch)+1000){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"4")){ send_to_char("&10You begin over working your body by reaching kaioken level 4.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 4!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(1000, 1000); HIT = number(1000, 1000); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"5") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"5") && GET_MANA(ch) >= GET_MAX_MANA(ch)+1500){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"5")){ send_to_char("&10You begin over working your body by reaching kaioken level 5.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 5!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(1500, 1500); HIT = number(1500, 1500); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"6") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"6") && GET_MANA(ch) >= GET_MAX_MANA(ch)+2100){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"6")){ send_to_char("&10You begin over working your body by reaching kaioken level 6.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 6!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(2100, 2100); HIT = number(2100, 2100); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"7") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"7") && GET_MANA(ch) >= GET_MAX_MANA(ch)+2800){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"7")){ send_to_char("&10You begin over working your body by reaching kaioken level 7.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 7!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(2800, 2800); HIT = number(2800, 2800); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"8") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"8") && GET_MANA(ch) >= GET_MAX_MANA(ch)+3600){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"8")){ send_to_char("&10You begin over working your body by reaching kaioken level 8.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 8!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(3600, 3600); HIT = number(3600, 3600); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"9") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"9") && GET_MANA(ch) >= GET_MAX_MANA(ch)+4500){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"9")){ send_to_char("&10You begin over working your body by reaching kaioken level 9.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 9!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(4500, 4500); HIT = number(4500, 4500); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"10") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"10") && GET_MANA(ch) >= GET_MAX_MANA(ch)+5500){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"10")){ send_to_char("&10You begin over working your body by reaching kaioken level 10.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 10!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(5500, 5500); HIT = number(5500, 5500); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"11") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"11") && GET_MANA(ch) >= GET_MAX_MANA(ch)+6600){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"11")){ send_to_char("&10You begin over working your body by reaching kaioken level 11.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 11!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(6600, 6600); HIT = number(6600, 6600); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"12") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"12") && GET_MANA(ch) >= GET_MAX_MANA(ch)+7800){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"12")){ send_to_char("&10You begin over working your body by reaching kaioken level 12.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 12!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(7800, 7800); HIT = number(7800, 7800); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"13") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"13") && GET_MANA(ch) >= GET_MAX_MANA(ch)+9100){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"13")){ send_to_char("&10You begin over working your body by reaching kaioken level 13.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 13!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(9100, 9100); HIT = number(9100, 9100); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"14") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"14") && GET_MANA(ch) >= GET_MAX_MANA(ch)+10500){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"14")){ send_to_char("&10You begin over working your body by reaching kaioken level 14.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 14!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(10500, 10500); HIT = number(10500, 10500); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"15") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"15") && GET_MANA(ch) >= GET_MAX_MANA(ch)+12000){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"15")){ send_to_char("&10You begin over working your body by reaching kaioken level 15.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 15!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(12000, 12000); HIT = number(12000, 12000); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"16") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"16") && GET_MANA(ch) >= GET_MAX_MANA(ch)+13600){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"16")){ send_to_char("&10You begin over working your body by reaching kaioken level 16.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 16!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(13600, 13600); HIT = number(13600, 13600); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"17") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"17") && GET_MANA(ch) >= GET_MAX_MANA(ch)+15300){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"17")){ send_to_char("&10You begin over working your body by reaching kaioken level 17.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 17!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(15300, 15300); HIT = number(15300, 15300); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"18") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"18") && GET_MANA(ch) >= GET_MAX_MANA(ch)+17100){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"18")){ send_to_char("&10You begin over working your body by reaching kaioken level 18.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 18!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(17100, 17100); HIT = number(17100, 17100); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"19") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"19") && GET_MANA(ch) >= GET_MAX_MANA(ch)+19000){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"19")){ send_to_char("&10You begin over working your body by reaching kaioken level 19.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 19!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(19000, 19000); HIT = number(19000, 19000); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (!str_cmp(arg,"20") && GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You don't have enough strength to do that.\r\n", ch); } else if (!str_cmp(arg,"20") && GET_MANA(ch) >= GET_MAX_MANA(ch)+25000){ send_to_char("You're already passed that stage of kaioken.\r\n", ch); } else if (!str_cmp(arg,"20")){ send_to_char("&10You begin over working your body by reaching kaioken level 20.&00\r\n", ch); act("&09$n overworks $s body by reaching kaioken level 20!&00", TRUE, ch, 0, 0, TO_ROOM); MANA = number(25000, 25000); HIT = number(25000, 25000); GET_MANA(ch) = GET_MANA(ch) + MANA; GET_HIT(ch) = GET_HIT(ch) - HIT; } if (GET_HIT(ch) <= 0) { send_to_char("&09You overwork your body too much and explode.&00\r\n", ch); act("&10$n&09 tries to reach a kaioken level beyond thier limit and explodes!&00", TRUE, ch, 0, 0, TO_ROOM); char_from_room(ch); char_to_room(ch, r_death_start_room); GET_HIT(ch) = GET_MAX_HIT(ch)*0.1; GET_MANA(ch) = GET_MAX_MANA(ch)*0.1; GET_MOVE(ch) = GET_MAX_MOVE(ch)*0.1; GET_POS(ch) = POS_STANDING; look_at_room(ch, 0); } } ACMD(do_learn) { char buf[1024]; int r = 1 << GET_CLASS(ch); int i = 0; argument = one_argument(argument, buf); if (buf[0] != '\0') { int skill = 0; while (spells[skill].name[0] != '\n') { if (!strncasecmp(buf, spells[skill].name, strlen(buf))) { if (!(spells[skill].races & r)) { send_to_char("You can't learn that.\r\n", ch); return; } else if (GET_PRACTICES(ch) < spells[skill].cost) { send_to_char("You don't have enough learning points to learn that.\r\n", ch); return; } else if (GET_SKILL(ch, skill) != 0) { send_to_char("You already know that technique.\r\n", ch); return; } else { sprintf(buf, "&15You expend &09%d&15 learning points to learn &10%s&00.\r\n", spells[skill].cost, spells[skill].name); send_to_char(buf, ch); GET_PRACTICES(ch) = GET_PRACTICES(ch) - spells[skill].cost; GET_SKILL(ch, skill) = 100; return; } } else { ++skill; } } sprintf(buf, "%s is not a technique.\r\n", argument); send_to_char(buf, ch); return; } send_to_char("&15o&12---------------------------------------------------------&15o&00\r\n", ch); send_to_char("&15&12|&11Technique: &14Cost: &12|&00\r\n", ch); send_to_char("&15o&12---------------------------------------------------------&15o&00\r\n", ch); while (spells[i].name[0] != '\n') { if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) && spells[i].type == SPELL_OFFENSIVE) { sprintf(buf, "&12|%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&09" : "&09", spells[i].name, spells[i].cost, "|"); send_to_char(buf, ch); } else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) && spells[i].type == SPELL_DEFENSIVE) { sprintf(buf, "&12|%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&12" : "&12", spells[i].name, spells[i].cost, "|"); send_to_char(buf, ch); } else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) && spells[i].type == SPELL_ENHANCE) { sprintf(buf, "&12|%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&10" : "&10", spells[i].name, spells[i].cost, "|"); send_to_char(buf, ch); } else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) && spells[i].type == SPELL_OTHER) { sprintf(buf, "&12|%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&15" : "&15", spells[i].name, spells[i].cost, "|"); send_to_char(buf, ch); } else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) && spells[i].type == SPELL_HEALSPELL) { sprintf(buf, "&12|%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&13" : "&13", spells[i].name, spells[i].cost, "|"); send_to_char(buf, ch); } ++i; } send_to_char("&15o&12---------------------------------------------------------&15o&00\r\n", ch); sprintf(buf, "&15You have &09%d &15learning points.&00\r\n", GET_PRACTICES(ch)); send_to_char(buf, ch); } ACMD(do_learned) { char buf[1024]; int col = 0, pos = 0; buf[0] = '\0'; send_to_char("&10You know the following techniques:&00.\r\n", ch); for (pos = 1; pos < MAX_SKILLS; ++pos) { int i = spell_sort_info[pos]; if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' && spells[i].type == SPELL_OFFENSIVE) { char buf2[32]; sprintf(buf2, "%s%-20s%s", spells[i].type ? "&09" : "&09", spells[i].name, "&00"); strcat(buf, buf2); ++col; } if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' && spells[i].type == SPELL_DEFENSIVE) { char buf2[32]; sprintf(buf2, "%s%-20s%s", spells[i].type ? "&12" : "&12", spells[i].name, "&00"); strcat(buf, buf2); ++col; } if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' && spells[i].type == SPELL_ENHANCE) { char buf2[32]; sprintf(buf2, "%s%-20s%s", spells[i].type ? "&10" : "&10", spells[i].name, "&00"); strcat(buf, buf2); ++col; } if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' && spells[i].type == SPELL_OTHER) { char buf2[32]; sprintf(buf2, "%s%-20s%s", spells[i].type ? "&15" : "&15", spells[i].name, "&00"); strcat(buf, buf2); ++col; } if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' && spells[i].type == SPELL_HEALSPELL) { char buf2[32]; sprintf(buf2, "%s%-20s%s", spells[i].type ? "&13" : "&13", spells[i].name, "&00"); strcat(buf, buf2); ++col; } if (col % 3 == 2) { send_to_char(buf, ch); /* send_to_char("\r\n", ch); */ /* Uncomment to do a newline after ever 3 */ buf[0] = '\0'; } } } ACMD(do_fly) { } ACMD(do_powerup) { int MANA = 0; if (!GET_SKILL(ch, SKILL_POWERUP)) { send_to_char("You can't do that!\r\n", ch); return; } if (GET_MANA(ch) >= GET_MAX_MANA(ch)) { act("You are already fully powered up!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (GET_MANA(ch) < GET_MAX_MANA(ch)) { send_to_char("You concentrate and recharge your ki as you powerup.\r\n", ch); MANA = number(1, 200); GET_MANA(ch) = GET_MANA(ch) + MANA; return; } } ACMD(do_ingest) { int MAX_HIT = 0, EXP = 0, MAX_MANA; struct char_data * vict; one_argument(argument, arg); if (!GET_SKILL(ch, SKILL_INGEST)) { send_to_char("You can't do that!\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Absorb who?\r\n", ch); return; } if (GET_MAX_MANA(ch) >= 5000) { act("&15Eating people will no longer benefit you!", FALSE, ch, 0, vict, TO_CHAR); return; } if (IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch)*2 >= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)) { act("&15You eat &09$N&15!", FALSE, ch, 0, vict, TO_CHAR); act("&09$n&15 eat &09$N&15!.", TRUE, ch, 0, vict, TO_NOTVICT); act("&09$n&15 eats you!&00", FALSE, ch, 0, vict, TO_VICT); MAX_HIT = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10, GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10); MAX_MANA = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10, GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10); EXP = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict), GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; GET_EXP(ch) = GET_EXP(ch) + EXP; } if (IS_NPC(vict)) { extract_char(vict); return; } if (IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch)*2 <= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)) { act("&15You cannot over power them enough to eat them!", FALSE, ch, 0, vict, TO_CHAR); return; } } ACMD(do_powerdown) { int MANA = 0; if (!GET_SKILL(ch, SKILL_POWERDOWN)) { send_to_char("You can't do that!\r\n", ch); return; } if (GET_MANA(ch) <= GET_MAX_MANA(ch)-GET_MAX_MANA(ch)) { act("You dropped your power level as low as you can already.", TRUE, ch, 0, 0, TO_CHAR); return; } if (GET_MANA(ch) <= GET_MAX_MANA(ch)-1) { act("You already used some energy theres no point.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (GET_MANA(ch) >= GET_MAX_MANA(ch)) { send_to_char("You concentrate and compress all your energy.\r\n", ch); MANA = number(GET_MAX_MANA(ch), GET_MAX_MANA(ch)); GET_MANA(ch) = GET_MANA(ch) - MANA; return; } } ACMD(do_upgrade) { one_argument(argument, arg); if (!IS_ANDROID(ch) && (GET_LEVEL(ch) >= 1)) { act("&15Only androids may aquire upgrades and upgrade information.&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!*argument && IS_ANDROID(ch)) { send_to_char("&10Upgrading commands:&00\r\n", ch); send_to_char("&09-------------------&00\r\n", ch); send_to_char("&15Upgrade info &00\r\n", ch); send_to_char("&15Upgrade new &00\r\n", ch); send_to_char("&15Upgrade latest &00\r\n", ch); send_to_char("&15Upgrade minor &00\r\n", ch); return; } if (!str_cmp(arg,"latest") && IS_ANDROID(ch)) { act("&15The most current robotic version is version &095.0&12a&15.&00", TRUE, ch, 0, 0, TO_CHAR); } if (!str_cmp(arg,"info") && IS_ANDROID(ch)) { act("&15Current Circuitry Version: &090.01&12a&00", TRUE, ch, 0, 0, TO_CHAR); act("&15Mental Processing Speed: &10Basic&00", TRUE, ch, 0, 0, TO_CHAR); act("&15Extra Damage Capacity Units: &090&00", TRUE, ch, 0, 0, TO_CHAR); act("&15Extra Ki Units: &090&00", TRUE, ch, 0, 0, TO_CHAR); act("&15Internal Sensors: &10Basic&00", TRUE, ch, 0, 0, TO_CHAR); } if (!str_cmp(arg,"minor") && IS_ANDROID(ch)) { act("&15Upgrade to 1.0b, 1.0c and so on, not done yet.&00", TRUE, ch, 0, 0, TO_CHAR); } } ACMD(do_absorb) { int MAX_HIT = 0, EXP = 0, MAX_MANA; struct char_data * vict; one_argument(argument, arg); if (!GET_SKILL(ch, SKILL_ABSORB)) { send_to_char("You can't do that!\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Absorb who?\r\n", ch); return; } if (GET_MAX_MANA(ch) >= 5000) { act("&15Absorbing people will no longer benefit you!", FALSE, ch, 0, vict, TO_CHAR); return; } if (IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch)*2 >= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)) { act("&15You absorb &09$N&15 into your body!", FALSE, ch, 0, vict, TO_CHAR); act("&09$n&15 absorbs &09$N&15 into $s body!.", TRUE, ch, 0, vict, TO_NOTVICT); act("&09$n&15 absorbs you into $s body!&00", FALSE, ch, 0, vict, TO_VICT); MAX_HIT = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10, GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10); MAX_MANA = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10, GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)/10); EXP = number(GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict), GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; GET_EXP(ch) = GET_EXP(ch) + EXP; } if (IS_NPC(vict)) { extract_char(vict); return; } if (IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch)*2 <= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)) { act("&15You cannot over power them enough to absorb them!", FALSE, ch, 0, vict, TO_CHAR); return; } } ACMD(do_selfdestruct) { struct char_data * vict; one_argument(argument, arg); if (!GET_SKILL(ch, SKILL_DESTRUCT)) { send_to_char("You can't do that!\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Self destruct on who?\r\n", ch); return; } if (!IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch) >= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)) { act("&15You self detruct taking &09$N&15 with you!&00", FALSE, ch, 0, vict, TO_CHAR); act("&09$n &15self-destructs taking &09$N with $S&00.", TRUE, ch, 0, vict, TO_NOTVICT); act("&09$n&15 self-destructs killing you with the explosion!&00", FALSE, ch, 0, vict, TO_VICT); char_from_room(vict); char_to_room(vict, r_death_start_room); GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); GET_POS(vict) = POS_STANDING; look_at_room(vict, 0); char_from_room(ch); char_to_room(ch, r_death_start_room); GET_HIT(ch) = GET_MAX_HIT(ch); GET_MANA(ch) = GET_MAX_MANA(ch); GET_MOVE(ch) = GET_MAX_MOVE(ch); GET_POS(ch) = POS_STANDING; look_at_room(ch, 0); if (IS_NPC(vict)) extract_char(vict); char_from_room(ch); char_to_room(ch, r_death_start_room); GET_HIT(ch) = GET_MAX_HIT(ch); GET_MANA(ch) = GET_MAX_MANA(ch); GET_MOVE(ch) = GET_MAX_MOVE(ch); GET_POS(ch) = POS_STANDING; look_at_room(ch, 0); } else if (!IS_NPC(vict) && GET_STR(ch)*2+GET_MANA(ch)/4*GET_LEVEL(ch)+GET_DAMROLL(ch) <= GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)){ act("&15You self detruct but &09$N&15 does not die!&00", FALSE, ch, 0, vict, TO_CHAR); act("&09$n &15self-destructs but fails to take &09$N with $S&00.", TRUE, ch, 0, vict, TO_NOTVICT); act("&09$n&15 self-destructs but fails to kill you!&00", FALSE, ch, 0, vict, TO_VICT); char_from_room(ch); char_to_room(ch, r_death_start_room); GET_HIT(ch) = GET_MAX_HIT(ch); GET_MANA(ch) = GET_MAX_MANA(ch); GET_MOVE(ch) = GET_MAX_MOVE(ch); GET_POS(ch) = POS_STANDING; look_at_room(ch, 0); } } ACMD(do_powersense) { struct char_data * vict; one_argument(argument, arg); if (!GET_SKILL(ch, SKILL_POWERSENSE)) { send_to_char("You can't do that!\r\n", ch); return; } if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Detect who's power?\r\n", ch); return; } if (vict) { /* victim */ act("You pause for a moment as you stare at $N.", FALSE, ch, 0, vict, TO_CHAR); act("$n stares at $N momentarily..", TRUE, ch, 0, vict, TO_NOTVICT); act("$n stares at you momentarily.&00", FALSE, ch, 0, vict, TO_VICT); sprintf(buf, "%s has a power level of &10%Ld&15.&00\r\n",GET_NAME(vict), GET_STR(vict)*2+GET_MANA(vict)/4*GET_LEVEL(vict)+GET_DAMROLL(vict)); send_to_char(buf, ch); } } ACMD(do_ssj) { int MAX_MANA = 0, MAX_HIT = 0; one_argument(argument, arg); if ((!IS_saiyan(ch)) && (!IS_HALF_BREED(ch))) { act("Your not part saiyan!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!*argument) { act(" &10o&12_&09-------------------------&12_&10o&00" " &09| &11Super Saiyan Forms&00 &09|&00" " &10o&12_&09-------------------------&12_&10o&00" " &09|&10You can do the following:&09|&00" " &09|&09-------------------------&09|&00" " &09|&15Stage: Power Level Req.:&09|&00 ", TRUE, ch, 0, 0, TO_CHAR); act(" &09| &10First &14800000&00 &09|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &09| &10Second &145000000&00 &09|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &09| &10Third &1410000000&00 &09|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &09| &10Fourth &1425000000&00 &09|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &10o&12_&09-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------ Oozaru checks, no SSj in oozaru -----------------*/ if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_OOZARU)) { act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"second") && PRF_FLAGGED(ch, PRF_OOZARU)) { act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && PRF_FLAGGED(ch, PRF_OOZARU)) { act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------ Checks to see if already in that stage if ssj -----------------*/ if (!str_cmp(arg,"second") && !PRF_FLAGGED(ch, PRF_SSJ1)) { act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && !PRF_FLAGGED(ch, PRF_SSJ2)) { act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*---------------------------------- Reverting --------------------------------------*/ if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_SSJ3)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ1); REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ2); REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ3); MAX_HIT = number(35000, 35000); MAX_MANA = number(35000, 35000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $s stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_SSJ2)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ1); REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ2); MAX_HIT = number(15000, 15000); MAX_MANA = number(15000, 15000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $s stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_SSJ1)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_SSJ1); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $s stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*------------------------------------ SSj 1 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_SSJ1)) { act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"first") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 800000) { act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"first") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 800000) { SET_BIT(PRF_FLAGS(ch), PRF_SSJ1); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&15 begins growling as $s body starts &09flaming&00 &11yellow&15, $s &12hair&15 stands on end and begins to turn &11gold&15, and $s &12eyes&15 turn a &06light blue&15!&00", TRUE, ch, 0, 0, TO_ROOM); act("&15You begin &13growling&15 as your body starts &09glowing&00 &11yellow&15. your &10hair&15 stands on end and begins to turn &11gold&15. and your &12eyes&15 turn a &06light blue&15!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*------------------------------------ SSj 2 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"second") && PRF_FLAGGED(ch, PRF_SSJ2)) { act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"second") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 5000000) { act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"second") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 5000000) { SET_BIT(PRF_FLAGS(ch), PRF_SSJ2); MAX_HIT = number(10000, 10000); MAX_MANA = number(10000, 10000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&15's hair stands on end moreso then before as they begin to crackle with &12electrical&15 energy!&00", TRUE, ch, 0, 0, TO_ROOM); act("&15You begin to crackle with &12electrical&15 energy and bolts surround you.&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------ What Half-breeds can't do ----------------------------------------*/ if (!str_cmp(arg,"third") && IS_HALF_BREED(ch)) { act("&15You can't go past super saiyan 2.&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------------------------ SSj 3 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"third") && PRF_FLAGGED(ch, PRF_SSJ3)) { act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 10000000) { act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && GET_STR(ch)*2+GET_MAX_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 10000000) { SET_BIT(PRF_FLAGS(ch), PRF_SSJ3); MAX_HIT = number(20000, 20000); MAX_MANA = number(20000, 20000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&15's &11golden&15 hair grows down past their back, there eyes turn &09devilish&15 and they are covered in a &11glowing&15 aura!&00", TRUE, ch, 0, 0, TO_ROOM); act("&15Your &11golden&15 hair grows down past your back, and your eyes turn &09devilish&15 as you are covered in a &11glowing&15 aura!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ } ACMD(do_stealth) { struct affected_type af; if (!GET_SKILL(ch, SKILL_STEALTH)) { send_to_char("You can't do that!\r\n", ch); return; } else af.type = SKILL_SWIFTNESS; af.duration = GET_LEVEL(ch); af.modifier = 0; af.location = APPLY_NONE; af.bitvector = AFF_SWIFTNESS; affect_to_char(ch, &af); SET_BIT(AFF_FLAGS(ch), AFF_HIDE); act("&11$n&15's skin color flickers as they fade into the surroundings.", TRUE, ch, 0, 0, TO_ROOM); act("&15You pause for a moment and meld to your surroundings.&00", TRUE, ch, 0, 0, TO_CHAR); } ACMD(do_transform) { int MAX_MANA = 0, MAX_HIT = 0; one_argument(argument, arg); if (!IS_icer(ch)) { act("Your not an icer!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!*argument && IS_icer(ch)) { act(" &10o&12_&12-------------------------&12_&10o&00" " &12| &12 Icer Forms&00 &12|&00" " &10o&12_&12-------------------------&12_&10o&00" " &12|&10You can do the following:&12|&00" " &12|&12-------------------------&12|&00" " &12|&15Stage: Power Level Req.:&12|&00 ", TRUE, ch, 0, 0, TO_CHAR); act(" &12| &10First &14800000&00 &12|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &12| &10Second &141600000&00 &12|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &12| &10Third &143500000&00 &12|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &12| &10Fourth &145000000&00 &12|&00", TRUE, ch, 0, 0, TO_CHAR); act(" &10o&12_&12-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------ Checks to see if already in that stage -----------------*/ if (!str_cmp(arg,"second") && !PRF_FLAGGED(ch, PRF_TR1)) { act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && !PRF_FLAGGED(ch, PRF_TR2)) { act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"fourth") && !PRF_FLAGGED(ch, PRF_TR3)) { act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*---------------------------------- Reverting --------------------------------------*/ if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_TR4)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_TR1); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR2); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR3); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR4); MAX_HIT = number(25000, 25000); MAX_MANA = number(25000, 25000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_TR3)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_TR1); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR2); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR3); MAX_HIT = number(15000, 15000); MAX_MANA = number(15000, 15000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_TR2)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_TR1); REMOVE_BIT(PRF_FLAGS(ch), PRF_TR2); MAX_HIT = number(10000, 10000); MAX_MANA = number(10000, 10000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_TR1)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_TR1); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA; act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM); act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*------------------------------------ TR 1 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_TR1)) { act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"first") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 800000) { act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"first") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 800000) { SET_BIT(PRF_FLAGS(ch), PRF_TR1); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&14 kneels over as they grow in a mass of energy and &12horns&14 protrude from the top of $s skull!&00", TRUE, ch, 0, 0, TO_ROOM); act("&14You kneel over as you grow to a large mass!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*------------------------------------ TR 2 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"second") && PRF_FLAGGED(ch, PRF_TR2)) { act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"second") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 1600000) { act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"second") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 1600000) { SET_BIT(PRF_FLAGS(ch), PRF_TR2); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&14's head grows larger protruding many &12horns&14 and $s body tones down in size as they transform!&00", TRUE, ch, 0, 0, TO_ROOM); act("&14You begin to shrink slightly and your head begins to protrude many horns!.&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------*/ /*------------------------------------ TR 3 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"third") && PRF_FLAGGED(ch, PRF_TR3)) { act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 3500000) { act("&14You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"third") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 3500000) { SET_BIT(PRF_FLAGS(ch), PRF_TR3); MAX_HIT = number(5000, 5000); MAX_MANA = number(5000, 5000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&14's body begins to shrink in a mass of energy to become more sleek powerful!&00", TRUE, ch, 0, 0, TO_ROOM); act("&14Your body begins to shrink in a mass of energy to become more sleek and powerful!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*------------------------------------ TR 4 ----------------------------------------- */ /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"fourth") && PRF_FLAGGED(ch, PRF_TR4)) { act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"fourth") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)<= 5000000) { act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"fourth") && GET_STR(ch)*2+GET_MANA(ch)*GET_LEVEL(ch)+GET_DAMROLL(ch)>= 5000000) { SET_BIT(PRF_FLAGS(ch), PRF_TR4); MAX_HIT = number(10000, 10000); MAX_MANA = number(10000, 10000); GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT; GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA; act("&11$n&14's body begins ripple with muscles as they powerup to a new transformation level!&00", TRUE, ch, 0, 0, TO_ROOM); act("&14Your body begins to ripple with muscles as you reach a new transformation!&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ } ACMD(do_spar) { one_argument(argument, arg); if (PRF_FLAGGED(ch, PRF_CAMP)) { send_to_char("You can't do this while camped!\r\n", ch); return; } if (GET_LEVEL(ch) <=1) { send_to_char("You can't spar right away.\r\n", ch); return; } else if (!*argument) { act("&09Sparing Commands&00", TRUE, ch, 0, 0, TO_CHAR); act("&10----------------&00", TRUE, ch, 0, 0, TO_CHAR); act("spar &09ready&00", TRUE, ch, 0, 0, TO_CHAR); act("spar &09stop&00", TRUE, ch, 0, 0, TO_CHAR); act("&09sparkick&00 (person)", TRUE, ch, 0, 0, TO_CHAR); act("&09sparpunch&00 (person)", TRUE, ch, 0, 0, TO_CHAR); act("&09sparelbow&00 (person)", TRUE, ch, 0, 0, TO_CHAR); act("&09sparknee&00 (person)", TRUE, ch, 0, 0, TO_CHAR); act("&09sparkiblast&00 (person)", TRUE, ch, 0, 0, TO_CHAR); act("spar &09fly&00", TRUE, ch, 0, 0, TO_CHAR); act("spar &09land&00", TRUE, ch, 0, 0, TO_CHAR); act("spar &09block&00", TRUE, ch, 0, 0, TO_CHAR); act("spar &09relax&00", TRUE, ch, 0, 0, TO_CHAR); return; } /*----------------------------- Start -----------------------------------*/ if (!str_cmp(arg,"ready") && !AFF_FLAGGED(ch, AFF_SPAR)) { SET_BIT(AFF_FLAGS(ch), AFF_SPAR); act("$n moves into a sparing stance.", TRUE, ch, 0, 0, TO_ROOM); act("You move into a sparing stance.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"ready") && AFF_FLAGGED(ch, AFF_SPAR)) { act("Your already in a sparing stance.", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ if (!str_cmp(arg,"ready") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (!str_cmp(arg,"land") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (!str_cmp(arg,"fly") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (!str_cmp(arg,"block") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } /*-----------------------------------------Stop----------------------------------------*/ if (!str_cmp(arg,"stop")) { REMOVE_BIT(AFF_FLAGS(ch), AFF_SPAR); act("$n moves out of their sparing stance.", TRUE, ch, 0, 0, TO_ROOM); act("You move out of your sparing stance.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"stop") && !AFF_FLAGGED(ch, AFF_SPAR)) { REMOVE_BIT(AFF_FLAGS(ch), AFF_SPAR); act("You aren't in a sparing stance!", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------- Not sparing checks --------------------------------*/ if (!str_cmp(arg,"block") && !AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!str_cmp(arg,"fly") && !AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } /*--------------------------------------Flight-----------------------------------------*/ /*Fly*/ if (!str_cmp(arg,"fly") && AFF_FLAGGED(ch, AFF_SPAR) && !AFF_FLAGGED(ch, AFF_SFLY)) { SET_BIT(AFF_FLAGS(ch), AFF_SFLY); act("$n flys up into the air.", TRUE, ch, 0, 0, TO_ROOM); act("You fly up into the air.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"fly") && !AFF_FLAGGED(ch, AFF_SPAR)) { act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"fly") && AFF_FLAGGED(ch, AFF_SFLY)) { act("You are already flying!", TRUE, ch, 0, 0, TO_CHAR); return; } /*Land*/ if (!str_cmp(arg,"land") && AFF_FLAGGED(ch, AFF_SPAR) && AFF_FLAGGED(ch, AFF_SFLY)) { REMOVE_BIT(AFF_FLAGS(ch), AFF_SFLY); act("$n flys down and lands on the ground.", TRUE, ch, 0, 0, TO_ROOM); act("You fly down and land on the ground.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SFLY)) { act("You aren't flying!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SPAR)) { act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ /*Blocking*/ if (!str_cmp(arg,"block") && AFF_FLAGGED(ch, AFF_SPAR) && !AFF_FLAGGED(ch, AFF_SBLOCK)) { SET_BIT(AFF_FLAGS(ch), AFF_SBLOCK); act("You prepare to block the next attack.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"block") && AFF_FLAGGED(ch, AFF_SBLOCK)) { act("You are already preparing to block!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"block") && !AFF_FLAGGED(ch, AFF_SPAR)) { act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"relax") && AFF_FLAGGED(ch, AFF_SPAR) && AFF_FLAGGED(ch, AFF_SBLOCK)) { REMOVE_BIT(AFF_FLAGS(ch), AFF_SBLOCK); act("You lower your defense.", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"relax") && !AFF_FLAGGED(ch, AFF_SBLOCK)) { act("You are not preparing to block!", TRUE, ch, 0, 0, TO_CHAR); return; } else if (!str_cmp(arg,"relax") && !AFF_FLAGGED(ch, AFF_SPAR)) { act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR); return; } /*-------------------------------------------------------------------------------------*/ } ACMD(do_sparkick) { int is_altered = FALSE; int num_levels = 0; int MOVE = 0, EXP = 0; struct char_data * vict; one_argument(argument, arg); if (!AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (GET_MOVE(ch) <= 10) { send_to_char("Your too weak to spar anymore!\r\n", ch); return; } /*-------------------------------------------------------------------------------------*/ if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) { GET_LEVEL(ch) += 1; GET_EXP(ch) = 1; num_levels++; advance_level(ch); is_altered = TRUE; send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch); } /*--------------------------Spar-Kick "Failures"---------------------------------------*/ if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Spar-Kick who?\r\n", ch); return; } if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) { send_to_char("They don't want to spar!\r\n", ch); return; } if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) { send_to_char("Your too busy preparing to block thier attack!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from down here!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from up here!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) { EXP = number(GET_LEVEL(ch)*10, GET_LEVEL(ch)*10); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; GET_EXP(vict) = GET_EXP(vict) + EXP; GET_MOVE(vict) = GET_MOVE(vict) - MOVE; act("You throw a kick at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR); act("$n throws a kick at $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT); act("As $n rears back you put your arm up and block thier kick..&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } else if (vict) { EXP = number(GET_LEVEL(ch)*30, GET_LEVEL(ch)*30); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; act("You throw a kick at $N hitting directly!", FALSE, ch, 0, vict, TO_CHAR); act("$n throws a kick at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT); act("$n rears back and hits you dead on with a kick!&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } } ACMD(do_sparpunch) { int is_altered = FALSE; int num_levels = 0; int MOVE = 0, EXP = 0; struct char_data * vict; one_argument(argument, arg); if (!AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (GET_MOVE(ch) <= 10) { send_to_char("Your too weak to spar anymore!\r\n", ch); return; } /*-------------------------------------------------------------------------------------*/ if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) { GET_LEVEL(ch) += 1; GET_EXP(ch) = 1; num_levels++; advance_level(ch); is_altered = TRUE; send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch); } /*--------------------------Spar-Kick "Failures"---------------------------------------*/ if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Spar-Punch who?\r\n", ch); return; } if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) { send_to_char("They don't want to spar!\r\n", ch); return; } if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) { send_to_char("Your too busy preparing to block thier attack!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from down here!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from up here!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) { EXP = number(GET_LEVEL(ch)*10, GET_LEVEL(ch)*10); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; GET_EXP(vict) = GET_EXP(vict) + EXP; GET_MOVE(vict) = GET_MOVE(vict) - MOVE; act("You throw a punch at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR); act("$n throws a punch at $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT); act("As $n rears back you put your arm up and block thier punch.&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } else if (vict) { EXP = number(GET_LEVEL(ch)*30, GET_LEVEL(ch)*30); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; act("You throw a punch at $N hitting directly!", FALSE, ch, 0, vict, TO_CHAR); act("$n throws a punch at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT); act("$n rears back and hits you dead on with a punch!&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } } ACMD(do_sparknee) { int is_altered = FALSE; int num_levels = 0; int MOVE = 0, EXP = 0; struct char_data * vict; one_argument(argument, arg); if (!AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (GET_MOVE(ch) <= 10) { send_to_char("Your too weak to spar anymore!\r\n", ch); return; } /*-------------------------------------------------------------------------------------*/ if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) { GET_LEVEL(ch) += 1; GET_EXP(ch) = 1; num_levels++; advance_level(ch); is_altered = TRUE; send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch); } /*--------------------------Spar-Kick "Failures"---------------------------------------*/ if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Spar-Knee who?\r\n", ch); return; } if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) { send_to_char("They don't want to spar!\r\n", ch); return; } if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) { send_to_char("Your too busy preparing to block thier attack!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from down here!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from up here!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) { send_to_char("You can't hit them from up here!\r\n", ch); EXP = number(GET_LEVEL(ch)*10, GET_LEVEL(ch)*10); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; GET_EXP(vict) = GET_EXP(vict) + EXP; GET_MOVE(vict) = GET_MOVE(vict) - MOVE; act("You thrust your knee at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR); act("$n slams thier knee into $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT); act("As $n rears back you put your arm up and block thier knee.&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } else if (vict) { EXP = number(GET_LEVEL(ch)*25, GET_LEVEL(ch)*25); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; act("You slam your knee into $N!", FALSE, ch, 0, vict, TO_CHAR); act("$n slams thier knee into $N!", TRUE, ch, 0, vict, TO_NOTVICT); act("$n rears back and knees you in the stomach!&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } } ACMD(do_sparelbow) { int is_altered = FALSE; int num_levels = 0; int MOVE = 0, EXP = 0; struct char_data * vict; one_argument(argument, arg); if (!AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (GET_MOVE(ch) <= 10) { send_to_char("Your too weak to spar anymore!\r\n", ch); return; } /*-------------------------------------------------------------------------------------*/ if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) { GET_LEVEL(ch) += 1; GET_EXP(ch) = 1; num_levels++; advance_level(ch); is_altered = TRUE; send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch); } /*--------------------------Spar-Kick "Failures"---------------------------------------*/ if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Spar-Elbow who?\r\n", ch); return; } if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) { send_to_char("They don't want to spar!\r\n", ch); return; } if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) { send_to_char("Your too busy preparing to block thier attack!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from down here!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) { send_to_char("You can't hit them from up here!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) { EXP = number(GET_LEVEL(ch)*10, GET_LEVEL(ch)*10); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; GET_EXP(vict) = GET_EXP(vict) + EXP; GET_MOVE(vict) = GET_MOVE(vict) - MOVE; act("You slam your elbow into $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR); act("$n slams thier elbow into $N who easily blocks it.", TRUE, ch, 0, vict, TO_NOTVICT); act("As $n rears back you put your arm up and block thier elbow.&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } else if (vict) { EXP = number(GET_LEVEL(ch)*25, GET_LEVEL(ch)*25); MOVE = number(5, 10); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MOVE(ch) = GET_MOVE(ch) - MOVE; act("You slam your elbow into $N's ribs!", FALSE, ch, 0, vict, TO_CHAR); act("$n throws a kick at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT); act("$n slams thier elbow into your ribs!&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } } ACMD(do_sparkiblast) { int is_altered = FALSE; int num_levels = 0; int MANA = 0, EXP = 0; struct char_data * vict; one_argument(argument, arg); if (!AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("Your not in a sparing stance!\r\n", ch); return; } if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) { send_to_char("Your not in a dojo!\r\n", ch); return; } if (GET_MANA(ch) <= 100) { send_to_char("Your too weak to spar anymore!\r\n", ch); return; } /*-------------------------------------------------------------------------------------*/ if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) { GET_LEVEL(ch) += 1; GET_EXP(ch) = 1; num_levels++; advance_level(ch); is_altered = TRUE; send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch); } /*--------------------------Spar-Kick "Failures"---------------------------------------*/ if (!(vict = get_char_room_vis(ch, arg))) { send_to_char("Spar-KiBlast who?\r\n", ch); return; } if (vict == ch) { send_to_char("Come on now, that's rather stupid!\r\n", ch); return; } if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) { send_to_char("They don't want to spar!\r\n", ch); return; } if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) { send_to_char("Your too busy preparing to block thier attack!\r\n", ch); return; } if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) { EXP = number(GET_LEVEL(ch)*10, GET_LEVEL(ch)*10); MANA = 20; GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MANA(ch) = GET_MANA(ch) - MANA; GET_EXP(vict) = GET_EXP(vict) + EXP; GET_MANA(vict) = GET_MANA(vict) - MANA; act("You fire a small kiblast at $N who slaps it away.", FALSE, ch, 0, vict, TO_CHAR); act("$n fires a small kiblast at $N who slaps it away.", TRUE, ch, 0, vict, TO_NOTVICT); act("As $n fires a kiblast you slap it away with the back of your hand.&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } else if (vict) { EXP = number(GET_LEVEL(ch)*50, GET_LEVEL(ch)*50); MANA = number(100, 100); GET_EXP(ch) = GET_EXP(ch) + EXP; GET_MANA(ch) = GET_MANA(ch) - MANA; act("You fire a kiblast hitting $N!", FALSE, ch, 0, vict, TO_CHAR); act("$n fires a kiblast, hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT); act("$n fires a kiblast hitting you directly!&00", FALSE, ch, 0, vict, TO_VICT); WAIT_STATE(ch, PULSE_VIOLENCE * 2); return; } } ACMD(do_jog) { one_argument(argument, arg); if (!*argument) { send_to_char("&10Jogging commands: &00\r\n", ch); send_to_char("&09-------------------&00\r\n", ch); send_to_char("&15Jog start &00\r\n", ch); send_to_char("&15Jog stop &00\r\n", ch); return; } if (!str_cmp(arg,"start")) { act("You start jogging.", TRUE, ch, 0, 0, TO_CHAR); SET_BIT(AFF_FLAGS(ch), AFF_JOG); return; } if (!str_cmp(arg,"stop")) { act("You stop jogging.", TRUE, ch, 0, 0, TO_CHAR); REMOVE_BIT(AFF_FLAGS(ch), AFF_JOG); return; } } ACMD(do_orevert) { if (PRF_FLAGGED(ch, PRF_OOZARU)) { REMOVE_BIT(PRF_FLAGS(ch), PRF_OOZARU); send_to_char("&12Your rage calms down and you begin to slowly shrink as the hair on your body disolves and you pass out on the ground.&00\n\r", ch); GET_MAX_HIT(ch) -= 10000; GET_MAX_MANA(ch) -= 10000; return; } else if (!PRF_FLAGGED(ch, PRF_OOZARU)) { send_to_char("&12Your not in oozaru form!&00\n\r", ch); } } ACMD(do_charge) { one_argument(argument, arg); if (!*argument) { send_to_char("&10Charge - &00\r\n", ch); send_to_char("&15Low&00\r\n", ch); send_to_char("&15Medium&00\r\n", ch); send_to_char("&15High&00\r\n", ch); send_to_char("&15Invert&00\r\n", ch); return; } if (AFF_FLAGGED(ch, AFF_HALTED)) { send_to_char("You don't have enough time!\r\n", ch); return; } /*------------------------------------------Invertion failure----------------------------------------*/ if (!str_cmp(arg,"invert") && !AFF_FLAGGED(ch, AFF_CHARGEH) && !AFF_FLAGGED(ch, AFF_CHARGEM) && !AFF_FLAGGED(ch, AFF_CHARGEL)) { act("You are not storing any energy,", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------------------------------Already charged/too High---------------------------------*/ /*Low*/ if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEL)) { act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"medium") && AFF_FLAGGED(ch, AFF_CHARGEM)) { act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEM)) { act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEH)) { act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"medium") && AFF_FLAGGED(ch, AFF_CHARGEH)) { act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } if (!str_cmp(arg,"high") && AFF_FLAGGED(ch, AFF_CHARGEH)) { act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR); return; } /*------------------------------------------Inverting------------------------------------------------*/ if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEH)) { act("You absorb the energy you created.", TRUE, ch, 0, 0, TO_CHAR); act("$n's energy suddenly dissapears as they absorb it!", TRUE, ch, 0, 0, TO_NOTVICT); REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEH); GET_MANA(ch) +=GET_LEVEL(ch)*3; return; } else if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEM)) { act("You absorb the energy you created.", TRUE, ch, 0, 0, TO_CHAR); act("$n's energy suddenly dissapears as they absorb it!", TRUE, ch, 0, 0, TO_NOTVICT); REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEM); GET_MANA(ch) +=GET_LEVEL(ch)*2; return; } else if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEL)) { act("You absorb the energy you created.", TRUE, ch, 0, 0, TO_CHAR); act("$n's energy suddenly dissapears as they absorb it!", TRUE, ch, 0, 0, TO_NOTVICT); REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEL); GET_MANA(ch) +=GET_LEVEL(ch); return; } /*------------------------------------------Success >:) ---------------------------------------------*/ if (!str_cmp(arg,"low")) { act("You begin charging a little bit of energy into your hands.", TRUE, ch, 0, 0, TO_CHAR); act("$n begins flaming with power as they charge a little bit of energy into thier hands!", TRUE, ch, 0, 0, TO_NOTVICT); SET_BIT(AFF_FLAGS(ch), AFF_CHARGEL); GET_MANA(ch) -=GET_LEVEL(ch); return; } if (!str_cmp(arg,"medium")) { act("You begin charging energy into your hands.", TRUE, ch, 0, 0, TO_CHAR); act("$n begins flaming with power as they charge some energy into thier hands!", TRUE, ch, 0, 0, TO_NOTVICT); SET_BIT(AFF_FLAGS(ch), AFF_CHARGEM); REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEL); GET_MANA(ch) -=GET_LEVEL(ch)*2; return; } if (!str_cmp(arg,"high")) { act("You begin charging alot of energy into your hands.", TRUE, ch, 0, 0, TO_CHAR); act("$n begins flaming with power as they charge &09a-lot&00 energy into thier hands!", TRUE, ch, 0, 0, TO_NOTVICT); SET_BIT(AFF_FLAGS(ch), AFF_CHARGEH); REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEM); GET_MANA(ch) -=GET_LEVEL(ch)*3; return; } } ACMD(do_halt) { struct char_data *vict, *next_v; if (!FIGHTING(ch)) { act("Your not fighting!", TRUE, ch, 0, 0, TO_CHAR); return; } act("You relax out of your fighting stance for a moment.", TRUE, ch, 0, 0, TO_CHAR); act("$n leans up from a fighting stance.", TRUE, ch, 0, 0, TO_NOTVICT); SET_BIT(AFF_FLAGS(ch), AFF_HALTED); for(vict=world[ch->in_room].people;vict;vict=next_v) { next_v=vict->next_in_room; if(!IS_NPC(vict)&&(FIGHTING(vict))) { if(FIGHTING(FIGHTING(vict))==vict) stop_fighting(FIGHTING(vict)); stop_fighting(vict); } } } ACMD(do_regenerate) { if (!GET_SKILL(ch, SKILL_REGENERATE)) { send_to_char("You can't do that!\r\n", ch); return; } else { act("You regenrate your body restoring lost parts.", TRUE, ch, 0, 0, TO_CHAR); act("$n completely regenerates all thier body parts.", TRUE, ch, 0, 0, TO_NOTVICT); SET_BIT(PLR_FLAGS(ch), PLR_RARM); SET_BIT(PLR_FLAGS(ch), PLR_LARM); SET_BIT(PLR_FLAGS(ch), PLR_RLEG); SET_BIT(PLR_FLAGS(ch), PLR_LLEG); } } ACMD(do_status) { send_to_char("&15o&12-------------------------o-------------------------&15o&00\r\n", ch); send_to_char("&12|&15 ___ &12| &10Appearance: &12|\r\n", ch); /* Eye Color */ if (GET_EYE(ch) == EYE_BLACK) { send_to_char("&12|&15 / \\ &12| &15Eye Color: Black &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_WHITE) { send_to_char("&12|&15 / \\ &12| &15Eye Color: White &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_BLUE) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &12Blue &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_GREEN) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &11Green &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_BROWN) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &03Brown &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_PURPLE) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &13Purple &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_RED) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &09Red &12|\r\n", ch); } else if (GET_EYE(ch) == EYE_YELLOW) { send_to_char("&12|&15 / \\ &12| &15Eye Color: &11Yellow &12|\r\n", ch); } /* End Eye Color */ /* Hair Lenght */ if (GET_HAIRL(ch) == HAIRL_V_SHORT) { send_to_char("&12|&15 | | &12| &15Hair Length: Very Short &12|\r\n", ch); } else if (GET_HAIRL(ch) == HAIRL_SHORT) { send_to_char("&12|&15 | | &12| &15Hair Length: Short &12|\r\n", ch); } else if (GET_HAIRL(ch) == HAIRL_MEDIUM) { send_to_char("&12|&15 | | &12| &15Hair Length: Medium &12|\r\n", ch); } else if (GET_HAIRL(ch) == HAIRL_LONG) { send_to_char("&12|&15 | | &12| &15Hair Length: Long &12|\r\n", ch); } else if (GET_HAIRL(ch) == HAIRL_V_LONG) { send_to_char("&12|&15 | | &12| &15Hair Length: Very Long &12|\r\n", ch); } /*End Hair Lenght*/ /*Hair Color */ if (GET_HAIRC(ch) == HAIRC_BLACK) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: Black &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_WHITE) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: White &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_BROWN) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &03Brown &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_BLUE) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &12Blue &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_YELLOW) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &11Yellow &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_GREEN) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &10Green &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_PURPLE) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &13Purple &12|\r\n", ch); } else if (GET_HAIRC(ch) == HAIRC_RED) { send_to_char("&12|&15 \\___/ &12| &15Hair Color: &09Red &12|\r\n", ch); } /* End of Hair Color */ send_to_char("&12|&15 __ / \\ __ &12| &12|\r\n", ch); send_to_char("&12|&15 ( ) &12| &10Body Condition: &12|\r\n", ch); send_to_char("&12|&15 | | | | &12| &15Head: &11Perfect &12|\r\n", ch); send_to_char("&12|&15 ( ) ( ) &12| &15Torso: &11Perfect &12|\r\n", ch); if (PLR_FLAGGED(ch, PLR_RARM)) { send_to_char("&12|&15 | }\\ /{ | &12| &15Right Arm: &11Perfect &12|\r\n", ch); } else if (!PLR_FLAGGED(ch, PLR_RARM)) { send_to_char("&12|&15 | }\\ /{ | &12| &15Right Arm: &09Severed &12|\r\n", ch); } if (PLR_FLAGGED(ch, PLR_LARM)) { send_to_char("&12|&15 | / | | \\ | &12| &15Left Arm: &11Perfect &12|\r\n", ch); } else if (!PLR_FLAGGED(ch, PLR_LARM)) { send_to_char("&12|&15 | / | | \\ | &12| &15Left Arm: &09Severed &12|\r\n", ch); } if (PLR_FLAGGED(ch, PLR_RLEG)) { send_to_char("&12|&15 |_\\ / __ \\ /_| &12| &15Right Leg: &11Perfect &12|\r\n", ch); } else if (!PLR_FLAGGED(ch, PLR_RLEG)) { send_to_char("&12|&15 |_\\ / __ \\ /_| &12| &15Right Leg: &09Severed &12|\r\n", ch); } if (PLR_FLAGGED(ch, PLR_LLEG)) { send_to_char("&12|&15 / || | &12| &15Left Leg: &11Perfect &12|\r\n", ch); } else if (!PLR_FLAGGED(ch, PLR_LLEG)) { send_to_char("&12|&15 / || | &12| &15Left Leg: &09Severed &12|\r\n", ch); } send_to_char("&12|&15 / / | | &12| &12|\r\n", ch); send_to_char("&12|&15 { / | | &12| &12|\r\n", ch); send_to_char("&12|&15 | | | | &12| &12|\r\n", ch); send_to_char("&12|&15 _| | | | &12| &12|\r\n", ch); send_to_char("&12|&15 /_____} ( \\ &12| &12|\r\n", ch); send_to_char("&12|&15 \\ ) &12| &12|\r\n", ch); send_to_char("&15o&12-------------------------&15o&12-------------------------&15o&00\r\n", ch); send_to_char("&12| &10Affections:&00 &12|\r\n", ch); if (PRF_FLAGGED(ch, PRF_SSJ1) && !PRF_FLAGGED(ch, PRF_SSJ2)) { send_to_char("&12| &11You are in Super Saiya-Jin Form 1. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_SSJ2) && !PRF_FLAGGED(ch, PRF_SSJ3)) { send_to_char("&12| &11You are in Super Saiya-Jin Form 2. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_SSJ3)) { send_to_char("&12| &11You are in Super Saiya-Jin Form 3. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_TR1) && !PRF_FLAGGED(ch, PRF_TR2)) { send_to_char("&12| &14You are in Transformation Stage 1. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_TR2) && !PRF_FLAGGED(ch, PRF_TR3)) { send_to_char("&12| &14You are in Transformation Stage 2. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_TR3) && !PRF_FLAGGED(ch, PRF_TR4)) { send_to_char("&12| &14You are in Transformation Stage 3. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_TR4)) { send_to_char("&12| &14You are in Transformation Stage 4. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_OOZARU)) { send_to_char("&12| &12You are in Oozaru form. &12|\r\n", ch); } if (PRF_FLAGGED(ch, PRF_CAMP)) { send_to_char("&12| &10You are camping. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_SOLAR_FLARE)) { send_to_char("&12| &09You are blind! &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_INVISIBLE)) { send_to_char("&12| &13You are invisible &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_MAJIN)) { send_to_char("&12| &13You are a Majin slave. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_INFRAVISION)) { send_to_char("&12| &13You can see in the dark. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_SPAR)) { send_to_char("&12| &10You are sparring. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_JOG)) { send_to_char("&12| &10You are jogging. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_CHARGEL)) { send_to_char("&12| &09You have a little bit of energy charged. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_CHARGEM)) { send_to_char("&12| &09You have a fair ammount of energy charged. &12|\r\n", ch); } if (AFF_FLAGGED(ch, AFF_CHARGEH)) { send_to_char("&12| &09You have a-lot of energy charged. &12|\r\n", ch); } send_to_char("&15o&12---------------------------------------------------&15o&00\r\n", ch); }