#include <sys/types.h> #include <stdio.h> #include <string.h> #include <time.h> #include "merc.h" void do_fbreath(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; int i=0; int dam = 0; int chance =0; char buf[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char arg [MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_SPHERE(ch, SPHERE_PYROMANCER)) { send_to_char("This is a Pyromancer Sphere ability.\n\r",ch); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { if (ch->fighting == NULL) { send_to_char( "They aren't here.\n\r", ch ); return; } else victim = ch->fighting; } if (ch->mana < 100 ) { send_to_char("You dont have enough mana.\n\r",ch); return; } if ((victim = ch->fighting) == NULL) { send_to_char( "You aren't fighting anyone.\n\r", ch ); return; } ch->mana -= 100; chance = number_range (1, 120); if (chance <= 7) i = 1; if (chance > 7 && chance <= 22) i = 2; if (chance > 22 && chance <= 32) i = 3; // if (chance > 32 && chance <= 52) i = 4; if (chance > 52 && chance <= 90) i = 5; if (chance > 90 && chance <= 94) i = 6; // if (chance > 94 && chance <= 110) i = 7; if (chance > 110 && chance <= 125) i = 8; // if (chance > 125 && chance <= 128) i = 9; if (chance > 128 ) i = 10; for(i=i;i>0;i--) { dam = number_range(6000 , 7500); if (dam < 6000) dam = 6000; dam = cap_dam(ch,victim,dam); if(!IS_NPC(ch)) { if (IS_IMMUNE2(victim, IMM2_FIRE)) dam = dam / 3; if (IS_RES(victim, RES_FIRE)) dam = dam / 1.4; if (IS_VULN(victim, VULN_FIRE)) dam += 3000; } sprintf(buf, "%s's blast of #rf#Rl#ra#Rm#re #Rimmolates#n you [#r%d#n]\n\r", ch->name, dam); send_to_char( buf, victim ); sprintf(buf2, "Your blast of #rf#Rl#ra#Rm#re #Rimmolates#n %s [#r%d#n]\n\r",victim->name, dam); send_to_char( buf2, ch ); act( "$n's blast of #rf#Rl#ra#Rm#re #Rimmolates#n $N",ch,NULL,victim,TO_NOTVICT); // fire_effect(victim,ch->explevel,dam,TARGET_CHAR); hurt_person(ch,victim,dam); if (victim->hit < 1) break; } if (!IS_AFFECTED(victim, AFF_FLAMING)) SET_BIT(victim->affected_by, AFF_FLAMING); WAIT_STATE(ch,6); return; } void do_magma( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; int dam; if (IS_NPC(ch)) return; if (!IS_SPHERE(ch, SPHERE_PYROMANCER)) { send_to_char("This is a Pyromancer Sphere ability.\n\r",ch); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { if (ch->fighting == NULL) { send_to_char( "They aren't here.\n\r", ch ); return; } else victim = ch->fighting; } WAIT_STATE( ch, 12 ); if (!IS_NPC(victim)) dam = number_range(4000,8000); else dam = number_range(15000,25000); sprintf(buf,"Your Magma strikes $N with DEVESTATING FORCE! [%d]\n\r",dam); act(buf,ch,NULL,victim,TO_CHAR); sprintf(buf,"$n's Magma strikes you with DEVESTATING FORCE! [%d]\n\r",dam); act(buf,ch,NULL,victim,TO_VICT); sprintf(buf,"$n's Magma strikes $N with DEVESTATING FORCE! [%d]\n\r",dam); act(buf,ch,NULL,victim,TO_NOTVICT); hurt_person(ch,victim, dam); return; } void do_enflame( CHAR_DATA *ch, char *argument ) { if (IS_NPC(ch)) return; if (!IS_SPHERE(ch, SPHERE_PYROMANCER)) { send_to_char("#0This is a Pyromancer Sphere ability.#n\n\r",ch); return; } { send_to_char("Huh?\n\r",ch); return; } if (IS_SET(ch->pcdata->powers[ELEMENTAL_POWERS], ELEMENTAL_ENFLAME)) { REMOVE_BIT(ch->pcdata->powers[ELEMENTAL_POWERS], ELEMENTAL_ENFLAME); act("You Will No Longer Enflame.", ch, NULL, NULL, TO_CHAR); act("$n's Will No Longer Enflame.", ch, NULL, NULL, TO_ROOM); return; } SET_BIT(ch->pcdata->powers[ELEMENTAL_POWERS], ELEMENTAL_ENFLAME); act("#CYou Will Now Use Your FIRE to Seek Retribution.#n", ch, NULL, NULL, TO_CHAR); act("$n Will now use $s Fire to seek RETRIBUTION.", ch, NULL, NULL, TO_ROOM); return; } void do_flameblade(CHAR_DATA *ch, char *argument) { OBJ_DATA *obj; if (ch->pcRaceLevel < 50) { send_to_char("huh?\n\r",ch); return; } if ( ch->practice < 1500) { send_to_char("It costs 1500 primal to flameblade a weapon.\n\r",ch); return; } if (argument[0] == '\0') { send_to_char("Which item do you wish to forge?\n\r", ch); return; } if ( (obj = get_obj_carry(ch, argument)) == NULL) { send_to_char("You are not carrying that item.\n\r", ch); return; } /* if (IS_SET(obj->quest,QUEST_RELIC) || IS_SET(obj->quest,QUEST_ARTIFACT)) { send_to_char("Not on a Relic.\n\r",ch); return; } */ if (IS_SET(obj->quest,QUEST_FLAMEBLADE)) { send_to_char("This item has already been through the Ritual!\n\r",ch); return; } if (obj->item_type == ITEM_WEAPON) { obj->level = 50; SET_BIT(obj->quest,QUEST_FLAMEBLADE); obj->condition = 100; obj->toughness = 100; obj->resistance = 1; act(" $p is surrounded with Black Flames.", ch, obj, NULL, TO_CHAR); act("$n stares into $p and it becomes surrounded with black flames.", ch, obj, NULL, TO_ROOM); if(!IS_SET(obj->weapflags, WEAPON_FLAMING)) SET_BIT(obj->weapflags, WEAPON_FLAMING); ch->practice -= 1500; WAIT_STATE(ch, 8); return; } }