Version 0.42.1
[MineClone/MineClone2.git] / mods / ENTITIES / mobs_mc / blaze.lua
blob0f84763588ab45d0dbf41fda68469e0e9d051e4c
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_speed = 25,
47 stand_start = 0,
48 stand_end = 100,
49 walk_speed = 25,
50 walk_start = 0,
51 walk_end = 100,
52 run_speed = 50,
53 run_start = 0,
54 run_end = 100,
56 -- MC Wiki: takes 1 damage every half second while in water
57 water_damage = 2,
58 lava_damage = 0,
59 fall_damage = 0,
60 fall_speed = -2.25,
61 light_damage = 0,
62 view_range = 16,
63 attack_type = "dogshoot",
64 arrow = "mobs_mc:blaze_fireball",
65 shoot_interval = 3.5,
66 passive = false,
67 jump = true,
68 jump_height = 4,
69 fly = true,
70 jump_chance = 98,
71 fear_height = 120,
72 blood_amount = 0,
75 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)
77 -- Blaze fireball
78 mobs:register_arrow("mobs_mc:blaze_fireball", {
79 visual = "sprite",
80 visual_size = {x = 0.3, y = 0.3},
81 textures = {"mcl_fire_fire_charge.png"},
82 velocity = 12,
84 -- Direct hit, no fire... just plenty of pain
85 hit_player = function(self, player)
86 player:punch(self.object, 1.0, {
87 full_punch_interval = 1.0,
88 damage_groups = {fleshy = 5},
89 }, nil)
90 end,
92 hit_mob = function(self, player)
93 player:punch(self.object, 1.0, {
94 full_punch_interval = 1.0,
95 damage_groups = {fleshy = 5},
96 }, nil)
97 end,
99 -- Node hit, make fire
100 hit_node = function(self, pos, node)
101 if node.name == "air" then
102 minetest.set_node(pos_above, {name=mobs_mc.items.fire})
103 else
104 local v = self.object:getvelocity()
105 v = vector.normalize(v)
106 local crashpos = vector.subtract(pos, v)
107 local crashnode = minetest.get_node(crashpos)
108 -- Set fire if node is air, or a replacable flammable node (e.g. a plant)
109 if crashnode.name == "air" or
110 (minetest.registered_nodes[crashnode.name].buildable_to and minetest.get_item_group(crashnode.name, "flammable") >= 1) then
111 minetest.set_node(crashpos, {name=mobs_mc.items.fire})
117 -- spawn eggs
118 mobs:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0)
125 if minetest.settings:get_bool("log_mods") then
126 minetest.log("action", "MC Blaze loaded")