MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / addUniqueEffect

Method addUniqueEffect

source/game/StarStatusController.cpp:711–740  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

709}
710
711bool StatusController::addUniqueEffect(
712 UniqueStatusEffect const& effect, Maybe<float> duration, Maybe<EntityId> sourceEntityId) {
713 auto statusEffectDatabase = Root::singleton().statusEffectDatabase();
714 if (statusEffectDatabase->isUniqueEffect(effect)) {
715 auto effectConfig = statusEffectDatabase->uniqueEffectConfig(effect);
716 if ((duration && statPositive("statusImmunity")) || (effectConfig.blockingStat && statPositive(*effectConfig.blockingStat)))
717 return false;
718
719 auto& uniqueEffect = m_uniqueEffects[effect];
720 uniqueEffect.effectConfig = effectConfig;
721 uniqueEffect.script.setScripts(uniqueEffect.effectConfig.scripts);
722 uniqueEffect.script.setUpdateDelta(uniqueEffect.effectConfig.scriptDelta);
723
724 uniqueEffect.metadataId =
725 m_uniqueEffectMetadata.addNetElement(make_shared<UniqueEffectMetadata>(effect, duration, sourceEntityId));
726
727 uniqueEffect.animatorId = UniqueEffectMetadataGroup::NullElementId;
728 if (uniqueEffect.effectConfig.animationConfig)
729 uniqueEffect.animatorId =
730 m_effectAnimators.addNetElement(make_shared<EffectAnimator>(uniqueEffect.effectConfig.animationConfig));
731
732 if (m_parentEntity)
733 initUniqueEffectScript(uniqueEffect);
734
735 return true;
736 } else {
737 Logger::warn("Unique status effect '{}' not found in status effect database", effect);
738 return false;
739 }
740}
741
742void StatusController::removeUniqueEffect(UniqueStatusEffect const& effect) {
743 auto& uniqueEffect = m_uniqueEffects[effect];

Callers

nothing calls this directly

Calls 7

singletonClass · 0.85
statusEffectDatabaseMethod · 0.80
isUniqueEffectMethod · 0.80
uniqueEffectConfigMethod · 0.80
setScriptsMethod · 0.80
setUpdateDeltaMethod · 0.80
addNetElementMethod · 0.45

Tested by

no test coverage detected