Untitled diff

Created Diff never expires
1 removal
29 lines
1 addition
29 lines
bool Weapon::useFist(Player* player, Creature* target)
bool Weapon::useFist(Player* player, Creature* target)
{
{
if (!Position::areInRange<1, 1>(player->getPosition(), target->getPosition())) {
if (!Position::areInRange<1, 1>(player->getPosition(), target->getPosition())) {
return false;
return false;
}
}


float attackFactor = player->getAttackFactor();
float attackFactor = player->getAttackFactor();
int32_t attackSkill = player->getSkillLevel(SKILL_FIST);
int32_t attackSkill = player->getSkillLevel(SKILL_FIST);
int32_t attackValue = 7;
int32_t attackValue = 7;


int32_t maxDamage = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor);
int32_t maxDamage = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor, player->getPassiveDamageBonus());


CombatParams params;
CombatParams params;
params.combatType = COMBAT_PHYSICALDAMAGE;
params.combatType = COMBAT_PHYSICALDAMAGE;
params.blockedByArmor = true;
params.blockedByArmor = true;
params.blockedByShield = true;
params.blockedByShield = true;


CombatDamage damage;
CombatDamage damage;
damage.origin = ORIGIN_MELEE;
damage.origin = ORIGIN_MELEE;
damage.primary.type = params.combatType;
damage.primary.type = params.combatType;
damage.primary.value = -normal_random(0, maxDamage);
damage.primary.value = -normal_random(0, maxDamage);


Combat::doCombatHealth(player, target, damage, params);
Combat::doCombatHealth(player, target, damage, params);
if (!player->hasFlag(PlayerFlag_NotGainSkill) && player->getAddAttackSkill()) {
if (!player->hasFlag(PlayerFlag_NotGainSkill) && player->getAddAttackSkill()) {
player->addSkillAdvance(SKILL_FIST, 1);
player->addSkillAdvance(SKILL_FIST, 1);
}
}


return true;
return true;
}
}