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