// *********** ***********
// *********** ***********
// * * 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;
}