The Mud Connector

Author Topic: Godwarz MUD, trying to fix Class details  (Read 500 times)

mazerin

  • New to TMC
  • *
  • Posts: 9
    • View Profile
Godwarz MUD, trying to fix Class details
« on: September 19, 2017, 9:22 PM »
Hi All,

really new to this, and i'm working on The Beast Within Mud.  keeping to its old cold, but updating the classes to make them more informative and friendly. 

i spent 3 days on Vampire class and i found that the help file and information in the class doesn't match up. 

when i type powers it doesn't actually show that you can use "discipline, research, and train" to get your powers up.  i'm trying to update the code to show this when i type powers but i cant figure out which file has this data. 

anyone out there familiar with this and can point me in the right direction?

Mazerin

mazerin

  • New to TMC
  • *
  • Posts: 9
    • View Profile
Re: Godwarz MUD, trying to fix Class details
« Reply #1 on: September 19, 2017, 9:34 PM »
this is what happens when i type help vampire in the mud ..



================================================================================
- V A M P I R E - - - - - - - - - - - - - - - - - - - - - - - - -
 
Type:      Undead
Size:      Humanoid
Habitat:   Wherever blood is in abundant supply
Nature:    Evil
Abilities: Blood Rage
 
Powers:
Innate:     Intro, Embrace, Diablerise, Diablerize, Vamparmor,
               Vamptalk, Fangs, Inconnu, Regenerate
Obtenebration: Lamprey, Grab, Shadowgaze, Shroud, Shadowstep,
               Shadowplane, Shadowsight
Presence:      Mindblast, Entrance, Summon, Far, Awe, Majesty
Quietus:       Spit, Assassinate, Bloodagony, Sharpen, Vsilence,
               Flash, infirmity
Thaumaturgy:   Spew, Gourge, Taste, Cauldron, Tide, Theft
Auspex:        Truesight, Readaura, Scry, Astralwalk, Unveil
Dominate:      Mesmerise, Command, Baal, Forget, Acid, Possession
Obfuscate:     Vanish, Mask, Shield, Conceal
Protean:       Flamehands, Change, Claws, Earthmeld, Healing,
               Nightsight
Serpentis:     Tongue, Tendrils, Coil, Darkheart, Poison, Serpent
Vicissitude:   Fleshcraft, Dragonform, Bonemod, Plasma, Zuloform
Daimoinon:     Servant, Guardian, Fear, Portal, Vtwist, Bloodwall
Animalism:     Pigeon, Share, Frenzy, Beckon, Serenity
Chimerstry:    Mirror, Formillusion, Controlclone
Thanatosis:    Hagswrinkles, Putrefaction, Withering, Drainlife
Necromancy:    Preserve, Spiritgate, Spiritguard, Zombie,
               Bloodwater
Melpominee:    Scream
Obeah:         Purify, Beast control, Movement of pure magic
 
Extra Helpfiles: N/A
 
Note:
When classed, type powers to list the command keywords for each
power (if a power does not have a keyword then the power will be
automatic)
================================================================================

mazerin

  • New to TMC
  • *
  • Posts: 9
    • View Profile
Re: Godwarz MUD, trying to fix Class details
« Reply #2 on: September 19, 2017, 9:37 PM »
================================================================================
           obeah :
          Innate : intro embrace diablerise diablerize
                   vamparmor vamptalk fangs inconnu
                   regenerate
================================================================================

Tijer

  • TMC Veteran
  • *****
  • Posts: 584
    • View Profile
Re: Godwarz MUD, trying to fix Class details
« Reply #3 on: September 20, 2017, 8:15 AM »
You need to have the class set in the interp table in interp.c to have it show on the powers command (search for a command that has the class in it for details on how to do), if more than 1 class shares the same command i believe you may need to have more than 1 class define in there...

mazerin

  • New to TMC
  • *
  • Posts: 9
    • View Profile
Re: Godwarz MUD, trying to fix Class details
« Reply #4 on: September 21, 2017, 12:39 AM »
Thanks! ... i got some help from a few guys and they resolved exactly as you suggested! ..

thanks for the great support!

mazerin

  • New to TMC
  • *
  • Posts: 9
    • View Profile
Re: Godwarz MUD, trying to fix Class details
« Reply #5 on: October 02, 2017, 10:49 PM »
Hi all,

i'm having another issue with a different class .. Dragons .. Dragon Breathe seems to be having an issue and i'm not sure but i think it has something to do with the code.  Code is below, and just so everyone knows .. dragon spells goes to 1000, i set my dragons age as follows and this is the amount of damage it sends out per age test

Dragon Age 1          170
Dragon Age 10         170
Dragon Age 25         333
Dragon age 49          666
Dragon Age 50          1166
Dragon Age 200         1166
Dragon Age 400         1166

Anyone able to help?

void do_breathe(CHAR_DATA *ch, char *argument)
{
   CHAR_DATA *victim;
   char buf[MAX_STRING_LENGTH];
   char buf2[MAX_STRING_LENGTH];
   char arg[MAX_INPUT_LENGTH];
   char arg2[MAX_INPUT_LENGTH];
   short red = 0;
   short purple = 0;
   short green = 0;
   short blue = 0;
   short yellow = 0;
   short dam = 1;

   int sn = 0;

   bool fire = FALSE;
   bool ice = FALSE;
   bool acid = FALSE;
   bool lightning = FALSE;

   buf2[0] = '\0';
   buf[0] = '\0';

   argument = one_argument(argument, arg);
   argument = one_argument(argument, arg2);


   if (IS_NPC(ch) || !IS_CLASS(ch, CLASS_DRAGON))
      return;

   if (ch->move < 10000)
   {
      stc("You need 10000 move to use your breath.\n\r", ch);
      return;
   }

   if (arg2[0] == '\0')
   {
      stc("Syntax: breathe <victim> <fire/lightning/acid/ice/all>\n\r", ch);
      return;
   }

   if ((victim = get_char_room(ch, arg)) == NULL)
   {
      stc("They arent here to breathe on.\n\r", ch);
      return;
   }

   if (victim == ch)
   {
      stc("Not on yourself.\n\r", ch);
      return;
   }

   if (is_safe(ch, victim))
      return;

   //calculate dragon breathe damage - spells to 1000
   red = ch->spl[RED_MAGIC];
   blue = ch->spl[BLUE_MAGIC];
   green = ch->spl[GREEN_MAGIC];
   yellow = ch->spl[YELLOW_MAGIC];
   purple = ch->spl[PURPLE_MAGIC];

   dam = (red+blue+green+purple+yellow)/10;
   //50 dam max for spells
   if (dam < 1) dam = 1;

   else if (ch->p_age < 20)
      dam = dam+10;

   else if (ch->p_age > 10 && ch->p_age < 50)
      dam *= ch->p_age/10;
   else
      dam *= 7;
   //multiplied by half age = 100 dam = 5000
 
//   if (!IS_NPC(victim))
//   {
      if (!str_cmp(arg2, "fire"))
      {
         if ((IS_CLASS(victim, CLASS_VAMPIRE) || IS_CLASS(victim, CLASS_UNDEAD_KNIGHT)))
            dam *= 6; //4500 damage/1.5rnd @ 3, now 9000
         else
            dam /= 3;
         sprintf(buf2, "#Rf#ri#Rr#re#n");
         fire = TRUE;
      }

      else if (!str_cmp(arg2, "lightning"))
      {
         if (IS_CLASS(victim, CLASS_GIANT) || IS_CLASS(victim, CLASS_GRENDEL))
            dam *= 5.333; // 3000 damage/1.5 rnd @ 2, now 8000
         else
            dam /= 2;
         sprintf(buf2, "#cl#li#cg#lh#ct#ln#ci#ln#cg#n");
         lightning = TRUE;
      }

      else if (!str_cmp(arg2, "acid"))
      {
         if (IS_CLASS(victim, CLASS_WARLORD)
         || IS_CLASS(victim, CLASS_INVESTIGATOR)
         || IS_CLASS(victim, CLASS_MAGE)
         || IS_CLASS(victim, CLASS_NINJA)
         || IS_CLASS(victim, CLASS_HIGHLANDER)
         || IS_CLASS(victim, CLASS_BANDIT)
         || IS_CLASS(victim, CLASS_HADENMAN))
            dam *= 5.8; //3750 damage/1.5 rnd, now 8700
         else
            dam /= 2.5;
         sprintf(buf2, "#Ga#gc#Gi#gd#n");
         acid = TRUE;
      }

      else if (!str_cmp(arg2, "ice"))
      {
         if (IS_CLASS(victim, CLASS_DEMON)
         || IS_CLASS(victim, CLASS_TANARRI)
         || IS_CLASS(victim, CLASS_POWER_LICH)
         || IS_CLASS(victim, CLASS_META)
         || IS_CLASS(victim, CLASS_CYCLOPS))
            dam *= 6.5; // 5250 damage/1.5 rnd, now 9750
         else
            dam /= 3.5;
         sprintf(buf2, "#Li#Cc#Le#n");
         ice = TRUE;
      }
   
      else if (!str_cmp(arg2, "all"))
      {
         if (!is_dragon_age(ch, 50))
         {
            stc("You must be 50 dragon-years old to use all your breath attacks at once.\n\r", ch);
            return;
         }

         if (IS_CLASS(victim, CLASS_ANGEL))
            dam *= 8; // 12000 damage/1.5rnd
         else
            dam /= 3;
         sprintf(buf2, "#Rf#ri#Rr#re#n, #Li#Cc#Le#n, #Ga#gc#Gi#gd#n and #cl#li#cg#lh#ct#ln#ci#ln#cg#n");
   
         if (number_range(1, 2) == 1)
            fire = TRUE;
         if (number_range(1, 2) == 1)
            acid = TRUE;
         if (number_range(1, 2) == 1)
            lightning = TRUE;
         if (number_range(1, 2) == 1)
            ice = TRUE;
      }
      else
      {
         stc("Hmmm, I dont think you can breath that.\n\r", ch);
         return;
      }
//   }

   stc("You inhale a huge lungful of oxygen.\n\r", ch);
   sprintf(buf, "You exhale and breathe %s onto $N!\n\r", buf2);
   act(buf, ch, NULL, victim, TO_CHAR);
   sprintf(buf, "$n exhales and breathes %s onto $N!\n\r", buf2);
   act(buf, ch, NULL, victim, TO_ROOM);
   sprintf(buf, "$n exhales and breathes %s onto you!\n\r", buf2);
   act(buf, ch, NULL, victim, TO_VICT);
   if (dam < 1)
      dam = 1;
   if (dam > 25000)
      dam = 25000;
   sprintf(buf, "Your breath of %s strikes $N with Dragonlike Wrath! #7[#G%d#7]#n\n\r", buf2, dam);
   act(buf, ch, NULL, victim, TO_CHAR);
   sprintf(buf, "$n the Dragons breath of %s strikes you with Dragonlike Wrath! #7[#G%d#7]#n\n\r", buf2, dam);
   act(buf, ch, NULL, victim, TO_VICT);
   hurt_person(ch, victim, dam);
   set_fighting(ch, victim);

//   if (!IS_NPC(victim))
//   {
      if (fire)
      {
         if (!IS_SET(ch->in_room->room_flags, ROOM_FLAMING)
         && number_range(1, 3) == 1)
         {
            SET_BIT(ch->in_room->room_flags, ROOM_FLAMING);
            stc("The room bursts into flames!\n\r", ch);
            act("The room bursts into flames!", ch, NULL, NULL, TO_ROOM);
         }
         if (!IS_AFFECTED(victim, AFF_FLAMING)
         && number_range(1, 3) == 1)
         {
            SET_BIT(victim->affected_by, AFF_FLAMING);
            stc("They burst into flames!\n\r", ch);
            stc("You burst into flames!\n\r", victim);
            act("$N burts into flames!", ch, NULL, victim, TO_ROOM);
         }
         if ((sn = skill_lookup("imp fireball")) > 0)
            (*skill_table[sn].spell_fun)(sn, dam/10, ch, victim);
      }

      if (ice)
      {
         stc("For a split second you coat them in #Li#Cc#Le#n!\n\r", ch);
         stc("For a split second you are coated in #Li#Cc#Le#n!\n\r", victim);
         act("For a split second $N is coated in #Li#Cc#Le#n!", ch, NULL, victim, TO_ROOM);
         if ((sn = skill_lookup("chill touch")) > 0)
            (*skill_table[sn].spell_fun)(sn, dam/10, ch, victim);
      }

      if (lightning)
      {
         stc("You strike them with a bolt of lightning!\n\r", ch);
         stc("You are struck by a bolt of lighning!\n\r", victim);
         act("$N is struck by a bolt of lightning!", ch, NULL, victim, TO_ROOM);
         if ((sn = skill_lookup("lightning bolt")) > 0)
            (*skill_table[sn].spell_fun)(sn, dam/10, ch, victim);
         if ((sn = skill_lookup("curse")) > 0)
            (*skill_table[sn].spell_fun)(sn, ch->spl[YELLOW_MAGIC], ch, victim);
      }   

      if (acid)
      {
         stc("You blast them with your acid breath!\n\r", ch);
         stc("You are blasted by acid breath!\n\r", victim);
         act("$N is blasted by acid breath!", ch, NULL, victim, TO_ROOM);
         if ((sn = skill_lookup("acid blast")) > 0)
            (*skill_table[sn].spell_fun)(sn, dam/10, ch, victim);
         if ((sn = skill_lookup("chorosive aura")) > 0)
            (*skill_table[sn].spell_fun)(sn, ch->spl[GREEN_MAGIC], ch, victim);
      }
//   }

   WAIT_STATE(ch, 16);
   ch->move -= 10000;
   return;
}