diff --git a/mobs_monster/depends.txt b/mobs_monster/depends.txt new file mode 100644 index 0000000..d0aea36 --- /dev/null +++ b/mobs_monster/depends.txt @@ -0,0 +1,5 @@ +default +mobs +intllib? +lucky_block? +toolranks? diff --git a/mobs_monster/description.txt b/mobs_monster/description.txt new file mode 100644 index 0000000..ac3d887 --- /dev/null +++ b/mobs_monster/description.txt @@ -0,0 +1 @@ +Adds many types of monster. diff --git a/mobs_monster/dirt_monster.lua b/mobs_monster/dirt_monster.lua new file mode 100644 index 0000000..2586f40 --- /dev/null +++ b/mobs_monster/dirt_monster.lua @@ -0,0 +1,75 @@ + +local S = mobs.intllib + + +-- Dirt Monster by PilzAdam + +mobs:register_mob("mobs_monster:dirt_monster", { + type = "monster", + passive = false, + attack_type = "dogfight", + pathfinding = true, + reach = 2, + damage = 2, + hp_min = 3, + hp_max = 27, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_stone_monster.b3d", + textures = { + {"mobs_dirt_monster.png"}, + }, + blood_texture = "default_dirt.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_dirtmonster", + }, + view_range = 15, + walk_velocity = 1, + run_velocity = 3, + jump = true, + drops = { + {name = "default:dirt", chance = 1, min = 3, max = 5}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 3, + fear_height = 4, + 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, + }, +}) + + +local spawn_on = "default:dirt_with_grass" + +if minetest.get_modpath("ethereal") then + spawn_on = "ethereal:gray_dirt" +end + +mobs:spawn({ + name = "mobs_monster:dirt_monster", + nodes = {spawn_on}, + min_light = 0, + max_light = 7, + chance = 6000, + active_object_count = 2, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:dirt_monster", S("Dirt Monster"), "default_dirt.png", 1) + + +mobs:alias_mob("mobs:dirt_monster", "mobs_monster:dirt_monster") -- compatibility diff --git a/mobs_monster/dungeon_master.lua b/mobs_monster/dungeon_master.lua new file mode 100644 index 0000000..b840092 --- /dev/null +++ b/mobs_monster/dungeon_master.lua @@ -0,0 +1,113 @@ + +local S = mobs.intllib + + +-- Dungeon Master by PilzAdam + +mobs:register_mob("mobs_monster:dungeon_master", { + type = "monster", + passive = false, + damage = 4, + attack_type = "dogshoot", + dogshoot_switch = 1, + dogshoot_count_max = 12, -- shoot for 10 seconds + dogshoot_count2_max = 3, -- dogfight for 3 seconds + reach = 3, + shoot_interval = 2.5, + arrow = "mobs_monster:fireball", + shoot_offset = 1, + hp_min = 12, + hp_max = 35, + armor = 60, + collisionbox = {-0.7, -1, -0.7, 0.7, 1.6, 0.7}, + visual = "mesh", + mesh = "mobs_dungeon_master.b3d", + textures = { + {"mobs_dungeon_master.png"}, + {"mobs_dungeon_master2.png"}, + {"mobs_dungeon_master3.png"}, + }, + makes_footstep_sound = true, + sounds = { + random = "mobs_dungeonmaster", + shoot_attack = "mobs_fireball", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 3}, + {name = "default:diamond", chance = 4, min = 1, max = 1}, + {name = "default:mese_crystal", chance = 2, min = 1, max = 2}, + {name = "default:diamondblock", chance = 30, min = 1, max = 1}, + }, + water_damage = 1, + lava_damage = 1, + light_damage = 0, + fear_height = 3, + animation = { + stand_start = 0, + stand_end = 19, + walk_start = 20, + walk_end = 35, + punch_start = 36, + punch_end = 48, + shoot_start = 36, + shoot_end = 48, + speed_normal = 15, + speed_run = 15, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:dungeon_master", + nodes = {"default:stone"}, + max_light = 5, + chance = 9000, + active_object_count = 1, + max_height = -70, +}) + + +mobs:register_egg("mobs_monster:dungeon_master", S("Dungeon Master"), "fire_basic_flame.png", 1, true) + + +mobs:alias_mob("mobs:dungeon_master", "mobs_monster:dungeon_master") -- compatibility + + +-- fireball (weapon) +mobs:register_arrow("mobs_monster:fireball", { + visual = "sprite", + visual_size = {x = 1, y = 1}, + textures = {"mobs_fireball.png"}, + velocity = 6, + tail = 1, + tail_texture = "mobs_fireball.png", + tail_size = 10, + glow = 5, + expire = 0.1, + + -- direct hit, no fire... just plenty of pain + hit_player = function(self, player) + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 8}, + }, nil) + end, + + hit_mob = function(self, player) + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 8}, + }, nil) + end, + + -- node hit + hit_node = function(self, pos, node) + mobs:boom(self, pos, 1) + end +}) + +--minetest.override_item("default:obsidian", {on_blast = function() end}) diff --git a/mobs_monster/init.lua b/mobs_monster/init.lua new file mode 100644 index 0000000..2164984 --- /dev/null +++ b/mobs_monster/init.lua @@ -0,0 +1,34 @@ + +local path = minetest.get_modpath("mobs_monster") + +-- Intllib +local S +if minetest.global_exists("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + S = intllib.make_gettext_pair() + else + -- Old method using text files. + S = intllib.Getter() + end +else + S = function(s) return s end +end +mobs.intllib = S + +-- Monsters + +dofile(path .. "/dirt_monster.lua") -- PilzAdam +dofile(path .. "/dungeon_master.lua") +dofile(path .. "/oerkki.lua") +dofile(path .. "/sand_monster.lua") +dofile(path .. "/stone_monster.lua") +dofile(path .. "/tree_monster.lua") +dofile(path .. "/lava_flan.lua") -- Zeg9 +dofile(path .. "/mese_monster.lua") +dofile(path .. "/spider.lua") -- AspireMint +dofile(path .. "/spider2.lua") + +dofile(path .. "/lucky_block.lua") + +print ("[MOD] Mobs Redo 'Monsters' loaded")