void soul_sword (CHAR_DATA *ch) { //Soul Sword can rarely kill victims outright, and does 1 dmg, and is VERY unlikely to hit. UNGODLY Expensive CHAR_DATA *victim; OBJ_DATA *katana; char buf[MAX_STRING_LENGTH]; int thebonus = 0; if (IS_NPC(ch)) return; katana = get_eq_char(ch, WEAR_WIELD); if ((victim = ch->fighting) == NULL) { send_to_char("You find no need for this now.\n\r",ch); return; } if (IS_NPC(victim)) thebonus = 45; else thebonus = 7; if (ch->mana < 30000) { send_to_char("You have not the 30000 mana power to use this.\n\r",ch); return; } if ((katana == NULL) || (katana->pIndexData->vnum != 33176)) { send_to_char("Without a proper katana the energy will destroy your weapon.\n\r",ch); return; } ch->mana -= 30000; send_to_char("You channel mystical energy into your katana.\n\r",ch); do_say(ch,"#0SOUL #nSWORD!"); act("A bolt of light shoots out of your katana and into $N",ch, NULL, victim, TO_CHAR); act("A bolt of light shoots out of $n's katana and into you!", ch, NULL, victim, TO_VICT); act("A bolt of light shoots out of $n's katana and into $N!", ch, NULL, victim, TO_NOTVICT); if (number_range(0,250) > (4 + thebonus)) // Was .5% now it's 5%/20% { act("Your attack was ineffective.", ch, NULL, victim, TO_CHAR); act("$n looks confused as nothing happens.", ch, NULL, NULL, TO_ROOM); multi_hit( ch, victim, TYPE_UNDEFINED ); WAIT_STATE(ch, (PULSE_VIOLENCE * 5)); return; } xprintf(buf,"$N screams as $E is ripped apart by the dark energy. #R[#y#b MORTAL #n#R]#n"); act(buf, ch, NULL, victim, TO_CHAR); xprintf(buf,"$n looks on as you start screaming while dark energy rips you apart from the inside out. #R[#y#b MORTAL #n#R]#n"); act(buf, ch, NULL, victim, TO_VICT); send_to_char("You crumple to the ground.\n\r", victim); act("$n looks on as $N starts screaming. Weakened $N crumples to the ground.", ch, NULL, victim, TO_NOTVICT); WAIT_STATE(ch, (PULSE_VIOLENCE * 5)); victim->hit = -10; hurt_person(ch, victim, 1); return; }
void drain_sword (CHAR_DATA *ch) { //Drain Sword sucks health from a victim, and is moderately likely to hit. Avg Expense, Low Dmg CHAR_DATA *victim; OBJ_DATA *katana; char buf[MAX_STRING_LENGTH]; int dmg; int heal; if (IS_NPC(ch)) return; katana = get_eq_char(ch, WEAR_WIELD); if ((victim = ch->fighting) == NULL) { send_to_char("You find no need for this now.\n\r",ch); return; } if (ch->mana < 4000) { send_to_char("You have not the 4000 mystical power to use this.\n\r",ch); return; } if ((katana == NULL) || (katana->pIndexData->vnum != 33176)) { send_to_char("Without a proper katana the energy will destroy your weapon.\n\r",ch); return; } ch->mana -= 4000; send_to_char("You channel mystical energy into your katana.\n\r",ch); do_say(ch,"#nD#0R#yA#0I#nN #nSWORD!"); send_to_char("A wave of energy launches itself from your katana.\n\r",ch); act("A wave of energy launches itself from $n's katana!", ch, NULL, NULL, TO_ROOM); if (number_range(0,100) < 20) { act("Your wave of energy goes through $N, continues on a bit then fades.", ch, NULL, victim, TO_CHAR); act("The wave of energy goes through you, continues on a bit then fades.", ch, NULL, victim, TO_VICT); act("The wave of energy goes through $N, continues on a bit then fades.", ch, NULL, victim, TO_NOTVICT); return; } dmg = number_range(ch->wpn[1], ch->wpn[1] * 2); heal = number_range(dmg / 3, dmg / 2); xprintf(buf,"Your wave of energy enters $N's body and drains %d health painfully from $N. #R[#R#b %d #n#R]#n", heal, dmg); act(buf, ch, NULL, victim, TO_CHAR); xprintf(buf,"$n's wave of energy enters your body and drains you painfully. #R[#R#b %d #n#R]#n", dmg); act(buf, ch, NULL, victim, TO_VICT); act("$n's wave of energy enters $N's body causing $N to look weak.", ch, NULL, victim, TO_NOTVICT); hurt_person(ch, victim, dmg); ch->hit += heal; if (ch->hit > ch->max_hit) ch->hit = ch->max_hit; WAIT_STATE(ch, (PULSE_VIOLENCE * 3)); return; }
void fire_sword (CHAR_DATA *ch) { //Flame Cone Sword sets victim aflame, and is VERY likely to hit. More Expense, Low Dmg CHAR_DATA *victim; OBJ_DATA *katana; char buf[MAX_STRING_LENGTH]; int dmg; if (IS_NPC(ch)) return; katana = get_eq_char(ch, WEAR_WIELD); if ((victim = ch->fighting) == NULL) { send_to_char("You find no need for this now.\n\r",ch); return; } if (ch->mana < 3500) { send_to_char("You have not the 3500 mystical power to use this.\n\r",ch); return; } if ((katana == NULL) || (katana->pIndexData->vnum != 33176)) { send_to_char("Without a proper katana the energy will destroy your weapon.\n\r",ch); return; } ch->mana -= 3500; send_to_char("You channel mystical energy into your katana.\n\r",ch); do_say(ch,"#rF#RIR#rE #nSWORD!"); send_to_char("A tremendous cone of flame shoots from your katana.\n\r",ch); act("A tremendous cone of flame shoots from $n's katana!", ch, NULL, NULL, TO_ROOM); if (number_range(0,100) < 5) { act("Your cone of flame flashes past $N and scorches the ground.", ch, NULL, victim, TO_CHAR); act("The cone of flame flashes past you and scorches the ground.", ch, NULL, victim, TO_VICT); act("The cone of flame flashes past $N and scorches the ground.", ch, NULL, victim, TO_NOTVICT); return; } dmg = number_range(ch->wpn[1], ch->wpn[1] * 2); xprintf(buf,"Your cone of flame engulfs $N's in a sheet of flame. #R[#R#b %d #n#R]#n", dmg); act(buf, ch, NULL, victim, TO_CHAR); xprintf(buf,"$n's cone of flame engulfs you in a sheet of flame. #R[#R#b %d #n#R]#n", dmg); act(buf, ch, NULL, victim, TO_VICT); act("$n's engulfs $N's in a sheet of flame.", ch, NULL, victim, TO_NOTVICT); hurt_person(ch, victim, dmg); WAIT_STATE(ch, (PULSE_VIOLENCE * 3)); if (!IS_SET(victim->affected_by, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING); return; }
void lightning_sword (CHAR_DATA *ch) { //Lightning Stuns Victim and is fairly likely to hit, Avg Expense, Avg Damage CHAR_DATA *victim; OBJ_DATA *katana; char buf[MAX_STRING_LENGTH]; int dmg; if (IS_NPC(ch)) return; katana = get_eq_char(ch, WEAR_WIELD); if ((victim = ch->fighting) == NULL) { send_to_char("You find no need for this now.\n\r",ch); return; } if (ch->mana < 2500) { send_to_char("You have not the 2500 mana to use this.\n\r",ch); return; } if ((katana == NULL) || (katana->pIndexData->vnum != 33176)) { send_to_char("Without a proper katana the energy will destroy your weapon.\n\r",ch); return; } ch->mana -= 2500; send_to_char("You channel mystical energy into your katana.\n\r",ch); do_say(ch,"#b#cL#CI#cG#CH#cT#CN#cI#CN#cG #nSWORD!"); send_to_char("A humongous bolt of lightning blasts from your katana.\n\r",ch); act("A humongous bolt of lightning blasts from $n's katana!", ch, NULL, NULL, TO_ROOM); if (number_range(0,100) < 16) { act("Your lightning blast flies past $N and is absorbed by the ground.", ch, NULL, victim, TO_CHAR); act("The lightning blast slams into the ground and is absorbed.", ch, NULL, NULL, TO_ROOM); return; } dmg = number_range(ch->wpn[1], ch->wpn[1] * 3); xprintf(buf,"Your lightning blast slams into $N's and crackles around $S body sending them sprawling. #R[#C#b %d #n#R]#n", dmg); act(buf, ch, NULL, victim, TO_CHAR); xprintf(buf,"$n's lightning blast slams into you and crackles around your body sending you sprawling. #R[#C#b %d #n#R]#n", dmg); act(buf, ch, NULL, victim, TO_VICT); act("$n's lightning blast slams into $N's and crackles around $S body sending $N sprawling.", ch, NULL, victim, TO_NOTVICT); hurt_person(ch, victim, dmg); WAIT_STATE(ch, (PULSE_VIOLENCE * 3)); if (victim->position > POS_STUNNED) victim->position = POS_STUNNED; return; }
void do_chaossurge(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; int dam; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_TANARRI) && !IS_CLASS(ch, CLASS_LICH)) { send_to_char("Huh?\n\r",ch); return; } if (IS_CLASS(ch, CLASS_LICH) && ch->pcdata->powers[CHAOS_MAGIC] < 3) { send_to_char("Yes Master.\n\r",ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char("Not on mobiles.\n\r",ch); return; } if (is_safe(ch,victim)) return; if (victim == ch) { send_to_char("That doesn't seem like a good idea.\n\r",ch); return; } if (victim->alignment < -500) { send_to_char("They are too evil, you cannot affect them.\n\r",ch); return; } if (victim->alignment > 500) dam = 1500; else if (victim->alignment > 0) dam = 1000; else dam = 500; sprintf(buf,"Your let chaos envelope $N and $S is hurt [%d]",dam); act(buf,ch,NULL,victim,TO_CHAR); sprintf(buf,"$n points a wicked finger at you and chaos strikes your mind! [%d]",dam); act(buf,ch,NULL,victim,TO_VICT); sprintf(buf,"$n strikes $N down with a burst of pure #RCHAOS!#n."); act(buf,ch,NULL,victim,TO_NOTVICT); hurt_person(ch,victim,dam); WAIT_STATE(ch,12); return; }
/* syntax : discharge * (drops all elementalshields in one BIG blast) */ void do_discharge (CHAR_DATA *ch, char *argument) { CHAR_DATA *vch; CHAR_DATA *vch_next; CHAR_DATA *mount; char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char buf3[MAX_STRING_LENGTH]; int magic_power = ch->spl[RED_MAGIC] + ch->spl[BLUE_MAGIC] + ch->spl[GREEN_MAGIC] + ch->spl[PURPLE_MAGIC] + ch->spl[YELLOW_MAGIC]; int dam; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_MAGE)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->powers[PINVOKE] < 4) /* 4 is just a test */ { send_to_char("You don't have that invoke yet.\n\r",ch); return; } if (IS_ITEMAFF(ch, ITEMA_AFFENTROPY)) magic_power +=100; if (IS_ITEMAFF(ch, ITEMA_MAGESHIELD)) { REMOVE_BIT(ch->itemaffect, ITEMA_MAGESHIELD); for (vch = ch->in_room->people; vch != NULL; vch = vch_next) { vch_next = vch->next_in_room; if (vch != ch) { if (is_safe(ch,vch)) continue; if ((mount = ch->mount) != NULL) if (mount == vch) continue; dam = number_range(magic_power*7/2, magic_power*9/2) + ch->damroll; if (IS_AFFECTED(vch, AFF_SANCTUARY)) dam *= 0.5; sprintf(buf1,"$n's mystical shields explodes in a shower of flames striking $N [#C%d#n]",dam); sprintf(buf2,"Your mystical shields explodes in a shower of flames striking $N [#C%d#n]",dam); sprintf(buf3,"$n's mystical shields explodes in a shower of flames striking you [#C%d#n]",dam); act(buf1,ch,NULL,vch, TO_NOTVICT); act(buf2,ch,NULL,vch, TO_CHAR); act(buf3,ch,NULL,vch, TO_VICT); hurt_person(ch,vch,dam); if (vch->position > POS_STUNNED) { if (vch->fighting == NULL) set_fighting(vch, ch); if (ch->fighting == NULL) set_fighting(ch, vch); } } } } return; }
void do_touchofgod(CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; int dam; argument = one_argument( argument, arg ); dam = number_range(100,200); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->powers[ANGEL_JUSTICE] < 4) { send_to_char("You cannot channel the will of God yet.\n\r",ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char("Not on mobiles.\n\r",ch); return; } if (is_safe(ch,victim)) return; if (victim == ch) { send_to_char("That doesn't seem like a good idea.\n\r",ch); return; } WAIT_STATE(ch, 18); hurt_person(ch, victim, dam); act("You grab $N by the forehead and channel God's justice into $S body.",ch,NULL,victim,TO_CHAR); act("$n grabs you by your forehead and sends a prayer to God, DAMN THAT HURT.",ch,NULL,victim,TO_VICT); act("$n grabs $N by the forehead and sends a prayer to God.",ch,NULL,victim,TO_NOTVICT); if (number_range(1,3) == 1) { if (victim->position == POS_FIGHTING) stop_fighting(victim,TRUE); act("$N screams in pain and drops to the ground as God's justice wrecks $S body.",ch,NULL,victim,TO_CHAR); act("AARGH!!! The pain is to much, you drop to the ground.",ch,NULL,victim,TO_VICT); act("$N screams in agony and falls to the ground.",ch,NULL,victim,TO_NOTVICT); victim->position = POS_STUNNED; } return; }
void do_gbanish( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; CHAR_DATA *mount; char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; int dam; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->powers[ANGEL_HARMONY] < 3) { send_to_char("Your not in contact with your inner harmonies.\n\r",ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char("Not on mobiles.\n\r",ch); return; } if (is_safe(ch,victim)) return; if (victim == ch) { send_to_char("That doesn't seem like a good idea.\n\r",ch); return; } if (victim->alignment > 500) { send_to_char("They are not evil, you cannot punish them.\n\r",ch); return; } if (victim->alignment > 0) dam = 500; else if (victim->alignment > - 500) dam = 1000; else dam = 1500; sprintf(buf,"Your call for God to banish $N and $S is hurt [%d]",dam); act(buf,ch,NULL,victim,TO_CHAR); sprintf(buf,"$n calls for God to banish you, and it hurts BAD! [%d]",dam); act(buf,ch,NULL,victim,TO_VICT); sprintf(buf,"$n calls for God to Banish $N."); act(buf,ch,NULL,victim,TO_NOTVICT); hurt_person(ch,victim,dam); if (number_range(1,10) > 7) { act( "$n is flung into a vortex and disappears.", victim, NULL, NULL, TO_ROOM ); char_from_room( victim ); char_to_room( victim, get_room_index(ROOM_VNUM_HELL)); act( "$n is flung out of a vortex.", victim, NULL, NULL, TO_ROOM ); do_look(victim, "auto"); if ((mount = victim->mount) == NULL) return; char_from_room( mount ); char_to_room(mount, victim->in_room); do_look(mount, "auto"); return; } if (victim->position > POS_STUNNED) { if (victim->fighting == NULL) set_fighting(victim, ch); if (ch->fighting == NULL) set_fighting(ch, victim); } WAIT_STATE(ch,18); return; }
/* New strangle code -Beorn */ void do_strangle(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; char buf [MAX_STRING_LENGTH]; int dam; AFFECT_DATA af; argument = one_argument(argument, arg); if (IS_NPC(ch)) if (!IS_CLASS(ch, CLASS_NINJA)) { send_to_char("Huh?",ch); return; } if (ch->pcdata->powers[NPOWER_NINGENNO] < 2) { send_to_char("You do not have that ability yet.\n\r",ch); return; } if (arg[0] == '\0') { send_to_char("Hakunetsu who?\n\r",ch); return; } if ((victim = get_char_room( ch, arg )) == NULL) { send_to_char("They are not here.\n\r",ch); return; } if (!IS_SET(ch->act, PLR_SUPERINVIS)) { send_to_char("You must using Kakusu to Hakunetsu!\n\r",ch); return; } if ( victim->fighting != NULL ) { send_to_char( "You can't Hakunetsu a fighting person.\n\r", ch); return; } if (victim->hit <= (victim->max_hit *0.9)) { send_to_char("They are already wounded.\n\r",ch); return; } if (is_safe(ch,victim)) return; act("You step out from behind $N and cruelly stab them in the back.\n\r",ch,NULL,victim, TO_CHAR); act("$n steps out from behind you and plants a dagger between your shoulders.\n\r",ch,NULL,victim, TO_VICT); act("$n suddenly steps out from behind $N and stabs them in the back.\n\r",ch,NULL,victim, TO_NOTVICT); if (IS_SET(victim->act,PLR_HOLYLIGHT)) REMOVE_BIT(victim->act,PLR_HOLYLIGHT); if (IS_SET(victim->affected_by, AFF_DETECT_HIDDEN)) REMOVE_BIT(victim->affected_by, AFF_DETECT_HIDDEN); if (IS_SET(victim->affected_by, AFF_DETECT_INVIS)) REMOVE_BIT(victim->affected_by, AFF_DETECT_INVIS); af.type = skill_lookup("blindness"); af.location = APPLY_HITROLL; af.modifier = -50*(ch->pcdata->upgrade_level + 1); af.duration = 60; af.bitvector = AFF_BLIND; affect_to_char( victim, &af ); do_web(victim, ""); do_web(victim, ""); do_web(victim, ""); do_web(victim, ""); /* spelltype = skill_table[sn].target; level = ch->spl[spelltype] * 1.5; (*skill_table[sn].spell_fun) ( sn, level, ch, victim ); */ dam = ((victim->hit) * .10); if (ch->generation == 5) dam *= 1.05; if (ch->generation == 4) dam *= 1.10; if (ch->generation == 3) dam *= 1.15; if (ch->generation == 2) dam *= 1.20; if (ch->generation == 1) dam *= 1.25; if (ch->generation == 0) dam *= 1.30; if (victim->position == POS_SLEEPING) dam *= 1.25; sprintf( buf, "You twist your blade cruelly in $N's back. #r[#l**#R%d#l**#r]#n",dam ); act( buf, ch, NULL, victim, TO_CHAR ); sprintf( buf, "$n's steps out from behind you and plants a dagger between your shoulders. #r[#l**#R%d#l**#r]#n",dam ); act( buf, ch, NULL, victim, TO_VICT ); act( "$n's steps out from behind $N and stabs them in the back.", ch, NULL, victim, TO_NOTVICT ); hurt_person(ch, victim, dam); ch->fighting = victim; victim->fighting = ch; autodrop(ch); autodrop(victim); ch->position = POS_FIGHTING; victim->position = POS_FIGHTING; update_pos(ch); update_pos(victim); WAIT_STATE(ch,12); return; }
void do_firebolt( 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_WIZARD)) { send_to_char("Huh?\n\r",ch); return; } if ( arg1[0] == '\0') { send_to_char( "#CCast #Rf#ri#Rr#re#Rb#ro#Rl#rt#n on whom?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg1 ) ) == NULL ) { send_to_char( "#RThey aren't here.#n\n\r", ch ); return; } if (victim->level < LEVEL_AVATAR) { stc("Not on mortals.\n\r",ch); return; } if ((victim == ch)) { stc("#RYeah ok...\n\r",ch); return; } if (ch->pcdata->stats[WL_SPELLS] < 1) { stc("#RYou do not yet have mastery of this spell.\n\r",ch); return; } if (ch->mana < 1000) { stc("#RYou do not have the required 1000 mana.\n\r",ch); return; } dam = number_range(2000, 3500); if (ch->pcdata->powers[WL_SKILLS] > 3) { dam += number_range( 3000, 4000 ); } if (IS_NPC(victim)) dam *= 1.5; if (number_percent() < 50) { act("#y$n#R points $s hands towards #y$N#R, releasing a powerful bolt of flame.", ch, NULL, victim, TO_NOTVICT); sprintf( buf, "#RYou point your hands toward $N, releasing a powerful blast of flame#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_CHAR); sprintf( buf, "#y$n#R points his hands towards you, releasing a powerful bolt of flame.#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_VICT); if (!IS_SET(victim->affected_by, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING); hurt_person(ch, victim, dam); if (victim->hit < -10) victim->hit = -10; } if (number_percent() < 10) { act("#y$n#R points $s hands towards #y$N#R, releasing a powerful bolt of flame.", ch, NULL, victim, TO_NOTVICT); sprintf( buf, "#RYou point your hands toward $N, releasing a powerful blast of flame#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_CHAR); sprintf( buf, "#y$n#R points his hands towards you, releasing a powerful bolt of flame.#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_VICT); if (!IS_SET(victim->affected_by, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING); hurt_person(ch, victim, dam); if (victim->hit < -10) victim->hit = -10; } else { act("#y$n#R points $s hands towards #y$N#R, releasing a powerful bolt of flame.", ch, NULL, victim, TO_NOTVICT); sprintf( buf, "#RYou point your hands toward $N, releasing a powerful blase of flame#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_CHAR); sprintf( buf, "#y$n#R points his hands towards you, releasing a powerful bolt of flame.#n #y[#C%d#y]#n\n\r", dam); act( buf, ch,NULL,victim,TO_VICT); if (!IS_SET(victim->affected_by, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING); ch->mana -= 1000; hurt_person(ch, victim, dam); if (victim->hit < -10) victim->hit = -10; } WAIT_STATE(ch, PULSE_VIOLENCE); if (ch->fighting == NULL) ch->fighting = victim; return; }
void do_wrath( 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_CLASS(ch, CLASS_WIZARD)) { send_to_char("Huh?\n\r",ch); return; } if ( arg1[0] == '\0') { send_to_char( "#CRelease the Wrath of the Damned on who?\n\r", ch ); return; } if ((victim = get_char_room(ch, arg1)) == NULL) { stc("#CThey aren't here.\n\r", ch); return; } if (ch->pcdata->stats[WL_SPELLS] < 9) { stc("#CYou do not yet have mastery of this spell.\n\r",ch); return; } if ((victim = get_char_world(ch, arg1)) == NULL) { sprintf(buf, "#7%s#C is not here.\n\r",arg1); stc( buf, ch); return; } if (victim->level < LEVEL_AVATAR) { stc("#CNot on mortals.\n\r",ch); return; } if(IS_IMMORTAL(victim)) { send_to_char("Not on immortals.\n\r", ch); stcf(victim,"%s tried to wrath you!\n\r",ch->name); return; } if (ch->mana < 5000) { stc("#CYou do not have the 5000 required mana.\n\r",ch); return; } if ((victim = get_char_room(ch, arg1)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (IS_BODY(victim, BROKEN_SPINE)) { sprintf(buf, "#7%s#C already has a broken spine.\n\r",victim->name); stc( buf, ch); return; } act("#CYou close your eyes and chant dark words, calling forth the damned to release their wrath upon #7$N#C.", ch, NULL, victim, TO_CHAR); act("#7$n#C chants dark words, calling forth the damned to release their wrath upon #7$N#C.", ch, NULL, victim, TO_NOTVICT); act("#7$n#C chants dark words, calling forth the damned to release their wrath upon you.#n", ch, NULL, victim, TO_VICT); SET_BIT(victim->loc_hp[1],BROKEN_SPINE); act("#7$N#C screams in agony as $S spine is snapped with a gruesome #C*#yPOP#C*#n.", ch, NULL, victim, TO_NOTVICT); act("#7$N#C screams in agony as $S spine is snapped with a gruesome #C*#yPOP#C*#n", ch, NULL, victim, TO_CHAR); stc("#CYou scream in agony as your spine is snapped with a gruesome #C*#yPOP#C*#n", victim); dam = (victim->hit) / 45; if (ch->pcdata->powers[WL_SKILLS] > 3) dam *= 2; hurt_person(ch, victim, dam); ch->mana -= 5000; if(!IS_NPC(victim)) { ch->fight_timer += 5; } WAIT_STATE(ch, PULSE_VIOLENCE); return; }
void do_chaos( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; AFFECT_DATA af; int chaos, dam; char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_WIZARD)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->stats[WL_SPELLS] < 6) { send_to_char("Huh?\n\r",ch); return; } if ( arg[0] == '\0') { send_to_char( "#RCast chaos orb on whom?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They are not here.\n\r", ch ); return; } if (is_safe(ch, victim)) { stc("You cannot attack them.\n\r",ch); return; } if (ch->mana < 5000) { stc("You do not ave the required 5000 mana.\n\r",ch); return; } chaos = number_range(1, 6); act("#r$n#0 begins chanting dark words, summoning forth a sphere of #rc#lh#pa#go#cs#0 to hurl at #r$N!#n", ch, NULL, victim, TO_NOTVICT); sprintf( buf, "#0You summon forth a perfect sphere of #rc#lh#pa#go#cs#0 and hurl it at #r$N!#n\n\r"); act(buf, ch, NULL, victim, TO_CHAR); sprintf( buf, "#r$n#0 summons forth a perfect sphere of #rc#lh#pa#go#cs#0 and hurls it at you!#n\n\r"); act(buf, ch, NULL, victim, TO_VICT); if (chaos == 1 || chaos == 6) { stc("The sphere explodes in a shower of #Ggreen bubbles#n.\n\r",victim); stc("Your sphere explodes in a shower of #Ggreen bubbles#n.\n\r",ch); if ( IS_AFFECTED(victim, AFF_POISON)) return; af.type = gsn_poison; af.duration = chaos * 10; af.location = APPLY_STR; af.modifier = 0 - number_range(1,3); af.bitvector = AFF_POISON; affect_join( victim, &af ); WAIT_STATE(victim, number_range(5, 20)); send_to_char( "#GYou are poisoned!#n\n\r", victim ); } else if (chaos == 2 || chaos == 7 ) { stc("The sphere explodes, forming a #yyellow haze#n.\n\r",victim); stc("Your sphere explodes, forming a #yyellow haze#n.\n\r",ch); if ( IS_AFFECTED(victim, AFF_BLIND)) { af.type = gsn_blindness; af.location = APPLY_HITROLL; af.modifier = -4; af.duration = chaos * 10; af.bitvector = AFF_BLIND; affect_to_char( victim, &af ); WAIT_STATE(victim, number_range(5, 15)); send_to_char( "#yYou are blinded!#n\n\r", victim ); } else { stc("They are already blinded.\n\r",ch); } } else if (chaos == 3 || chaos == 8) { stc("The sphere explodes in a shower of #Rred flames#n.\n\r",victim); stc("Your sphere explodes in a shower of #Rred flames#n.\n\r",ch); WAIT_STATE(victim, number_range(5, 20)); SET_BIT(victim->affected_by, AFF_FLAMING); } else if (chaos == 4 || chaos == 9) { dam = number_range(3750, 7500); sprintf(buf,"The sphere explodes in a scattering of #Lblue sparks#n. #R[#y%d#R]#n\n\r", dam); stc( buf, victim); sprintf(buf,"Your sphere explodes in a scattering of #Lblue sparks#n. #R[#y%d#R]#n\n\r", dam); stc( buf, ch); WAIT_STATE(victim, number_range(5, 8)); hurt_person(ch, victim, dam); } else if (chaos == 5 ) { stc("The sphere dissipates before it hits you#n.\n\r",victim); stc("Your sphere dissipates shortly after casting#n.\n\r",ch); } one_hit(ch,victim, gsn_wrathofgod,1); one_hit(ch,victim, gsn_wrathofgod,1); WAIT_STATE(ch, 4); ch->mana -= 5000; if (victim->hit < -10) victim->hit = -10; return; }
/* Syntax : chant <type> <color> <target> * ex. chant bless red self */ void do_chant (CHAR_DATA *ch, char *argument) { char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char buf3[MAX_STRING_LENGTH]; CHAR_DATA *victim; AFFECT_DATA af; int i, dam, count, sn; int red_magic = ch->spl[RED_MAGIC]; int blue_magic = ch->spl[BLUE_MAGIC]; int green_magic = ch->spl[GREEN_MAGIC]; int purple_magic = ch->spl[PURPLE_MAGIC]; int yellow_magic = ch->spl[YELLOW_MAGIC]; int magic_power = ch->spl[RED_MAGIC] + ch->spl[BLUE_MAGIC] + ch->spl[GREEN_MAGIC] + ch->spl[PURPLE_MAGIC] + ch->spl[YELLOW_MAGIC]; argument=one_argument(argument,arg1); strcpy(arg2,argument); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_MAGE) && !IS_CLASS(ch, CLASS_LICH)) { send_to_char("Huh?\n\r",ch); return; } if (arg1[0] == '\0') { send_to_char("Syntax : chant <bless/curse/damage/heal> <target>.\n\r", ch); return; } if (IS_ITEMAFF(ch, ITEMA_AFFENTROPY)) { magic_power +=100; red_magic +=20; yellow_magic +=20; purple_magic +=20; green_magic +=20; blue_magic +=20; } if (!str_cmp(arg1, "heal")) { if (arg2[0] == '\0') victim = ch; else if ((victim = get_char_room(ch, arg2)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (ch->mana < 1500) { send_to_char("You need 1500 mana.\n\r",ch); return; } act("$n channels lifeforce from the five elements into $N.",ch,NULL,victim,TO_NOTVICT); act("You channel lifeforce from the five elements into $N.",ch,NULL,victim,TO_CHAR); act("$n channels lifeforce from the five elements into you.",ch,NULL,victim,TO_VICT); WAIT_STATE(ch,8); ch->mana -= 1500; victim->hit = UMIN(victim->hit + (magic_power * 1.5), victim->max_hit); return; } else if (!str_cmp(arg1, "damage")) { if (arg2[0] == '\0' && ch->fighting != NULL) victim = ch->fighting; else if ((victim = get_char_room(ch, arg2)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (ch->mana <1000) { send_to_char("You need 1000 mana.\n\r",ch); return; } if (victim == ch) { send_to_char("You really don't want to hurt yourself.\n\r", ch ); return; } if (is_safe(ch, victim)) return; if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; if (IS_AFFECTED(ch, AFF_PEACE)) REMOVE_BIT(ch->affected_by, AFF_PEACE); if (victim->position > POS_STUNNED) { if (victim->fighting == NULL) set_fighting(victim, ch); if (ch->fighting == NULL) set_fighting(ch, victim); } WAIT_STATE(ch,8); ch->mana -= 1000; dam = number_range(red_magic*4, red_magic*5); dam += char_damroll(ch); dam = cap_dam(ch,victim,dam); if (!IS_NPC(victim)) { // if (IS_CLASS(ch, CLASS_MAGE) && dam > 600) dam = number_range(580,620); if (dam > 1000) dam = number_range(950,1050); } sprintf(buf1,"$n calls for the forces of #Rhell#n to destroy $N [#C%d#n]" , dam); sprintf(buf2,"You call for the forces of #Rhell#n to destroy $N [#C%d#n]" , dam); sprintf(buf3,"$n calls for the forces of #Rhell#n to destroy you [#C%d#n]" , dam); act(buf1,ch,NULL,victim, TO_NOTVICT); act(buf2,ch,NULL,victim, TO_CHAR); act(buf3,ch,NULL,victim, TO_VICT); hurt_person(ch, victim, dam); if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; dam = number_range(blue_magic*4, blue_magic*5); dam += char_damroll(ch); dam = cap_dam(ch,victim,dam); if (!IS_NPC(victim)) { // if (IS_CLASS(ch, CLASS_MAGE) && dam > 600) dam = number_range(580,620); if (dam > 1000) dam = number_range(950,1050); } sprintf(buf1,"$n summons a supernatural #Lstorm#n to strike $N with lightning [#C%d#n]" , dam); sprintf(buf2,"You summon a supernatural #Lstorm#n to strike $N with lightning [#C%d#n]" , dam); sprintf(buf3,"$n summons a supernatural #Lstorm#n to strike you with lightning [#C%d#n]" , dam); act(buf1,ch,NULL,victim, TO_NOTVICT); act(buf2,ch,NULL,victim, TO_CHAR); act(buf3,ch,NULL,victim, TO_VICT); hurt_person(ch, victim, dam); if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; dam = number_range(green_magic*4, green_magic*5); dam += char_damroll(ch); dam = cap_dam(ch,victim,dam); if (!IS_NPC(victim)) { // if (IS_CLASS(ch, CLASS_MAGE) && dam > 600) dam = number_range(580,620); if (dam > 1000) dam = number_range(950,1050); } sprintf(buf1,"$n calls for #Gthorns#n to grow from the earth and pierce $N [#C%d#n]" , dam); sprintf(buf2,"You call for #Gthorns#n to grow from the earth and pierce $N [#C%d#n]" , dam); sprintf(buf3,"$n calls for #Gthorns#n to grow from the earth and pierce You [#C%d#n]" , dam); act(buf1,ch,NULL,victim, TO_NOTVICT); act(buf2,ch,NULL,victim, TO_CHAR); act(buf3,ch,NULL,victim, TO_VICT); hurt_person(ch, victim, dam); if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; dam = number_range(purple_magic*4, purple_magic*5); dam += char_damroll(ch); dam = cap_dam(ch,victim,dam); if (!IS_NPC(victim)) { // if (IS_CLASS(ch, CLASS_MAGE) && dam > 600) dam = number_range(580,620); if (dam > 1000) dam = number_range(950,1050); } sprintf(buf1,"$n calls on the powers of the #punderdark#n to shatter $N's bones [#C%d#n]" , dam); sprintf(buf2,"You call on the powers of the #punderdark#n to shatter $N's bones [#C%d#n]" , dam); sprintf(buf3,"$n calls on the powers of the #punderdark#n to shatter your bones [#C%d#n]" , dam); act(buf1,ch,NULL,victim, TO_NOTVICT); act(buf2,ch,NULL,victim, TO_CHAR); act(buf3,ch,NULL,victim, TO_VICT); hurt_person(ch, victim, dam); if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; dam = number_range(yellow_magic*4, yellow_magic*5); dam += char_damroll(ch); dam = cap_dam(ch,victim,dam); if (!IS_NPC(victim)) { // if (IS_CLASS(ch, CLASS_MAGE) && dam > 600) dam = number_range(580,620); if (dam > 1000) dam = number_range(950,1050); } sprintf(buf1,"$n spews forth a shower of #yacid#n striking $N [#C%d#n]" , dam); sprintf(buf2,"you spew forth a shower of #yacid#n striking $N [#C%d#n]" , dam); sprintf(buf3,"$n spews forth a shower of #yacid#n striking you [#C%d#n]" , dam); act(buf1,ch,NULL,victim, TO_NOTVICT); act(buf2,ch,NULL,victim, TO_CHAR); act(buf3,ch,NULL,victim, TO_VICT); hurt_person(ch, victim, dam); return; } else if (!str_cmp(arg1, "bless")) { if ((victim = get_char_room(ch, arg2)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (ch->mana <2500) { send_to_char("You need 2500 mana.\n\r",ch); return; } if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; count = 0; for (i = 0; i<5 ; i++) { if (i==0) {sn = skill_lookup("purple sorcery");dam=purple_magic;} if (i==1) {sn = skill_lookup("yellow sorcery");dam=yellow_magic;} if (i==2) {sn = skill_lookup("green sorcery");dam=green_magic;} if (i==3) {sn = skill_lookup("red sorcery");dam=red_magic;} if (i==4) {sn = skill_lookup("blue sorcery");dam=blue_magic;} if (is_affected(victim, sn)) continue; count++; af.type = sn; af.duration = dam/4; af.location = APPLY_HIT; af.modifier = dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_AC; af.modifier = -dam/2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_MOVE; af.modifier = dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_MANA; af.modifier = dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_HITROLL; af.modifier = dam/3; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_DAMROLL; af.modifier = dam/3; af.bitvector = 0; affect_to_char(victim, &af); } ch->mana -= count * 500; WAIT_STATE(ch,6); sprintf(buf1, "You bless $N with the power of the elements."); sprintf(buf2, "The power of the five elements fills your body."); act(buf1, ch, NULL, victim, TO_CHAR); act(buf2, ch, NULL, victim, TO_VICT); return; } else if (!str_cmp(arg1, "curse")) { if ((victim = get_char_room(ch, arg2)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (ch->mana <2500) { send_to_char("You need 2500 mana.\n\r",ch); return; } if (victim->level < 3) { send_to_char("Not on mortal, thier bodies cant handles the strain....poor little buggers.\n\r",ch); return; } if (victim->position == POS_DEAD || ch->in_room != victim->in_room) return; count = 0; for (i = 0;i<5;i++) { if (i==0) {sn = skill_lookup("purple sorcery");dam=purple_magic;} if (i==1) {sn = skill_lookup("yellow sorcery");dam=yellow_magic;} if (i==2) {sn = skill_lookup("green sorcery");dam=green_magic;} if (i==3) {sn = skill_lookup("red sorcery");dam=red_magic;} if (i==4) {sn = skill_lookup("blue sorcery");dam=blue_magic;} if (is_affected(victim, sn)) continue; count++; af.type = sn; af.duration = dam/4; af.location = APPLY_HIT; af.modifier = -dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_AC; af.modifier = dam/2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_MOVE; af.modifier = -dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_MANA; af.modifier = -dam*2; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_HITROLL; af.modifier = -dam/3; af.bitvector = 0; affect_to_char(victim, &af); af.type = sn; af.duration = dam/4; af.location = APPLY_DAMROLL; af.modifier = -dam/3; af.bitvector = 0; affect_to_char(victim, &af); } ch->mana -= count * 500; WAIT_STATE(ch,6); sprintf(buf1, "You curse $N with the power of the elements."); sprintf(buf2, "The power of the five elements wrecks your body."); act(buf1, ch, NULL, victim, TO_CHAR); act(buf2, ch, NULL, victim, TO_VICT); return; } send_to_char("Syntax : chant <bless/curse/damage/heal> <target>.\n\r", ch); return; }
void do_swoop(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; int dam; argument = one_argument(argument, arg); if (IS_NPC(ch)) if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?",ch); return; } if (arg[0] == '\0') { send_to_char("Swoop down upon whom?\n\r",ch); return; } if (ch->pcdata->powers[ANGEL_JUSTICE] < 1) { send_to_char("You haven't learned to fly yet.\n\r",ch); return; } if (!IS_SET(ch->pcdata->powers[ANGEL_POWERS], ANGEL_WINGS)) { send_to_char("Where are your wings?\n\r",ch); return; } if ((victim = get_char_room( ch, arg )) == NULL) { send_to_char("They are not here.\n\r",ch); return; } if (is_safe(ch,victim)) return; if (IS_CLASS(victim, CLASS_ANGEL)) { send_to_char("You cannot swoop down upon the other chosen of God..",ch); act("#G$n just tried to swoop down upon you",ch,NULL,victim, TO_VICT); return; } act("You soar down from the clouds and strike $N with a righteous fury.\n\r",ch,NULL,victim, TO_CHAR); act("$n soars down from the clouds and strikes you with a righteous fury.\n\r",ch,NULL,victim, TO_VICT); act("$n soars down from the clouds and strikes $N with a righteous fury.\n\r",ch,NULL,victim, TO_NOTVICT); dam = (ch->generation - 10) * 1500; // victim->hit -= dam; // hurt_person(ch, victim, dam); set_fighting(ch,victim); hurt_person(ch, victim, dam); WAIT_STATE(ch, 20); return; }
void ice_sword (CHAR_DATA *ch) { //Frost Sword can freeze victims solid, and is highly damaging, and is likely to hit. Incredibly Expensive CHAR_DATA *victim; OBJ_DATA *katana; char buf[MAX_STRING_LENGTH]; char spc[MAX_STRING_LENGTH]; char spcV[MAX_STRING_LENGTH]; int dmg; bool froze = FALSE; if (IS_NPC(ch)) return; katana = get_eq_char(ch, WEAR_WIELD); if ((victim = ch->fighting) == NULL) { send_to_char("You find no need for this now.\n\r",ch); return; } if (ch->mana < 5000) { send_to_char("You have not the 5000 mystical power to use this.\n\r",ch); return; } if ((katana == NULL) || (katana->pIndexData->vnum != 33176)) { send_to_char("Without a proper katana the energy will destroy your weapon.\n\r",ch); return; } ch->mana -= 5000; send_to_char("You channel mystical energy into your katana.\n\r",ch); do_say(ch,"#lF#cR#LO#cS#lT #nSWORD!"); send_to_char("A ray of frost lances out from your katana.\n\r",ch); act("A ray of frost lances out from $n's katana!", ch, NULL, NULL, TO_ROOM); if (number_range(0,100) < 10) { act("Your ray of frost shoots past $N and freezes the ground.", ch, NULL, victim, TO_CHAR); act("The ray of frost shoots past you and freezes the ground.", ch, NULL, victim, TO_VICT); act("The ray of frost shoots past $N and freezes the ground.", ch, NULL, victim, TO_NOTVICT); return; } if (number_range(0,100) > 90) froze = TRUE; if (!froze) { xprintf(spc,"but $N recovers."); xprintf(spcV,"but you recover."); } else { xprintf(spc,"and $N freezes solid."); xprintf(spcV,"and you freeze solid."); } dmg = number_range(ch->wpn[1], ch->wpn[1] * 4); xprintf(buf,"Your ray of frost envelopes $N's in a block of ice, %s #R[#L#b %d #n#R]#n", spc, dmg); act(buf, ch, NULL, victim, TO_CHAR); xprintf(buf,"$n's ray of frost envelopes you in a block of ice, %s #R[#L#b %d #n#R]#n", spcV,dmg); act(buf, ch, NULL, victim, TO_VICT); xprintf(buf,"$n's ray of frost envelopes $N's in a block of ice, %s", spc); act(buf, ch, NULL, victim, TO_NOTVICT); hurt_person(ch, victim, dmg); WAIT_STATE(ch, (PULSE_VIOLENCE * 3)); if (froze) { if (!IS_AFF2(victim, AFF2_FROZEN)) SET_AFF2(victim, AFF2_FROZEN); } 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_negativity( CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; int dam; argument = one_argument( argument, arg ); if (IS_NPC(ch) ) return; if (!IS_CLASS(ch, CLASS_WIZARD)) { stc("Huh?\n\r",ch); return; } if ( arg[0] == '\0') { send_to_char( "#RCast negativity on who?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "#RThey aren't here.#n\n\r", ch ); return; } if ((victim == ch)) { stc("#RYeah ok...\n\r",ch); return; } if (ch->pcdata->stats[WL_SPELLS] < 2) { stc("You do not yet have mastery of this spell.",ch); return; } dam = number_range(1750, 2500); if (ch->pcdata->powers[WL_SKILLS] > 3) dam *= 2; if (ch->mana < dam * 2) { stc("You do not have enough mana for this spell.",ch); return; } hurt_person(ch, victim, dam); ch->hit += dam; ch->mana -= dam; sprintf(buf, "#rYou place your hands on #R%s,#r sucking the life out of them. #B[#R%d#B]#n\n\r", victim->name, dam); stc(buf, ch); sprintf(buf, "#R%s#r places his hands on you, sucking out your life. #B[#R%d#B]#n\n\r", ch->name, dam); stc(buf, victim); WAIT_STATE(ch, 10); return; }