diff --git a/Adventures in Lestoria/GhostOfPirateCaptain.cpp b/Adventures in Lestoria/GhostOfPirateCaptain.cpp index c1ada42a..fd6a00e8 100644 --- a/Adventures in Lestoria/GhostOfPirateCaptain.cpp +++ b/Adventures in Lestoria/GhostOfPirateCaptain.cpp @@ -234,20 +234,25 @@ void Monster::STRATEGY::GHOST_OF_PIRATE_CAPTAIN(Monster&m,float fElapsedTime,std m.F(A::TOSS_COIN_WAIT_TIMER)-=fElapsedTime; if(m.F(A::TOSS_COIN_WAIT_TIMER)<=0.f){ const float curseDmgPctOverTime{ConfigFloat("Curse Damage")}; - game->GetPlayer()->AddBuff(BuffType::PIRATE_GHOST_CAPTAIN_PRECURSE,ConfigFloat("Curse Damage Wait Time"),ceil(game->GetPlayer()->GetMaxHealth()*ConfigFloat("Curse Damage")/100.f)+1,[curseDmgPctOverTime](Player*attachedTarget,Buff&b){ - attachedTarget->AddBuff(BuffType::PIRATE_GHOST_CAPTAIN_CURSE_DOT,BuffRestorationType::OVER_TIME,BuffOverTimeType::HP_PCT_DAMAGE_OVER_TIME,INFINITY,curseDmgPctOverTime,1.f); - }); - game->SpawnMonster(m.V(A::TOSS_COIN_TARGET),MONSTER_DATA["Pirate's Coin"],m.OnUpperLevel()); + const bool OnLastCursePhase{Config("Curse Thresholds").GetValueCount()==m.I(A::CURSE_THRESHOLD_ARRAY_IND)}; + if(OnLastCursePhase){ //Permanent Curse for the rest of the fight. + game->GetPlayer()->AddBuff(BuffType::PIRATE_GHOST_CAPTAIN_CURSE_DOT,BuffRestorationType::OVER_TIME,BuffOverTimeType::HP_PCT_DAMAGE_OVER_TIME,INFINITY,curseDmgPctOverTime,1.f); + }else{ + game->GetPlayer()->AddBuff(BuffType::PIRATE_GHOST_CAPTAIN_PRECURSE,ConfigFloat("Curse Damage Wait Time"),ceil(game->GetPlayer()->GetMaxHealth()*ConfigFloat("Curse Damage")/100.f)+1,[curseDmgPctOverTime](Player*attachedTarget,Buff&b){ + attachedTarget->AddBuff(BuffType::PIRATE_GHOST_CAPTAIN_CURSE_DOT,BuffRestorationType::OVER_TIME,BuffOverTimeType::HP_PCT_DAMAGE_OVER_TIME,INFINITY,curseDmgPctOverTime,1.f); + }); + game->SpawnMonster(m.V(A::TOSS_COIN_TARGET),MONSTER_DATA["Pirate's Coin"],m.OnUpperLevel()); + } m.SetupAfterImage(); m.afterImagePos=m.GetPos(); m.SetPos(m.V(A::HIDING_POS)); m.SetVelocity({}); m.arrowIndicator=false; //While the boss is hiding, the indicator will not show up. - m.SetStrategyOnHitFunction([&m,&strategy](const HurtDamageInfo damageData,Monster&monster,const StrategyName&strategyName)->void{ + m.SetStrategyOnHitFunction([&m,&OnLastCursePhase](const HurtDamageInfo damageData,Monster&monster,const StrategyName&strategyName)->void{ m.SetPhase(strategyName,NORMAL); m.arrowIndicator=true; m.SetStrategyOnHitFunction({}); - if(Config("Curse Thresholds").GetValueCount()==m.I(A::CURSE_THRESHOLD_ARRAY_IND)){ + if(OnLastCursePhase){ const std::string_view PIRATES_TREASURE{"Pirate's Treasure"}; for(std::shared_ptr&m:MONSTER_LIST |std::views::filter([&PIRATES_TREASURE](std::shared_ptr&m){return m->GetStrategyName()==PIRATES_TREASURE;})){ diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h index d6138cff..4cc8e345 100644 --- a/Adventures in Lestoria/Version.h +++ b/Adventures in Lestoria/Version.h @@ -39,7 +39,7 @@ All rights reserved. #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_PATCH 0 -#define VERSION_BUILD 12249 +#define VERSION_BUILD 12250 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe index b58865b3..be1ef79a 100644 Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ