diff --git a/api.lua b/api.lua index f9a4e08..3c4db20 100644 --- a/api.lua +++ b/api.lua @@ -2225,7 +2225,15 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) pos.y = pos.y + (-self.collisionbox[2] + self.collisionbox[5]) * .5 - effect(pos, self.blood_amount, self.blood_texture, nil, nil, 1, nil) + -- do we have a single blood texture or multiple? + if type(self.blood_texture) == "table" then + + local blood = self.blood_texture[random(1, #self.blood_texture)] + + effect(pos, self.blood_amount, blood, nil, nil, 1, nil) + else + effect(pos, self.blood_amount, self.blood_texture, nil, nil, 1, nil) + end end -- do damage diff --git a/api.txt b/api.txt index c42e5bb..f27bb00 100644 --- a/api.txt +++ b/api.txt @@ -61,7 +61,8 @@ This functions registers a new mob as a Minetest entity. 'immune_to' table holding special tool/item names and damage the incur e.g. {"default:sword_wood", 0}, {"default:gold_lump", -10} immune to sword, gold lump heals 'blood_amount' number of droplets that appear when hit - 'blood_texture' texture of blood droplets (default: "mobs_blood.png") + 'blood_texture' texture of blood droplets (default: "mobs_blood.png") can be table with multiple textures also e.g. {"mobs_blood.png", "mobs_blood2.png"} + 'drops' is list of tables with the following fields: 'name' itemname e.g. default:stone 'chance' the inverted chance (same as in abm) to get the item diff --git a/api_new.txt b/api_new.txt index f278aa5..25d197c 100644 --- a/api_new.txt +++ b/api_new.txt @@ -105,7 +105,7 @@ functions needed for the mob to work properly which contains the following: 'blood_amount' contains the number of blood droplets to appear when mob is hit. 'blood_texture' has the texture name to use for droplets e.g. - "mobs_blood.png". + "mobs_blood.png", or table {"blood1.png", "blood2.png"} 'pathfinding' set to 1 for mobs to use pathfinder feature to locate player, set to 2 so they can build/break also (only works with dogfight attack). @@ -250,7 +250,7 @@ enhance mob functionality and have them do many interesting things: false to stop punch damage and knockback from taking place. 'custom_attack' when set this function is called instead of the normal mob melee attack, parameters are (self, to_attack). - 'on_die' a function that is called when mob is killed + 'on_die' a function that is called when mob is killed (self, pos) 'do_custom' a custom function that is called every tick while mob is active and which has access to all of the self.* variables e.g. (self.health for health or self.standing_in for node