Made rats cookable and made them spawn near trees
parent
8ceb0586b2
commit
4556c212db
|
@ -65,6 +65,10 @@ std::string item_craft_get_image_name(const std::string &subname)
|
||||||
return "clay_brick.png";
|
return "clay_brick.png";
|
||||||
else if(subname == "rat")
|
else if(subname == "rat")
|
||||||
return "rat.png";
|
return "rat.png";
|
||||||
|
else if(subname == "cooked_rat")
|
||||||
|
return "cooked_rat.png";
|
||||||
|
else if(subname == "scorched_stuff")
|
||||||
|
return "scorched_stuff.png";
|
||||||
else if(subname == "firefly")
|
else if(subname == "firefly")
|
||||||
return "firefly.png";
|
return "firefly.png";
|
||||||
else
|
else
|
||||||
|
@ -98,7 +102,7 @@ s16 item_craft_get_drop_count(const std::string &subname)
|
||||||
|
|
||||||
bool item_craft_is_cookable(const std::string &subname)
|
bool item_craft_is_cookable(const std::string &subname)
|
||||||
{
|
{
|
||||||
if(subname == "lump_of_iron" || subname == "lump_of_clay")
|
if(subname == "lump_of_iron" || subname == "lump_of_clay" || subname == "rat" || subname == "cooked_rat")
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -110,6 +114,10 @@ InventoryItem* item_craft_create_cook_result(const std::string &subname)
|
||||||
return new CraftItem("steel_ingot", 1);
|
return new CraftItem("steel_ingot", 1);
|
||||||
else if(subname == "lump_of_clay")
|
else if(subname == "lump_of_clay")
|
||||||
return new CraftItem("clay_brick", 1);
|
return new CraftItem("clay_brick", 1);
|
||||||
|
else if(subname == "rat")
|
||||||
|
return new CraftItem("cooked_rat", 1);
|
||||||
|
else if(subname == "cooked_rat")
|
||||||
|
return new CraftItem("scorched_stuff", 1);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,7 +232,7 @@ RatSAO::RatSAO(ServerEnvironment *env, u16 id, v3f pos):
|
||||||
|
|
||||||
m_oldpos = v3f(0,0,0);
|
m_oldpos = v3f(0,0,0);
|
||||||
m_last_sent_position = v3f(0,0,0);
|
m_last_sent_position = v3f(0,0,0);
|
||||||
m_yaw = 0;
|
m_yaw = myrand_range(0,PI*2);
|
||||||
m_counter1 = 0;
|
m_counter1 = 0;
|
||||||
m_counter2 = 0;
|
m_counter2 = 0;
|
||||||
m_age = 0;
|
m_age = 0;
|
||||||
|
|
|
@ -79,7 +79,7 @@ void set_default_settings()
|
||||||
// Server stuff
|
// Server stuff
|
||||||
g_settings.setDefault("enable_experimental", "false");
|
g_settings.setDefault("enable_experimental", "false");
|
||||||
g_settings.setDefault("creative_mode", "false");
|
g_settings.setDefault("creative_mode", "false");
|
||||||
g_settings.setDefault("enable_damage", "false"); //TODO: Set to true when healing is possible
|
g_settings.setDefault("enable_damage", "true");
|
||||||
g_settings.setDefault("give_initial_stuff", "false");
|
g_settings.setDefault("give_initial_stuff", "false");
|
||||||
g_settings.setDefault("default_password", "");
|
g_settings.setDefault("default_password", "");
|
||||||
g_settings.setDefault("default_privs", "build, shout");
|
g_settings.setDefault("default_privs", "build, shout");
|
||||||
|
|
|
@ -816,7 +816,7 @@ void ServerEnvironment::step(float dtime)
|
||||||
if(m_active_blocks_test_interval.step(dtime, 10.0))
|
if(m_active_blocks_test_interval.step(dtime, 10.0))
|
||||||
{
|
{
|
||||||
//float dtime = 10.0;
|
//float dtime = 10.0;
|
||||||
|
|
||||||
for(core::map<v3s16, bool>::Iterator
|
for(core::map<v3s16, bool>::Iterator
|
||||||
i = m_active_blocks.m_list.getIterator();
|
i = m_active_blocks.m_list.getIterator();
|
||||||
i.atEnd()==false; i++)
|
i.atEnd()==false; i++)
|
||||||
|
@ -846,6 +846,21 @@ void ServerEnvironment::step(float dtime)
|
||||||
searching loop to keep things fast.
|
searching loop to keep things fast.
|
||||||
*/
|
*/
|
||||||
// TODO: Implement usage of ActiveBlockModifier
|
// TODO: Implement usage of ActiveBlockModifier
|
||||||
|
|
||||||
|
// Find out how many objects the block contains
|
||||||
|
u32 active_object_count = block->m_static_objects.m_active.size();
|
||||||
|
// Find out how many objects this and all the neighbors contain
|
||||||
|
u32 active_object_count_wider = 0;
|
||||||
|
for(s16 x=-1; x<=1; x++)
|
||||||
|
for(s16 y=-1; y<=1; y++)
|
||||||
|
for(s16 z=-1; z<=1; z++)
|
||||||
|
{
|
||||||
|
MapBlock *block = m_map->getBlockNoCreateNoEx(p+v3s16(x,y,z));
|
||||||
|
if(block==NULL)
|
||||||
|
continue;
|
||||||
|
active_object_count_wider +=
|
||||||
|
block->m_static_objects.m_active.size();
|
||||||
|
}
|
||||||
|
|
||||||
v3s16 p0;
|
v3s16 p0;
|
||||||
for(p0.X=0; p0.X<MAP_BLOCKSIZE; p0.X++)
|
for(p0.X=0; p0.X<MAP_BLOCKSIZE; p0.X++)
|
||||||
|
@ -875,18 +890,39 @@ void ServerEnvironment::step(float dtime)
|
||||||
/*
|
/*
|
||||||
Convert grass into mud if under something else than air
|
Convert grass into mud if under something else than air
|
||||||
*/
|
*/
|
||||||
else if(n.getContent() == CONTENT_GRASS)
|
if(n.getContent() == CONTENT_GRASS)
|
||||||
{
|
{
|
||||||
//if(myrand()%20 == 0)
|
//if(myrand()%20 == 0)
|
||||||
{
|
{
|
||||||
MapNode n_top = m_map->getNodeNoEx(p+v3s16(0,1,0));
|
MapNode n_top = m_map->getNodeNoEx(p+v3s16(0,1,0));
|
||||||
if(content_features(n_top).air_equivalent == false)
|
if(content_features(n_top).air_equivalent == false)
|
||||||
{
|
{
|
||||||
n.setContent(CONTENT_MUD);
|
n.setContent(CONTENT_MUD);
|
||||||
m_map->addNodeWithEvent(p, n);
|
m_map->addNodeWithEvent(p, n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Rats spawn around regular trees
|
||||||
|
*/
|
||||||
|
if(n.getContent() == CONTENT_TREE ||
|
||||||
|
n.getContent() == CONTENT_JUNGLETREE)
|
||||||
|
{
|
||||||
|
if(myrand()%200 == 0 && active_object_count_wider == 0)
|
||||||
|
{
|
||||||
|
v3s16 p1 = p + v3s16(myrand_range(-2, 2),
|
||||||
|
0, myrand_range(-2, 2));
|
||||||
|
MapNode n1 = m_map->getNodeNoEx(p1);
|
||||||
|
MapNode n1b = m_map->getNodeNoEx(p1+v3s16(0,-1,0));
|
||||||
|
if(n1b.getContent() == CONTENT_GRASS &&
|
||||||
|
n1.getContent() == CONTENT_AIR)
|
||||||
|
{
|
||||||
|
v3f pos = intToFloat(p1, BS);
|
||||||
|
ServerActiveObject *obj = new RatSAO(this, 0, pos);
|
||||||
|
addActiveObject(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue