Clean up grass block group stuff
[MineClone/MineClone2.git] / mods / ENTITIES / mobs_mc / blaze.lua
blob3c68126d3c320234595c004766b0d08c12cf8f1a
1 -- daufinsyd
2 -- My work is under the LGPL terms
3 -- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models
4 -- blaze.lua partial copy of mobs_mc/ghast.lua
6 -- intllib
7 local MP = minetest.get_modpath(minetest.get_current_modname())
8 local S, NS = dofile(MP.."/intllib.lua")
10 --dofile(minetest.get_modpath("mobs").."/api.lua")
11 --###################
12 --################### BLAZE
13 --###################
16 mobs:register_mob("mobs_mc:blaze", {
17 type = "monster",
18 hp_min = 20,
19 hp_max = 20,
20 collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.79, 0.3},
21 rotate = -180,
22 visual = "mesh",
23 mesh = "mobs_mc_blaze.b3d",
24 textures = {
25 {"mobs_mc_blaze.png"},
27 visual_size = {x=3, y=3},
28 sounds = {
29 random = "mobs_mc_blaze_breath",
30 death = "mobs_mc_blaze_died",
31 damage = "mobs_mc_blaze_hurt",
32 distance = 16,
34 walk_velocity = .8,
35 run_velocity = 1.6,
36 damage = 6,
37 reach = 2,
38 pathfinding = 1,
39 drops = {
40 {name = mobs_mc.items.blaze_rod,
41 chance = 1,
42 min = 0,
43 max = 1,},
45 animation = {
46 stand_start = 1,
47 stand_end = 40,
48 walk_start = 1,
49 walk_end = 40,
50 run_start = 1,
51 run_end = 40,
52 shoot_start = 1,
53 shoot_end = 40,
55 -- MC Wiki: takes 1 damage every half second while in water
56 water_damage = 2,
57 lava_damage = 0,
58 fall_damage = 0,
59 fall_speed = -2.25,
60 light_damage = 0,
61 view_range = 16,
62 attack_type = "dogshoot",
63 arrow = "mobs_mc:blaze_fireball",
64 shoot_interval = 3.5,
65 passive = false,
66 jump = true,
67 jump_height = 4,
68 fly = true,
69 jump_chance = 98,
70 fear_height = 120,
71 blood_amount = 0,
74 mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
76 -- Blaze fireball
77 mobs:register_arrow("mobs_mc:blaze_fireball", {
78 visual = "sprite",
79 visual_size = {x = 0.3, y = 0.3},
80 textures = {"mcl_fire_fire_charge.png"},
81 velocity = 12,
83 -- Direct hit, no fire... just plenty of pain
84 hit_player = function(self, player)
85 player:punch(self.object, 1.0, {
86 full_punch_interval = 1.0,
87 damage_groups = {fleshy = 5},
88 }, nil)
89 end,
91 hit_mob = function(self, player)
92 player:punch(self.object, 1.0, {
93 full_punch_interval = 1.0,
94 damage_groups = {fleshy = 5},
95 }, nil)
96 end,
98 -- Node hit, make fire
99 hit_node = function(self, pos, node)
100 if node.name == "air" then
101 minetest.set_node(pos_above, {name=mobs_mc.items.fire})
102 else
103 local v = self.object:getvelocity()
104 v = vector.normalize(v)
105 local crashpos = vector.subtract(pos, v)
106 local crashnode = minetest.get_node(crashpos)
107 -- Set fire if node is air, or a replacable flammable node (e.g. a plant)
108 if crashnode.name == "air" or
109 (minetest.registered_nodes[crashnode.name].buildable_to and minetest.get_item_group(crashnode.name, "flammable") >= 1) then
110 minetest.set_node(crashpos, {name=mobs_mc.items.fire})
116 -- spawn eggs
117 mobs:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0)
124 if minetest.settings:get_bool("log_mods") then
125 minetest.log("action", "MC Blaze loaded")