TFS 0.4
combat.cpp
procure esta linha.
bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
Basta substituir todo o código aqui.
bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
int32_t change = 0;
if (Combat2Var* var = (Combat2Var*)data)
{
change = var->change;
if (!change)
change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
}
if (g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor))
return false;
if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
change = change / 2;
std::string value;
caster->getStorage("14335", value);
int32_t plus = (int32_t)(atoi(value.c_str()));
double resetpower = plus * 2.5;
if (plus > 0 && params.combatType != COMBAT_HEALING) {
double changeModifier = 1.0 + (resetpower / 100.0);
change = (int32_t)std::ceil(change * changeModifier);
}
if (!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color))
return false;
CombatConditionFunc(caster, target, params, NULL);
CombatDispelFunc(caster, target, params, NULL);
return true;
}
mais uma vez procure essa linha.
bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
Basta substituir todo o código aqui.
bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
int32_t change = 0;
if (Combat2Var* var = (Combat2Var*)data)
{
change = var->change;
if (!change)
change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
}
if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
change = change / 2;
std::string value;
caster->getStorage("14335", value);
int32_t plus = (int32_t)(atoi(value.c_str()));
double resetpower = plus * 2.5;
if (plus > 0 && params.combatType != COMBAT_HEALING) {
double changeModifier = 1.0 + (resetpower / 100.0);
change = (int32_t)std::ceil(change * changeModifier);
}
if (!g_game.combatChangeMana(caster, target, change))
return false;
CombatConditionFunc(caster, target, params, NULL);
CombatDispelFunc(caster, target, params, NULL);
return true;
}
Fiz também para TFS 0.4. Ambos têm códigos diferentes na source, mas estão funcionando normalmente.