ver .90 autoset - sets values on a mob based on its level autoeasy - as above, but as an easy mob for that level autohard - as above, but as a hard mob for that level. these functions are usefull olc addins... Note: i appologize for how ugly sections of this code are... These are freeware - BUT YOU MUST email franzj@fxlab.net if you use these, AND you must give credit (to Blade of "- E -") in a helpfile that mortals on your mud can read and find easily. the folowing functions go in olc_act.c, make sure you add them to your medit command tables in olc.c and declare them in olc.h... Make Sure the values in these functions Fit your mud. I based the values for AC, hitdice, etc, on slightly modified values from the original charts... adjust at your liesure. please email me if you use this: franzj@email.uc.edu Note: for very low level mobs, make sure you use autoeasy - a level 1 autoset mob will be tough compared to a norm (stock) level 1 mob otherwise... >>>>>>> MEDIT( medit_autoset ) { MOB_INDEX_DATA *pMob; char temp[500]; int dice, size, bonus; int ac_n, ac_x; EDIT_MOB( ch, pMob ); if (pMob->level < 1) { send_to_char("Set a level on the mob first!!!\n\r", ch); return FALSE; } /* adjust these next 2 lines to affect ACs */ ac_n = 95 - (pMob->level * 6.67) - ((pMob->level/10)^2); ac_x = 95 - (pMob->level * 4.57) - ((pMob->level/10)^2); pMob->ac[AC_PIERCE] = ac_n; pMob->ac[AC_BASH] = ac_n; pMob->ac[AC_SLASH] = ac_n; pMob->ac[AC_EXOTIC] = ac_x; send_to_char("AC Values set.\n\r", ch); dice = pMob->level; size = 10; bonus = 85; sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_manadice(ch, temp); dice = pMob->level/3; if (dice < 1) dice = 1; size = (.87 + pMob->level/dice); if (size < 2) size = 2; bonus = (5.5 + pMob->level/2); sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_damdice(ch, temp); bonus = (pMob->level/53 + 1) * ((pMob->level * 10) + (pMob->level/10)) +1; size = pMob->level/3; if (size < 2) size = 2; dice = (pMob->level + .5) * 2 + .2; if (dice < 1) dice = 1; sprintf(temp, "%dD%d + %d", dice, size, bonus); medit_hitdice(ch, temp); sprintf(temp, "%d", pMob->level); medit_hitroll(ch, temp); send_to_char(" Values set, check for accuracy.\n\r", ch); return TRUE; } MEDIT( medit_autohard ) { MOB_INDEX_DATA *pMob; char temp[500]; int dice, size, bonus; int ac_n, ac_x; EDIT_MOB( ch, pMob ); if (pMob->level < 1) { send_to_char("Set a level on the mob first!!!\n\r", ch); return FALSE; } ac_n = 88 - (pMob->level * 7.05) - ((pMob->level/10)^2); ac_x = 88 - (pMob->level * 5.02) - ((pMob->level/10)^2); // sprintf(temp, "%d %d %d %d", ac_n, ac_n, ac_n, ac_x); pMob->ac[AC_PIERCE] = ac_n; pMob->ac[AC_BASH] = ac_n; pMob->ac[AC_SLASH] = ac_n; pMob->ac[AC_EXOTIC] = ac_x; send_to_char("AC Values set.\n\r", ch); dice = pMob->level; size = 11; bonus = 95; sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_manadice(ch, temp); dice = pMob->level/3; if (dice < 1) dice = 1; dice++; size = (.87 + pMob->level/dice); if (size < 2) size = 2; bonus = (7.5 + pMob->level/1.5); sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_damdice(ch, temp); bonus = (pMob->level/53 + 1) * ((pMob->level * 10) + (pMob->level/10)) +1; size = pMob->level/3; if (size < 2) size = 2; size++; dice = (pMob->level + .6) * 2.05 + .5; if (dice < 1) dice = 1; sprintf(temp, "%dD%d + %d", dice, size, bonus); medit_hitdice(ch, temp); sprintf(temp, "%d", pMob->level); medit_hitroll(ch, temp); send_to_char("Hard values set, check for accuracy.\n\r", ch); return TRUE; } MEDIT( medit_autoeasy ) { MOB_INDEX_DATA *pMob; char temp[500]; int dice, size, bonus; int ac_n, ac_x; EDIT_MOB( ch, pMob ); if (pMob->level < 1) { send_to_char("Set a level on the mob first!!!\n\r", ch); return FALSE; } ac_n = 99 - (pMob->level * 6.37) - ((pMob->level/10)^2); ac_x = 99 - (pMob->level * 4.27) - ((pMob->level/10)^2); // sprintf(temp, "%d %d %d %d", ac_n, ac_n, ac_n, ac_x); pMob->ac[AC_PIERCE] = ac_n; pMob->ac[AC_BASH] = ac_n; pMob->ac[AC_SLASH] = ac_n; pMob->ac[AC_EXOTIC] = ac_x; send_to_char("AC Values set.\n\r", ch); dice = pMob->level; size = 9; bonus = 60; sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_manadice(ch, temp); dice = pMob->level/3 * .95; if (dice < 1) dice = 1; size = (.87 + pMob->level/dice) * .95; if (size < 2) size = 2; bonus = (2.5 + pMob->level/2.1); sprintf(temp, "%dd%d + %d", dice, size, bonus); medit_damdice(ch, temp); bonus = (pMob->level/59 + 1) * ((pMob->level * 9) + (pMob->level/11)) +1; size = pMob->level/3; if (size < 2) size = 2; dice = (pMob->level + .5) * 2 + .2; if (dice < 1) dice = 1; sprintf(temp, "%dD%d + %d", dice, size, bonus); medit_hitdice(ch, temp); sprintf(temp, "%d", pMob->level); medit_hitroll(ch, temp); send_to_char("Easy values set, check for accuracy.\n\r", ch); return TRUE; } <<<<<<<<