the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2using namespace std;
3
4#include "AttributeModifier.h"
5
6class Mob;
7class MobEffectInstance;
8class Attribute;
9
10class MobEffect
11{
12public:
13 enum EMobEffectIcon
14 {
15 e_MobEffectIcon_None,
16 e_MobEffectIcon_Blindness,
17 e_MobEffectIcon_FireResistance,
18 e_MobEffectIcon_Haste,
19 e_MobEffectIcon_Hunger,
20 e_MobEffectIcon_Invisiblity,
21 e_MobEffectIcon_JumpBoost,
22 e_MobEffectIcon_MiningFatigue,
23 e_MobEffectIcon_Nausea,
24 e_MobEffectIcon_NightVision,
25 e_MobEffectIcon_Poison,
26 e_MobEffectIcon_Regeneration,
27 e_MobEffectIcon_Resistance,
28 e_MobEffectIcon_Slowness,
29 e_MobEffectIcon_Speed,
30 e_MobEffectIcon_Strength,
31 e_MobEffectIcon_WaterBreathing,
32 e_MobEffectIcon_Weakness,
33 e_MobEffectIcon_Wither,
34 e_MobEffectIcon_HealthBoost,
35 e_MobEffectIcon_Absorption,
36
37 e_MobEffectIcon_COUNT,
38 };
39
40 static const int NUM_EFFECTS = 32;
41 static MobEffect *effects[NUM_EFFECTS];
42
43 static MobEffect *voidEffect;
44 static MobEffect *movementSpeed;
45 static MobEffect *movementSlowdown;
46 static MobEffect *digSpeed;
47 static MobEffect *digSlowdown;
48 static MobEffect *damageBoost;
49 static MobEffect *heal;
50 static MobEffect *harm;
51 static MobEffect *jump;
52 static MobEffect *confusion;
53 static MobEffect *regeneration;
54 static MobEffect *damageResistance;
55 static MobEffect *fireResistance;
56 static MobEffect *waterBreathing;
57 static MobEffect *invisibility;
58 static MobEffect *blindness;
59 static MobEffect *nightVision;
60 static MobEffect *hunger;
61 static MobEffect *weakness;
62 static MobEffect *poison;
63 static MobEffect *wither;
64 static MobEffect *healthBoost;
65 static MobEffect *absorption;
66 static MobEffect *saturation;
67 static MobEffect *reserved_24;
68 static MobEffect *reserved_25;
69 static MobEffect *reserved_26;
70 static MobEffect *reserved_27;
71 static MobEffect *reserved_28;
72 static MobEffect *reserved_29;
73 static MobEffect *reserved_30;
74 static MobEffect *reserved_31;
75
76 const int id;
77
78 static void staticCtor();
79
80private:
81 unordered_map<Attribute *, AttributeModifier *> attributeModifiers;
82 int descriptionId;
83 int m_postfixDescriptionId; // 4J added
84 EMobEffectIcon icon; // 4J changed type
85 const bool _isHarmful;
86 double durationModifier;
87 bool _isDisabled;
88 const eMinecraftColour color;
89
90protected:
91 MobEffect(int id, bool isHarmful, eMinecraftColour color);
92
93 //MobEffect *setIcon(int xPos, int yPos);
94 MobEffect *setIcon(EMobEffectIcon icon);
95
96public:
97 virtual int getId();
98 virtual void applyEffectTick(shared_ptr<LivingEntity> mob, int amplification);
99 virtual void applyInstantenousEffect(shared_ptr<LivingEntity> source, shared_ptr<LivingEntity> mob, int amplification, double scale);
100 virtual bool isInstantenous();
101 virtual bool isDurationEffectTick(int remainingDuration, int amplification);
102
103 MobEffect *setDescriptionId(unsigned int id);
104 unsigned int getDescriptionId(int iData = -1);
105
106 // 4J Added
107 MobEffect *setPostfixDescriptionId(unsigned int id);
108 unsigned int getPostfixDescriptionId(int iData = -1);
109
110 bool hasIcon();
111 EMobEffectIcon getIcon(); // 4J changed return type
112 bool isHarmful();
113 static wstring formatDuration(MobEffectInstance *instance);
114
115protected:
116 MobEffect *setDurationModifier(double durationModifier);
117
118public:
119 virtual double getDurationModifier();
120 virtual MobEffect *setDisabled();
121 virtual bool isDisabled();
122 virtual eMinecraftColour getColor();
123
124 virtual MobEffect *addAttributeModifier(Attribute *attribute, eMODIFIER_ID id, double amount, int operation);
125 virtual unordered_map<Attribute *, AttributeModifier *> *getAttributeModifiers();
126 virtual void removeAttributeModifiers(shared_ptr<LivingEntity> entity, BaseAttributeMap *attributes, int amplifier);
127 virtual void addAttributeModifiers(shared_ptr<LivingEntity> entity, BaseAttributeMap *attributes, int amplifier);
128 virtual double getAttributeModifierValue(int amplifier, AttributeModifier *original);
129};