3 --made for MC like Survival game
4 --License for code WTFPL and otherwise stated in readmes
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")
14 --################### ZOMBIE
17 local drops_common
= {
18 {name
= mobs_mc
.items
.rotten_flesh
,
22 {name
= mobs_mc
.items
.iron_ingot
,
23 chance
= 120, -- 2.5% / 3
26 {name
= mobs_mc
.items
.carrot
,
27 chance
= 120, -- 2.5% / 3
30 {name
= mobs_mc
.items
.potato
,
31 chance
= 120, -- 2.5% / 3
36 local drops_zombie
= table.copy(drops_common
)
37 table.insert(drops_zombie
, {
39 -- TODO: Only drop if killed by charged creeper
40 name
= mobs_mc
.items
.head_zombie
,
51 collisionbox
= {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3},
53 mesh
= "mobs_mc_zombie.b3d",
55 {"mobs_mc_zombie.png"},
57 visual_size
= {x
=3, y
=3},
58 makes_footstep_sound
= true,
60 random = "mobs_mc_zombie_growl",
61 war_cry
= "mobs_mc_zombie_growl",
62 death
= "mobs_mc_zombie_death",
63 damage
= "mobs_mc_zombie_hurt",
77 speed_normal
= 25, speed_run
= 50,
78 stand_start
= 40, stand_end
= 80,
79 walk_start
= 0, walk_end
= 40,
80 run_start
= 0, run_end
= 40,
83 -- TODO: Burn mob only when in direct sunlight
86 attack_type
= "dogfight",
89 mobs
:register_mob("mobs_mc:zombie", zombie
)
92 -- A smaller and more dangerous variant of the zombie
94 local baby_zombie
= table.copy(zombie
)
95 baby_zombie
.collisionbox
= {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
96 baby_zombie
.visual_size
= {x
=zombie
.visual_size
.x
/2, y
=zombie
.visual_size
.y
/2}
97 baby_zombie
.walk_velocity
= 1.2
98 baby_zombie
.run_velocity
= 2.4
99 baby_zombie
.sunlight_damage
= 0
101 mobs
:register_mob("mobs_mc:baby_zombie", baby_zombie
)
104 -- Desert variant of the zombie
105 local husk
= table.copy(zombie
)
106 husk
.textures
= {{"mobs_mc_husk.png"}}
107 husk
.sunlight_damage
= 0
108 husk
.water_damage
= 3
109 husk
.drops
= drops_common
110 -- TODO: Husks avoid water
112 mobs
:register_mob("mobs_mc:husk", husk
)
115 -- A smaller and more dangerous variant of the husk
116 local baby_husk
= table.copy(husk
)
117 baby_husk
.collisionbox
= {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
118 baby_husk
.visual_size
= {x
=zombie
.visual_size
.x
/2, y
=zombie
.visual_size
.y
/2}
119 baby_husk
.walk_velocity
= 1.2
120 baby_husk
.run_velocity
= 2.4
122 mobs
:register_mob("mobs_mc:baby_husk", baby_husk
)
127 mobs
:spawn_specific("mobs_mc:zombie", mobs_mc
.spawn
.solid
, {"air"}, 0, 7, 30, 6000, 4, mobs_mc
.spawn_height
.overworld_min
, mobs_mc
.spawn_height
.overworld_max
)
128 -- Baby zombie is 20 times less likely than regular zombies
129 mobs
:spawn_specific("mobs_mc:baby_zombie", mobs_mc
.spawn
.solid
, {"air"}, 0, 7, 30, 60000, 4, mobs_mc
.spawn_height
.overworld_min
, mobs_mc
.spawn_height
.overworld_max
)
130 mobs
:spawn_specific("mobs_mc:husk", mobs_mc
.spawn
.desert
, {"air"}, 0, 7, 30, 6500, 4, mobs_mc
.spawn_height
.overworld_min
, mobs_mc
.spawn_height
.overworld_max
)
131 mobs
:spawn_specific("mobs_mc:baby_husk", mobs_mc
.spawn
.desert
, {"air"}, 0, 7, 30, 65000, 4, mobs_mc
.spawn_height
.overworld_min
, mobs_mc
.spawn_height
.overworld_max
)
134 mobs
:alias_mob("mobs:zombie", "mobs_mc:zombie")
137 mobs
:register_egg("mobs_mc:husk", S("Husk"), "mobs_mc_spawn_icon_husk.png", 0)
138 mobs
:register_egg("mobs_mc:zombie", S("Zombie"), "mobs_mc_spawn_icon_zombie.png", 0)
140 if minetest
.settings
:get_bool("log_mods") then
141 minetest
.log("action", "MC Zombie loaded")