Make herbs smell

This slightly changes herb growth patterns in forests as well, in order to keep energy balance
This commit is contained in:
Petr Baudis 2011-12-07 23:55:37 +01:00
parent 29fddde51c
commit 2041242142
3 changed files with 18 additions and 1 deletions

View file

@ -191,6 +191,15 @@ spawn_herb(class tile &t)
h->spawn_at(t);
}
void
herb::smell_herb(class tile &t)
{
/* Herb pheromone ("smell") #32768. */
class pheromone p(32768, world::herb_phintensity);
t.pheromones.secrete(p);
chenergy(p.val * world::pheromone_cost);
}
void
herb::on_tick(void)
{
@ -204,5 +213,10 @@ herb::on_tick(void)
spawn_herb(tile->tile_in_dir(0, -1));
tile->on_agent_leave(*this);
tile = NULL;
} else {
smell_herb(tile->tile_in_dir(1, 0));
smell_herb(tile->tile_in_dir(0, 1));
smell_herb(tile->tile_in_dir(-1, 0));
smell_herb(tile->tile_in_dir(0, -1));
}
}

View file

@ -64,6 +64,8 @@ public:
}
void on_tick(void);
private:
void smell_herb(class tile &);
};
#endif

View file

@ -15,13 +15,14 @@ struct world {
const static int attack_idle_cost = -15; /* ... * attr.attack */
const static int defense_idle_cost = -15; /* ... * attr.defense */
const static int sun_energy = 10;
const static int soil_energy = 10; /* ... times five for lone herbs, times one for dense forests */
const static int soil_energy = 20; /* ... times five for lone herbs, times one for dense forests */
const static int dead_body_energy = 2000;
const static double dead_body_energy_carryover = 0.5;
const static int dead_decay = -50;
const static int herb_rate = 15; /* initially, one herb per herb_rate tiles */
const static double herb_phintensity = 1.0;
const static double phseep_alpha = 0.1;
const static double phseep_beta = 0.05;