int npc::average_damage_dealt() { int ret = base_damage(); ret += weapon.damage_cut() + weapon.damage_bash() / 2; ret *= (base_to_hit() + weapon.type->m_to_hit); ret /= 15; return ret; }
int player::hit_roll() { int numdice = base_to_hit() + weapon.type->m_to_hit; int sides = 10 - encumb(bp_torso); int best_bonus = 0; if (sides < 2) sides = 2; // Are we unarmed? if (unarmed_attack()) { best_bonus = sklevel[sk_unarmed]; if (sklevel[sk_unarmed] > 4) best_bonus += sklevel[sk_unarmed] - 2; // Extra bonus for high levels } // Using a bashing weapon? if (weapon.is_bashing_weapon()) { int bash_bonus = int(sklevel[sk_bashing] / 3); if (bash_bonus > best_bonus) best_bonus = bash_bonus; } // Using a cutting weapon? if (weapon.is_cutting_weapon()) { int cut_bonus = int(sklevel[sk_cutting] / 2); if (cut_bonus > best_bonus) best_bonus = cut_bonus; } // Using a spear? if (weapon.has_weapon_flag(WF_SPEAR) || weapon.has_weapon_flag(WF_STAB)) { int stab_bonus = int(sklevel[sk_stabbing] / 2); if (stab_bonus > best_bonus) best_bonus = stab_bonus; } numdice += best_bonus; if (has_trait(PF_DRUNKEN)) { if (unarmed_attack()) numdice += rng(0, 1) + int(disease_level(DI_DRUNK) / 300); else numdice += int(disease_level(DI_DRUNK) / 400); } if (numdice < 1) { numdice = 1; sides = 8; } return dice(numdice, sides); }
int player::hit_roll() { int stat = dex_cur; // Some martial arts use something else to determine hits! if(weapon.typeId() == "style_tiger"){ stat = (str_cur * 2 + dex_cur) / 3; } else if(weapon.typeId() == "style_leopard"){ stat = (per_cur + int_cur + dex_cur * 2) / 4; } else if(weapon.typeId() == "style_snake"){ stat = (per_cur + dex_cur) / 2; } int numdice = base_to_hit(stat) + weapon.type->m_to_hit + disease_intensity(DI_ATTACK_BOOST); int sides = 10 - encumb(bp_torso); int best_bonus = 0; if (sides < 2) sides = 2; // Are we unarmed? if (unarmed_attack()) { best_bonus = skillLevel("unarmed"); if (skillLevel("unarmed") > 4) best_bonus += skillLevel("unarmed") - 4; // Extra bonus for high levels } // Using a bashing weapon? if (weapon.is_bashing_weapon()) { int bash_bonus = int(skillLevel("bashing") / 3); if (bash_bonus > best_bonus) best_bonus = bash_bonus; } // Using a cutting weapon? if (weapon.is_cutting_weapon()) { int cut_bonus = int(skillLevel("cutting") / 2); if (cut_bonus > best_bonus) best_bonus = cut_bonus; } // Using a spear? if (weapon.has_flag(IF_SPEAR) || weapon.has_flag(IF_STAB)) { int stab_bonus = int(skillLevel("stabbing") / 2); if (stab_bonus > best_bonus) best_bonus = stab_bonus; } numdice += best_bonus; // Use whichever bonus is best. // Drunken master makes us hit better if (has_trait(PF_DRUNKEN)) { if (unarmed_attack()) numdice += int(disease_level(DI_DRUNK) / 300); else numdice += int(disease_level(DI_DRUNK) / 400); } if (numdice < 1) { numdice = 1; sides = 8 - encumb(bp_torso); } return dice(numdice, sides); }