Skip to content

Commit

Permalink
Merge pull request #6949 from LSB-jamesbradleym/statuseffectbysource-…
Browse files Browse the repository at this point in the history
…baseentity

add getStatusEffectBysource to lua_basenetity
  • Loading branch information
zach2good authored Feb 6, 2025
2 parents c88bb0f + 0d66eb8 commit 1aee157
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/map/lua/lua_baseentity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13308,6 +13308,40 @@ std::optional<CLuaStatusEffect> CLuaBaseEntity::getStatusEffect(uint16 StatusID,
return std::nullopt;
}

/************************************************************************
* Function: getStatusEffectBySource()
* Purpose : Returns the Object of a specified Status ID by source type and param
* Example : local aiming_gloves_enchantment = target:getStatusEffectBySource(xi.effect.ENCHANTMENT, xi.effectSourceType.EQUIPPED_ITEM, xi.item.AIMING_GLOVES)
* Notes :
************************************************************************/

std::optional<CLuaStatusEffect> CLuaBaseEntity::getStatusEffectBySource(uint16 StatusID, EffectSourceType SourceType, uint16 SourceTypeParam)
{
if (m_PBaseEntity->objtype == TYPE_NPC)
{
ShowWarning("Invalid Entity (NPC: %s) calling function.", m_PBaseEntity->getName());
return std::nullopt;
}

auto* PBattleEntity = dynamic_cast<CBattleEntity*>(m_PBaseEntity);
if (!PBattleEntity)
{
return std::nullopt;
}

CStatusEffect* PStatusEffect = nullptr;
auto effect_StatusID = static_cast<EFFECT>(StatusID);

PStatusEffect = PBattleEntity->StatusEffectContainer->GetStatusEffectBySource(effect_StatusID, SourceType, SourceTypeParam);

if (PStatusEffect)
{
return std::optional<CLuaStatusEffect>(PStatusEffect);
}

return std::nullopt;
}

/************************************************************************
* Function: getStatusEffects()
* Purpose : Returns a Lua table of all Status Effects an Entity has
Expand Down Expand Up @@ -19451,6 +19485,7 @@ void CLuaBaseEntity::Register()
SOL_REGISTER("addStatusEffect", CLuaBaseEntity::addStatusEffect);
SOL_REGISTER("addStatusEffectEx", CLuaBaseEntity::addStatusEffectEx);
SOL_REGISTER("getStatusEffect", CLuaBaseEntity::getStatusEffect);
SOL_REGISTER("getStatusEffectBySource", CLuaBaseEntity::getStatusEffectBySource);
SOL_REGISTER("getStatusEffects", CLuaBaseEntity::getStatusEffects);
SOL_REGISTER("getStatusEffectElement", CLuaBaseEntity::getStatusEffectElement);
SOL_REGISTER("canGainStatusEffect", CLuaBaseEntity::canGainStatusEffect);
Expand Down
1 change: 1 addition & 0 deletions src/map/lua/lua_baseentity.h
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,7 @@ class CLuaBaseEntity
bool addStatusEffect(sol::variadic_args va);
bool addStatusEffectEx(sol::variadic_args va);
auto getStatusEffect(uint16 StatusID, sol::object const& SubType, sol::object const& SourceType, sol::object const& SourceTypeParam) -> std::optional<CLuaStatusEffect>;
auto getStatusEffectBySource(uint16 StatusID, EffectSourceType SourceType, uint16 SourceTypeParam) -> std::optional<CLuaStatusEffect>;
auto getStatusEffects() -> sol::table;
int16 getStatusEffectElement(uint16 statusId);
bool canGainStatusEffect(uint16 effect, sol::object const& powerObj);
Expand Down

0 comments on commit 1aee157

Please sign in to comment.