#include "config.h"
Include dependency graph for p.btechstats.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Functions | |
char * | silly_get_uptime_to_string (int i) |
void | list_charvaluestuff (dbref player, int flag) |
int | char_getvaluecode (char *name) |
int | char_rollsaving (void) |
int | char_rollunskilled (void) |
int | char_rollskilled (void) |
int | char_rolld6 (int num) |
int | char_getvalue (dbref player, char *name) |
void | char_setvalue (dbref player, char *name, int value) |
int | char_getskilltargetbycode (dbref player, int code, int modifier) |
int | char_getskilltarget (dbref player, char *name, int modifier) |
int | char_getxpbycode (dbref player, int code) |
int | char_gainxpbycode (dbref player, int code, int amount) |
int | char_gainxp (dbref player, char *skill, int amount) |
int | char_getskillsuccess (dbref player, char *name, int modifier, int loud) |
int | char_getskillmargsucc (dbref player, char *name, int modifier) |
int | char_getopposedskill (dbref first, char *skill1, dbref second, char *skill2) |
int | char_getattrsave (dbref player, char *name) |
int | char_getattrsavesucc (dbref player, char *name) |
void | zap_unneccessary_stats (void) |
void | init_btechstats (void) |
void | do_charstatus (dbref player, dbref cause, int key, char *arg1) |
void | do_charclear (dbref player, dbref cause, int key, char *arg1) |
dbref | char_lookupplayer (dbref player, dbref cause, int key, char *arg1) |
void | initialize_pc (dbref player, MECH *mech) |
void | fix_pilotdamage (MECH *mech, dbref player) |
int | mw_ic_bth (MECH *mech) |
int | handlemwconc (MECH *mech, int initial) |
void | headhitmwdamage (MECH *mech, MECH *attacker, int dam) |
void | mwlethaldam (MECH *mech, MECH *attacker, int dam) |
void | lower_xp (dbref player, int promillage) |
void | AccumulateTechXP (dbref pilot, MECH *mech, int reason) |
void | AccumulateTechWeaponsXP (dbref pilot, MECH *mech, int reason) |
void | AccumulateCommXP (dbref pilot, MECH *mech) |
void | AccumulatePilXP (dbref pilot, MECH *mech, int reason, int addanyway) |
void | AccumulateSpotXP (dbref pilot, MECH *attacker, MECH *wounded) |
int | MadePerceptionRoll (MECH *mech, int modifier) |
void | AccumulateArtyXP (dbref pilot, MECH *attacker, MECH *wounded) |
void | AccumulateComputerXP (dbref pilot, MECH *mech, int reason) |
int | HasBoolAdvantage (dbref player, const char *name) |
void | AccumulateGunXP (dbref pilot, MECH *attacker, MECH *wounded, int numOccurences, float multiplier, int weapindx, int bth) |
void | AccumulateGunXPold (dbref pilot, MECH *attacker, MECH *wounded, int numOccurences, float multiplier, int weapindx, int bth) |
void | fun_btgetcharvalue (char *buff, char **bufc, dbref player, dbref cause, char *fargs[], int nfargs, char *cargs[], int ncargs) |
void | fun_btsetcharvalue (char *buff, char **bufc, dbref player, dbref cause, char *fargs[], int nfargs, char *cargs[], int ncargs) |
void | fun_btcharlist (char *buff, char **bufc, dbref player, dbref cause, char *fargs[], int nfargs, char *cargs[], int ncargs) |
void | debug_xptop (dbref player, void *data, char *buffer) |
void | debug_setxplevel (dbref player, void *data, char *buffer) |
int | btthreshold_func (char *skillname) |
chargen_struct * | retrieve_chargen_struct (dbref player) |
int | lowest_bit (int num) |
int | recursive_add (int lev) |
int | can_proceed (dbref player, struct chargen_struct *st) |
void | cm_a_add (dbref player, void *data, char *buffer) |
void | cm_a_minus (dbref player, void *data, char *buffer) |
void | cm_a_toggle (dbref player, void *data, char *buffer) |
void | cm_a_set (dbref player, void *data, char *buffer) |
void | cm_b_add (dbref player, void *data, char *buffer) |
void | cm_b_minus (dbref player, void *data, char *buffer) |
void | cm_b_toggle (dbref player, void *data, char *buffer) |
void | cm_b_set (dbref player, void *data, char *buffer) |
void | cm_c_add (dbref player, void *data, char *buffer) |
void | cm_c_minus (dbref player, void *data, char *buffer) |
void | cm_c_toggle (dbref player, void *data, char *buffer) |
void | cm_c_set (dbref player, void *data, char *buffer) |
void | cm_d_add (dbref player, void *data, char *buffer) |
void | cm_d_minus (dbref player, void *data, char *buffer) |
void | cm_d_toggle (dbref player, void *data, char *buffer) |
void | cm_d_set (dbref player, void *data, char *buffer) |
void | cm_e_add (dbref player, void *data, char *buffer) |
void | cm_e_minus (dbref player, void *data, char *buffer) |
void | cm_e_toggle (dbref player, void *data, char *buffer) |
void | cm_e_set (dbref player, void *data, char *buffer) |
void | cm_f_add (dbref player, void *data, char *buffer) |
void | cm_f_minus (dbref player, void *data, char *buffer) |
void | cm_f_toggle (dbref player, void *data, char *buffer) |
void | cm_f_set (dbref player, void *data, char *buffer) |
void | cm_g_add (dbref player, void *data, char *buffer) |
void | cm_g_minus (dbref player, void *data, char *buffer) |
void | cm_g_toggle (dbref player, void *data, char *buffer) |
void | cm_g_set (dbref player, void *data, char *buffer) |
void | cm_h_add (dbref player, void *data, char *buffer) |
void | cm_h_minus (dbref player, void *data, char *buffer) |
void | cm_h_toggle (dbref player, void *data, char *buffer) |
void | cm_h_set (dbref player, void *data, char *buffer) |
void | cm_i_add (dbref player, void *data, char *buffer) |
void | cm_i_minus (dbref player, void *data, char *buffer) |
void | cm_i_toggle (dbref player, void *data, char *buffer) |
void | cm_i_set (dbref player, void *data, char *buffer) |
void | cm_j_add (dbref player, void *data, char *buffer) |
void | cm_j_minus (dbref player, void *data, char *buffer) |
void | cm_j_toggle (dbref player, void *data, char *buffer) |
void | cm_j_set (dbref player, void *data, char *buffer) |
void | cm_k_add (dbref player, void *data, char *buffer) |
void | cm_k_minus (dbref player, void *data, char *buffer) |
void | cm_k_toggle (dbref player, void *data, char *buffer) |
void | cm_k_set (dbref player, void *data, char *buffer) |
void | cm_l_add (dbref player, void *data, char *buffer) |
void | cm_l_minus (dbref player, void *data, char *buffer) |
void | cm_l_toggle (dbref player, void *data, char *buffer) |
void | cm_l_set (dbref player, void *data, char *buffer) |
void | cm_m_add (dbref player, void *data, char *buffer) |
void | cm_m_minus (dbref player, void *data, char *buffer) |
void | cm_m_toggle (dbref player, void *data, char *buffer) |
void | cm_m_set (dbref player, void *data, char *buffer) |
void | cm_n_add (dbref player, void *data, char *buffer) |
void | cm_n_minus (dbref player, void *data, char *buffer) |
void | cm_n_toggle (dbref player, void *data, char *buffer) |
void | cm_n_set (dbref player, void *data, char *buffer) |
void | cm_o_add (dbref player, void *data, char *buffer) |
void | cm_o_minus (dbref player, void *data, char *buffer) |
void | cm_o_toggle (dbref player, void *data, char *buffer) |
void | cm_o_set (dbref player, void *data, char *buffer) |
void | cm_p_add (dbref player, void *data, char *buffer) |
void | cm_p_minus (dbref player, void *data, char *buffer) |
void | cm_p_toggle (dbref player, void *data, char *buffer) |
void | cm_p_set (dbref player, void *data, char *buffer) |
void | cm_q_add (dbref player, void *data, char *buffer) |
void | cm_q_minus (dbref player, void *data, char *buffer) |
void | cm_q_toggle (dbref player, void *data, char *buffer) |
void | cm_q_set (dbref player, void *data, char *buffer) |
void | cm_r_add (dbref player, void *data, char *buffer) |
void | cm_r_minus (dbref player, void *data, char *buffer) |
void | cm_r_toggle (dbref player, void *data, char *buffer) |
void | cm_r_set (dbref player, void *data, char *buffer) |
void | cm_s_add (dbref player, void *data, char *buffer) |
void | cm_s_minus (dbref player, void *data, char *buffer) |
void | cm_s_toggle (dbref player, void *data, char *buffer) |
void | cm_s_set (dbref player, void *data, char *buffer) |
void | cm_t_add (dbref player, void *data, char *buffer) |
void | cm_t_minus (dbref player, void *data, char *buffer) |
void | cm_t_toggle (dbref player, void *data, char *buffer) |
void | cm_t_set (dbref player, void *data, char *buffer) |
void | cm_u_add (dbref player, void *data, char *buffer) |
void | cm_u_minus (dbref player, void *data, char *buffer) |
void | cm_u_toggle (dbref player, void *data, char *buffer) |
void | cm_u_set (dbref player, void *data, char *buffer) |
void | cm_v_add (dbref player, void *data, char *buffer) |
void | cm_v_minus (dbref player, void *data, char *buffer) |
void | cm_v_toggle (dbref player, void *data, char *buffer) |
void | cm_v_set (dbref player, void *data, char *buffer) |
void | cm_w_add (dbref player, void *data, char *buffer) |
void | cm_w_minus (dbref player, void *data, char *buffer) |
void | cm_w_toggle (dbref player, void *data, char *buffer) |
void | cm_w_set (dbref player, void *data, char *buffer) |
void | cm_x_add (dbref player, void *data, char *buffer) |
void | cm_x_minus (dbref player, void *data, char *buffer) |
void | cm_x_toggle (dbref player, void *data, char *buffer) |
void | cm_x_set (dbref player, void *data, char *buffer) |
void | cm_y_add (dbref player, void *data, char *buffer) |
void | cm_y_minus (dbref player, void *data, char *buffer) |
void | cm_y_toggle (dbref player, void *data, char *buffer) |
void | cm_y_set (dbref player, void *data, char *buffer) |
void | cm_z_add (dbref player, void *data, char *buffer) |
void | cm_z_minus (dbref player, void *data, char *buffer) |
void | cm_z_toggle (dbref player, void *data, char *buffer) |
void | cm_z_set (dbref player, void *data, char *buffer) |
int | can_advance_state (struct chargen_struct *st) |
int | can_go_back_state (struct chargen_struct *st) |
void | recalculate_skillpoints (struct chargen_struct *st) |
void | go_back_state (dbref player, struct chargen_struct *st) |
void | chargen_look (dbref player, void *data, char *buffer) |
void | chargen_begin (dbref player, void *data, char *buffer) |
void | chargen_apply (dbref player, void *data, char *buffer) |
void | chargen_done (dbref player, void *data, char *buffer) |
void | chargen_next (dbref player, void *data, char *buffer) |
void | chargen_prev (dbref player, void *data, char *buffer) |
void | chargen_reset (dbref player, void *data, char *buffer) |
void | chargen_help (dbref player, void *data, char *buffer) |
Definition at line 1219 of file btechstats.c.
References char_gainxp(), Destroyed, GunPilot, In_Character, MechTeam, MECH::mynum, Name(), RGotGPilot, SendAttackXP, and tprintf().
Referenced by FireSpot().
01220 { 01221 int xp = 1; 01222 01223 /* If not in character ie: like in simulator - no xp */ 01224 if(!In_Character(attacker->mynum)) 01225 return; 01226 01227 if(!RGotGPilot(attacker)) 01228 return; 01229 01230 if(GunPilot(attacker) != pilot) 01231 return; 01232 01233 /* No xp for shooting yourself */ 01234 if(attacker == wounded) 01235 return; 01236 01237 /* No xp for shooting destroyed units */ 01238 if(Destroyed(wounded)) 01239 return; 01240 01241 /* No xp if both on same team */ 01242 if(MechTeam(wounded) == MechTeam(attacker)) 01243 return; 01244 01245 /* If target not in character ie: in simulator - no xp */ 01246 if(!In_Character(wounded->mynum)) 01247 return; 01248 01249 /* Switching to Exile method of tracking xp, where we split 01250 * Attacking and Piloting xp into two different channels 01251 */ 01252 if(char_gainxp(pilot, "Gunnery-Artillery", xp)) 01253 SendAttackXP(tprintf("%s gained %d artillery XP", Name(pilot), xp)); 01254 }
Definition at line 1126 of file btechstats.c.
References char_gainxp(), Connected, In_Character, MECH::mynum, Name(), RGotPilot, SendXP, and tprintf().
Referenced by sendchannelstuff().
01127 { 01128 int xp; 01129 01130 xp = 1; 01131 if(!RGotPilot(mech)) 01132 return; 01133 if(!In_Character(mech->mynum)) 01134 return; 01135 if(!Connected(pilot)) 01136 return; 01137 if(char_gainxp(pilot, "Comm-Conventional", xp)) 01138 SendXP(tprintf("%s gained %d %s XP (in #%d)", Name(pilot), xp, 01139 "Comm-Conventional", mech->mynum)); 01140 }
Definition at line 1256 of file btechstats.c.
References char_gainxp(), In_Character, isPlayer, MAX, MECH::mynum, Name(), SendXP, and tprintf().
Referenced by HandleOverheat().
01257 { 01258 int xp; 01259 01260 if(!mech) 01261 return; 01262 01263 if(mech && In_Character(mech->mynum) && isPlayer(pilot)) 01264 if(char_gainxp(pilot, "computer", MAX(1, reason))) 01265 SendXP(tprintf 01266 ("%s gained %d computer XP (mech #%d)", Name(pilot), 01267 reason, mech ? mech->mynum : -1)); 01268 }
void AccumulateGunXP | ( | dbref | pilot, | |
MECH * | attacker, | |||
MECH * | wounded, | |||
int | numOccurences, | |||
float | multiplier, | |||
int | weapindx, | |||
int | bth | |||
) |
Definition at line 1346 of file btechstats.c.
References AccumulateGunXPold(), confdata::btech_oldxpsystem, confdata::btech_xp_bthmod, confdata::btech_xp_modifier, CLASS_MW, Destroyed, FindGunnerySkillName(), GunPilot, In_Character, MBUF_SIZE, MechTeam, MechType, mudconf, MECH::mynum, NUM_SECTIONS, RGotGPilot, and SectIsDestroyed.
Referenced by DamageMech().
01348 { 01349 int omul, xp, my_BV, th_BV, my_speed, th_speed; 01350 float myPilotBVMod = 1.0, theirPilotBVMod = 1.0; 01351 float weapTypeMod; 01352 char *skname; 01353 char buf[MBUF_SIZE]; 01354 int damagemod; 01355 float vrtmod; 01356 int i; 01357 int j = NUM_SECTIONS; 01358 01359 weapTypeMod = 1; 01360 01361 if(mudconf.btech_oldxpsystem) { 01362 AccumulateGunXPold(pilot, attacker, wounded, damage, 01363 multiplier, weapindx, bth); 01364 return; 01365 } 01366 01367 /* No XP for zero'd mechas */ 01368 for(i = 0; i < NUM_SECTIONS; i++) 01369 j -= SectIsDestroyed(wounded, i); 01370 01371 if( j < 1) 01372 return; 01373 01374 /* Is attacker in character ie: not in simulator */ 01375 if(!In_Character(attacker->mynum)) 01376 return; 01377 01378 if(!RGotGPilot(attacker)) 01379 return; 01380 01381 if(GunPilot(attacker) != pilot) 01382 return; 01383 01384 /* No xp for shooting yourself */ 01385 if(attacker == wounded) 01386 return; 01387 01388 /* No xp for shooting destroyed mechs */ 01389 if(Destroyed(wounded)) 01390 return; 01391 01392 /* No xp for shooting a teammate */ 01393 if(MechTeam(wounded) == MechTeam(attacker)) 01394 return; 01395 01396 /* Is the target in character ie: in simulators */ 01397 if(!In_Character(wounded->mynum)) 01398 return; 01399 01400 /* No skill to match the weapon we're shooting with? */ 01401 if(!(skname = FindGunnerySkillName(attacker, weapindx))) 01402 return; 01403 01404 /* No xp for shooting mechwarriors if you not a mechwarrior */ 01405 if(MechType(wounded) == CLASS_MW && MechType(attacker) != CLASS_MW) 01406 return; 01407 01408 /* bth to high so no way to hit */ 01409 if(!(bth <= 12)) 01410 return; 01411 01412 multiplier = multiplier * mudconf.btech_xp_modifier; 01413 01414 if(mudconf.btech_xp_bthmod) { 01415 if(!(bth >= 3 && bth <= 12)) 01416 return; /* sure hits aren't interesting */ 01417 multiplier = 2 * multiplier * bth_modifier[bth - 3] / 36; 01418 } 01419 01420 omul = multiplier; 01421 01422 /* Need to do a BV mod between the mechs */ 01423 my_BV = MechBV(attacker); 01424 th_BV = MechBV(wounded); 01425 01426 if(mudconf.btech_xp_usePilotBVMod) { 01427 myPilotBVMod = getPilotBVMod(attacker, weapindx); 01428 theirPilotBVMod = getPilotBVMod(wounded, weapindx); 01429 01430 my_BV = my_BV * myPilotBVMod; 01431 th_BV = th_BV * theirPilotBVMod; 01432 01433 #ifdef XP_DEBUG 01434 SendDebug(tprintf 01435 ("Using skill modified battle value for mechs %d and %d " 01436 "with skill mods of %2.2f and %2.2f", attacker->mynum, 01437 wounded->mynum, myPilotBVMod, theirPilotBVMod)); 01438 #endif 01439 } 01440 01441 my_speed = NewMoveValue(attacker) + 1; 01442 th_speed = NewMoveValue(wounded) + 1; 01443 01444 if(MechWeapons[weapindx].type == TMISSILE) 01445 weapTypeMod = mudconf.btech_xp_missilemod; 01446 else if(MechWeapons[weapindx].type == TAMMO) 01447 weapTypeMod = mudconf.btech_xp_ammomod; 01448 01449 if(mudconf.btech_defaultweapdam > 1) 01450 damagemod = damage; 01451 else 01452 damagemod = 1; 01453 01454 if(mudconf.btech_xp_vrtmod) 01455 vrtmod = (MechWeapons[weapindx].vrt < 01456 30 ? sqrt((double) MechWeapons[weapindx].vrt / 30.0) : 1); 01457 else 01458 vrtmod = 1.0; 01459 01460 multiplier = 01461 (vrtmod * weapTypeMod * multiplier * sqrt((double) (th_BV + 01462 1) * th_speed * 01463 mudconf. 01464 btech_defaultweapbv / 01465 mudconf. 01466 btech_defaultweapdam)) / 01467 (sqrt 01468 ((double) (my_BV + 1) * my_speed * 01469 MechWeapons[weapindx].battlevalue / damagemod)); 01470 01471 if(mudconf.btech_perunit_xpmod) 01472 multiplier = multiplier * MechXPMod(attacker); /* Per unit XP Mod. Defaults to 1 anyways */ 01473 01474 xp = BOUNDED(1, (int) (multiplier * damage / 100), 10); 01475 01476 strcpy(buf, Name(wounded->mynum)); 01477 01478 // Emit XP gain over MechAttackXP 01479 if(char_gainxp(pilot, skname, (int) xp)) 01480 SendAttackXP(tprintf 01481 ("%s gained %d gun XP from feat of %f/100 difficulty " 01482 "(%d damage) against %s", Name(pilot), (int) xp, multiplier, 01483 damage, buf)); 01484 } // end AccumulateGunXP()
void AccumulateGunXPold | ( | dbref | pilot, | |
MECH * | attacker, | |||
MECH * | wounded, | |||
int | numOccurences, | |||
float | multiplier, | |||
int | weapindx, | |||
int | bth | |||
) |
Definition at line 1486 of file btechstats.c.
References BOUNDED(), confdata::btech_perunit_xpmod, char_gainxp(), CLASS_MW, Destroyed, FindGunnerySkillName(), GunPilot, In_Character, MBUF_SIZE, MechTeam, MechTons, MechType, MechXPMod, MoveValue, mudconf, MECH::mynum, Name(), Number, RGotGPilot, SendAttackXP, SendError, TonValue, and tprintf().
Referenced by AccumulateGunXP().
01489 { 01490 int omul, xp; 01491 char *skname; 01492 char buf[MBUF_SIZE]; 01493 01494 /* Is the attacker in character ie: in simulators */ 01495 if(!In_Character(attacker->mynum)) 01496 return; 01497 01498 if(!RGotGPilot(attacker)) 01499 return; 01500 01501 if(GunPilot(attacker) != pilot) 01502 return; 01503 01504 /* No xp for shooting yourself */ 01505 if(attacker == wounded) 01506 return; 01507 01508 /* No xp for shooting destroyed units */ 01509 if(Destroyed(wounded)) 01510 return; 01511 01512 /* No xp for shooting teammate */ 01513 if(MechTeam(wounded) == MechTeam(attacker)) 01514 return; 01515 01516 /* if target is in character ie: in simulators or something */ 01517 if(!In_Character(wounded->mynum)) 01518 return; 01519 01520 if(!(skname = FindGunnerySkillName(attacker, weapindx))) 01521 return; 01522 01523 /* No xp for shooting a mechwarrior unless you a mechwarrior */ 01524 if(MechType(wounded) == CLASS_MW && MechType(attacker) != CLASS_MW) 01525 return; 01526 01527 if(!(bth >= 3 && bth <= 12)) 01528 return; /* sure hits aren't interesting */ 01529 01530 omul = multiplier; 01531 if(MechTons(attacker) > 0) 01532 multiplier = multiplier * BOUNDED(50, 01533 100 * TonValue(wounded) / 01534 TonValue(attacker), 150); 01535 else { 01536 /* Bring this to the attention of the admins */ 01537 SendError(tprintf 01538 ("AccumulateGunXP: Weird tonnage for IC mech #%d (%s): %d", 01539 attacker->mynum, Name(attacker->mynum), 01540 (short) MechTons(attacker))); 01541 return; 01542 } 01543 01544 /* Hmm.. we have to figure the speed differences as well */ 01545 { 01546 int my_speed = MoveValue(attacker); 01547 int th_speed = MoveValue(wounded); 01548 01549 multiplier = multiplier * th_speed * th_speed / my_speed / my_speed; 01550 } 01551 01552 multiplier = multiplier * bth_modifier[bth - 3] / 36; 01553 multiplier = multiplier * 2; /* For average shot */ 01554 if(mudconf.btech_perunit_xpmod) 01555 multiplier = multiplier * MechXPMod(attacker); /* Per unit XP Modifier. Defaults to 1 */ 01556 01557 if(Number(1, 50) > (multiplier * numOccurences)) 01558 return; /* Nothing for truly twinky stuff, occasionally */ 01559 01560 xp = BOUNDED(1, (int) (multiplier * numOccurences) / 100, 50); /*Hardcoded limit */ 01561 strcpy(buf, Name(wounded->mynum)); 01562 /* Switching to Exile method of tracking xp, where we split 01563 * Attacking and Piloting xp into two different channels 01564 */ 01565 if(char_gainxp(pilot, skname, (int) xp)) 01566 SendAttackXP(tprintf("%s gained %d gun XP from feat of %f %% " 01567 "difficulty (%d occurences) against %s", 01568 Name(pilot), (int) xp, multiplier, numOccurences, 01569 buf)); 01570 }
Definition at line 1142 of file btechstats.c.
References char_gainxp(), FindPilotingSkillName(), In_Character, MAX, MechLX, MechLY, MechX, MechY, MECH::mynum, Name(), RGotPilot, SendPilotXP, and tprintf().
Referenced by DamageMech(), MadePilotSkillRoll_Advanced(), mech_ood_event(), and move_mech().
01143 { 01144 char *skname; 01145 int xp; 01146 01147 if(!In_Character(mech->mynum)) 01148 return; 01149 01150 if(!RGotPilot(mech)) 01151 return; 01152 01153 if(!(skname = FindPilotingSkillName(mech))) 01154 return; 01155 01156 if(!addanyway) { 01157 if(MechLX(mech) != MechX(mech) || MechLY(mech) != MechY(mech)) { 01158 MechLX(mech) = MechX(mech); 01159 MechLY(mech) = MechY(mech); 01160 } else 01161 return; 01162 } 01163 xp = MAX(1, reason); 01164 01165 /* Switching to Exile method of tracking xp, where we split 01166 * Attacking and Piloting xp into two different channels 01167 */ 01168 if(char_gainxp(pilot, skname, xp)) 01169 SendPilotXP(tprintf("%s gained %d %s XP", Name(pilot), xp, skname)); 01170 /* 01171 if (char_gainxp(pilot, skname, xp)) 01172 SendXP(tprintf("%s gained %d %s XP", Name(pilot), xp, skname)); 01173 */ 01174 }
Definition at line 1176 of file btechstats.c.
References char_gainxp(), Destroyed, In_Character, MechPilot, MechTeam, MECH::mynum, Name(), RGotPilot, SendXP, and tprintf().
Referenced by FireSpot().
01177 { 01178 int xp = 1; 01179 01180 if(!In_Character(attacker->mynum)) 01181 return; 01182 if(!RGotPilot(attacker)) 01183 return; 01184 if(MechPilot(attacker) != pilot) 01185 return; 01186 if(attacker == wounded) 01187 return; 01188 if(Destroyed(wounded)) 01189 return; 01190 if(MechTeam(wounded) == MechTeam(attacker)) 01191 return; 01192 if(!In_Character(wounded->mynum)) 01193 return; 01194 if(char_gainxp(pilot, "Gunnery-Spotting", xp)) 01195 SendXP(tprintf("%s gained spotting XP", Name(pilot))); 01196 }
Definition at line 1111 of file btechstats.c.
References char_gainxp(), MAX, MECH::mynum, Name(), SendTechXP, and tprintf().
Referenced by tech_weapon_roll().
01112 { 01113 char *skname; 01114 int xp; 01115 static char *techw = "technician-weapons"; 01116 01117 skname = techw; 01118 xp = MAX(1, reason); 01119 01120 // We emit all tech xp gains to MechTechXP channel. 01121 if(char_gainxp(pilot, skname, xp)) 01122 SendTechXP(tprintf("%s gained %d %s XP (changing mech #%d)", 01123 Name(pilot), xp, skname, mech ? mech->mynum : -1)); 01124 }
Definition at line 1091 of file btechstats.c.
References char_gainxp(), FindTechSkillName(), MAX, MECH::mynum, Name(), SendTechXP, and tprintf().
Referenced by tech_roll().
01092 { 01093 char *skname; 01094 int xp; 01095 static char *techw = "technician-weapons"; 01096 01097 if(mech) { 01098 if(!(skname = FindTechSkillName(mech))) 01099 return; 01100 } else 01101 skname = techw; 01102 01103 xp = MAX(1, reason); 01104 01105 // We emit all tech XP gains to the MechTechXP channel. 01106 if(char_gainxp(pilot, skname, xp)) 01107 SendTechXP(tprintf("%s gained %d %s XP (changing mech #%d)", 01108 Name(pilot), xp, skname, mech ? mech->mynum : -1)); 01109 }
int btthreshold_func | ( | char * | skillname | ) |
Definition at line 1997 of file btechstats.c.
Referenced by fun_btthreshold().
01998 { 01999 int code; 02000 02001 if(!skillname || !*skillname) 02002 return -1; 02003 code = char_getvaluecode(skillname); 02004 if(code < 0) 02005 return -1; 02006 if(char_values[code].type != CHAR_SKILL) 02007 return -1; 02008 return char_values[code].xpthreshold; 02009 }
int can_advance_state | ( | struct chargen_struct * | st | ) |
int can_go_back_state | ( | struct chargen_struct * | st | ) |
int can_proceed | ( | dbref | player, | |
struct chargen_struct * | st | |||
) |
int char_gainxp | ( | dbref | player, | |
char * | skill, | |||
int | amount | |||
) |
Definition at line 403 of file btechstats.c.
References char_gainxpbycode(), and char_getvaluecode().
Referenced by AccumulateArtyXP(), AccumulateCommXP(), AccumulateComputerXP(), AccumulateGunXPold(), AccumulatePilXP(), AccumulateSpotXP(), AccumulateTechWeaponsXP(), AccumulateTechXP(), and MadePerceptionRoll().
00404 { 00405 return char_gainxpbycode(player, char_getvaluecode(skill), amount); 00406 }
int char_gainxpbycode | ( | dbref | player, | |
int | code, | |||
int | amount | |||
) |
Definition at line 385 of file btechstats.c.
References figure_xp_bonus(), mudstate, statedata::now, retrieve_stats(), SK_XP, store_stats(), VALUES_ATTRS, VALUES_SKILLS, and XP_MAX.
Referenced by char_gainxp(), and fun_btsetcharvalue().
00386 { 00387 PSTATS *s; 00388 00389 if(code < 0) 00390 return 0; 00391 s = retrieve_stats(player, VALUES_SKILLS | VALUES_ATTRS); 00392 if(!((mudstate.now > (s->last_use[code] + 30)) || 00393 (char_values[code].flag & SK_XP))) 00394 return 0; 00395 s->last_use[code] = mudstate.now; 00396 s->xp[code] += amount; 00397 s->xp[code] = 00398 s->xp[code] % XP_MAX + XP_MAX * figure_xp_bonus(player, s, code); 00399 store_stats(player, s, VALUES_SKILLS); 00400 return 1; 00401 }
int char_getattrsave | ( | dbref | player, | |
char * | name | |||
) |
Definition at line 465 of file btechstats.c.
References char_getvalue().
Referenced by char_getattrsavesucc().
00466 { 00467 int val = char_getvalue(player, name); 00468 00469 if(val == -1) 00470 return (-1); 00471 else if(val > 9) 00472 return 0; 00473 else 00474 return (18 - 2 * val); 00475 }
int char_getattrsavesucc | ( | dbref | player, | |
char * | name | |||
) |
Definition at line 477 of file btechstats.c.
References char_getattrsave(), and char_rollskilled().
00478 { 00479 int roll, val = char_getattrsave(player, name); 00480 00481 if(val == -1) 00482 return (-1); 00483 00484 roll = char_rollskilled(); 00485 00486 if(roll >= val) 00487 return (1); 00488 else 00489 return (0); 00490 }
Definition at line 449 of file btechstats.c.
References char_getskillmargsucc().
00451 { 00452 int per1, per2; 00453 00454 per1 = char_getskillmargsucc(first, skill1, 0); 00455 per2 = char_getskillmargsucc(second, skill2, 0); 00456 00457 if(per1 > per2) 00458 return (first); 00459 else if(per2 == per1) 00460 return (0); 00461 else 00462 return (second); 00463 }
int char_getskillmargsucc | ( | dbref | player, | |
char * | name, | |||
int | modifier | |||
) |
Definition at line 432 of file btechstats.c.
References char_getskilltargetbycode(), char_getvaluebycode, char_getvaluecode(), char_rollskilled(), and char_rollunskilled().
Referenced by char_getopposedskill().
00433 { 00434 int roll, val; 00435 int code; 00436 00437 code = char_getvaluecode(name); 00438 00439 val = char_getskilltargetbycode(player, code, modifier); 00440 00441 if(char_getvaluebycode(player, code) == 0) 00442 roll = char_rollunskilled(); 00443 else 00444 roll = char_rollskilled(); 00445 00446 return (roll - val); 00447 }
int char_getskillsuccess | ( | dbref | player, | |
char * | name, | |||
int | modifier, | |||
int | loud | |||
) |
Definition at line 408 of file btechstats.c.
References char_getskilltargetbycode(), char_getvaluebycode, char_getvaluecode(), char_rollskilled(), char_rollunskilled(), and notify_printf().
Referenced by HandleOverheat().
00409 { 00410 int roll, val; 00411 int code; 00412 00413 code = char_getvaluecode(name); 00414 00415 val = char_getskilltargetbycode(player, code, modifier); 00416 00417 if(char_getvaluebycode(player, code) == 0) 00418 roll = char_rollunskilled(); 00419 else 00420 roll = char_rollskilled(); 00421 if(loud) { 00422 notify_printf(player, "You make a %s skill roll!", name); 00423 notify_printf(player, "Modified skill BTH : %d Roll : %d", val, roll); 00424 } 00425 00426 if(roll >= val) 00427 return (1); /* Success! */ 00428 else 00429 return (0); /* Failure */ 00430 }
int char_getskilltarget | ( | dbref | player, | |
char * | name, | |||
int | modifier | |||
) |
Definition at line 369 of file btechstats.c.
References char_getskilltargetbycode(), and char_getvaluecode().
Referenced by FindPilotArtyGun(), FindPilotGunnery(), FindPilotPiloting(), FindPilotSpotting(), FindTechSkill(), FindTechSkillName(), MadePerceptionRoll(), mech_startup_event(), mech_udisembark(), and tech_weapon_roll().
00370 { 00371 return char_getskilltargetbycode(player, char_getvaluecode(name), 00372 modifier); 00373 }
int char_getskilltargetbycode | ( | dbref | player, | |
int | code, | |||
int | modifier | |||
) |
Definition at line 352 of file btechstats.c.
References char_getskilltargetbycode_base(), retrieve_stats(), and VALUES_CO.
Referenced by char_getskillmargsucc(), char_getskillsuccess(), char_getskilltarget(), figure_xp_to_next_level(), fun_btgetcharvalue(), fun_btsetcharvalue(), and show_charstatus().
00353 { 00354 PSTATS *s; 00355 00356 s = retrieve_stats(player, VALUES_CO); 00357 return char_getskilltargetbycode_base(player, s, code, modifier, 1); 00358 }
int char_getvalue | ( | dbref | player, | |
char * | name | |||
) |
Definition at line 297 of file btechstats.c.
References char_getvaluebycode, and char_getvaluecode().
Referenced by char_getattrsave(), mech_startup_event(), and mech_udisembark().
00298 { 00299 return char_getvaluebycode(player, char_getvaluecode(name)); 00300 }
int char_getvaluecode | ( | char * | name | ) |
Definition at line 198 of file btechstats.c.
References alloc_sbuf, free_sbuf, hashfind(), playervaluehash, playervaluehash2, SBUF_SIZE, and ToLower.
Referenced by char_gainxp(), char_getskillmargsucc(), char_getskillsuccess(), char_getskilltarget(), char_getstatvalue(), char_getvalue(), char_setstatvalue(), char_setvalue(), debug_xptop(), fun_btcharlist(), fun_btgetcharvalue(), fun_btsetcharvalue(), and generic_retrieve_stuff().
00199 { 00200 int *ip; 00201 char *tmpbuf, *tmpc1, *tmpc2; 00202 00203 tmpbuf = alloc_sbuf("getvaluecodefind"); 00204 for(tmpc1 = name, tmpc2 = tmpbuf; *tmpc1 && 00205 ((tmpbuf - tmpc2) < (SBUF_SIZE - 1)); tmpc1++, tmpc2++) 00206 *tmpc2 = ToLower(*tmpc1); 00207 *tmpc2 = 0; 00208 if((ip = hashfind(tmpbuf, &playervaluehash)) == NULL) 00209 ip = hashfind(tmpbuf, &playervaluehash2); 00210 free_sbuf(tmpbuf); 00211 return ((int) ip) - 1; 00212 }
int char_getxpbycode | ( | dbref | player, | |
int | code | |||
) |
Definition at line 375 of file btechstats.c.
References retrieve_stats(), VALUES_SKILLS, and XP_MAX.
Referenced by fun_btgetcharvalue(), and fun_btsetcharvalue().
00376 { 00377 PSTATS *s; 00378 00379 if(code < 0) 00380 return 0; 00381 s = retrieve_stats(player, VALUES_SKILLS); 00382 return s->xp[code] % XP_MAX; 00383 }
Definition at line 748 of file btechstats.c.
References lookup_player().
Referenced by do_charclear(), do_charstatus(), fun_btcharlist(), fun_btgetcharvalue(), fun_btsetcharvalue(), mech_eject(), mech_startup(), and mech_udisembark().
00749 { 00750 return lookup_player(player, arg1, 0); 00751 }
int char_rolld6 | ( | int | num | ) |
Definition at line 277 of file btechstats.c.
Referenced by char_rollsaving(), char_rollskilled(), and char_rollunskilled().
00278 { 00279 int i, total = 0; 00280 00281 for(i = 0; i < num; i++) 00282 total = total + (random() % 6) + 1; 00283 return (total); 00284 }
int char_rollsaving | ( | void | ) |
Definition at line 220 of file btechstats.c.
References char_rolld6().
Referenced by handlemwconc(), tech_roll(), and tech_weapon_roll().
00221 { 00222 int r1, r2, r3; 00223 int r12, r13, r23; 00224 00225 r1 = char_rolld6(1); 00226 r2 = char_rolld6(1); 00227 r3 = char_rolld6(1); 00228 00229 r12 = r1 + r2; 00230 r13 = r1 + r3; 00231 r23 = r2 + r3; 00232 00233 if(r12 > r13) { 00234 if(r12 > r23) 00235 return r12; 00236 else 00237 return r23; 00238 } else { 00239 if(r13 > r23) 00240 return r13; 00241 else 00242 return r23; 00243 } 00244 }
int char_rollskilled | ( | void | ) |
Definition at line 272 of file btechstats.c.
References char_rolld6().
Referenced by char_getattrsavesucc(), char_getskillmargsucc(), char_getskillsuccess(), and handlemwconc().
00273 { 00274 return char_rolld6(2); 00275 }
int char_rollunskilled | ( | void | ) |
Definition at line 246 of file btechstats.c.
References char_rolld6().
Referenced by char_getskillmargsucc(), and char_getskillsuccess().
00247 { 00248 int r1, r2, r3; 00249 int r12, r13, r23; 00250 00251 r1 = char_rolld6(1); 00252 r2 = char_rolld6(1); 00253 r3 = char_rolld6(1); 00254 00255 r12 = r1 + r2; 00256 r13 = r1 + r3; 00257 r23 = r2 + r3; 00258 00259 if(r12 < r13) { 00260 if(r12 < r23) 00261 return r12; 00262 else 00263 return r23; 00264 } else { 00265 if(r13 < r23) 00266 return r13; 00267 else 00268 return r23; 00269 } 00270 }
void char_setvalue | ( | dbref | player, | |
char * | name, | |||
int | value | |||
) |
Definition at line 307 of file btechstats.c.
References char_getvaluecode(), and char_setvaluebycode.
00308 { 00309 char_setvaluebycode(player, char_getvaluecode(name), value); 00310 }
void chargen_apply | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_begin | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_done | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_help | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_look | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_next | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_prev | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void chargen_reset | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_a_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_a_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_a_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_a_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_b_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_b_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_b_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_b_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_c_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_c_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_c_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_c_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_d_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_d_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_d_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_d_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_e_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_e_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_e_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_e_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_f_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_f_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_f_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_f_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_g_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_g_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_g_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_g_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_h_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_h_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_h_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_h_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_i_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_i_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_i_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_i_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_j_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_j_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_j_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_j_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_k_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_k_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_k_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_k_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_l_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_l_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_l_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_l_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_m_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_m_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_m_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_m_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_n_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_n_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_n_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_n_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_o_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_o_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_o_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_o_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_p_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_p_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_p_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_p_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_q_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_q_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_q_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_q_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_r_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_r_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_r_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_r_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_s_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_s_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_s_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_s_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_t_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_t_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_t_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_t_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_u_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_u_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_u_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_u_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_v_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_v_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_v_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_v_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_w_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_w_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_w_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_w_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_x_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_x_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_x_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_x_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_y_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_y_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_y_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_y_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_z_add | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_z_minus | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_z_set | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void cm_z_toggle | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
void debug_setxplevel | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
Definition at line 1981 of file btechstats.c.
References args, DOCHECK, mech_parseattributes(), and Readnum.
01982 { 01983 char *args[3]; 01984 int xpt, code; 01985 01986 DOCHECK(mech_parseattributes(buffer, args, 3) != 2, "Invalid arguments!"); 01987 DOCHECK(Readnum(xpt, args[1]), "Invalid value!"); 01988 DOCHECK(xpt < 0, "Threshold needs to be >=0 (0 = no gains possible)"); 01989 DOCHECK((code = 01990 char_getvaluecode(args[0])) < 0, "That isn't any charvalue!"); 01991 DOCHECK(char_values[code].type != CHAR_SKILL, "That isn't any skill!"); 01992 char_values[code].xpthreshold = xpt; 01993 log_error(LOG_WIZARD, "WIZ", "CHANGE", "Exp threshold for %s changed to %d by #%d", 01994 char_values[code].name, xpt, player); 01995 }
void debug_xptop | ( | dbref | player, | |
void * | data, | |||
char * | buffer | |||
) |
Definition at line 1751 of file btechstats.c.
References addline, addmenu, c, char_getvaluecode(), CHAR_SKILL, DO_WHOLE_DB, DOCHECK, isPlayer, KillCoolMenu(), MAX_PLAYERS_ON, MIN, Name(), notify, retrieve_stats(), ShowCoolMenu(), skipws, tprintf(), VALUES_SKILLS, Wiz, and XP_MAX.
01752 { 01753 int hm, i, j; 01754 dbref top[MAX_PLAYERS_ON]; 01755 int topv[MAX_PLAYERS_ON]; 01756 int count = 0, gt = 0; 01757 coolmenu *c = NULL; 01758 PSTATS *s; 01759 01760 #if 0 01761 notify(player, "Support discontinued. Bother a wiz if this bothers you."); 01762 return; 01763 #endif 01764 01765 bzero(top, sizeof(top)); 01766 bzero(topv, sizeof(topv)); 01767 skipws(buffer); 01768 DOCHECK(!*buffer, "Invalid argument!"); 01769 DOCHECK((hm = char_getvaluecode(buffer)) < 0, "Invalid value name!"); 01770 DOCHECK(char_values[hm].type != CHAR_SKILL, 01771 "Only skills have XP (for now at least)"); 01772 DO_WHOLE_DB(i) { 01773 if(!isPlayer(i)) 01774 continue; 01775 if(Wiz(i)) 01776 continue; 01777 if(!(s = retrieve_stats(i, VALUES_SKILLS))) 01778 continue; 01779 if(!s->xp[hm]) 01780 continue; 01781 top[count] = i; 01782 topv[count] = (s->xp[hm] % XP_MAX); 01783 gt += topv[count]; 01784 count++; 01785 } 01786 for(i = 0; i < (count - 1); i++) 01787 for(j = i + 1; j < count; j++) { 01788 if(topv[j] > topv[i]) { 01789 topv[count] = topv[j]; 01790 topv[j] = topv[i]; 01791 topv[i] = topv[count]; 01792 01793 top[count] = top[j]; 01794 top[j] = top[i]; 01795 top[i] = top[count]; 01796 } 01797 } 01798 addline(); 01799 for(i = 0; i < MIN(16, count); i++) { 01800 addmenu(tprintf("%3d. %s", i + 1, Name(top[i]))); 01801 addmenu(tprintf("%d (%.3f %%)", topv[i], (100.0 * topv[i]) / gt)); 01802 } 01803 addline(); 01804 if(gt) { 01805 addmenu(tprintf("Grand total: %d points", gt)); 01806 addline(); 01807 } 01808 ShowCoolMenu(player, c); 01809 KillCoolMenu(c); 01810 }
Definition at line 711 of file btechstats.c.
References A_ADVS, A_ATTRS, A_HEALTH, A_SKILLS, char_lookupplayer(), DOCHECK, NOTHING, notify_printf(), silly_atr_set(), and WizR.
00712 { 00713 dbref thing; 00714 00715 DOCHECK(!WizR(player), 00716 "Sorry, only those with the real power may clear players stats"); 00717 DOCHECK(!arg1 || !*arg1, "Who do you want to clear the stats from?"); 00718 thing = char_lookupplayer(player, player, 0, arg1); 00719 DOCHECK(thing == NOTHING, "I don't know who that is"); 00720 silly_atr_set(thing, A_ATTRS, ""); 00721 silly_atr_set(thing, A_SKILLS, ""); 00722 silly_atr_set(thing, A_ADVS, ""); 00723 silly_atr_set(thing, A_HEALTH, ""); 00724 notify_printf(player, "Player #%d stats cleared", thing); 00725 }
Definition at line 684 of file btechstats.c.
References char_lookupplayer(), dir, DOCHECK, NOTHING, notify, retrieve_stats(), show_charstatus(), VALUES_ALL, and WizR.
00685 { 00686 dbref thing; 00687 int dir = 0; 00688 00689 PSTATS *s; 00690 00691 if(WizR(player)) 00692 dir++; 00693 00694 if(arg1 && *arg1) { 00695 thing = char_lookupplayer(player, player, 0, arg1); 00696 00697 DOCHECK(thing == NOTHING, "I don't know who that is"); 00698 00699 if(thing != player && !(WizR(player))) { 00700 notify(player, 00701 "You do not have the authority to check that players stats"); 00702 return; 00703 } 00704 } else 00705 thing = player; 00706 00707 s = retrieve_stats(thing, VALUES_ALL); 00708 show_charstatus(player, s, thing); 00709 }
Definition at line 877 of file btechstats.c.
References char_gbruise, char_glethal, char_gvalue, MechPilotStatus, retrieve_stats(), VALUES_ATTRS, and VALUES_HEALTH.
Referenced by mech_startup(), and mech_udisembark().
00878 { 00879 PSTATS *s; 00880 int bruise, lethal, playerBLD; 00881 00882 s = retrieve_stats(player, VALUES_HEALTH | VALUES_ATTRS); 00883 bruise = char_gbruise(s); 00884 lethal = char_glethal(s); 00885 playerBLD = char_gvalue(s, "build") * 2; 00886 if(playerBLD < 1 || playerBLD > 100) 00887 playerBLD = 10; 00888 00889 MechPilotStatus(mech) = (bruise + lethal) / playerBLD; 00890 }
void fun_btcharlist | ( | char * | buff, | |
char ** | bufc, | |||
dbref | player, | |||
dbref | cause, | |||
char * | fargs[], | |||
int | nfargs, | |||
char * | cargs[], | |||
int | ncargs | |||
) |
Definition at line 1688 of file btechstats.c.
References CHAR_ADVANTAGE, CHAR_ATTRIBUTE, char_getvaluebycode, char_getvaluecode(), char_lookupplayer(), CHAR_SKILL, fn_range_check(), listmatch(), name, NOTHING, and safe_str.
01690 { 01691 int i; 01692 int type = 0; 01693 int first = 1; 01694 dbref target = 0; 01695 enum { 01696 CHSKI, 01697 CHADV, 01698 CHATT, 01699 }; 01700 static char *cmds[] = { 01701 "skills", 01702 "advantages", 01703 "attributes", 01704 NULL 01705 }; 01706 01707 if(!fn_range_check("BTCHARLIST", nfargs, 1, 2, buff, bufc)) 01708 return; 01709 01710 if(nfargs == 2) { 01711 target = char_lookupplayer(player, cause, 0, fargs[1]); 01712 if(target == NOTHING) { 01713 safe_str("#-1 FUNCTION (BTCHARLIST) INVALID TARGET", buff, bufc); 01714 return; 01715 } 01716 } 01717 01718 switch (listmatch(cmds, fargs[0])) { 01719 case CHSKI: 01720 type = CHAR_SKILL; 01721 break; 01722 case CHADV: 01723 type = CHAR_ADVANTAGE; 01724 break; 01725 case CHATT: 01726 type = CHAR_ATTRIBUTE; 01727 break; 01728 default: 01729 safe_str("#-1 FUNCTION (BTCHARLIST) INVALID VALUE", buff, bufc); 01730 return; 01731 } 01732 01733 for(i = 0; i < NUM_CHARVALUES; ++i) 01734 if(type == char_values[i].type) { 01735 if(nfargs == 2 && type != CHAR_ATTRIBUTE) { 01736 int targetcode = char_getvaluecode(char_values[i].name); 01737 if(char_getvaluebycode(target, targetcode) == 0) 01738 continue; 01739 } 01740 if(first) 01741 first = 0; 01742 else 01743 safe_str(" ", buff, bufc); 01744 safe_str(char_values[i].name, buff, bufc); 01745 } 01746 return; 01747 }
void fun_btgetcharvalue | ( | char * | buff, | |
char ** | bufc, | |||
dbref | player, | |||
dbref | cause, | |||
char * | fargs[], | |||
int | nfargs, | |||
char * | cargs[], | |||
int | ncargs | |||
) |
Definition at line 1572 of file btechstats.c.
References char_getskilltargetbycode(), char_getvaluebycode, char_getvaluecode(), char_getxpbycode(), char_lookupplayer(), CHAR_SKILL, figure_xp_to_next_level(), FUNCHECK, NOTHING, Readnum, retrieve_stats(), safe_tprintf_str(), VALUES_SKILLS, and Wiz.
01574 { 01575 /* fargs[0] = char id (#222) 01576 fargs[1] = value name / value loc # 01577 fargs[2] = flaggo (?) */ 01578 dbref target; 01579 int targetcode, flaggo; 01580 01581 FUNCHECK((target = 01582 char_lookupplayer(player, cause, 0, fargs[0])) == NOTHING, 01583 "#-1 INVALID TARGET"); 01584 FUNCHECK(!Wiz(player), "#-1 PERMISSION DENIED!"); 01585 if(Readnum(targetcode, fargs[1])) 01586 targetcode = char_getvaluecode(fargs[1]); 01587 FUNCHECK(targetcode < 0 || 01588 targetcode >= NUM_CHARVALUES, "#-1 INVALID VALUE"); 01589 flaggo = atoi(fargs[2]); 01590 if(char_values[targetcode].type == CHAR_SKILL && flaggo == 4) { 01591 safe_tprintf_str(buff, bufc, "%d", 01592 figure_xp_to_next_level(target, targetcode)); 01593 return; 01594 } 01595 if(char_values[targetcode].type == CHAR_SKILL && flaggo == 3) { 01596 safe_tprintf_str(buff, bufc, "%d", 01597 retrieve_stats(target, 01598 VALUES_SKILLS)->values[targetcode]); 01599 return; 01600 } 01601 if(char_values[targetcode].type == CHAR_SKILL && flaggo == 2) { 01602 safe_tprintf_str(buff, bufc, "%d", char_getxpbycode(target, 01603 targetcode)); 01604 return; 01605 } 01606 if(char_values[targetcode].type == CHAR_SKILL && flaggo) { 01607 safe_tprintf_str(buff, bufc, "%d", 01608 char_getskilltargetbycode(target, targetcode, 0)); 01609 return; 01610 } 01611 safe_tprintf_str(buff, bufc, "%d", char_getvaluebycode(target, 01612 targetcode)); 01613 }
void fun_btsetcharvalue | ( | char * | buff, | |
char ** | bufc, | |||
dbref | player, | |||
dbref | cause, | |||
char * | fargs[], | |||
int | nfargs, | |||
char * | cargs[], | |||
int | ncargs | |||
) |
Definition at line 1615 of file btechstats.c.
References char_gainxpbycode(), char_getskilltargetbycode(), char_getvaluebycode, char_getvaluecode(), char_getxpbycode(), char_lookupplayer(), char_setvaluebycode, CHAR_SKILL, FUNCHECK, Name(), name, NOTHING, Readnum, safe_tprintf_str(), SendXP, tprintf(), and Wiz.
01617 { 01618 /* fargs[0] = char id (#222) 01619 fargs[1] = value name / value loc # 01620 fargs[2] = value to be set 01621 fargs[3] = flaggo (?) 01622 */ 01623 dbref target; 01624 int targetcode, targetvalue, flaggo; 01625 01626 FUNCHECK((target = 01627 char_lookupplayer(player, cause, 0, fargs[0])) == NOTHING, 01628 "#-1 INVALID TARGET"); 01629 FUNCHECK(!Wiz(player), "#-1 PERMISSION DENIED!"); 01630 if(Readnum(targetcode, fargs[1])) 01631 targetcode = char_getvaluecode(fargs[1]); 01632 FUNCHECK(targetcode < 0 || 01633 targetcode >= NUM_CHARVALUES, "#-1 INVALID VALUE"); 01634 targetvalue = atoi(fargs[2]); 01635 flaggo = atoi(fargs[3]); 01636 01637 /* We supposedly have everything at hand.. */ 01638 if(flaggo) { 01639 FUNCHECK(char_values[targetcode].type != CHAR_SKILL, 01640 "#-1 ONLY SKILLS CAN HAVE FLAG"); 01641 if(flaggo == 1) { 01642 /* Need to do some evil frobbage here */ 01643 char_setvaluebycode(target, targetcode, 0); 01644 targetvalue = 01645 char_getskilltargetbycode(target, targetcode, 01646 0) - targetvalue; 01647 } else { 01648 if(flaggo != 3) { 01649 /* Add exp */ 01650 char_gainxpbycode(target, targetcode, targetvalue); 01651 SendXP(tprintf("#%d added %d more %s XP to #%d", player, 01652 targetvalue, char_values[targetcode].name, 01653 target)); 01654 safe_tprintf_str(buff, bufc, "%s gained %d more %s XP.", 01655 Name(target), targetvalue, 01656 char_values[targetcode].name); 01657 } else { 01658 /* Set the xp instead */ 01659 char_gainxpbycode(target, targetcode, 01660 targetvalue - char_getxpbycode(target, 01661 targetcode)); 01662 SendXP(tprintf 01663 ("#%d set #%d's %s XP to %d", player, target, 01664 char_values[targetcode].name, targetvalue)); 01665 safe_tprintf_str(buff, bufc, "%s's %s XP set to %d.", 01666 Name(target), char_values[targetcode].name, 01667 targetvalue); 01668 } 01669 return; 01670 } 01671 } 01672 char_setvaluebycode(target, targetcode, targetvalue); 01673 safe_tprintf_str(buff, bufc, "%s's %s set to %d", Name(target), 01674 char_values[targetcode].name, char_getvaluebycode(target, 01675 targetcode)); 01676 }
void go_back_state | ( | dbref | player, | |
struct chargen_struct * | st | |||
) |
int handlemwconc | ( | MECH * | mech, | |
int | initial | |||
) |
Definition at line 923 of file btechstats.c.
References BOUNDED(), ChannelEmitKill(), char_rollsaving(), char_rollskilled(), Destroy, In_Character, mech_notify(), mech_printf(), MechDesiredSpeed, MECHPILOT, MechPilot, MechPilotStatus, MechSpeed, mw_ic_bth(), MECH::mynum, ProlongUncon(), Uncon, and UNCONSCIOUS_TIME.
Referenced by headhitmwdamage(), mech_recovery_event(), and mwlethaldam().
00924 { 00925 int m, roll; 00926 00927 if(In_Character(mech->mynum) && MechPilot(mech) > 0) 00928 m = mw_ic_bth(mech); 00929 else { 00930 if(initial) 00931 if(MechPilotStatus(mech) > 5) { 00932 mech_notify(mech, MECHPILOT, 00933 "You are killed from personal injuries!!"); 00934 MechPilot(mech) = -1; 00935 Destroy(mech); 00936 ChannelEmitKill(mech, mech); 00937 MechSpeed(mech) = 0.; 00938 MechDesiredSpeed(mech) = 0.; 00939 return 0; 00940 } 00941 m = PilotStatusRollNeeded[BOUNDED(0, (int) MechPilotStatus(mech), 4)]; 00942 } 00943 if(initial && Uncon(mech)) 00944 return 0; 00945 if(m < 0) 00946 /* Gets the saving roll for someone with toughness */ 00947 roll = char_rollsaving(); 00948 else 00949 roll = char_rollskilled(); 00950 if(MechPilot(mech) >= 0) { 00951 if(initial) { 00952 mech_notify(mech, MECHPILOT, 00953 "You attempt to keep consciousness!"); 00954 mech_printf(mech, MECHPILOT, 00955 "Retain Conciousness on: %d \tRoll: %d", abs(m), 00956 roll); 00957 } else { 00958 mech_notify(mech, MECHPILOT, 00959 "You attempt to regain consciousness!"); 00960 mech_printf(mech, MECHPILOT, 00961 "Regain Consciousness on: %d \tRoll: %d", abs(m), 00962 roll); 00963 } 00964 } 00965 if(roll < (abs(m))) { 00966 if(initial) 00967 mech_notify(mech, MECHPILOT, 00968 "Consciousness slips away from you as you enter a sea of darkness..."); 00969 ProlongUncon(mech, UNCONSCIOUS_TIME); 00970 return 0; 00971 } 00972 return 1; 00973 }
int HasBoolAdvantage | ( | dbref | player, | |
const char * | name | |||
) |
Definition at line 1270 of file btechstats.c.
References char_gvalue, retrieve_stats(), SBUF_SIZE, VALUES_ADVS, VALUES_ATTRS, and VALUES_HEALTH.
Referenced by ammo_explosion(), ChargeMech(), DeathFromAbove(), DisplayTarget(), mech_turnmode(), MechCargoMaxSpeed(), PhysicalAttack(), PhysicalDamage(), tech_roll(), tech_weapon_roll(), UpdateHeading(), and UpdateSpeed().
01271 { 01272 PSTATS *s; 01273 char buf[SBUF_SIZE]; 01274 01275 strcpy(buf, name); 01276 s = retrieve_stats(player, VALUES_ATTRS | VALUES_ADVS | VALUES_HEALTH); 01277 if(char_gvalue(s, buf) == 1) 01278 return 1; 01279 else 01280 return 0; 01281 }
Definition at line 975 of file btechstats.c.
References char_gbruise, char_glethal, char_gvalue, char_sbruise, char_slethal, Destroyed, DestroyMech(), GotPilot, handlemwconc(), In_Character, KillMechContentsIfIC(), MechPilot, MechPilotStatus, MECH::mynum, retrieve_stats(), store_stats(), VALUES_ADVS, VALUES_ATTRS, and VALUES_HEALTH.
Referenced by ammo_explosion(), DamageMech(), DeathFromAbove(), HandleFasaVehicleCrit(), HandleVehicleCrit(), mech_explode_event(), MechFalls(), reactor_explosion(), and UpdateHeat().
00976 { 00977 PSTATS *s; 00978 dbref player; 00979 int damage, bruise, lethaldam, playerBLD; 00980 00981 if(mech->mynum < 0) 00982 return; 00983 /* check to see if mech is IC */ 00984 if(!In_Character(mech->mynum) || !GotPilot(mech)) { 00985 MechPilotStatus(mech) += dam; 00986 handlemwconc(mech, 1); 00987 return; 00988 } 00989 player = MechPilot(mech); 00990 00991 s = retrieve_stats(player, VALUES_ATTRS | VALUES_ADVS | VALUES_HEALTH); 00992 /* get the player_stats structure */ 00993 00994 bruise = char_gbruise(s); 00995 /* gets the players bruise damage */ 00996 00997 playerBLD = char_gvalue(s, "build"); 00998 /* get the player's BLD value */ 00999 01000 damage = 2 * playerBLD * dam; 01001 /* the damage we are due */ 01002 01003 bruise += damage; 01004 /* this part subtracts 10 from players lethal damage */ 01005 01006 if(bruise > playerBLD * 10) { 01007 lethaldam = char_glethal(s); 01008 lethaldam += (bruise - playerBLD * 10); 01009 bruise = playerBLD * 10; 01010 01011 if(lethaldam >= playerBLD * 10) { 01012 lethaldam = playerBLD * 10; 01013 char_slethal(s, playerBLD * 10 - 1); 01014 char_sbruise(s, playerBLD * 10); 01015 store_stats(player, s, VALUES_HEALTH); 01016 if(!Destroyed(mech)) { 01017 DestroyMech(mech, attacker, 1); 01018 } 01019 KillMechContentsIfIC(mech->mynum); 01020 return; 01021 } 01022 char_slethal(s, lethaldam); 01023 } 01024 char_sbruise(s, bruise); 01025 store_stats(player, s, VALUES_HEALTH); 01026 handlemwconc(mech, 1); 01027 MechPilotStatus(mech) += dam; 01028 }
void init_btechstats | ( | void | ) |
Definition at line 498 of file btechstats.c.
References alloc_sbuf, free_sbuf, HASH_FACTOR, hashadd(), hashinit(), name, playervaluehash, playervaluehash2, and ToLower.
Referenced by LoadSpecialObjects().
00499 { 00500 char *tmpbuf, *tmpc1, *tmpc2; 00501 int i, j; 00502 00503 hashinit(&playervaluehash, 20 * HASH_FACTOR); 00504 hashinit(&playervaluehash2, 20 * HASH_FACTOR); 00505 tmpbuf = alloc_sbuf("getvaluecode"); 00506 for(i = 0; i < NUM_CHARVALUES; i++) { 00507 for(tmpc1 = char_values[i].name, tmpc2 = tmpbuf; *tmpc1; 00508 tmpc1++, tmpc2++) 00509 *tmpc2 = ToLower(*tmpc1); 00510 *tmpc2 = '\0'; 00511 hashadd(tmpbuf, (int *) (i + 1), &playervaluehash); 00512 tmpbuf[0] = '\0'; 00513 tmpc1 = tmpbuf; 00514 for(j = 0; char_values[i].name[j]; j++) { 00515 if(!isupper(char_values[i].name[j])) 00516 continue; 00517 strncpy(tmpc1, &char_values[i].name[j], 3); 00518 tmpc1 += 3; 00519 } 00520 *tmpc1 = '\0'; 00521 if(strlen(tmpbuf) <= 3) { 00522 strncpy(tmpbuf, char_values[i].name, 5); 00523 tmpbuf[5] = '\0'; 00524 } 00525 char_values_short[i] = strdup(tmpbuf); 00526 for(tmpc1 = tmpbuf; *tmpc1; tmpc1++) 00527 *tmpc1 = ToLower(*tmpc1); 00528 hashadd(tmpbuf, (int *) (i + 1), &playervaluehash2); 00529 } 00530 free_sbuf(tmpbuf); 00531 }
Definition at line 773 of file btechstats.c.
References A_PCEQUIP, c, char_gbruise, char_glethal, char_gvalue, CLASS_MW, CTORSO, find_matching_vlong_part(), HEAD, I2Ammo, IsWeapon, LARM, loc_mod(), MBUF_SIZE, MechCritStatus, MechMaxSpeed, MechType, MechWeapons, MP1, Name(), NUM_SECTIONS, PC_INITIALIZED, PC_LOCS, RARM, retrieve_stats(), RLEG, SendError, SetPartAmmoMode, SetPartData, SetPartFireMode, SetPartType, SetSectArmor, SetSectInt, SetSectOArmor, SetSectOInt, silly_atr_get(), tprintf(), VALUES_ATTRS, VALUES_HEALTH, VALUES_SKILLS, and Weapon2I.
Referenced by autoeject(), char_disembark(), char_eject(), and mech_startup_event().
00774 { 00775 PSTATS *s; 00776 int bruise, lethal, playerBLD; 00777 int dam, tot; 00778 char *c; 00779 int cnt; 00780 char buf1[MBUF_SIZE]; 00781 char buf2[MBUF_SIZE]; 00782 char buf3[MBUF_SIZE]; 00783 char buf4[2]; 00784 int ammo1; 00785 int ammo2; 00786 int i, id, brand; 00787 int pc_loc_to_mech_loc[] = { HEAD, CTORSO, RARM, RLEG }; 00788 00789 if(!(MechType(mech) == CLASS_MW && 00790 !(MechCritStatus(mech) & PC_INITIALIZED))) 00791 return; 00792 buf4[1] = 0; 00793 s = retrieve_stats(player, VALUES_HEALTH | VALUES_ATTRS | VALUES_SKILLS); 00794 playerBLD = char_gvalue(s, "build"); 00795 MechCritStatus(mech) |= PC_INITIALIZED; 00796 bruise = char_gbruise(s); 00797 lethal = char_glethal(s); 00798 tot = playerBLD * 20; 00799 dam = bruise + lethal; 00800 MechMaxSpeed(mech) = 00801 (playerBLD + char_gvalue(s, "reflexes") + char_gvalue(s, 00802 "running")) * 00803 MP1 / 9.0; 00804 #define PC_LOCS 4 00805 for(i = 0; i < NUM_SECTIONS; i++) { 00806 SetSectArmor(mech, i, 0); 00807 SetSectOArmor(mech, i, 0); 00808 SetSectInt(mech, i, (loc_mod(i) * (tot - dam)) / 100 + 1); 00809 SetSectOInt(mech, i, (loc_mod(i) * (tot - dam)) / 100 + 1); 00810 } 00811 c = silly_atr_get(player, A_PCEQUIP); 00812 cnt = sscanf(c, "%s %s %s %d %d", buf1, buf2, buf3, &ammo1, &ammo2); 00813 00814 switch (cnt) { 00815 case 5: 00816 case 4: 00817 case 3: 00818 if(strcmp(buf3, "-")) { 00819 if(!find_matching_vlong_part(buf3, NULL, &id, &brand)) { 00820 SendError(tprintf("Invalid PC weapon #1 for %s(#%d): %s", 00821 Name(player), player, buf3)); 00822 return; 00823 } 00824 if(IsWeapon(id)) { 00825 SetPartType(mech, LARM, 0, id); 00826 SetPartData(mech, LARM, 0, 0); 00827 SetPartFireMode(mech, LARM, 0, 0); 00828 SetPartAmmoMode(mech, LARM, 0, 0); 00829 if((i = MechWeapons[Weapon2I(id)].ammoperton)) { 00830 SetPartType(mech, LARM, 1, I2Ammo(Weapon2I(id))); 00831 SetPartData(mech, LARM, 1, cnt >= 5 ? ammo2 : i); 00832 SetPartFireMode(mech, LARM, 1, 0); 00833 SetPartAmmoMode(mech, LARM, 1, 0); 00834 } 00835 } 00836 } 00837 case 2: 00838 if(strcmp(buf2, "-")) { 00839 if(!find_matching_vlong_part(buf2, NULL, &id, &brand)) { 00840 SendError(tprintf("Invalid PC weapon #1 for %s(#%d): %s", 00841 Name(player), player, buf2)); 00842 return; 00843 } 00844 if(IsWeapon(id)) { 00845 SetPartType(mech, RARM, 0, id); 00846 SetPartData(mech, RARM, 0, 0); 00847 SetPartFireMode(mech, RARM, 0, 0); 00848 SetPartAmmoMode(mech, RARM, 0, 0); 00849 if((i = MechWeapons[Weapon2I(id)].ammoperton)) { 00850 SetPartType(mech, RARM, 1, I2Ammo(Weapon2I(id))); 00851 SetPartData(mech, RARM, 1, cnt >= 4 ? ammo1 : i); 00852 SetPartFireMode(mech, RARM, 1, 0); 00853 SetPartAmmoMode(mech, RARM, 1, 0); 00854 } 00855 } 00856 } 00857 case 1: 00858 if(strlen(buf1) != PC_LOCS) { 00859 SendError(tprintf("Invalid armor string for %s(#%d): %s", 00860 Name(player), player, buf1)); 00861 return; 00862 } 00863 for(i = 0; buf1[i]; i++) 00864 if(!isdigit(buf1[i])) { 00865 SendError(tprintf 00866 ("Invalid armor char for %s(#%d) in %s (pos %d,%c)", 00867 Name(player), player, buf1, i + 1, buf1[i])); 00868 return; 00869 } 00870 for(i = 0; buf1[i]; i++) { 00871 buf4[0] = buf1[i]; 00872 SetSectArmor(mech, pc_loc_to_mech_loc[i], atoi(buf4)); 00873 } 00874 } 00875 }
void list_charvaluestuff | ( | dbref | player, | |
int | flag | |||
) |
Definition at line 155 of file btechstats.c.
References name, notify, and notify_printf().
Referenced by do_show().
00156 { 00157 int found = 0, ok, type; 00158 int i; 00159 char buf[80]; 00160 00161 if(flag == -1) 00162 notify(player, "List of charvalues available:"); 00163 if(flag >= 0) { 00164 notify_printf(player, "List of %s available:", 00165 btech_charvaluetype_names[flag]); 00166 } 00167 buf[0] = 0; 00168 for(i = 0; i < NUM_CHARVALUES; i++) { 00169 ok = 0; 00170 type = char_values[i].type; 00171 if(flag < 0) 00172 ok = 1; 00173 else if(type == flag) 00174 ok = 1; 00175 if(ok) { 00176 sprintf(buf + strlen(buf), "%-23s ", char_values[i].name); 00177 if(!((++found) % 3)) { 00178 notify(player, buf); 00179 strcpy(buf, " "); 00180 } 00181 } 00182 } 00183 if(found % 3) { 00184 notify(player, buf); 00185 } 00186 notify(player, " "); 00187 notify_printf(player, "Total of %d things found.", found); 00188 }
void lower_xp | ( | dbref | player, | |
int | promillage | |||
) |
Definition at line 1072 of file btechstats.c.
01073 { 01074 PSTATS *s; 01075 int i; 01076 01077 s = retrieve_stats(player, VALUES_ALL); 01078 for(i = 0; i < NUM_CHARVALUES; i++) { 01079 if(!s->xp[i]) 01080 continue; 01081 if(s->xp[i] < 0) { 01082 s->xp[i] = 0; 01083 continue; 01084 } 01085 s->xp[i] = (s->xp[i] % XP_MAX) * promillage / 1000; 01086 s->xp[i] = s->xp[i] % XP_MAX + XP_MAX * figure_xp_bonus(player, s, i); 01087 } 01088 store_stats(player, s, VALUES_ALL); 01089 }
int lowest_bit | ( | int | num | ) |
int MadePerceptionRoll | ( | MECH * | mech, | |
int | modifier | |||
) |
Definition at line 1198 of file btechstats.c.
References char_gainxp(), char_getskilltarget(), In_Character, MechPer, MechPilot, MECH::mynum, Name(), RGotGPilot, Roll(), SendXP, and tprintf().
Referenced by Sensor_Sees(), show_building_in_hex(), show_mines_in_hex(), and steppable_base_check().
01199 { 01200 int pilot; 01201 01202 if(!In_Character(mech->mynum)) 01203 return 0; 01204 if(!RGotGPilot(mech)) 01205 return 0; 01206 pilot = MechPilot(mech); 01207 if(pilot <= 0) 01208 return 0; 01209 if(!MechPer(mech)) 01210 MechPer(mech) = char_getskilltarget(pilot, "Perception", 2); 01211 if(Roll() < (MechPer(mech) + modifier)) 01212 return 0; 01213 char_gainxp(pilot, "Perception", 1); 01214 if(char_gainxp(pilot, "Perception", 1)) 01215 SendXP(tprintf("%s gained 1 perception XP", Name(pilot))); 01216 return 1; 01217 }
int mw_ic_bth | ( | MECH * | mech | ) |
Definition at line 896 of file btechstats.c.
References char_gbruise, char_gvalue, MechPilot, retrieve_stats(), VALUES_ADVS, VALUES_ATTRS, and VALUES_HEALTH.
Referenced by handlemwconc().
00897 { 00898 int playerBLD; 00899 int bruise, playerhits; 00900 PSTATS *s; 00901 int mod = 1; 00902 00903 s = retrieve_stats(MechPilot(mech), 00904 VALUES_ATTRS | VALUES_ADVS | VALUES_HEALTH); 00905 playerBLD = char_gvalue(s, "build"); 00906 bruise = char_gbruise(s); 00907 playerhits = 10 * playerBLD - bruise; 00908 if(char_gvalue(s, "toughness") == 1) 00909 mod = -1; 00910 if(playerhits >= (8 * playerBLD)) 00911 return 3 * mod; 00912 else if(playerhits >= (6 * playerBLD)) 00913 return 5 * mod; 00914 else if(playerhits >= (4 * playerBLD)) 00915 return 7 * mod; 00916 else if(playerhits >= (2 * playerBLD)) 00917 return 9 * mod; 00918 else if(playerhits >= -1) 00919 return 11 * mod; 00920 return 0; 00921 }
Definition at line 1030 of file btechstats.c.
References BOUNDED(), char_gbruise, char_glethal, char_gvalue, char_sbruise, char_slethal, Destroyed, DestroyMech(), GotPilot, handlemwconc(), In_Character, KillMechContentsIfIC(), MechPilot, MechPilotStatus, MECH::mynum, retrieve_stats(), store_stats(), VALUES_ADVS, VALUES_ATTRS, and VALUES_HEALTH.
01031 { 01032 PSTATS *s; 01033 dbref player; 01034 int bruise, lethaldam, playerBLD; 01035 01036 if(mech->mynum < 0) 01037 return; 01038 /* check to see if mech is IC */ 01039 if(!In_Character(mech->mynum) || !GotPilot(mech)) { 01040 MechPilotStatus(mech) += dam; 01041 handlemwconc(mech, 1); 01042 return; 01043 } 01044 player = MechPilot(mech); 01045 01046 s = retrieve_stats(player, VALUES_ATTRS | VALUES_ADVS | VALUES_HEALTH); 01047 /* get the player_stats structure */ 01048 bruise = char_gbruise(s); 01049 playerBLD = char_gvalue(s, "build"); 01050 if(!playerBLD) 01051 playerBLD++; 01052 lethaldam = char_glethal(s); 01053 lethaldam += BOUNDED(10, dam * playerBLD, 40); 01054 if(lethaldam >= playerBLD * 10) { 01055 lethaldam = playerBLD * 10; 01056 char_slethal(s, lethaldam - 1); 01057 char_sbruise(s, lethaldam); 01058 store_stats(player, s, VALUES_HEALTH); 01059 if(!Destroyed(mech)) { 01060 DestroyMech(mech, attacker, 1); 01061 } 01062 KillMechContentsIfIC(mech->mynum); 01063 return; 01064 } 01065 char_sbruise(s, playerBLD * 10 - 5); 01066 char_slethal(s, lethaldam); 01067 store_stats(player, s, VALUES_HEALTH); 01068 handlemwconc(mech, 1); 01069 MechPilotStatus(mech) += dam; 01070 }
void recalculate_skillpoints | ( | struct chargen_struct * | st | ) |
int recursive_add | ( | int | lev | ) |
struct chargen_struct* retrieve_chargen_struct | ( | dbref | player | ) |
char* silly_get_uptime_to_string | ( | int | i | ) |
Definition at line 54 of file btechstats.c.
References c, free_sbuf, get_uptime_to_string(), and MBUF_SIZE.
Referenced by tech_checkstatus().
00055 { 00056 static char buf[MBUF_SIZE]; 00057 char *c; 00058 00059 c = get_uptime_to_string(i); 00060 strcpy(buf, c); 00061 free_sbuf(c); 00062 return buf; 00063 }
void zap_unneccessary_stats | ( | void | ) |