the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 129 lines 3.8 kB view raw
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};