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 "Monster.h"
5#include "SharedConstants.h"
6#include "MobGroupData.h"
7
8class Zombie : public Monster
9{
10private:
11 static const int VILLAGER_CONVERSION_WAIT_MIN = SharedConstants::TICKS_PER_SECOND * 60 * 3;
12 static const int VILLAGER_CONVERSION_WAIT_MAX = SharedConstants::TICKS_PER_SECOND * 60 * 5;
13
14protected:
15 static Attribute *SPAWN_REINFORCEMENTS_CHANCE;
16
17private:
18 static AttributeModifier *SPEED_MODIFIER_BABY;
19
20
21 static const int DATA_BABY_ID = 12;
22 static const int DATA_VILLAGER_ID = 13;
23 static const int DATA_CONVERTING_ID = 14;
24
25public:
26 static const float ZOMBIE_LEADER_CHANCE;
27 static const int REINFORCEMENT_ATTEMPTS = 50;
28 static const int REINFORCEMENT_RANGE_MAX = 40;
29 static const int REINFORCEMENT_RANGE_MIN = 7;
30
31private:
32 int villagerConversionTime;
33
34public:
35 static const int MAX_SPECIAL_BLOCKS_COUNT = 14;
36 static const int SPECIAL_BLOCK_RADIUS = 4;
37
38public:
39 eINSTANCEOF GetType() { return eTYPE_ZOMBIE; }
40 static Entity *create(Level *level) { return new Zombie(level); }
41
42 Zombie(Level *level);
43
44protected:
45 virtual void registerAttributes();
46 virtual void defineSynchedData();
47
48public:
49 virtual int getArmorValue();
50
51protected:
52 virtual bool useNewAi();
53
54public:
55 virtual bool isBaby();
56 virtual void setBaby(bool baby);
57 virtual bool isVillager();
58 virtual void setVillager(bool villager);
59 virtual void aiStep();
60 virtual bool hurt(DamageSource *source, float dmg);
61 virtual void tick();
62 virtual bool doHurtTarget(shared_ptr<Entity> target);
63
64protected:
65 virtual int getAmbientSound();
66 virtual int getHurtSound();
67 virtual int getDeathSound();
68 virtual int getDeathLoot();
69 virtual void playStepSound(int xt, int yt, int zt, int t);
70
71public:
72 virtual MobType getMobType();
73
74protected:
75 virtual void dropRareDeathLoot(int rareLootLevel);
76 virtual void populateDefaultEquipmentSlots();
77
78public:
79 virtual void addAdditonalSaveData(CompoundTag *tag);
80 virtual void readAdditionalSaveData(CompoundTag *tag);
81 virtual void killed(shared_ptr<LivingEntity> mob);
82 virtual MobGroupData *finalizeMobSpawn(MobGroupData *groupData, int extraData = 0); // 4J Added extraData param
83 virtual bool mobInteract(shared_ptr<Player> player);
84
85protected:
86 virtual void startConverting(int time);
87
88public:
89 virtual void handleEntityEvent(byte id);
90
91protected:
92 virtual bool removeWhenFarAway();
93
94public:
95 virtual bool isConverting();
96
97protected:
98 virtual void finishConversion();
99 virtual int getConversionProgress();
100
101private:
102 class ZombieGroupData : public MobGroupData
103 {
104 public:
105 bool isBaby;
106 bool isVillager;
107
108 ZombieGroupData(bool baby, bool villager);
109 };
110};