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

Method addEphemeralEffects

source/game/StarStatusController.cpp:290–313  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288}
289
290void StatusController::addEphemeralEffects(
291 List<EphemeralStatusEffect> const& effectList, Maybe<EntityId> sourceEntityId) {
292 for (auto const& effect : effectList) {
293 if (auto existingEffect = m_uniqueEffects.ptr(effect.uniqueEffect)) {
294 auto metadata = m_uniqueEffectMetadata.getNetElement(existingEffect->metadataId);
295
296 // If the effect exists and does not have a null duration, then refresh
297 // the
298 // duration to the max
299 if (metadata->duration) {
300 auto newDuration = effect.duration.value(defaultUniqueEffectDuration(effect.uniqueEffect));
301 if (newDuration > *metadata->duration) {
302 // Only overwrite the sourceEntityId if the duration is *extended*
303 metadata->sourceEntityId.set(sourceEntityId);
304 metadata->duration = newDuration;
305 }
306 metadata->maxDuration.set(max(metadata->maxDuration.get(), newDuration));
307 }
308 } else {
309 addUniqueEffect(
310 effect.uniqueEffect, effect.duration.value(defaultUniqueEffectDuration(effect.uniqueEffect)), sourceEntityId);
311 }
312 }
313}
314
315bool StatusController::removeEphemeralEffect(UniqueStatusEffect const& effect) {
316 if (auto uniqueEffect = m_uniqueEffects.ptr(effect)) {

Callers 3

teleportInMethod · 0.45

Calls 5

getNetElementMethod · 0.80
ptrMethod · 0.45
valueMethod · 0.45
setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected