Consider (was Roleplaying idea)

From: ;P (siv@CYBERENET.NET)
Date: 04/07/98


> to a dragon which would flambe you before you got within sword's reach.
> So much I find that people rely on the consider command to tell them if
> they can kill the mob.  Gee, if life only had a consider command.

i think its pretty safe to say that life DOES have a consider command of
sorts..you can look around at people and decide whether or not you could
beat them..you could judge by the size of a person, how muscled they are,
what kind of weapon (if any) they have, how they move, demeaner, the look
in their eyes, etc..

the problem with the mud consider is that you can't operate the same
way..you can't rely on mob descriptions because they always say how big
and bad the mob is..you can't observe how they behave since most mobiles
just stand around waiting to be killed..

a way to make considering mobs more..well..realistic (and i think it would
add to rp as well, for those who constantly point out the seperation from
rp and realism)..is to add in a scripting system (mob progs or dg scripts)
to give more personality to mobs..add in a parsing function (string_parser
by brazil from the ftp site) and have the parts of mobile descriptions
that say whether or not you should run in fear be based on the level of
the character viewing the description..so a young person might see the
merchant guard as all powerful, but after a few years of adventure, he
would return to wonder why he ever thought of the guard as more than just
a dimwitted bully who could only beat up on bums and untrained children..

this would take a lot of work and dedication to following some set of
standards, but it would allow you to remove the consider command without
making it impossible for your players to determine whether or not they
could win a fight..

and..in case anyone is interested..here's my consider command (which
you'll notice is exactly the opposite of what i said here :)

siv

also doesn't include functions to find damage (couldn't fit under the 200
line limit)

ACMD(do_consider)
{
  struct obj_data *ch_weap1, *ch_weap2, *v_weap1, *v_weap2;
  struct char_data *victim;
  int d_lev, d_hp, d_dam, ch_dam, vict_dam, dam_index, hp_index, lev_index;
  int composit;

  char *cons_mesg[][4] = {
  {  "You are much higher level than $M.",
     "You have many more hit points than $M.",
     "You have a much higher average damage per attack than $M.",
     "You should take $M with nearly no trouble at all." },
  {  "You are higher level than $M.",
     "You have more hit points than $M.",
     "You have a higher average damage per attack than $M.",
     "You should be able to take $M with very little trouble." },
  {  "You are slightly higher level than $M.",
     "You have slightly more hit points than $M.",
     "You have a slightly higher average damage per attack than $M.",
     "You should be able to take $M." },
  {  "You are about the same level as $M.",
     "You have about the same amount of hit points as $M.",
     "You have about the same average damage per attack as $M.",
     "It would be a very close fight." },
  {  "You are slightly lower level than $M.",
     "You have slightly fewer hit points than $M.",
     "You have slightly lower average damage per attack than $M.",
     "$E would probably be able to take you." },
  {  "You are lower level than $M.",
     "You have fewer hit points than $M.",
     "You have a lower average damage per attack than $M.",
     "$E would probably take you with very little trouble." },
  {  "You are much lower level than $M.",
     "You have much fewer hit points than $M.",
     "You have much lower average damage per attack than $M.",
     "$E would take you with no trouble at all." }
};

  one_argument(argument, buf);

  if (!(victim = get_char_room_vis(ch, buf))) {
    send_to_char("Consider killing who?\r\n", ch);
    return;
  }
  if (victim == ch) {
    send_to_char("Easy!  Very easy indeed!\r\n", ch);
    return;
  }

  ch_weap1 = GET_EQ(ch, WEAR_WIELD_1);
  ch_weap2 = GET_EQ(ch, WEAR_WIELD_2);
  v_weap1 = GET_EQ(victim, WEAR_WIELD_1);
  v_weap2 = GET_EQ(victim, WEAR_WIELD_2);

  d_lev = (int)(GET_LEVEL(victim)/GET_LEVEL(ch)*100);
  d_hp = (int)(GET_MAX_HIT(victim)/GET_MAX_HIT(ch)*100);
  if (is_ranger(ch))
    ch_dam = ranger_dam(ch);
  else if (ch_weap1 && ch_weap2)
    ch_dam = dual_wield_dam(ch);
  else if (ch_weap1 || ch_weap2)
    ch_dam = find_weapon_dam(ch);
  else if (IS_NPC(ch))
    ch_dam = (int)(((ch->mob_specials.damsizedice+1)/2)*ch->mob_specials.damnodice);
  else if (GET_CLASS(ch) == CLASS_MONK)
    ch_dam = 3;
  else
    ch_dam = 1;
  ch_dam += GET_DAMROLL(ch);

  if (is_ranger(victim))
    vict_dam = ranger_dam(victim);
  else if (v_weap1 && v_weap2)
    vict_dam = dual_wield_dam(victim);
  else if (v_weap1 || v_weap2)
    vict_dam = find_weapon_dam(victim);
  else if (IS_NPC(victim))
    vict_dam = (int)(((victim->mob_specials.damsizedice+1)/2)*victim->mob_specials.damnodice);
  else if (GET_CLASS(victim) == CLASS_MONK)
    vict_dam = 3;
  else
    vict_dam = 1;
  vict_dam += GET_DAMROLL(victim);

  d_dam = (int)(vict_dam/ch_dam*100);

  if (d_lev <= 65)
    lev_index = 0;
  else if (d_lev <= 80)
    lev_index = 1;
  else if (d_lev <= 95)
    lev_index = 2;
  else if (d_lev <= 105)
    lev_index = 3;
  else if (d_lev <= 120)
    lev_index = 4;
  else if (d_lev <= 135)
    lev_index = 5;
  else
    lev_index = 6;

  if (d_hp <= 65)
    hp_index = 0;
  else if (d_hp <= 80)
    hp_index = 1;
  else if (d_hp <= 95)
    hp_index = 2;
  else if (d_hp <= 105)
    hp_index = 3;
  else if (d_hp <= 120)
    hp_index = 4;
  else if (d_hp <= 135)
    hp_index = 5;
  else
    hp_index = 6;

  if (d_dam <= 65)
    dam_index = 0;
  else if (d_dam <= 80)
    dam_index = 1;
  else if (d_dam <= 95)
    dam_index = 2;
  else if (d_dam <= 105)
    dam_index = 3;
  else if (d_dam <= 120)
    dam_index = 4;
  else if (d_dam <= 135)
    dam_index = 5;
  else
    dam_index = 6;

  composit = (int) ((2*dam_index+2*hp_index+lev_index)/5);

act(cons_mesg[lev_index][0], FALSE, ch, 0, victim, TO_CHAR);
act(cons_mesg[hp_index][1], FALSE, ch, 0, victim, TO_CHAR);
act(cons_mesg[dam_index][2], FALSE, ch, 0, victim, TO_CHAR);
act(cons_mesg[composit][3], FALSE, ch, 0, victim, TO_CHAR);
}


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST