1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-28 20:27:46 +00:00

status effect: heal receive multiplier

This commit is contained in:
collett 2020-01-10 02:17:41 +09:00
parent e30ec77091
commit b744941620
3 changed files with 26 additions and 4 deletions

View file

@ -27,6 +27,7 @@ namespace Sapphire::World::Action
const uint32_t EffectTypeDamageReceiveMultiplier = 2; const uint32_t EffectTypeDamageReceiveMultiplier = 2;
const uint32_t EffectTypeHot = 3; const uint32_t EffectTypeHot = 3;
const uint32_t EffectTypeDot = 4; const uint32_t EffectTypeDot = 4;
const uint32_t EffectTypeHealReceiveMultiplier = 5;
struct StatusEffectEntry struct StatusEffectEntry
{ {

View file

@ -74,8 +74,9 @@ ActionLut::Lut ActionLut::m_actionLut =
//has damage: potency 350, combo potency 0, directional potency 0 //has damage: potency 350, combo potency 0, directional potency 0
{ 7384, { 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { 7384, { 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
//Requiescat, レクイエスカット //Requiescat, レクイエスカット
//has damage: potency 550, combo potency 0, directional potency 0
//applies to self: Requiescat, レクイエスカット, duration 12000, param 0 //applies to self: Requiescat, レクイエスカット, duration 12000, param 0
{ 7383, { 0, 0, 0, 0, 0, 1368, 12000, 0, 0, 0, 0, 0, 0 } }, { 7383, { 550, 0, 0, 0, 0, 1368, 12000, 0, 0, 0, 0, 0, 0 } },
//Passage of Arms, パッセージ・オブ・アームズ //Passage of Arms, パッセージ・オブ・アームズ
//applies to self: Passage of Arms, パッセージ・オブ・アームズ, duration 18000, param 0 //applies to self: Passage of Arms, パッセージ・オブ・アームズ, duration 18000, param 0
{ 7385, { 0, 0, 0, 0, 0, 1175, 18000, 0, 0, 0, 0, 0, 0 } }, { 7385, { 0, 0, 0, 0, 0, 1175, 18000, 0, 0, 0, 0, 0, 0 } },
@ -2157,6 +2158,11 @@ ActionLut::StatusEffectTable ActionLut::m_statusEffectTable =
//more than 1 effect is found //more than 1 effect is found
//Demolish, 破砕拳: EffectTypeDot, physical, potency 65 //Demolish, 破砕拳: EffectTypeDot, physical, potency 65
//{ 246, { 4, 1, 65, 0, 0 } }, //{ 246, { 4, 1, 65, 0, 0 } },
//Mantra, マントラ: EffectTypeHealReceiveMultiplier, 10%
{ 102, { 5, 0, 10, 0, 0 } },
//more than 1 effect is found
//Mantra, マントラ: EffectTypeHealReceiveMultiplier, 20%
//{ 102, { 5, 0, 20, 0, 0 } },
//Fists of Fire, 紅蓮の構え: EffectTypeDamageMultiplier, all, 10% //Fists of Fire, 紅蓮の構え: EffectTypeDamageMultiplier, all, 10%
{ 103, { 1, 0, 10, 0, 0 } }, { 103, { 1, 0, 10, 0, 0 } },
//Earth's Reply, 金剛の決意: EffectTypeDamageReceiveMultiplier, all, -10% //Earth's Reply, 金剛の決意: EffectTypeDamageReceiveMultiplier, all, -10%
@ -2246,6 +2252,8 @@ ActionLut::StatusEffectTable ActionLut::m_statusEffectTable =
//more than 1 effect is found //more than 1 effect is found
//Stormbite, ストームバイト: EffectTypeDot, physical, potency 60 //Stormbite, ストームバイト: EffectTypeDot, physical, potency 60
//{ 1201, { 4, 1, 60, 0, 0 } }, //{ 1201, { 4, 1, 60, 0, 0 } },
//Nature's Minne, 地神のミンネ: EffectTypeHealReceiveMultiplier, 20%
{ 1202, { 5, 0, 20, 0, 0 } },
//Tactician, タクティシャン: EffectTypeDamageReceiveMultiplier, all, -10% //Tactician, タクティシャン: EffectTypeDamageReceiveMultiplier, all, -10%
{ 1951, { 2, 0, -10, 0, 0 } }, { 1951, { 2, 0, -10, 0, 0 } },
//Bioblaster, バイオブラスト: EffectTypeDot, physical, potency 60 //Bioblaster, バイオブラスト: EffectTypeDot, physical, potency 60
@ -2485,6 +2493,8 @@ ActionLut::StatusEffectTable ActionLut::m_statusEffectTable =
{ 263, { 2, 0, -15, 0, 0 } }, { 263, { 2, 0, -15, 0, 0 } },
//Infernal Fetters, 炎獄の鎖: EffectTypeDamageMultiplier, all, -10% //Infernal Fetters, 炎獄の鎖: EffectTypeDamageMultiplier, all, -10%
{ 377, { 1, 0, -10, 0, 0 } }, { 377, { 1, 0, -10, 0, 0 } },
//Infirmity, 虚弱: EffectTypeHealReceiveMultiplier, -50%
{ 172, { 5, 0, -50, 0, 0 } },
//Disseminate, ディスセミネイト: EffectTypeDamageReceiveMultiplier, all, 25% //Disseminate, ディスセミネイト: EffectTypeDamageReceiveMultiplier, all, 25%
{ 348, { 2, 0, 25, 0, 0 } }, { 348, { 2, 0, 25, 0, 0 } },
//Damage Up, ダメージ上昇: EffectTypeDamageMultiplier, all, 25% //Damage Up, ダメージ上昇: EffectTypeDamageMultiplier, all, 25%
@ -2496,8 +2506,11 @@ ActionLut::StatusEffectTable ActionLut::m_statusEffectTable =
//{ 443, { 1, 0, 25, 0, 0 } }, //{ 443, { 1, 0, 25, 0, 0 } },
//Frost Blade, 凍てつく剣: EffectTypeDamageReceiveMultiplier, all, -10% //Frost Blade, 凍てつく剣: EffectTypeDamageReceiveMultiplier, all, -10%
{ 526, { 2, 0, -10, 0, 0 } }, { 526, { 2, 0, -10, 0, 0 } },
//Bluefire, 青碧の炎: EffectTypeHealReceiveMultiplier, -80%
{ 591, { 5, 0, -80, 0, 0 } },
//more than 1 effect is found
//Bluefire, 青碧の炎: EffectTypeDamageMultiplier, all, -90% //Bluefire, 青碧の炎: EffectTypeDamageMultiplier, all, -90%
{ 591, { 1, 0, -90, 0, 0 } }, //{ 591, { 1, 0, -90, 0, 0 } },
//Minimum, ミニマム: EffectTypeDamageMultiplier, all, -50% //Minimum, ミニマム: EffectTypeDamageMultiplier, all, -50%
{ 438, { 1, 0, -50, 0, 0 } }, { 438, { 1, 0, -50, 0, 0 } },
//more than 1 effect is found //more than 1 effect is found

View file

@ -638,8 +638,16 @@ float CalcStats::applyDamageReceiveMultiplier( const Sapphire::Entity::Chara& ch
float CalcStats::applyHealingReceiveMultiplier( const Sapphire::Entity::Chara& chara, float originalHeal, int8_t healType ) float CalcStats::applyHealingReceiveMultiplier( const Sapphire::Entity::Chara& chara, float originalHeal, int8_t healType )
{ {
// todo float heal = originalHeal;
return originalHeal; for( auto const& entry : chara.getStatusEffectMap() )
{
auto status = entry.second;
auto effectEntry = status->getEffectEntry();
if( effectEntry.effectType != Sapphire::World::Action::EffectTypeHealReceiveMultiplier )
continue;
heal *= ( 1.0f + ( effectEntry.effectValue2 / 100.0f ) );
}
return heal;
} }
std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActionHealing( const Sapphire::Entity::Chara& chara, const Sapphire::World::Action::Action& action, uint32_t ptc, float wepDmg ) std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActionHealing( const Sapphire::Entity::Chara& chara, const Sapphire::World::Action::Action& action, uint32_t ptc, float wepDmg )