// *********** *********** // *********** *********** // * * Seeds of Hate * * // * * Swords & Sorcery ed. * * // * * Skyblades (TCL: I) * * // * * * * // * This is an original class coded by: * // * * Magus Locke, TimeMaster * * // * * * * // * * No part(s) of this code cannot be * * // * * used or duplicated without acknowledging * * // *********** Seeds of Hate and Magus. *********** // *********** *********** /*************************************************************************** * _/ _/ * * _/_/_/ _/_/ _/_/_/ _/ _/_/ _/ _/ _/_/_/ * * _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ * * _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ * * _/ _/ _/ _/_/_/ _/ _/_/ _/_/_/ _/_/_/ * *************************************************************************** * Mindcloud Copyright 2001-2003 by Jeff Boschee (Zarius), * * Additional credits are in the help file CODECREDITS * * All Rights Reserved. * ***************************************************************************/ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "interp.h" void do_abilities(CHAR_DATA * ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; argument = one_argument(argument, arg1); argument = one_argument(argument, arg2); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (arg1[0] == '\0' && arg2[0] == '\0') { xprintf(buf, "Abilities: #LPower (%d), #WMagic (%d), #CSkills (%d).#n\n\r", ch->pcdata->powers[SKYBLADE_POWER], ch->pcdata->powers[SKYBLADE_MAGIC], ch->pcdata->powers[SKYBLADE_SKILLS]); send_to_char(buf, ch); return; } if (arg2[0] == '\0') { if (!str_cmp(arg1, "power")) { /* send_to_char("-=^=-=^=-=^=-=^=-=^=- Skyblade Powers -=^=-=^=-=^=-=^=-=^=-#n\n\r",ch); send_to_char("| Powers Learned Improved |#n\n\r",ch); if (ch->pcdata->powers[SKYBLADE_POWER] > 0) { if (ch->pcdata->powers[SKYBLADE_POWER] > 0) send_to_char("| OwlEyes(Leye,Reye) Yes No |#n\n\r",ch); else if (ch->pcdata->powers[SKYBLADE_POWER] > 1) send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); if (ch->pcdata->powers[SKYBLADE_POWER] > 2){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes No |#n\n\r",ch);} else if (ch->pcdata->powers[SKYBLADE_POWER] > 3){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); } if (ch->pcdata->powers[SKYBLADE_POWER] > 4){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes No |#n\n\r",ch); } else if (ch->pcdata->powers[SKYBLADE_POWER] > 5){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes Yes |#n\n\r",ch); } if (ch->pcdata->powers[SKYBLADE_POWER] > 6){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes Yes |#n\n\r",ch); send_to_char("| Vulture's Vigor Yes No |#n\n\r",ch); } else if (ch->pcdata->powers[SKYBLADE_POWER] > 7){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes Yes |#n\n\r",ch); send_to_char("| Vulture's Vigor Yes Yes |#n\n\r",ch); } if (ch->pcdata->powers[SKYBLADE_POWER] > 8){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes Yes |#n\n\r",ch); send_to_char("| Vulture's Vigor Yes Yes |#n\n\r",ch); send_to_char("| FalconBlade Yes No |#n\n\r",ch); } else if (ch->pcdata->powers[SKYBLADE_POWER] > 9){ send_to_char("| OwlEyes(Leye,Reye) Yes Yes |#n\n\r",ch); send_to_char("| EagleStrength Yes Yes |#n\n\r",ch); send_to_char("| HawkEyes Yes Yes |#n\n\r",ch); send_to_char("| Vulture's Vigor Yes Yes |#n\n\r",ch); send_to_char("| FalconBlade Yes Yes |#n\n\r",ch);} } else{ send_to_char("| OwlEyes(Leye,Reye) No No |#n\n\r",ch); send_to_char("| EagleStrength No No |#n\n\r",ch); send_to_char("| HawkEyes No No |#n\n\r",ch); send_to_char("| Vulture's Vigor No No |#n\n\r",ch); send_to_char("| FalconBlade No No |#n\n\r",ch);} send_to_char("-=^=-=^=-=^=-=^=-=^=-=^=-=^=-=^=-^-=^=-=^=-=^=-=^=-=^=-=^=-=^=-#n\n\r",ch);*/ xprintf(buf, "You have %d power.\n\r", ch->pcdata->powers[SKYBLADE_POWER]); stc(buf, ch); return; } else if (!str_cmp(arg1, "magic")) { /* * send_to_char("-=^=-=^=-=^=-=^=-=^=- Skyblade Magics -=^=-=^=-=^=-=^=-=^=-#n\n\r",ch); * send_to_char("| Magics Learned Improved |#n\n\r",ch); * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 0) { * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 0) * send_to_char("| Skyforge Yes No |#n\n\r",ch); * else if (ch->pcdata->powers[SKYBLADE_MAGIC] > 1) * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 2){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes No |#n\n\r",ch); * } * else if (ch->pcdata->powers[SKYBLADE_MAGIC] > 3){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * } * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 4){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes No |#n\n\r",ch); * } * else if (ch->pcdata->powers[SKYBLADE_MAGIC] > 5){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes Yes |#n\n\r",ch); * } * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 6){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes Yes |#n\n\r",ch); * send_to_char("| DragonAura Yes No |#n\n\r",ch); * } * else if (ch->pcdata->powers[SKYBLADE_MAGIC] > 7){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes Yes |#n\n\r",ch); * send_to_char("| DragonAura Yes Yes |#n\n\r",ch); * } * if (ch->pcdata->powers[SKYBLADE_MAGIC] > 8){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes Yes |#n\n\r",ch); * send_to_char("| DragonAura Yes Yes |#n\n\r",ch); * send_to_char("| WyrmAura Yes No |#n\n\r",ch); * } * else if (ch->pcdata->powers[SKYBLADE_MAGIC] > 9){ * send_to_char("| Skyforge Yes Yes |#n\n\r",ch); * send_to_char("| HeavenlyRain Yes Yes |#n\n\r",ch); * send_to_char("| Climax Yes Yes |#n\n\r",ch); * send_to_char("| DragonAura Yes Yes |#n\n\r",ch); * send_to_char("| WyrmAura Yes Yes |#n\n\r",ch);} * } * else{ * send_to_char("| Skyforge No No |#n\n\r",ch); * send_to_char("| HeavenlyRain No No |#n\n\r",ch); * send_to_char("| Climax No No |#n\n\r",ch); * send_to_char("| DragonAura No No |#n\n\r",ch); * send_to_char("| WyrmAura No No |#n\n\r",ch);} * send_to_char("-=^=-=^=-=^=-=^=-=^=-=^=-=^=-=^=-^-=^=-=^=-=^=-=^=-=^=-=^=-=^=-#n\n\r",ch); */ xprintf(buf, "You have %d magic.\n\r", ch->pcdata->powers[SKYBLADE_MAGIC]); stc(buf, ch); return; } if (!str_cmp(arg1, "skills")) { send_to_char ("-=^=-=^=-=^=-=^=-=^=- Skyblade Skills -=^=-=^=-=^=-=^=-=^=-#n\n\r", ch); send_to_char ("| Skills Learned |#n\n\r", ch); if (ch->pcdata->powers[SKYBLADE_SKILLS] > 0) { if (ch->pcdata->powers[SKYBLADE_SKILLS] == 1) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel No |#n\n\r", ch); send_to_char ("| CloudsBlessing No |#n\n\r", ch); send_to_char ("| RapierStrike No |#n\n\r", ch); send_to_char ("| Retort No |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 2) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing No |#n\n\r", ch); send_to_char ("| RapierStrike No |#n\n\r", ch); send_to_char ("| Retort No |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 3) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike No |#n\n\r", ch); send_to_char ("| Retort No |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 4) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort No |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 5) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 6) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith Yes |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 7) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith Yes |#n\n\r", ch); send_to_char ("| DragonCharge Yes |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 8) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith Yes |#n\n\r", ch); send_to_char ("| DragonCharge Yes |#n\n\r", ch); send_to_char ("| DragonX Yes |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 9) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith Yes |#n\n\r", ch); send_to_char ("| DragonCharge Yes |#n\n\r", ch); send_to_char ("| DragonX Yes |#n\n\r", ch); send_to_char ("| WyrmRoar Yes |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } if (ch->pcdata->powers[SKYBLADE_SKILLS] == 10) { send_to_char ("| BladeJump Yes |#n\n\r", ch); send_to_char ("| Pummel Yes |#n\n\r", ch); send_to_char ("| CloudsBlessing Yes |#n\n\r", ch); send_to_char ("| RapierStrike Yes |#n\n\r", ch); send_to_char ("| Retort Yes |#n\n\r", ch); send_to_char ("| LeapOfFaith Yes |#n\n\r", ch); send_to_char ("| DragonCharge Yes |#n\n\r", ch); send_to_char ("| DragonX Yes |#n\n\r", ch); send_to_char ("| WyrmRoar Yes |#n\n\r", ch); send_to_char ("| DiveStrike Yes |#n\n\r", ch); } } else { send_to_char ("| BladeJump No |#n\n\r", ch); send_to_char ("| Pummel No |#n\n\r", ch); send_to_char ("| CloudsBlessing No |#n\n\r", ch); send_to_char ("| RapierStrike No |#n\n\r", ch); send_to_char ("| Retort No |#n\n\r", ch); send_to_char ("| LeapOfFaith No |#n\n\r", ch); send_to_char ("| DragonCharge No |#n\n\r", ch); send_to_char ("| DragonX No |#n\n\r", ch); send_to_char ("| WyrmRoar No |#n\n\r", ch); send_to_char ("| DiveStrike No |#n\n\r", ch); } send_to_char ("-=^=-=^=-=^=-=^=-=^=-=^=-=^=-=^=-^-=^=-=^=-=^=-=^=-=^=-=^=-=^=-#n\n\r", ch); return; } } /*else { * xprintf(buf,"Abilities: #LPower (%d), #nMagic (%d), #CSkills (%d).#n\n\r", * ch->pcdata->powers[SKYBLADE_POWER], ch->pcdata->powers[SKYBLADE_MAGIC], * ch->pcdata->powers[SKYBLADE_SKILLS]); * send_to_char(buf,ch); * return; * } */ if (!str_cmp(arg2, "gain")) { int improve; int cost; int max; if (!str_cmp(arg1, "power")) { improve = SKYBLADE_POWER; max = 10; } else if (!str_cmp(arg1, "magic")) { improve = SKYBLADE_MAGIC; max = 10; } else if (!str_cmp(arg1, "skills")) { improve = SKYBLADE_SKILLS; max = 10; } else { send_to_char("Abilities: Power, Magic, Skills.\n\r", ch); return; } cost = (ch->pcdata->powers[improve] + 1) * 15; arg1[0] = UPPER(arg1[0]); if (ch->pcdata->powers[improve] >= max) { xprintf(buf, "You have mastered all the abilites in the field of %s.\n\r", arg1); send_to_char(buf, ch); return; } if (cost > ch->practice) { xprintf(buf, "It costs you %d primal to improve that ability.\n\r", cost); send_to_char(buf, ch); return; } ch->pcdata->powers[improve] += 1; ch->practice -= cost; xprintf(buf, "You improve your mastery of %s abilities.\n\r", arg1); send_to_char(buf, ch); } else send_to_char ("To improve an ability, type: abilities <ability type> gain.\n\r", ch); return; } void do_bladejump(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; if (IS_NPC(ch)) return; argument = one_argument(argument, arg); if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (arg[0] == '\0') { send_to_char("BladeJump to whom?\n\r", ch); return; } if ((victim = get_char_world(ch, arg)) == NULL) { send_to_char("You cannot find them.\n\r", ch); return; } if (ch->move < 1000) { stc("You don't have enough movement points to bladejump to them.\n\r", ch); return; } if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL)) { stc("You can't find it's room.\n\r", ch); return; } if (IS_SET(ch->in_room->room_flags, ROOM_ASTRAL)) { stc("Your body can't go there.\n\r", ch); return; } if (IS_SET(victim->act, ACT_NOTRAVEL)) { send_to_char("No Can Do.\n\r", ch); return; } if (ch == victim) { send_to_char("But you're already at yourself!\n\r", ch); return; } if (room_is_private(victim->in_room)) { send_to_char("That room is private right now.\n\r", ch); return; } if (!IS_NPC(victim) && ch->move < victim->max_move) { if (!IS_NPC(victim) && !IS_IMMUNE(victim, IMM_SUMMON)) { send_to_char("They are hiding from you.\n\r", ch); return; } else send_to_char ("You need more move than you're opponent.\n\r", ch); } if (victim->in_room == ch->in_room) { send_to_char("But you're already there!\n\r", ch); return; } act("You jump into the clouds", ch, NULL, victim, TO_CHAR); act("$n jumps into the clouds", ch, NULL, victim, TO_ROOM); char_from_room(ch); char_to_room(ch, victim->in_room); ch->move -= 1000; act("$n jumps out of the clouds and lands infront of $N.", ch, NULL, victim, TO_NOTVICT); act("$n jumps out of the clouds and lands infront of you.", ch, NULL, victim, TO_VICT); do_look(ch, "auto"); return; } void do_eaglestrength(CHAR_DATA * ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (IS_CLASS(ch, CLASS_SKYBLADE)) { if (ch->pcdata->powers[SKYBLADE_POWER] < 3) { send_to_char("You don't have that ability yet.\n\r", ch); return; } if (ch->move < 1000) { send_to_char ("You don't have enough movement to gain the strength of an eagle.\n\r", ch); return; } if (!IS_SET(ch->newbits2, NEW2_EAGLES)) { SET_BIT(ch->newbits2, NEW2_EAGLES); send_to_char ("You flex your arms and legs as you gain the strength of an eagle.\n\r", ch); act("$n's legs and arms grow as they gain the strength of an eagle.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 3) ch->damroll += 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 4) { ch->damroll += 250; } ch->move -= 1000; WAIT_STATE(ch, 12); return; } else if (IS_SET(ch->newbits2, NEW2_EAGLES)) { REMOVE_BIT(ch->newbits2, NEW2_EAGLES); send_to_char ("Your arms and legs lose the strength of an eagle.\n\r", ch); act("$n's legs and arms shrink as they lose the strength of an eagle.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 3) ch->damroll -= 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 4) ch->damroll -= 250; return; } } } void do_hawkeyes(CHAR_DATA * ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (IS_CLASS(ch, CLASS_SKYBLADE)) { if (ch->pcdata->powers[SKYBLADE_POWER] < 5) { send_to_char("You don't have that ability yet.\n\r", ch); return; } if (ch->move < 1000) { send_to_char ("You don't have enough movement to gain the eyes of a hawk.\n\r", ch); return; } if (!IS_SET(ch->newbits2, NEW2_HAWKEYES)) { SET_BIT(ch->newbits2, NEW2_HAWKEYES); send_to_char ("Your eyes flicker as they gain the accuracy of a hawk.\n\r", ch); act("$n's eyes flicker as they gain the accuracy of a hawk.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 5) ch->hitroll += 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 6) { ch->hitroll += 250; } ch->move -= 1000; WAIT_STATE(ch, 12); return; } else if (IS_SET(ch->newbits2, NEW2_HAWKEYES)) { REMOVE_BIT(ch->newbits2, NEW2_HAWKEYES); send_to_char ("Your eyes flicker as they lose the accuracy of a hawk.\n\r", ch); act("$n's eyes flicker as they lose the accuracy of a hawk.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 5) ch->hitroll -= 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 6) ch->hitroll -= 250; return; } } } void do_vulturevigor(CHAR_DATA * ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (IS_CLASS(ch, CLASS_SKYBLADE)) { if (ch->pcdata->powers[SKYBLADE_POWER] < 7) { send_to_char("You don't have that ability yet.\n\r", ch); return; } if (ch->move < 1000) { send_to_char ("You don't have enough movement to gain the vigor of a vulture.\n\r", ch); return; } if (!IS_SET(ch->newbits2, NEW2_VVIGOR)) { SET_BIT(ch->newbits2, NEW2_VVIGOR); send_to_char ("Your body grows as it gains the vigor of the vulture.\n\r", ch); act("$n's body grows as it gains the vigor of the vulture.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 7) ch->armor -= 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 8) { ch->armor -= 250; } ch->move -= 1000; WAIT_STATE(ch, 12); return; } else if (IS_SET(ch->newbits2, NEW2_VVIGOR)) { REMOVE_BIT(ch->newbits2, NEW2_VVIGOR); send_to_char ("Your body shrinks as it loses the vigor of the vulture.\n\r", ch); act("$n's body shrinks as it loses the vigor of the vulture.", ch, NULL, NULL, TO_ROOM); if (ch->pcdata->powers[SKYBLADE_POWER] <= 7) ch->armor += 75; if (ch->pcdata->powers[SKYBLADE_POWER] >= 8) ch->armor += 250; return; } } } void do_cloudsblessing(CHAR_DATA * ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (IS_CLASS(ch, CLASS_SKYBLADE)) { if (ch->pcdata->powers[SKYBLADE_SKILLS] < 3) { send_to_char("You don't have that ability yet.\n\r", ch); return; } if (ch->move < 5000) { send_to_char ("You don't have enough movement to gain the a cloud blessing.\n\r", ch); return; } if (!IS_SET(ch->newbits, NEW_CLOUDBLESS)) { SET_BIT(ch->newbits, NEW_CLOUDBLESS); send_to_char ("You are blessed by the clouds in the sky.\n\r", ch); act("$n's eyes twinkle as the clouds roll in.", ch, NULL, NULL, TO_ROOM); ch->damroll += 50; ch->hitroll += 50; ch->armor -= 50; ch->move -= 5000; WAIT_STATE(ch, 12); return; } else if (IS_SET(ch->newbits, NEW_CLOUDBLESS)) { REMOVE_BIT(ch->newbits, NEW_CLOUDBLESS); send_to_char ("Your blessing is removed as the clouds leave the sky.\n\r", ch); act("$n's eyes lose their twinkle as the clouds leave.", ch, NULL, NULL, TO_ROOM); ch->damroll -= 50; ch->hitroll -= 50; ch->armor += 50; return; } } } void do_pummel(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_SKILLS] < 2) { send_to_char ("You haven't mastered the skills abilities enough.\n\r", ch); return; } if (!TIME_UP(ch, TIMER_PUMMEL)) { send_to_char("You are too tired from the last time.\n\r", ch); return; } if ((victim = ch->fighting) == NULL) { send_to_char("You aren't fighting anyone though.\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char("They aren't stanced though.\n\r", ch); return; } SET_TIMER(ch, TIMER_PUMMEL, 5); do_stance(victim, ""); WAIT_STATE(victim, 12); return; } void do_skyforge(CHAR_DATA * ch, char *argument) { OBJ_INDEX_DATA *pObjIndex; OBJ_DATA *obj; int vnum = 0; if (IS_NPC(ch)) return; if (!IS_IMMORTAL(ch)) { if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("What?\n\r", ch); return; } } if (ch->pcdata->powers[SKYBLADE_MAGIC] < 1) { send_to_char ("You haven't mastered enough of the magic ability yet.\n\r", ch); return; } if (ch->practice < 250) { send_to_char("You don't have the 250 primal needed.\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_MAGIC] == 1) vnum = 33178; if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 2) vnum = 33179; if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL) { send_to_char("Missing object, please inform a God .\n\r", ch); return; } if (!IS_IMMORTAL(ch)) { ch->practice -= 250; } obj = create_object(pObjIndex, 50); SET_BIT(obj->spectype, SITEM_SKYBLADE); obj->questowner = str_dup(ch->pcdata->switchname); obj->ownerid = ch->pcdata->playerid; obj_to_char(obj, ch); act("$p falls from the heavens and lands before you.", ch, obj, NULL, TO_CHAR); act("$p falls from the heavens and lands before $n.", ch, obj, NULL, TO_ROOM); return; } void do_wyrmroar(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_SKILLS] < 9) { send_to_char ("You have not mastered the skills ability enough yet.\n\r", ch); return; } if (!TIME_UP(ch, TIMER_WYRM_ROAR)) { send_to_char ("Your throat is still sore from the last time.\n\r", ch); return; } if ((victim = get_char_room(ch, NULL, arg)) == NULL) { if (ch->fighting == NULL) { send_to_char ("Yes release the roar of the wyrm, but at who?\n\r", ch); return; } else victim = ch->fighting; } if (victim == ch) { send_to_char("Quit that stupid ass.\n\r", ch); return; } if (is_safe(ch, victim)) return; SET_TIMER(ch, TIMER_WYRM_ROAR, 6); WAIT_STATE(victim, 18); act("$n roars with the power of the wyrm, stunning you in place.", ch, NULL, victim, TO_VICT); act("$n roars with the power of the wyrm, stunning $N in place.", ch, NULL, victim, TO_NOTVICT); act("You roar with the power of the wyrm, stunning $N in place.", ch, NULL, victim, TO_CHAR); return; } void do_divestrike(CHAR_DATA * ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_SKILLS] < 10) { send_to_char("You have not mastered the ability yet.\n\r", ch); return; } if (arg[0] == '\0') { send_to_char("Divestrike on whom?\n\r", ch); return; } if ((victim = get_char_room(ch, NULL, arg)) == NULL) { send_to_char("They aren't here.\n\r", ch); return; } if (victim == ch) { send_to_char("#CWhatever#n\n\r", ch); return; } if (ch->move < 10000) { send_to_char("#CYou need 10000 move to use this!#n\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char ("#LYou jump down from the #Wclouds#L and strike down upon your opponent.#n\n\r", ch); act("#C$n #Ljumps down from the #Wclouds #Land strikes $s opponent with $s rapier.#n\n\r", ch, NULL, victim, TO_ROOM); WAIT_STATE(ch, 3 * PULSE_VIOLENCE); multi_hit(ch, victim, TYPE_UNDEFINED); multi_hit(ch, victim, TYPE_UNDEFINED); multi_hit(ch, victim, TYPE_UNDEFINED); } send_to_char ("#LYou jump from the heavens down upon your opponent.#n\n\r", ch); act("#C$n #Ljumps down from the heavens and strikes upon you with $s rapier.#n\n\r", ch, NULL, victim, TO_VICT); ch->move -= 10000; ch->hitroll += 5000; WAIT_STATE(ch, 3 * PULSE_VIOLENCE); multi_hit(ch, victim, TYPE_UNDEFINED); multi_hit(ch, victim, TYPE_UNDEFINED); multi_hit(ch, victim, TYPE_UNDEFINED); ch->hitroll -= 5000; return; } void do_dragonx(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; int dam; argument = one_argument(argument, arg1); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { stc("Huh?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_SKILLS] < 8) { send_to_char("You haven't mastered that skill yet.\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_DTIMER] != 10) { send_to_char("Your dragon power has not fully charged.\n\r", ch); return; } if ((victim = get_char_room(ch, NULL, arg1)) == NULL) { if ((victim = ch->fighting) == NULL) { send_to_char ("Use the power of the dragon on whom?\n\r", ch); return; } else victim = ch->fighting; } if (is_safe(ch, victim)) { send_to_char("They are safe from such a hostile action.\n\r", ch); return; } if (ch->mana < 10000) { send_to_char ("You do not have the 10000 mana required to call on the dragon.\n\r", ch); return; } dam = victim->hit / 3; if (IS_NPC(victim)) dam = victim->hit * .9; if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 5) dam *= 1.5; if (IS_NPC(victim)) { if (dam > 15000) dam = 5000 + (number_range(1, 5) * number_range(1, 7)); } else { if (dam > 6000) dam = 6000 + (number_range(1, 5) * number_range(1, 7)); } do_say(ch, "#LMighty dragon give me your POWER!!!!!!#n"); act("#C$n #Lleaps high into the air.......#n\n\r", ch, NULL, victim, TO_ROOM); stc("#LYou leap high into the air!#n\n\r", ch); act("#0The #ylightning crackles#0 as a large dragon is seen in the horizon.#n\n\r", ch, NULL, victim, TO_ROOM); WAIT_STATE(ch, 6); WAIT_STATE(victim, 6); stc("#LYou charge down upon your victim riding a huge dragon!#n\n\r", ch); act("#C$n #0charges down upon you, riding a huge dragon!#n\n\r", ch, NULL, victim, TO_VICT); act("#C$n #0charges down upon $N, riding a huge dragon!#n\n\r", ch, NULL, victim, TO_NOTVICT); ch->mana -= 10000; ch->pcdata->powers[SKYBLADE_DTIMER] = 0; WAIT_STATE(ch, 12); WAIT_STATE(victim, 12); xprintf(buf, "#LYou return to the ground and your dragon fades away.#W[%d]\n\r", dam); stc(buf, ch); xprintf(buf, "#L%s returns to the ground and the dragon fades away.#W[%d]\n\r", ch->name, dam); stc(buf, victim); hurt_person(ch, victim, dam); WAIT_STATE(ch, 8); if (ch->fighting == NULL) ch->fighting = victim; return; } void do_heavenlyrain(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; char arg1[MAX_INPUT_LENGTH]; int dam; argument = one_argument(argument, arg1); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { stc("Huh?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_MAGIC] < 3) { send_to_char("You haven't mastered that magic yet.\n\r", ch); return; } if ((victim = get_char_room(ch, NULL, arg1)) == NULL) { if ((victim = ch->fighting) == NULL) { send_to_char("Call heavenlyrain upon whom?\n\r", ch); return; } else victim = ch->fighting; } if (is_safe(ch, victim)) { send_to_char("They are safe from such a hostile action.\n\r", ch); return; } if (ch->mana < 5000) { send_to_char ("You do not have the 5000 mana required to call on the dragon.\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 4) dam = number_range(5000, 7000); else dam = number_range(3000, 5000); if (!IS_NPC(victim) && victim->alignment == 1000) dam *= .5; if (IS_NPC(victim)) dam += victim->hit / 10; xprintf(buf, "#CYou call upon a heavenly rain to harm your opponent!#W[%d]\n\r", dam); stc(buf, ch); xprintf(buf, "#C%s calls upon a heavenly rain to harm you!#W[%d]\n\r", ch->name, dam); stc(buf, victim); act("#C$n calls upon a heavenly rain to harm $N!#n\n\r", ch, NULL, victim, TO_NOTVICT); ch->mana -= 5000; if (number_range(1, 4) == 4) { if (ch->pcdata->powers[SKYBLADE_MAGIC] >= 4) ch->hit += dam; else ch->hit += dam / 2; stc("#LYour heavenly rain has healed you.#n\n\r", ch); } hurt_person(ch, victim, dam); if (victim->hit < -10) victim->hit = -10; WAIT_STATE(ch, 8); if (ch->fighting == NULL) ch->fighting = victim; return; } void do_skyarmor(CHAR_DATA * ch, char *argument) { OBJ_INDEX_DATA *pObjIndex; OBJ_DATA *obj; char arg[MAX_INPUT_LENGTH]; int vnum = 0; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_SKYBLADE)) { send_to_char("What?\n\r", ch); return; } if (ch->pcdata->powers[SKYBLADE_MAGIC] < 2) { send_to_char ("You haven't mastered enough of the magic ability yet.\n\r", ch); return; } if (arg[0] == '\0') { send_to_char ("Please specify which piece of Skyblade armor you wish to make: Ring Collar Plate Helmet " "Leggings Boots Gauntlets Sleeves Cape Belt Bracer Mask.\n\r", ch); return; } if (ch->practice < 100) { send_to_char ("It costs 100 points of primal to create Skyblade equipment.\n\r", ch); return; } if (!str_cmp(arg, "ring")) vnum = 33314; else if (!str_cmp(arg, "plate")) vnum = 33317; else if (!str_cmp(arg, "helmet")) vnum = 33318; else if (!str_cmp(arg, "collar")) vnum = 33316; else if (!str_cmp(arg, "leggings")) vnum = 33325; else if (!str_cmp(arg, "boots")) vnum = 33322; else if (!str_cmp(arg, "gauntlets")) vnum = 33323; else if (!str_cmp(arg, "sleeves")) vnum = 33324; else if (!str_cmp(arg, "cape")) vnum = 33319; else if (!str_cmp(arg, "belt")) vnum = 33320; else if (!str_cmp(arg, "bracer")) vnum = 33315; else if (!str_cmp(arg, "mask")) vnum = 33321; else { do_skyarmor(ch, ""); return; } if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL) { send_to_char("Missing object, please inform a God.\n\r", ch); return; } ch->practice -= 100; obj = create_object(pObjIndex, 50); obj->questowner = str_dup(ch->pcdata->switchname); obj->ownerid = ch->pcdata->playerid; obj_to_char(obj, ch); act("$p appears in your hands.", ch, obj, NULL, TO_CHAR); act("$p appears in $n's hands.", ch, obj, NULL, TO_ROOM); return; }