Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
MobEffect.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/container/DenseEnumMap.h"
7#include "mc/deps/core/math/Color.h"
8#include "mc/deps/core/string/HashedString.h"
9#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
10#include "mc/world/effect/MobEffectIds.h"
11
12// auto generated forward declare list
13// clang-format off
14class Actor;
16class Amplifier;
17class Attribute;
18class AttributeBuff;
21class BaseGameVersion;
22class Experiments;
24struct EffectDuration;
25// clang-format on
26
27class MobEffect {
28public:
29 // MobEffect inner types declare
30 // clang-format off
32 // clang-format on
33
34 // MobEffect inner types define
36 public:
37 // member variables
38 // NOLINTBEGIN
39 ::ll::TypedStorage<4, 4, int> mPaddingDuration;
40 ::ll::TypedStorage<4, 4, float> mFactorStart;
41 ::ll::TypedStorage<4, 4, float> mFactorTarget;
42 ::ll::TypedStorage<4, 4, float> mFactorCurrent;
43 ::ll::TypedStorage<8, 64, ::std::function<void(::MobEffect::FactorCalculationData&, ::EffectDuration)>>
44 mUpdateFn;
45 ::ll::TypedStorage<4, 4, int> mTicksActive;
46 ::ll::TypedStorage<4, 4, float> mFactorPreviousFrame;
47 ::ll::TypedStorage<1, 1, bool> mHadEffectLastTick;
48 ::ll::TypedStorage<1, 1, bool> mHadApplied;
49 // NOLINTEND
50 };
51
52 using AttributeBuffPair = ::std::pair<::Attribute const*, ::std::shared_ptr<::AttributeBuff>>;
53
54 using AttributeModPair = ::std::pair<::Attribute const*, ::std::shared_ptr<::AttributeModifier>>;
55
56public:
57 // member variables
58 // NOLINTBEGIN
59 ::ll::TypedStorage<4, 4, uint const> mId;
60 ::ll::TypedStorage<1, 1, bool> mIsHarmful;
61 ::ll::TypedStorage<4, 16, ::mce::Color> mColor;
62 ::ll::TypedStorage<8, 48, ::HashedString> mParticleEffectId;
63 ::ll::TypedStorage<8, 48, ::HashedString> mParticleEffectAmbientId;
64 ::ll::TypedStorage<8, 32, ::std::string> mDescriptionId;
65 ::ll::TypedStorage<4, 4, int> mIcon;
66 ::ll::TypedStorage<4, 4, float> mDurationModifier;
67 ::ll::TypedStorage<1, 1, bool> mIsDisabled;
68 ::ll::TypedStorage<8, 32, ::std::string> mResourceName;
69 ::ll::TypedStorage<8, 32, ::std::string> mIconName;
70 ::ll::TypedStorage<1, 1, bool> mEffectVisible;
71 ::ll::TypedStorage<4, 8, ::std::optional<::SharedTypes::Legacy::LevelSoundEvent>> mOnApplySound;
72 ::ll::TypedStorage<8, 48, ::HashedString> mComponentName;
73 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Amplifier>> mValueAmplifier;
74 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Amplifier>> mDurationAmplifier;
75 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<::Attribute const*, ::std::shared_ptr<::AttributeBuff>>>>
76 mAttributeBuffs;
77 ::ll::TypedStorage<8, 24, ::std::vector<::std::pair<::Attribute const*, ::std::shared_ptr<::AttributeModifier>>>>
78 mAttributeModifiers;
79 ::ll::TypedStorage<8, 96, ::MobEffect::FactorCalculationData> mFactorCalculationData;
80 // NOLINTEND
81
82public:
83 // prevent constructor by default
84 MobEffect();
85
86public:
87 // virtual functions
88 // NOLINTBEGIN
89 virtual ~MobEffect() = default;
90
91 virtual void applyEffects(::Actor& target, ::EffectDuration durationTicks, int amplification) const;
92
93 virtual void removeEffects(::BaseAttributeMap& attributeMapToRemoveFrom) const;
94
95 virtual void onEffectExpired(::Actor& target) const;
96
97 virtual void onActorDied(::Actor& target, int amplifier) const;
98
99 virtual void onActorHurt(::Actor& target, int amplifier, ::ActorDamageSource const& source, float damage) const;
100
101 virtual void
102 applyInstantaneousEffect(::Actor* source, ::Actor* owner, ::Actor* target, int amplification, float scale) const;
103
104 virtual bool isInstantaneous() const;
105
106 virtual float getAttributeModifierValue(int amplifier, ::AttributeModifier const& modifier) const;
107 // NOLINTEND
108
109public:
110 // member functions
111 // NOLINTBEGIN
112 MCNAPI MobEffect(
113 uint id,
114 ::std::string const& resourceName,
115 ::std::string const& locName,
116 bool isHarmful,
117 int color,
118 int icon,
119 ::std::string const& iconName,
120 bool drawParticles
121 );
122
123 MCNAPI ::TemporalAttributeBuff
124 _createTemporalBuff(::AttributeBuff const& baseBuff, ::EffectDuration duration, int amplification) const;
125
126 MCNAPI void _setParticleEffectIds(char const* particleEffectId, char const* particleEffectAmbientId);
127
128 MCNAPI void addAttributeBuff(::Attribute const& attribute, ::std::shared_ptr<::AttributeBuff> buff);
129
130 MCNAPI void addAttributeModifier(::Attribute const& attribute, ::std::shared_ptr<::AttributeModifier> modifier);
131
132 MCNAPI void applyModsAndBuffs(
133 ::BaseAttributeMap& attributeMapToRemoveFrom,
134 ::EffectDuration durationTicks,
135 int amplification
136 ) const;
137
139 ::BaseAttributeMap& attributeMapToRemoveFrom,
140 ::EffectDuration durationTicks,
141 int amplification
142 ) const;
143 // NOLINTEND
144
145public:
146 // static functions
147 // NOLINTBEGIN
148 MCAPI static ::MobEffect const* getByName(::std::string const& name);
149
150 MCAPI static ::std::string getNameById(uint effectId);
151
152 MCNAPI static void initEffects(::BaseGameVersion const& baseGameVersion, ::Experiments const& experiments);
153 // NOLINTEND
154
155public:
156 // static variables
157 // NOLINTBEGIN
158 MCNAPI static ::mce::Color const& DEFAULT_COLOR();
159
160 MCAPI static ::Bedrock::DenseEnumMap<::MobEffectIds, ::std::unique_ptr<::MobEffect>, 39>& mMobEffects();
161 // NOLINTEND
162
163public:
164 // constructor thunks
165 // NOLINTBEGIN
166 MCNAPI void* $ctor(
167 uint id,
168 ::std::string const& resourceName,
169 ::std::string const& locName,
170 bool isHarmful,
171 int color,
172 int icon,
173 ::std::string const& iconName,
174 bool drawParticles
175 );
176 // NOLINTEND
177
178public:
179 // virtual function thunks
180 // NOLINTBEGIN
181 MCNAPI void $applyEffects(::Actor& target, ::EffectDuration durationTicks, int amplification) const;
182
183 MCNAPI void $removeEffects(::BaseAttributeMap& attributeMapToRemoveFrom) const;
184
185 MCNAPI void $onEffectExpired(::Actor& target) const;
186
187 MCNAPI void $onActorDied(::Actor& target, int amplifier) const;
188
189 MCNAPI void $onActorHurt(::Actor& target, int amplifier, ::ActorDamageSource const& source, float damage) const;
190
191 MCAPI void
192 $applyInstantaneousEffect(::Actor* source, ::Actor* owner, ::Actor* target, int amplification, float scale) const;
193
194 MCNAPI bool $isInstantaneous() const;
195
196 MCNAPI float $getAttributeModifierValue(int amplifier, ::AttributeModifier const& modifier) const;
197
198
199 // NOLINTEND
200};
Definition ActorDamageSource.h:18
Definition Actor.h:116
Definition Amplifier.h:5
Definition AttributeBuff.h:16
Definition AttributeModifier.h:10
Definition Attribute.h:9
Definition BaseAttributeMap.h:21
Definition BaseGameVersion.h:8
Definition Experiments.h:14
MCAPI void addAttributeBuff(::Attribute const &attribute, ::std::shared_ptr<::AttributeBuff > buff)
MCAPI void _setParticleEffectIds(char const *particleEffectId, char const *particleEffectAmbientId)
MCAPI void updateModsAndBuffs(::BaseAttributeMap &attributeMapToRemoveFrom, ::EffectDuration durationTicks, int amplification) const
MCAPI void * $ctor(uint id, ::std::string const &resourceName, ::std::string const &locName, bool isHarmful, int color, int icon, ::std::string const &iconName, bool drawParticles)
MCAPI bool $isInstantaneous() const
MCAPI void $removeEffects(::BaseAttributeMap &attributeMapToRemoveFrom) const
MCAPI void $applyEffects(::Actor &target, ::EffectDuration durationTicks, int amplification) const
MCAPI void $onEffectExpired(::Actor &target) const
MCAPI void $onActorHurt(::Actor &target, int amplifier, ::ActorDamageSource const &source, float damage) const
MCAPI MobEffect(uint id, ::std::string const &resourceName, ::std::string const &locName, bool isHarmful, int color, int icon, ::std::string const &iconName, bool drawParticles)
MCAPI void $onActorDied(::Actor &target, int amplifier) const
MCAPI float $getAttributeModifierValue(int amplifier, ::AttributeModifier const &modifier) const
MCAPI void addAttributeModifier(::Attribute const &attribute, ::std::shared_ptr<::AttributeModifier > modifier)
MCAPI::TemporalAttributeBuff _createTemporalBuff(::AttributeBuff const &baseBuff, ::EffectDuration duration, int amplification) const
MCAPI void applyModsAndBuffs(::BaseAttributeMap &attributeMapToRemoveFrom, ::EffectDuration durationTicks, int amplification) const
static MCAPI void initEffects(::BaseGameVersion const &baseGameVersion, ::Experiments const &experiments)
static MCAPI ::mce::Color const & DEFAULT_COLOR()
Definition TemporalAttributeBuff.h:14
Definition EffectDuration.h:5
Definition MobEffect.h:35