From 47ef78bf6ab77a726f2b80e609cda3a078d4e8db Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 01:50:00 +0100 Subject: [PATCH] Fix group attack for slime, zombie and zombiepig --- mods/ENTITIES/mcl_mobs/api.lua | 18 +++++++++++++----- mods/ENTITIES/mcl_mobs/api.txt | 3 +++ mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 2 +- mods/ENTITIES/mobs_mc/zombie.lua | 5 ++--- mods/ENTITIES/mobs_mc/zombiepig.lua | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 3a5a82737..901fe07fd 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2569,12 +2569,20 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) if obj then - -- only alert members of same mob - if obj.group_attack == true + -- only alert members of same mob or friends + if obj.group_attack and obj.state ~= "attack" - and obj.owner ~= name - and obj.name == self.name then - do_attack(obj, hitter) + and obj.owner ~= name then + if obj.name == self.name then + do_attack(obj, hitter) + elseif type(obj.group_attack) == "table" then + for i=1, #obj.group_attack do + if obj.name == obj.group_attack[i] then + do_attack(obj, hitter) + break + end + end + end end -- have owned mobs attack player threat diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index f38d8ef16..b3e2f03e7 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -78,6 +78,8 @@ functions needed for the mob to work properly which contains the following: punches when nearby. 'group_attack' when true has same mob type grouping together to attack offender. + [MCL2 extension:] When a table, this is a list of + mob types that will get alerted as well (besides same mob type) 'attack_type' tells the api what a mob does when attacking the player or another mob: 'dogfight' is a melee attack when player is within mob reach. @@ -222,6 +224,7 @@ functions needed for the mob to work properly which contains the following: 'glow' same as in entity definition 'child' if true, spawn mob as child + Node Replacement ---------------- diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 8e9f93f9a..4fbeea765 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -58,7 +58,7 @@ end local slime_big = { type = "monster", pathfinding = 1, - group_attack = true, + group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" }, hp_min = 16, hp_max = 16, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index da8cae1ae..f08d364d8 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -65,8 +65,8 @@ local zombie = { fear_height = 4, pathfinding = 1, jump = true, - --jump_height = 3, - group_attack = true, + jump_height = 4, + group_attack = { "mobs_mc:zombie", "mobs_mc:baby_zombie", "mobs_mc:husk", "mobs_mc:baby_husk" }, drops = drops_zombie, animation = { speed_normal = 25, speed_run = 50, @@ -75,7 +75,6 @@ local zombie = { run_start = 0, run_end = 40, }, lava_damage = 4, - -- TODO: Burn mob only when in direct sunlight sunlight_damage = 2, view_range = 16, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index b61d507f9..f21ea4faf 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -18,7 +18,7 @@ local pigman = { hp_max = 20, armor = 90, attack_type = "dogfight", - group_attack = true, + group_attack = { "mobs_mc:pigman", "mobs_mc:baby_pigman" }, damage = 9, reach = 2, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3},