From 7aa2d4d109cf8a92582a271d505f20a0f348f5a3 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 10 Apr 2011 16:20:31 +0300 Subject: new-style rats are now generated in the map --- src/map.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index 59cf937c0..3ba1bda68 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -2109,6 +2109,61 @@ double base_rock_level_2d(u64 seed, v2s16 p) return h; } +/* + Adds random objects to block, depending on the content of the block +*/ +void addRandomObjects(MapBlock *block) +{ + for(s16 z0=0; z0getNodeNoEx(p); + if(n.d == CONTENT_IGNORE) + continue; + if(content_features(n.d).liquid_type != LIQUID_NONE) + continue; + if(content_features(n.d).walkable) + { + last_node_walkable = true; + continue; + } + if(last_node_walkable) + { + // If block contains light information + if(content_features(n.d).param_type == CPT_LIGHT) + { + if(n.getLight(LIGHTBANK_DAY) <= 3) + { + if(myrand() % 300 == 0) + { + v3f pos_f = intToFloat(p+block->getPosRelative(), BS); + pos_f.Y -= BS*0.4; + ServerActiveObject *obj = new RatSAO(NULL, 0, pos_f); + std::string data = obj->getStaticData(); + StaticObject s_obj(obj->getType(), + obj->getBasePosition(), data); + // Add some + block->m_static_objects.insert(0, s_obj); + block->m_static_objects.insert(0, s_obj); + block->m_static_objects.insert(0, s_obj); + block->m_static_objects.insert(0, s_obj); + block->m_static_objects.insert(0, s_obj); + block->m_static_objects.insert(0, s_obj); + delete obj; + } + } + } + } + last_node_walkable = false; + } + } + block->setChangedFlag(); +} + #define VMANIP_FLAG_DUNGEON VOXELFLAG_CHECKED1 /* @@ -3660,7 +3715,26 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, } } - + /* + Add random objects to blocks + */ + { + for(s16 x=0; x