Activate waving=1 for more plants
[minetest_hades/hades_revisited.git] / mods / mobs_hades / cave_master.lua
blob0367bf65ba240b229f6496d5510e0edc456ae41f
1 local S = minetest.get_translator("mobs_hades")
3 -- Cave Master
4 -- (This one spits out fireballs at you)
6 local cave_master = {
7 type = "monster",
8 hp_min = 25,
9 hp_max = 35,
10 collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.6, 0.7},
11 visual = "mesh",
12 mesh = "mobs_dungeon_master.x",
13 textures = {"mobs_dungeon_master.png"},
14 visual_size = {x=8, y=8},
15 makes_footstep_sound = true,
16 sounds = {
17 random = "mobs_dungeonmaster",
18 attack = "mobs_fireball",
20 view_range = 24,
21 walk_velocity = 1,
22 run_velocity = 3,
23 damage = 4,
24 drops = {
25 {name = "hades_core:mese_crystal_fragment",
26 chance = 1,
27 min = 1,
28 max = 3,},
29 {name = "hades_core:diamond",
30 chance = 4,
31 min = 1,
32 max = 1,},
33 {name = "hades_core:mese_crystal",
34 chance = 2,
35 min = 1,
36 max = 2,},
37 {name = "hades_core:mese",
38 chance = 30,
39 min = 1,
40 max = 1,},
42 armor = 60,
43 drawtype = "front",
44 water_damage = 1,
45 lava_damage = 1,
46 light_damage = 0,
47 on_rightclick = nil,
48 attack_type = "shoot",
49 arrow = "mobs_hades:fireball",
50 shoot_interval = 2.5,
51 animation = {
52 stand_start = 0,
53 stand_end = 19,
54 walk_start = 20,
55 walk_end = 35,
56 punch_start = 36,
57 punch_end = 48,
58 speed_normal = 15,
59 speed_run = 15,
61 jump = true,
62 step = 0.5,
63 shoot_offset = 0,
64 blood_texture = "mobs_blood.png",
65 floats = 1,
66 pathfinding = 1,
68 mobs:register_mob("mobs_hades:cave_master", cave_master)
69 mobs:spawn_specific("mobs_hades:cave_master", {"hades_core:stone"}, "air", 0, 1, 100, 7000, 1, -30000, -1000)
71 local cave_elder = table.copy(cave_master)
72 cave_elder.hp_min = 40
73 cave_elder.hp_max = 50
74 cave_elder.shoot_interval = 2.0
75 cave_elder.collisionbox = {-0.875, -0.01, -0.875, 0.875, 3.250, 0.875}
76 cave_elder.visual_size = {x=10, y=10}
77 cave_elder.textures = {"mobs_dungeon_master5.png"}
78 cave_elder.drops = {
79 {name = "hades_core:mese_crystal_fragment",
80 chance = 1,
81 min = 2,
82 max = 6,},
83 {name = "hades_core:diamond",
84 chance = 3,
85 min = 1,
86 max = 1,},
87 {name = "hades_core:mese_crystal",
88 chance = 2,
89 min = 2,
90 max = 4,},
91 {name = "hades_core:mese",
92 chance = 20,
93 min = 1,
94 max = 1,},
97 mobs:register_mob("mobs_hades:cave_elder", cave_elder)
98 mobs:spawn_specific("mobs_hades:cave_elder", {"hades_core:stone"}, "air", 0, 1, 100, 10000, 1, -30000, -7500)
100 mobs:register_egg("mobs_hades:cave_master", S("Cave Master Spawn Egg"), "mobs_chicken_egg_overlay.png^[colorize:#5D3000:228", 1, false)
101 mobs:register_egg("mobs_hades:cave_elder", S("Cave Elder Spawn Egg"), "mobs_chicken_egg_overlay.png^[colorize:#2D1000:228", 1, false)
103 -- Fireball (weapon)
105 mobs:register_arrow("mobs_hades:fireball", {
106 visual = "sprite",
107 visual_size = {x=1, y=1},
108 textures = {"mobs_fireball.png"},
109 velocity = 5,
111 -- direct hit, no fire... just plenty of pain
112 hit_player = function(self, player)
113 local s = self.object:get_pos()
114 local p = player:get_pos()
115 player:punch(self.object, 1.0, {
116 full_punch_interval=1.0,
117 damage_groups = {fleshy=8},
118 }, 0) -- {x=s.x-p.x, y=s.y-p.y, z=s.z-p.z})
119 end,
121 -- node hit, bursts into flame (cannot blast through obsidian)
122 hit_node = function(self, pos, node)
124 for dx=-1,1 do
125 for dy=-1,1 do
126 for dz=-1,1 do
127 local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
128 local n = minetest.get_node(p).name
129 local def = minetest.registered_nodes[n]
130 if def and def.on_blast then
131 minetest.registered_nodes[n].on_blast(pos, 5)
132 else
133 minetest.set_node(p, {name="air"})