123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- local S = mobs.intllib_monster
- local mese_monster_types = {
- -- mese_monster_red
- {
- y_min = -20,
- y_max = -1000,
- damage = 2,
- damage_max = 4,
- damage_chance = 50,
- reach = 3,
- hp_min = 15,
- hp_max = 25,
- armor = 80,
- skins = {"mobs_mese_monster_red.png"},
- immune_to = {
- {"default:pick_wood", 0},
- {"default:shovel_wood", 0},
- {"default:axe_wood", 0},
- {"default:sword_wood", 0}
- },
- drops = {
- {name = "default:mese_crystal", chance = 15, min = 0, max = 1},
- {name = "default:mese_crystal_fragment", chance = 2, min = 0, max = 1}
- },
- arrow_override = function(self)
- self.velocity = 6
- self.damage = 2
- end
- },
- -- mese_monster_green
- {
- y_min = -1001,
- y_max = -2000,
- damage = 3,
- damage_max = 6,
- damage_chance = 50,
- reach = 3,
- hp_min = 20,
- hp_max = 30,
- armor = 75,
- skins = {"mobs_mese_monster_green.png"},
- immune_to = {
- {"default:pick_wood", 0},
- {"default:shovel_wood", 0},
- {"default:axe_wood", 0},
- {"default:sword_wood", 0},
- {"default:pick_stone", 0},
- {"default:shovel_stone", 0},
- {"default:axe_stone", 0},
- {"default:sword_stone", 0}
- },
- drops = {
- {name = "default:mese_crystal", chance = 12, min = 0, max = 1},
- {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 1}
- },
- arrow_override = function(self)
- self.velocity = 6
- self.damage = 2
- end
- },
- -- mese_monster_blue
- {
- y_min = -2001,
- y_max = -3000,
- damage = 3,
- damage_max = 6,
- damage_chance = 50,
- reach = 4,
- hp_min = 25,
- hp_max = 35,
- armor = 70,
- skins = {"mobs_mese_monster_blue.png"},
- immune_to = {
- {"default:pick_wood", 0},
- {"default:shovel_wood", 0},
- {"default:axe_wood", 0},
- {"default:sword_wood", 0},
- {"default:pick_stone", 0},
- {"default:shovel_stone", 0},
- {"default:axe_stone", 0},
- {"default:sword_stone", 0},
- {"default:pick_bronze", 0},
- {"default:shovel_bronze", 0},
- {"default:axe_bronze", 0},
- {"default:sword_bronze", 0}
- },
- drops = {
- {name = "default:mese", chance = 15, min = 0, max = 1},
- {name = "default:mese_crystal", chance = 9, min = 0, max = 2},
- {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2}
- },
- arrow_override = function(self)
- self.velocity = 7
- self.damage = 3
- end
- },
- -- mese_monster_purple
- {
- y_min = -3000,
- y_max = -31000,
- damage = 4,
- damage_max = 8,
- damage_chance = 50,
- reach = 5,
- hp_min = 30,
- hp_max = 40,
- armor = 60,
- skins = {"mobs_mese_monster_purple.png"},
- immune_to = {
- {"default:pick_wood", 0},
- {"default:shovel_wood", 0},
- {"default:axe_wood", 0},
- {"default:sword_wood", 0},
- {"default:pick_stone", 0},
- {"default:shovel_stone", 0},
- {"default:axe_stone", 0},
- {"default:sword_stone", 0},
- {"default:pick_bronze", 0},
- {"default:shovel_bronze", 0},
- {"default:axe_bronze", 0},
- {"default:sword_bronze", 0},
- {"default:pick_steel", 0},
- {"default:shovel_steel", 0},
- {"default:axe_steel", 0},
- {"default:sword_steel", 0}
- },
- drops = {
- {name = "default:mese", chance = 9, min = 0, max = 1},
- {name = "default:mese_crystal", chance = 6, min = 0, max = 2},
- {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 3}
- },
- arrow_override = function(self)
- self.velocity = 8
- self.damage = 4
- end
- }}
- -- Mese Monster by SirrobZeroone
- mobs:register_mob("mobs_monster:mese_monster", {
- type = "monster",
- visual_size = {x = 10, y = 10}, -- Got scale wrong in blender by factor of 10 - S01
- passive = false,
- attack_type = "dogshoot",
- damage = 4,
- damage_max = 8,
- damage_chance = 50,
- reach = 4,
- shoot_interval = 0.5,
- arrow = "mobs_monster:mese_arrow",
- shoot_offset = 0.75,
- -- arrow_override = function(self)
- -- self.velocity = 20
- -- end,
- knock_back = true,
- hp_min = 10,
- hp_max = 25,
- armor = 80,
- collisionbox = {-0.75, -0.5, -0.75, 0.75, 2.5, 0.75},
- visual = "mesh",
- mesh = "mobs_mese_monster.b3d",
- textures = {
- {"mobs_mese_monster_purple.png"}
- },
- blood_texture = "default_mese_crystal_fragment.png",
- makes_footstep_sound = false,
- sounds = {
- random = "mobs_mesemonster",
- damage = "default_glass_footstep"
- },
- view_range = 10,
- walk_velocity = 1,
- run_velocity = 3,
- jump = true,
- jump_height = 8,
- can_leap = true,
- fall_damage = 0,
- fall_speed = -6,
- stepheight = 2.1,
- immune_to = {
- {"default:pick_wood", 0},
- {"default:shovel_wood", 0},
- {"default:axe_wood", 0},
- {"default:sword_wood", 0}
- },
- drops = {
- {name = "default:mese_crystal", chance = 9, min = 0, max = 2},
- {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2},
- },
- water_damage = 1,
- lava_damage = 1,
- light_damage = 0,
- animation = {
- speed_normal = 18,
- speed_run = 18,
- walk_start = 10,
- walk_end = 41,
- walk_speed = 20,
- run_start = 10,
- run_end = 41,
- run_speed = 30,
- stand_start = 60,
- stand_end = 83,
- shoot_start = 100,
- shoot_end = 113,
- die_start = 125,
- die_end = 141,
- death_speed = 25,
- die_loop = false,
- jump_start = 150 ,
- jump_end = 168,
- jump_loop = false,
- punch_start = 175,
- punch_end = 189
- },
- after_activate = function(self, staticdata, def, dtime)
- local tex = self and self.textures and self.textures[1]
- if tex == "zmobs_mese_monster.png" then
- self.object:remove()
- end
- end,
- on_spawn = function(self)
- local pos = self.object:get_pos()
- -- quick update self function
- local function update(self, def)
- self.object:set_properties({textures = def.skins})
- self.base_texture = def.skins
- -- added by mobs_redo
- self.hp_min = def.hp_min
- self.hp_max = def.hp_max
- self.health = math.random(self.hp_min, self.hp_max)
- self.damage = def.damage
- self.reach = def.reach
- self.armor = def.armor
- self.immune_to = def.immune_to
- self.drops = def.drops
- self.arrow_override = def.arrow_override
- end
- -- Normal spawn case
- for name, def in pairs(mese_monster_types) do
- if pos.y <= def.y_min and pos.y >= def.y_max then
- update(self, def)
- return true
- end
- end
- --[[
- -- player using egg
- -- direction sets type N = red, E = green, S = blue, W = purple
- -- Just for fun - S01
- local objects = minetest.get_objects_inside_radius(pos, 10)
- for i, obj in ipairs(objects) do
- if minetest.is_player(obj)
- and obj:get_wielded_item():get_name() == "mobs_monster:mese_monster" then
- local degree = (360 + math.deg(obj:get_look_horizontal())) % 360
- local compass_sel
- if degree > 45 and degree <= 135 then compass_sel = 4
- elseif degree > 135 and degree <= 225 then compass_sel = 3
- elseif degree > 225 and degree <= 315 then compass_sel = 2
- else compass_sel = 1
- end
- local def = mese_monster_types[compass_sel]
- update(self, def)
- return true
- end
- end
- ]]
- -- catch case if all else fails random it
- update(self, mese_monster_types[math.random(4)])
- return true
- end
- })
- -- mese arrow (weapon)
- minetest.register_craftitem("mobs_monster:mese_crystal_fragment_arrow", {
- description = S("Mese Monster Arrow"),
- inventory_image = "mobs_mese_arrow.png",
- groups = {not_in_creative_inventory = 1}
- })
- mobs:register_arrow("mobs_monster:mese_arrow", {
- visual = "wielditem",
- visual_size = {x = 0.25, y = 0.25},
- textures = {"mobs_monster:mese_crystal_fragment_arrow"},
- velocity = 8,
- rotate = 180,
- damage = 2,
- hit_player = function(self, player)
- player:punch(self.object, 1.0, {
- full_punch_interval = 1.0,
- damage_groups = {fleshy = self.damage}
- }, nil)
- end,
- hit_mob = function(self, player)
- player:punch(self.object, 1.0, {
- full_punch_interval = 1.0,
- damage_groups = {fleshy = self.damage}
- }, nil)
- end,
- hit_node = function(self, pos, node)
- end
- })
- if not mobs.custom_spawn_monster then
- mobs:spawn({
- name = "mobs_monster:mese_monster",
- nodes = {"default:stone"},
- max_light = 7,
- chance = 5000,
- active_object_count = 1,
- max_height = -20
- })
- end
- mobs:register_egg("mobs_monster:mese_monster", S("Mese Monster"), "default_mese_block.png", 1)
- mobs:alias_mob("mobs:mese_monster", "mobs_monster:mese_monster") -- compatiblity
- -- 9x mese crystal fragments = 1x mese crystal
- local f = "default:mese_crystal_fragment"
- minetest.register_craft({
- output = "default:mese_crystal",
- recipe = {{f, f, f}, {f, f, f}, {f, f, f}}
- })
|