> 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