mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-04-30 17:49:20 +02:00
temporary fix for poison condition to not apply when poof or armor hit however it should apply when armor hit
This commit is contained in:
parent
eda0484268
commit
d9686f1d07
@ -432,7 +432,7 @@ CallBack* Combat::getCallback(CallBackParam_t key)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
||||||
{
|
{
|
||||||
assert(data);
|
assert(data);
|
||||||
CombatDamage damage = *data;
|
CombatDamage damage = *data;
|
||||||
@ -449,16 +449,18 @@ void Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatPa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (g_game.combatBlockHit(damage, caster, target, params.blockedByShield, params.blockedByArmor, params.itemId != 0)) {
|
if (g_game.combatBlockHit(damage, caster, target, params.blockedByShield, params.blockedByArmor, params.itemId != 0)) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_game.combatChangeHealth(caster, target, damage)) {
|
if (g_game.combatChangeHealth(caster, target, damage)) {
|
||||||
CombatConditionFunc(caster, target, params, &damage);
|
CombatConditionFunc(caster, target, params, &damage);
|
||||||
CombatDispelFunc(caster, target, params, nullptr);
|
CombatDispelFunc(caster, target, params, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
||||||
{
|
{
|
||||||
assert(data);
|
assert(data);
|
||||||
CombatDamage damage = *data;
|
CombatDamage damage = *data;
|
||||||
@ -477,12 +479,14 @@ void Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatPara
|
|||||||
CombatConditionFunc(caster, target, params, nullptr);
|
CombatConditionFunc(caster, target, params, nullptr);
|
||||||
CombatDispelFunc(caster, target, params, nullptr);
|
CombatDispelFunc(caster, target, params, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::CombatConditionFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
bool Combat::CombatConditionFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data)
|
||||||
{
|
{
|
||||||
if (params.origin == ORIGIN_MELEE && data && data->value == 0) {
|
if (params.origin == ORIGIN_MELEE && data && data->value == 0) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& condition : params.conditionList) {
|
for (const auto& condition : params.conditionList) {
|
||||||
@ -496,17 +500,23 @@ void Combat::CombatConditionFunc(Creature* caster, Creature* target, const Comba
|
|||||||
target->addCombatCondition(conditionCopy);
|
target->addCombatCondition(conditionCopy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::CombatDispelFunc(Creature*, Creature* target, const CombatParams& params, CombatDamage*)
|
bool Combat::CombatDispelFunc(Creature*, Creature* target, const CombatParams& params, CombatDamage*)
|
||||||
{
|
{
|
||||||
target->removeCombatCondition(params.dispelType);
|
target->removeCombatCondition(params.dispelType);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::CombatNullFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage*)
|
bool Combat::CombatNullFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage*)
|
||||||
{
|
{
|
||||||
CombatConditionFunc(caster, target, params, nullptr);
|
CombatConditionFunc(caster, target, params, nullptr);
|
||||||
CombatDispelFunc(caster, target, params, nullptr);
|
CombatDispelFunc(caster, target, params, nullptr);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::combatTileEffects(const SpectatorVec& list, Creature* caster, Tile* tile, const CombatParams& params)
|
void Combat::combatTileEffects(const SpectatorVec& list, Creature* caster, Tile* tile, const CombatParams& params)
|
||||||
@ -1295,7 +1305,7 @@ bool Combat::doCombatHealth(Creature* caster, Creature* target, CombatDamage& da
|
|||||||
addDistanceEffect(caster->getPosition(), target->getPosition(), params.distanceEffect);
|
addDistanceEffect(caster->getPosition(), target->getPosition(), params.distanceEffect);
|
||||||
}
|
}
|
||||||
|
|
||||||
CombatHealthFunc(caster, target, params, &damage);
|
canCombat = CombatHealthFunc(caster, target, params, &damage);
|
||||||
if (params.targetCallback) {
|
if (params.targetCallback) {
|
||||||
params.targetCallback->onTargetCombat(caster, target);
|
params.targetCallback->onTargetCombat(caster, target);
|
||||||
}
|
}
|
||||||
|
12
src/combat.h
12
src/combat.h
@ -117,7 +117,7 @@ struct DunkenImpact : Impact
|
|||||||
void handleCreature(Creature* target) final;
|
void handleCreature(Creature* target) final;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void(*COMBATFUNC)(Creature*, Creature*, const CombatParams&, CombatDamage*);
|
typedef bool(*COMBATFUNC)(Creature*, Creature*, const CombatParams&, CombatDamage*);
|
||||||
|
|
||||||
class MatrixArea
|
class MatrixArea
|
||||||
{
|
{
|
||||||
@ -352,11 +352,11 @@ class Combat
|
|||||||
|
|
||||||
static void CombatFunc(Creature* caster, const Position& pos, const AreaCombat* area, const CombatParams& params, COMBATFUNC func, CombatDamage* data);
|
static void CombatFunc(Creature* caster, const Position& pos, const AreaCombat* area, const CombatParams& params, COMBATFUNC func, CombatDamage* data);
|
||||||
|
|
||||||
static void CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
static bool CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
||||||
static void CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* damage);
|
static bool CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* damage);
|
||||||
static void CombatConditionFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
static bool CombatConditionFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
||||||
static void CombatDispelFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
static bool CombatDispelFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
||||||
static void CombatNullFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
static bool CombatNullFunc(Creature* caster, Creature* target, const CombatParams& params, CombatDamage* data);
|
||||||
|
|
||||||
static void combatTileEffects(const SpectatorVec& list, Creature* caster, Tile* tile, const CombatParams& params);
|
static void combatTileEffects(const SpectatorVec& list, Creature* caster, Tile* tile, const CombatParams& params);
|
||||||
CombatDamage getCombatDamage(Creature* creature) const;
|
CombatDamage getCombatDamage(Creature* creature) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user