diff --git a/api/behaviors.lua b/api/behaviors.lua index de18b4e..a5bf543 100644 --- a/api/behaviors.lua +++ b/api/behaviors.lua @@ -964,8 +964,7 @@ creatura.register_utility("animalia:boid_flee_from_player", function(self, playe if #mobs_in_group > 0 then for i = 1, #mobs_in_group do local mob = mobs_in_group[i] - mob:get_luaentity():initiate_utility("animalia:boid_flee_from_player", mob:get_luaentity(), player) - mob:get_luaentity():set_utility_score(1) + mob:get_luaentity():try_initiate_utility("animalia:boid_flee_from_player", 1, mob:get_luaentity(), player) end end end diff --git a/mobs/bat.lua b/mobs/bat.lua index 12ef032..da8948c 100644 --- a/mobs/bat.lua +++ b/mobs/bat.lua @@ -256,9 +256,11 @@ creatura.register_mob("animalia:bat", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, false) then return end @@ -268,6 +270,7 @@ creatura.register_mob("animalia:bat", { animalia.add_libri_page(self, clicker, {name = "bat", form = "pg_bat;Bats"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) end }) diff --git a/mobs/bird.lua b/mobs/bird.lua index 8c3b774..d0ff96f 100644 --- a/mobs/bird.lua +++ b/mobs/bird.lua @@ -209,6 +209,7 @@ creatura.register_mob("animalia:bird", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, deactivate_func = function(self) @@ -224,6 +225,7 @@ creatura.register_mob("animalia:bird", { end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, false) then return end @@ -233,6 +235,7 @@ creatura.register_mob("animalia:bird", { animalia.add_libri_page(self, clicker, {name = "bird", form = "pg_bird;Birds"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) end }) diff --git a/mobs/cat.lua b/mobs/cat.lua index c77c6ba..1813a53 100644 --- a/mobs/cat.lua +++ b/mobs/cat.lua @@ -207,9 +207,11 @@ creatura.register_mob("animalia:cat", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end local item_name = clicker:get_wielded_item():get_name() if item_name == "animalia:net" then return end local trust = self.trust[clicker:get_player_name()] or 0 @@ -286,6 +288,7 @@ creatura.register_mob("animalia:cat", { end end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:flee_from_player", self, puncher) self:set_utility_score(1) diff --git a/mobs/chicken.lua b/mobs/chicken.lua index d33ac2b..508afae 100644 --- a/mobs/chicken.lua +++ b/mobs/chicken.lua @@ -145,9 +145,11 @@ creatura.register_mob("animalia:chicken", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -157,6 +159,7 @@ creatura.register_mob("animalia:chicken", { animalia.add_libri_page(self, clicker, {name = "chicken", form = "pg_chicken;Chickens"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:flee_from_player", self, puncher) self:set_utility_score(1) diff --git a/mobs/cow.lua b/mobs/cow.lua index 6e37094..9e31ab2 100644 --- a/mobs/cow.lua +++ b/mobs/cow.lua @@ -163,9 +163,11 @@ creatura.register_mob("animalia:cow", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -205,6 +207,7 @@ creatura.register_mob("animalia:cow", { animalia.add_libri_page(self, clicker, {name = "cow", form = "pg_cow;Cows"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:flee_from_player", self, puncher) self:set_utility_score(1) diff --git a/mobs/frog.lua b/mobs/frog.lua index 85b825d..6c1d2b5 100644 --- a/mobs/frog.lua +++ b/mobs/frog.lua @@ -173,9 +173,11 @@ creatura.register_mob("animalia:frog", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then local name = clicker:get_player_name() if self.trust[name] then @@ -193,6 +195,7 @@ creatura.register_mob("animalia:frog", { animalia.add_libri_page(self, clicker, {name = "frog", form = "pg_frog;Frogs"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self.trust[puncher:get_player_name()] = 0 self:memorize("trust", self.trust) diff --git a/mobs/horse.lua b/mobs/horse.lua index b7d53a8..1527160 100644 --- a/mobs/horse.lua +++ b/mobs/horse.lua @@ -260,9 +260,11 @@ creatura.register_mob("animalia:horse", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -300,6 +302,7 @@ creatura.register_mob("animalia:horse", { animalia.add_libri_page(self, clicker, {name = "horse", form = "pg_horse;Horses"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:boid_flee_from_player", self, puncher, true) self:set_utility_score(1) diff --git a/mobs/pig.lua b/mobs/pig.lua index d5d25e3..aea2754 100644 --- a/mobs/pig.lua +++ b/mobs/pig.lua @@ -153,9 +153,11 @@ creatura.register_mob("animalia:pig", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -165,6 +167,7 @@ creatura.register_mob("animalia:pig", { animalia.add_libri_page(self, clicker, {name = "pig", form = "pg_pig;Pigs"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:flee_from_player", self, puncher) self:set_utility_score(1) diff --git a/mobs/reindeer.lua b/mobs/reindeer.lua index 2fc256a..0531da6 100644 --- a/mobs/reindeer.lua +++ b/mobs/reindeer.lua @@ -131,9 +131,11 @@ creatura.register_mob("animalia:reindeer", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -143,6 +145,7 @@ creatura.register_mob("animalia:reindeer", { animalia.add_libri_page(self, clicker, {name = "reindeer", form = "pg_reindeer;Reindeer"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:boid_flee_from_player", self, puncher, true) self:set_utility_score(1) diff --git a/mobs/sheep.lua b/mobs/sheep.lua index 3965f01..271ba02 100644 --- a/mobs/sheep.lua +++ b/mobs/sheep.lua @@ -190,9 +190,11 @@ creatura.register_mob("animalia:sheep", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -255,6 +257,7 @@ creatura.register_mob("animalia:sheep", { animalia.add_libri_page(self, clicker, {name = "sheep", form = "pg_sheep;Sheep"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:boid_flee_from_player", self, puncher, true) self:set_utility_score(1) diff --git a/mobs/tropical_fish.lua b/mobs/tropical_fish.lua index 22f2c6e..38f9218 100644 --- a/mobs/tropical_fish.lua +++ b/mobs/tropical_fish.lua @@ -72,15 +72,18 @@ creatura.register_mob("animalia:tropical_fish", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.set_nametag(self, clicker) then return end animalia.add_libri_page(self, clicker, {name = "tropical_fish", form = "pg_tropical_fish;Tropical Fish"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) end }) diff --git a/mobs/turkey.lua b/mobs/turkey.lua index 97c31de..6cee680 100644 --- a/mobs/turkey.lua +++ b/mobs/turkey.lua @@ -136,9 +136,11 @@ creatura.register_mob("animalia:turkey", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) + if self:get_utility() == "animalia:die" then return end if animalia.feed(self, clicker, false, true) then return end @@ -148,6 +150,7 @@ creatura.register_mob("animalia:turkey", { animalia.add_libri_page(self, clicker, {name = "turkey", form = "pg_turkey;Turkeys"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) self:initiate_utility("animalia:flee_from_player", self, puncher) self:set_utility_score(1) diff --git a/mobs/wolf.lua b/mobs/wolf.lua index f1d9151..2620f28 100644 --- a/mobs/wolf.lua +++ b/mobs/wolf.lua @@ -190,10 +190,11 @@ creatura.register_mob("animalia:wolf", { death_func = function(self) if self:get_utility() ~= "animalia:die" then self:initiate_utility("animalia:die", self) + self:set_utility_score(2) end end, on_rightclick = function(self, clicker) - if not clicker:is_player() then return end + if self:get_utility() == "animalia:die" or not clicker:is_player() then return end local passive = true if is_value_in_table(self.enemies, clicker:get_player_name()) then passive = false @@ -228,6 +229,7 @@ creatura.register_mob("animalia:wolf", { animalia.add_libri_page(self, clicker, {name = "wolf", form = "pg_wolf;Wolves"}) end, on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) + if self:get_utility() == "animalia:die" then return end creatura.basic_punch_func(self, puncher, time_from_last_punch, tool_capabilities, direction, damage) if puncher:is_player() then if self.owner