123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- local S=minerdream.intllib
- local has_value = basic_functions.has_value
- local mob_cols={
- col_num={"reach","damage","hp_min",
- "hp_max","armor","walk_velocity","run_velocity","walk_chance",
- "fall_speed","jump_chance","jump_height","stepheight","floats",
- "view_range","water_damage","lava_damage","light_damage","slimeball",
- "egg","slimering","maxlight","chance","max_height","collisionbox"},
- -- as_numeric=1,
- }
- local mob_definition = basic_functions.import_csv(minerdream.path.."/mobs.txt",mob_cols)
- local mob_default = {
- type = "monster",
- passive = false,
- attack_type = "dogfight",
- reach = 2,
- damage = 1,
- hp_min = 5,
- hp_max = 5,
- armor = 100,
- collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3},
- visual = "wielditem",
- makes_footstep_sound = true,
- walk_velocity = 2,
- run_velocity = 2,
- walk_chance = 0,
- fall_speed = -50,
- jump_chance = 30,
- jump_height = 6,
- stepheight = 1.1,
- floats = 0,
- view_range = 16,
- water_damage = 0,
- lava_damage = 8,
- light_damage = 0,
- animation = {
- speed_normal = 15,
- speed_run = 15,
- stand_start = 0,
- stand_end = 14,
- walk_start = 15,
- walk_end = 38,
- run_start = 40,
- run_end = 63,
- punch_start = 40,
- punch_end = 63,
- },
- }
- if mob_definition["default"] ~= nil then
- tmobd=table.copy(mob_definition["default"])
- for _,column in pairs({"attack_type","reach","damage","hp_min",
- "hp_max","armor","walk_velocity","run_velocity","walk_chance",
- "fall_speed","jump_chance","jump_height","stepheight","floats",
- "view_range","water_damage","lava_damage","light_damage","slimeball",
- "egg","slimering","maxlight","chance","max_height"}) do
- if tmobd[column] ~= nil then
- mob_default[column]=tmobd[column]
- end
- end
- if tmobd["collisionbox"] ~= nil then
- local cb=tmobd["collisionbox"]
- mob_default["collisionbox"] = {-1*cb, -1*cb, -1*cb, cb, cb, cb}
- end
- end
- for i,tdef in pairs(mob_definition) do
- if (i ~= "default") then
- local mdef=table.copy(mob_default)
- for _,column in pairs({"attack_type","reach","damage","hp_min",
- "hp_max","armor","walk_velocity","run_velocity","walk_chance",
- "fall_speed","jump_chance","jump_height","stepheight","floats",
- "view_range","water_damage","lava_damage","light_damage","slimeball",
- "egg","slimering","maxlight","chance","max_height"}) do
- if tdef[column] ~= nil then
- mdef[column]=tdef[column]
- end
- end
- if tdef["collisionbox"] ~= nil then
- local cb=tdef["collisionbox"]
- mdef["collisionbox"] = {-1*cb, -1*cb, -1*cb, cb, cb, cb}
- end
- mdef.textures = {
- {"minerdream:slime_"..i},
- }
- mdef.blood_texture = "minerdream_slimeball_"..i..".png"
- mdef.drops = {
- {name = "minerdream:slimeball_"..i, chance = mdef.slimeball, min = 1, max = 3},
- {name = "minerdream:slime_"..i.."_egg", chance = mdef.egg, min = 1, max = 1},
- {name = "minerdream:accessory_slimering", chance = mdef.slimering, min = 1, max = 1},
- }
- mobs:register_mob("minerdream:slime_"..i, mdef)
- mobs:spawn({
- name = "minerdream:slime_"..i,
- nodes = {"default:stone"},
- max_light = mdef.maxlight,
- chance = mdef.chance,
- max_height = mdef.max_height,
- })
-
- minetest.register_craftitem("minerdream:slime_"..i.."_egg", {
- description = S(i).." "..S("slime spawnegg"),
- inventory_image = "minerdream_egg_"..i.."slime.png",
- on_place = function(itemstack, placer, pointed_thing)
- if pointed_thing.above then
- minetest.env:add_entity(pointed_thing.above, "minerdream:slime_"..i)
- itemstack:take_item()
- end
- return itemstack
- end,
- })
- minetest.register_node("minerdream:slime_"..i, {
- tiles = {
- "minerdream_slime_"..i.."_top.png",
- "minerdream_slime_"..i.."_top.png",
- "minerdream_slime_"..i.."_side.png",
- "minerdream_slime_"..i.."_side.png",
- "minerdream_slime_"..i.."_side.png",
- "minerdream_slime_"..i.."_side.png"
- },
- drawtype = "nodebox",
- wield_scale = {x=0.4,y=0.4,z=0.4},
- paramtype = "light",
- node_box = {
- type = "fixed",
- fixed = {
- {-0.3125, -0.5, -0.3125, 0.3125, 0.3125, 0.3125}, -- NodeBox1
- {-0.375, -0.5, -0.3125, 0.375, 0.25, 0.3125}, -- NodeBox2
- {-0.3125, -0.5, -0.375, 0.3125, 0.25, 0.375}, -- NodeBox3
- {-0.3125, -0.4375, -0.4375, 0.3125, 0.125, 0.4375}, -- NodeBox4
- {-0.375, -0.4375, -0.375, 0.375, 0.125, 0.375}, -- NodeBox5
- {-0.4375, -0.4375, -0.3125, 0.4375, 0.125, 0.3125}, -- NodeBox6
- {-0.25, -0.375, -0.5, 0.25, 0, 0.5}, -- NodeBox7
- {-0.5, -0.375, -0.25, 0.5, 0, 0.25}, -- NodeBox8
- }
- }
- })
- end
- end
|