2 --################### ENDERDRAGON
6 local MP
= minetest
.get_modpath(minetest
.get_current_modname())
7 local S
, NS
= dofile(MP
.."/intllib.lua")
10 mobs:register_mob("mobs_mc:12enderdragon", {
18 collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35},
20 mesh = "enderdragon.b3d",
24 visual_size = {x=1, y=1},
29 speed_normal = 25, speed_run = 50,
30 stand_start = 0, stand_end = 20,
31 walk_start = 0, walk_end = 20,
32 run_start = 0, run_end = 20,
36 mobs:register_egg("mobs_mc:12enderdragon", "Enderdragon", "enderdragon_inv.png", 0)
38 mobs
:register_mob("mobs_mc:enderdragon", {
41 attacks_animals
= true,
45 collisionbox
= {-2, 3, -2, 2, 5, 2},
48 mesh
= "mobs_mc_dragon.b3d",
50 {"mobs_mc_dragon.png"},
52 visual_size
= {x
=3, y
=3},
58 shoot_attack
= "mobs_mc_ender_dragon_shoot",
59 attack
= "mobs_mc_ender_dragon_attack",
72 dogshoot_count_max
=5,
73 dogshoot_count2_max
= 5,
75 attack_animals
= true,
77 {name
= mobs_mc
.items
.dragon_egg
,
86 attack_type
= "dogshoot",
87 arrow
= "mobs_mc:fireball2",
91 fly_speed
= 8, stand_speed
= 8,
92 stand_start
= 0, stand_end
= 20,
93 walk_start
= 0, walk_end
= 20,
94 run_start
= 0, run_end
= 20,
98 ignores_nametag
= true,
102 local mobs_griefing
= minetest
.settings
:get_bool("mobs_griefing") ~= false
104 mobs
:register_arrow("mobs_mc:roar_of_the_dragon2", {
106 visual_size
= {x
= 1, y
= 1},
107 --textures = {"transparent.png"},
108 textures
= {"mese_egg.png"},
111 on_step
= function(self
, dtime
)
113 local pos
= self
.object
:get_pos()
115 local n
= minetest
.get_node(pos
).name
117 if self
.timer
== 0 then
118 self
.timer
= os
.time()
121 if os
.time() - self
.timer
> 8 or minetest
.is_protected(pos
, "") then
125 local objects
= minetest
.get_objects_inside_radius(pos
, 1)
126 for _
,obj
in ipairs(objects
) do
127 local name
= self
.name
128 if name
~="mobs_mc:roar_of_the_dragon2" and name
~= "mobs_mc:enderdragon" then
129 obj
:set_hp(obj
:get_hp()-0.05)
130 if (obj
:get_hp() <= 0) then
131 if (not obj
:is_player()) and name
~= self
.object
:get_luaentity().name
then
138 if mobs_griefing
then
139 minetest
.set_node(pos
, {name
="air"})
140 if math
.random(1,2)==1 then
141 local dx
= math
.random(-1,1)
142 local dy
= math
.random(-1,1)
143 local dz
= math
.random(-1,1)
144 local p
= {x
=pos
.x
+dx
, y
=pos
.y
+dy
, z
=pos
.z
+dz
}
145 minetest
.set_node(p
, {name
="air"})
152 mobs
:register_arrow(":mobs_mc:fireball2", {
154 visual_size
= {x
= 1.5, y
= 1.5},
155 textures
= {"mobs_mc_dragon_fireball.png"},
156 --textures = {"mobs_skeleton2_front.png^[makealpha:255,255,255 "},
159 -- direct hit, no fire... just plenty of pain
160 hit_player
= function(self
, player
)
161 minetest
.sound_play("tnt_explode", {pos
= player
:get_pos(), gain
= 1.5, max_hear_distance
= 2*64})
162 player
:punch(self
.object
, 1.0, {
163 full_punch_interval
= 0.5,
164 damage_groups
= {fleshy
= 6},
169 hit_mob
= function(self
, mob
)
170 minetest
.sound_play("tnt_explode", {pos
= mob
:get_pos(), gain
= 1.5, max_hear_distance
= 2*64})
171 mob
:punch(self
.object
, 1.0, {
172 full_punch_interval
= 0.5,
173 damage_groups
= {fleshy
= 12},
178 -- node hit, bursts into flame
179 hit_node
= function(self
, pos
, node
)
180 mobs
:explosion(pos
, 3, 0, 1)
182 minetest
.sound_play("tnt_explode", {pos
= pos
, gain
= 1.5, max_hear_distance
= 2*64})
187 mobs
:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0)