aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/MobEffect.h
blob: b0460bf13d8d15ab4dac7d4914edb90c38427b29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#pragma once
using namespace std;

class Mob;
class MobEffectInstance;

class MobEffect
{
public:
	enum EMobEffectIcon
	{
		e_MobEffectIcon_None,
		e_MobEffectIcon_Blindness,
		e_MobEffectIcon_FireResistance,
		e_MobEffectIcon_Haste,
		e_MobEffectIcon_Hunger,
		e_MobEffectIcon_Invisiblity,
		e_MobEffectIcon_JumpBoost,
		e_MobEffectIcon_MiningFatigue,
		e_MobEffectIcon_Nausea,
		e_MobEffectIcon_NightVision,
		e_MobEffectIcon_Poison,
		e_MobEffectIcon_Regeneration,
		e_MobEffectIcon_Resistance,
		e_MobEffectIcon_Slowness,
		e_MobEffectIcon_Speed,
		e_MobEffectIcon_Strength,
		e_MobEffectIcon_WaterBreathing,
		e_MobEffectIcon_Weakness,

		e_MobEffectIcon_COUNT,
	};

	static const int NUM_EFFECTS = 32;
	static MobEffect *effects[NUM_EFFECTS];

    static MobEffect *voidEffect;
    static MobEffect *movementSpeed;
    static MobEffect *movementSlowdown;
    static MobEffect *digSpeed;
    static MobEffect *digSlowdown;
    static MobEffect *damageBoost;
    static MobEffect *heal;
    static MobEffect *harm;
    static MobEffect *jump;
    static MobEffect *confusion;
    static MobEffect *regeneration;
    static MobEffect *damageResistance;
    static MobEffect *fireResistance;
    static MobEffect *waterBreathing;
    static MobEffect *invisibility;
    static MobEffect *blindness;
    static MobEffect *nightVision;
    static MobEffect *hunger;
    static MobEffect *weakness;
    static MobEffect *poison;
    static MobEffect *reserved_20;
    static MobEffect *reserved_21;
    static MobEffect *reserved_22;
    static MobEffect *reserved_23;
    static MobEffect *reserved_24;
    static MobEffect *reserved_25;
    static MobEffect *reserved_26;
    static MobEffect *reserved_27;
    static MobEffect *reserved_28;
    static MobEffect *reserved_29;
    static MobEffect *reserved_30;
    static MobEffect *reserved_31;

    const int id;

private:
	int descriptionId;
	int m_postfixDescriptionId; // 4J added
	EMobEffectIcon icon; // 4J changed type
	const bool _isHarmful;
	double durationModifier;
	bool _isDisabled;
	const eMinecraftColour color;

protected:
	MobEffect(int id, bool isHarmful, eMinecraftColour color);

	//MobEffect *setIcon(int xPos, int yPos);
	MobEffect *setIcon(EMobEffectIcon icon);

public:
	int getId();
    void applyEffectTick(shared_ptr<Mob> mob, int amplification);
	void applyInstantenousEffect(shared_ptr<Mob> source, shared_ptr<Mob> mob, int amplification, double scale);
    virtual bool isInstantenous();
    virtual bool isDurationEffectTick(int remainingDuration, int amplification);

	MobEffect *setDescriptionId(unsigned int id);
	unsigned int getDescriptionId(int iData = -1);
	
	// 4J Added
	MobEffect *setPostfixDescriptionId(unsigned int id);
	unsigned int getPostfixDescriptionId(int iData = -1);

	bool hasIcon();
	EMobEffectIcon getIcon(); // 4J changed return type
	bool isHarmful();
	static wstring formatDuration(MobEffectInstance *instance);

protected:
	MobEffect *setDurationModifier(double durationModifier);

public:
	double getDurationModifier();
	MobEffect *setDisabled();
	bool isDisabled();
	eMinecraftColour getColor();
};