forked from VoxeLibre/VoxeLibre
Added some comments to the code
This commit is contained in:
parent
d7c76e33d8
commit
20b0f0748d
|
@ -1,5 +1,6 @@
|
||||||
--MCmobs v0.4
|
--MCmobs v0.4
|
||||||
--maikerumine
|
--maikerumine
|
||||||
|
--updated by Herowl
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
|
@ -25,7 +26,7 @@ end
|
||||||
|
|
||||||
local function wither_unstuck(self)
|
local function wither_unstuck(self)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
if mobs_griefing then
|
if mobs_griefing then -- destroy blocks very nearby (basically, colliding with)
|
||||||
local col = self.collisionbox
|
local col = self.collisionbox
|
||||||
local pos1 = vector.offset(pos, col[1], col[2], col[3])
|
local pos1 = vector.offset(pos, col[1], col[2], col[3])
|
||||||
local pos2 = vector.offset(pos, col[4], col[5], col[6])
|
local pos2 = vector.offset(pos, col[4], col[5], col[6])
|
||||||
|
@ -47,7 +48,7 @@ local function wither_unstuck(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end end end
|
end end end
|
||||||
else
|
else -- when mobs_griefing disabled, make a small nondestructive explosion
|
||||||
mcl_mobs.mob_class.safe_boom(self, pos, 2)
|
mcl_mobs.mob_class.safe_boom(self, pos, 2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -124,6 +125,7 @@ mcl_mobs.register_mob("mobs_mc:wither", {
|
||||||
|
|
||||||
do_custom = function(self, dtime)
|
do_custom = function(self, dtime)
|
||||||
if self._spawning then
|
if self._spawning then
|
||||||
|
-- "loading" bar while spawning
|
||||||
if not self._spw_max then self._spw_max = self._spawning end
|
if not self._spw_max then self._spw_max = self._spawning end
|
||||||
self._spawning = self._spawning - dtime
|
self._spawning = self._spawning - dtime
|
||||||
local bardef = {
|
local bardef = {
|
||||||
|
@ -139,12 +141,14 @@ mcl_mobs.register_mob("mobs_mc:wither", {
|
||||||
mcl_bossbars.add_bar(player, bardef, true, d)
|
mcl_bossbars.add_bar(player, bardef, true, d)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
self.object:set_yaw(self._spawning*10)
|
|
||||||
|
|
||||||
|
-- turn around and flash while spawning
|
||||||
|
self.object:set_yaw(self._spawning*10)
|
||||||
local factor = math.floor((math.sin(self._spawning*10)+1.5) * 85)
|
local factor = math.floor((math.sin(self._spawning*10)+1.5) * 85)
|
||||||
local str = minetest.colorspec_to_colorstring({r=factor, g=factor, b=factor})
|
local str = minetest.colorspec_to_colorstring({r=factor, g=factor, b=factor})
|
||||||
self.object:set_texture_mod("^[brighten^[multiply:"..str)
|
self.object:set_texture_mod("^[brighten^[multiply:"..str)
|
||||||
|
|
||||||
|
-- when fully spawned, explode
|
||||||
if self._spawning <= 0 then
|
if self._spawning <= 0 then
|
||||||
if mobs_griefing and not minetest.is_protected(pos, "") then
|
if mobs_griefing and not minetest.is_protected(pos, "") then
|
||||||
mcl_explosions.explode(pos, WITHER_INIT_BOOM, { drop_chance = 1.0 }, self.object)
|
mcl_explosions.explode(pos, WITHER_INIT_BOOM, { drop_chance = 1.0 }, self.object)
|
||||||
|
@ -159,6 +163,7 @@ mcl_mobs.register_mob("mobs_mc:wither", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- passive regeneration
|
||||||
self._custom_timer = self._custom_timer + dtime
|
self._custom_timer = self._custom_timer + dtime
|
||||||
if self._custom_timer > 1 then
|
if self._custom_timer > 1 then
|
||||||
self.health = math.min(self.health + 1, self.hp_max)
|
self.health = math.min(self.health + 1, self.hp_max)
|
||||||
|
@ -179,7 +184,8 @@ mcl_mobs.register_mob("mobs_mc:wither", {
|
||||||
pos.z = spw.z + math.random(-R, R)
|
pos.z = spw.z + math.random(-R, R)
|
||||||
self.object:set_pos(pos)
|
self.object:set_pos(pos)
|
||||||
end
|
end
|
||||||
else
|
else -- despawn automatically after set time
|
||||||
|
-- HP changes impact timer: taking damage sets it back
|
||||||
self._death_timer = self._death_timer + self.health - self._health_old
|
self._death_timer = self._death_timer + self.health - self._health_old
|
||||||
if self.health == self._health_old then self._death_timer = self._death_timer + dtime end
|
if self.health == self._health_old then self._death_timer = self._death_timer + dtime end
|
||||||
if self._death_timer > 100 then
|
if self._death_timer > 100 then
|
||||||
|
@ -190,11 +196,13 @@ mcl_mobs.register_mob("mobs_mc:wither", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- count withers per dimension
|
||||||
local dim = mcl_worlds.pos_to_dimension(self.object:get_pos())
|
local dim = mcl_worlds.pos_to_dimension(self.object:get_pos())
|
||||||
if dim == "overworld" then mobs_mc.wither_count_overworld = mobs_mc.wither_count_overworld + 1
|
if dim == "overworld" then mobs_mc.wither_count_overworld = mobs_mc.wither_count_overworld + 1
|
||||||
elseif dim == "nether" then mobs_mc.wither_count_nether = mobs_mc.wither_count_nether + 1
|
elseif dim == "nether" then mobs_mc.wither_count_nether = mobs_mc.wither_count_nether + 1
|
||||||
elseif dim == "end" then mobs_mc.wither_count_end = mobs_mc.wither_count_end + 1 end
|
elseif dim == "end" then mobs_mc.wither_count_end = mobs_mc.wither_count_end + 1 end
|
||||||
|
|
||||||
|
-- update things dependent on HP
|
||||||
local rand_factor
|
local rand_factor
|
||||||
if self.health < (self.hp_max / 2) then
|
if self.health < (self.hp_max / 2) then
|
||||||
self.base_texture = "mobs_mc_wither_half_health.png"
|
self.base_texture = "mobs_mc_wither_half_health.png"
|
||||||
|
|
Loading…
Reference in New Issue