diff options
author | STRWarrior <niels.breuker@hotmail.nl> | 2014-12-01 17:51:20 +0100 |
---|---|---|
committer | STRWarrior <niels.breuker@hotmail.nl> | 2014-12-01 17:51:20 +0100 |
commit | c0b08a6c1e4666c1d3044a264fc47711e821ce14 (patch) | |
tree | a474c8379dba364a132b9e2709f8223ae4b3738f /src | |
parent | Simplefied SoulsandRims (diff) | |
download | cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar.gz cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar.bz2 cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar.lz cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar.xz cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.tar.zst cuberite-c0b08a6c1e4666c1d3044a264fc47711e821ce14.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/Generating/DungeonRoomsFinisher.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/Generating/DungeonRoomsFinisher.cpp b/src/Generating/DungeonRoomsFinisher.cpp index 7ab22c2c5..0267c41fa 100644 --- a/src/Generating/DungeonRoomsFinisher.cpp +++ b/src/Generating/DungeonRoomsFinisher.cpp @@ -7,6 +7,7 @@ #include "DungeonRoomsFinisher.h" #include "../FastRandom.h" #include "../BlockEntities/ChestEntity.h" +#include "../BlockEntities/MobSpawnerEntity.h" @@ -57,6 +58,22 @@ public: int SecondChestPos = (FirstChestPos + 2 + (rnd % (NumPositions - 3))) % NumPositions; m_Chest1 = DecodeChestCoords(FirstChestPos, SizeX, SizeZ); m_Chest2 = DecodeChestCoords(SecondChestPos, SizeX, SizeZ); + + // Choose what the mobspawner will spawn. + // 25% chance for a spider, 25% for a skeleton and 50% chance to get a zombie spawer. + NOISE_DATATYPE MobType = a_Noise.IntNoise3D(a_OriginX, m_FloorHeight, a_OriginZ); + if (MobType <= -0.5) + { + m_MonsterType = mtSkeleton; + } + else if (MobType <= 0) + { + m_MonsterType = mtSpider; + } + else + { + m_MonsterType = mtZombie; + } } protected: @@ -76,6 +93,8 @@ protected: /** The (absolute) coords of the second chest. The Y coord represents the chest's Meta value (facing). */ Vector3i m_Chest2; + /** The monster type for the mobspawner entity. */ + eMonsterType m_MonsterType; /** Decodes the position index along the room walls into a proper 2D position for a chest. @@ -246,7 +265,9 @@ protected: ) { a_ChunkDesc.SetBlockTypeMeta(CenterX, b, CenterZ, E_BLOCK_MOB_SPAWNER, 0); - // TODO: Set the spawned mob + cMobSpawnerEntity * MobSpawner = (cMobSpawnerEntity *)a_ChunkDesc.GetBlockEntity(CenterX, b, CenterZ); + ASSERT((MobSpawner != nullptr) && (MobSpawner->GetBlockType() == E_BLOCK_MOB_SPAWNER)); + MobSpawner->SetEntity(m_MonsterType); } } } ; |