diff --git a/LICENSE.txt b/LICENSE.txt index 5ebfbbe..01463c2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -14,7 +14,18 @@ Submitter: Ross Mayfield SPDX short identifier: CPAL-1.0 Steward:Socialtext https://opensource.org/license/cpal_1-0/ -REst of files: +Source balrog **Source code's license:** [LGPL v2.1][1] + mobs_balrog this code is based in the Hamlet one + +Media (Textures, Models, Sounds) license:** [CC-BY-SA 3.0 Unported][2] + mobs_balrog.b3d initially the balrog was created by STHGOM / sparky + mobs_balrog*ogg BrandonReese + mobs_balrog_balrog.png STHGOM / sparky + +Texture Copyright (CC0) creative commons zero by LordNeo + mobs_balrog_balrog_whip.png + +Rest of files, work made by mckaygerhard and mckayshirou: https://www.perlfoundation.org/artistic-license-20.html diff --git a/README.md b/README.md index 986a94a..772cd67 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,8 @@ To download you can play this game with the following minetest engines: * ethereal as `ethereal` [mods/ethereal](mods/ethereal) from https://codeberg.org/minenux/minetest-mod-ethereal * PilzAdam mobs mods and D00Med mobs * dmobs+animal+monsters as `mobs_jam` [mods/mobs_jam](mods/mobs_jam) from https://codeberg.org/minenux/minetest-mod-mobs_jam +* Balrog boss by STHGOM / sparky, Hamlet, BrandonReese, LordNeo + * mobs_balrog as `mobs_jam` [mods/mobs_jam](mods/mobs_jam) from https://codeberg.org/minenux/minetest-mod-mobs_jam * player stuffs: * minenux bags as `backpacks` [mods/backpacks](mods/backpacks) * NPXcoot diff --git a/mods/mobs_jam/balrog.lua b/mods/mobs_jam/balrog.lua new file mode 100644 index 0000000..34d5cc2 --- /dev/null +++ b/mods/mobs_jam/balrog.lua @@ -0,0 +1,375 @@ +--[[ + + Mobs Balrog - Adds balrogs. + Copyright © 2018-2019 Hamlet + + Authors of source code: + ----------------------- + (LOTT-specific-mod) + Original Author(s): + PilzAdam (WTFPL) + https://github.com/PilzAdam/mobs + Modifications By: + Copyright (C) 2016 TenPlus1 (MIT) + https://github.com/tenplus1/mobs_redo + BrandonReese (LGPL v2.1) + https://github.com/Bremaweb/adventuretest + LOTT Modifications By: + Amaz (LGPL v2.1) + lumidify (LGPL v2.1) + fishyWET (LGPL v2.1) + https://github.com/minetest-LOTR/Lord-of-the-Test/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the Lesser GNU General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + + +]]-- + + +-- Used for localization + +local S = mobs.intllib_animal + +-- +-- Balrog's spawn settings +-- + +local MAX_LIGHT = tonumber(minetest.settings:get("mobs_balrog_max_light")) +if (MAX_LIGHT == nil) then + MAX_LIGHT = 14 +end + +local MIN_LIGHT = tonumber(minetest.settings:get("mobs_balrog_min_light")) +if (MIN_LIGHT == nil) then + MIN_LIGHT = 0 +end + +local INTERVAL = tonumber(minetest.settings:get("mobs_balrog_interval")) +if (INTERVAL == nil) then + INTERVAL = 60 +end + +local CHANCE = tonumber(minetest.settings:get("mobs_balrog_chance")) +if (CHANCE == nil) then + CHANCE = 50000 +end + +local MAX_NUMBER = tonumber(minetest.settings:get("mobs_balrog_aoc")) +if (MAX_NUMBER == nil) then + MAX_NUMBER = 1 +end + +local MIN_HEIGHT = tonumber(minetest.settings:get("mobs_balrog_min_height")) +if (MIN_HEIGHT == nil) then + MIN_HEIGHT = -30912 +end + +local MAX_HEIGHT = tonumber(minetest.settings:get("mobs_balrog_max_height")) +if (MAX_HEIGHT == nil) then + MAX_HEIGHT = -1800 +end + + +-- +-- Balrog's attributes +-- + +local MIN_HP = tonumber(minetest.settings:get("mobs_balrog_min_hp")) +if (MIN_HP == nil) then + MIN_HP = 400 +end + +local MAX_HP = tonumber(minetest.settings:get("mobs_balrog_max_hp")) +if (MAX_HP == nil) then + MAX_HP = 600 +end + +local WALK_CHANCE = tonumber(minetest.settings:get("mobs_balrog_walk_chance")) +if (WALK_CHANCE == nil) then + WALK_CHANCE = 50 +end + +local VIEW_RANGE = tonumber(minetest.settings:get("mobs_balrog_view_range")) +if (VIEW_RANGE == nil) then + VIEW_RANGE = 32 +end + +local DAMAGE = tonumber(minetest.settings:get("mobs_balrog_damage")) +if (DAMAGE == nil) then + DAMAGE = 20 +end + +local PATH_FINDER = tonumber(minetest.settings:get("mobs_balrog_pathfinding")) +if (PATH_FINDER == nil) then + PATH_FINDER = 1 +end + + +local spawn_nodes = {"group:stone"} +if minetest.get_modpath("nether") then + spawn_nodes = {"nether:rack", "nether:rack_deep", "group:stone"} + CHANCE = 10000 + MAX_HEIGHT = -8000 +end +-- +-- Balrog entity +-- + +mobs:register_mob("mobs_jam:balrog", { + nametag = "", + type = "monster", + hp_min = MIN_HP, + hp_max = MAX_HP, + armor = 100, + walk_velocity = 3.5, + run_velocity = 5.2, + walk_chance = WALK_CHANCE, + jump_height = 14, + stepheight = 2.2, + view_range = VIEW_RANGE, + damage = DAMAGE, + knock_back = false, + fear_height = 0, + fall_damage = 0, + water_damage = 7, + lava_damage = 0, + light_damage = 0, + suffocation = false, + floats = 0, + reach = 5, + attack_animals = true, + group_attack = true, + attack_type = "dogfight", + blood_amount = 0, + pathfinding = PATH_FINDER, + makes_footstep_sound = true, + sounds = { + distance = VIEW_RANGE * 8, + war_cry = "mobs_balrog_howl", + death = "mobs_balrog_howl", + attack = "mobs_balrog_stone_death" + }, + drops = { + {name = "mobs_balrog:balrog_whip", + chance = 100, + min = 1, + max = 1} + }, + visual = "mesh", + visual_size = {x = 2, y = 2}, + collisionbox = {-0.8, -2.0, -0.8, 0.8, 2.5, 0.8}, + textures = {"mobs_balrog_balrog.png"}, + mesh = "mobs_balrog.b3d", + rotate = 180, + animation = { + stand_start = 0, + stand_end = 240, + walk_start = 240, + walk_end = 300, + walk_speed = 35, + run_speed = 55, + punch_start = 300, + punch_end = 380, + punch_speed = 55, + }, + on_die = function(self, pos) + self.object:remove() + + minetest.after(0.0, function() + -- This has been taken from ../tnt/init.lua @243 + minetest.add_particlespawner({ + amount = 134, + time = 0.1, + minpos = vector.subtract(pos, 10 / 2), + maxpos = vector.add(pos, 10 / 2), + minvel = {x = -3, y = 0, z = -3}, + maxvel = {x = 3, y = 5, z = 3}, + minacc = {x = 0, y = -10, z = 0}, + maxacc = {x = 0, y = -10, z = 0}, + minexptime = 0.8, + maxexptime = 2.0, + minsize = 10 * 0.66, + maxsize = 10 * 2, + texture = "fire_basic_flame.png", + collisiondetection = true, + }) + tnt.boom(pos, { + name = "Balrog's Blast", + radius = 14, + damage_radius = 50, + disable_drops = true, + ignore_protection = false, + ignore_on_blast = false, + tiles = {""}, + }) + end) + end, +}) + + +-- +-- Balrog's whip +-- + +minetest.register_tool(":mobs_balrog:balrog_whip", { + description = minetest.colorize("orange", S("Balrog Whip")) .. + minetest.get_background_escape_sequence("darkred"), + inventory_image = "mobs_balrog_balrog_whip.png^[transform3", + on_use = function(itemstack, user, pointed_thing) + if not user then return end + if pointed_thing.type == "nothing" then + local dir = user:get_look_dir() + local pos = user:get_pos() + for i = 1, 50 do + local new_pos = { + x = pos.x + (dir.x * i), + y = pos.y + (dir.y * i), + z = pos.z + (dir.z * i), + } + if minetest.get_node(new_pos).name == "air" and + not minetest.is_protected(new_pos, user:get_player_name()) then + minetest.set_node(new_pos, {name = "fire:basic_flame"}) + end + end + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/49) + return itemstack + end + elseif pointed_thing.type == "object" then + local obj = pointed_thing.ref + minetest.add_particlespawner({ + amount = 40, + time = 6, + minpos = {x = -1, y = -1, z = -1}, + maxpos = {x = 1, y = 1, z = 1}, + minvel = {x = -2, y = -2, z = -2}, + maxvel = {x = 2, y = 2, z = 2}, + minacc = {x = -1, y = -1, z = -1}, + maxacc = {x = 1, y = 1, z = 1}, + minexptime = 1, + maxexptime = 2, + minsize = 1, + maxsize = 3, + attached = obj, + vertical = false, + -- ^ vertical: if true faces player using y axis only + texture = "fire_basic_flame.png", + }) + obj:punch(user, 1, itemstack:get_tool_capabilities()) + for i = 1, 5 do + minetest.after(i, function() + if obj and user and itemstack then + obj:punch(user, 1, itemstack:get_tool_capabilities()) + end + end) + end + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/499) + return itemstack + end + elseif pointed_thing.type == "node" then + local pos = user:get_pos() + local radius = 5 + for x = -radius, radius do + for z = -radius, radius do + for y = 10, -10, -1 do + local new_pos = { + x = pos.x + x, + y = pos.y + y, + z = pos.z + z, + } + + local node = minetest.get_node(new_pos) + local nodeu = minetest.get_node({x = new_pos.x, y = new_pos.y - 1, z = new_pos.z}) + local value = x * x + z * z + if value <= radius * radius + 1 + and node.name == "air" and nodeu.name ~= "air" then + if not minetest.is_protected(new_pos, user:get_player_name()) then + minetest.set_node(new_pos, {name = "fire:basic_flame"}) + break + end + end + end + end + end + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/49) + return itemstack + end + end + end, + tool_capabilities = { + full_punch_interval = 0.25, + max_drop_level=2, + groupcaps={ + snappy={times={[1]=1.60, [2]=1.30, [3]=0.90}, uses=50, maxlevel=3}, + }, + damage_groups = {fleshy=5}, + }, + on_die = function(self, pos) + self.object:remove() + + -- This has been taken from ../tnt/init.lua @243 + minetest.add_particlespawner({ + amount = 128, + time = 0.1, + minpos = vector.subtract(pos, 10 / 2), + maxpos = vector.add(pos, 10 / 2), + minvel = {x = -3, y = 0, z = -3}, + maxvel = {x = 3, y = 5, z = 3}, + minacc = {x = 0, y = -10, z = 0}, + maxacc = {x = 0, y = -10, z = 0}, + minexptime = 0.8, + maxexptime = 2.0, + minsize = 10 * 0.66, + maxsize = 10 * 2, + texture = "fire_basic_flame.png", + collisiondetection = true, + }) + end, + on_blast = function(self, damage) + return false, false, {} + end, + light_source = 14, +}) + + +-- +-- Barlog's spawner +-- + +-- do not allow custom spawn this is a boss +mobs:spawn({name = "mobs_jam:balrog", + nodes = spawn_nodes, + max_light = MAX_LIGHT, + min_light = MIN_LIGHT, + interval = INTERVAL, + chance = CHANCE, + active_object_count = MAX_NUMBER, + min_height = MIN_HEIGHT, + max_height = MAX_HEIGHT, +}) + +mobs:register_egg("mobs_jam:balrog", + "Balrog", + "default_lava.png", -- the texture displayed for the egg in inventory + 1, -- egg image in front of your texture (1 = yes, 0 = no) + false -- if set to true this stops spawn egg appearing in creative +) + +mobs:alias_mob("mobs_balrog:balrog", "mobs_jam:balrog") + +print("[Mod] Mobs Balrog (from mobs_jam) loaded.") diff --git a/mods/mobs_jam/depends.txt b/mods/mobs_jam/depends.txt index 5a90437..4249e43 100644 --- a/mods/mobs_jam/depends.txt +++ b/mods/mobs_jam/depends.txt @@ -1,7 +1,8 @@ mobs -default? +default farming? lucky_block? intllib? -tnt? -fire? +tnt +fire +nether? diff --git a/mods/mobs_jam/init.lua b/mods/mobs_jam/init.lua index 3e3af18..bf2a2a2 100644 --- a/mods/mobs_jam/init.lua +++ b/mods/mobs_jam/init.lua @@ -75,6 +75,10 @@ dofile(path .. "oerkki.lua") -- Pavel_S and PilzAdam (WTFPL) dofile(path .. "lava_flan.lua") -- Lava Flan by Zeg9 (additional textures by JurajVajda) end +if not minetest.get_modpath("mobs_balrog") then +dofile(path .. "balrog.lua") -- STHGOM / sparky and LordNeo +end + -- Load custom spawning if mobs.custom_spawn_animal then dofile(path .. "spawn.lua") diff --git a/mods/mobs_jam/license.txt b/mods/mobs_jam/license.txt index e282c15..8b478c6 100644 --- a/mods/mobs_jam/license.txt +++ b/mods/mobs_jam/license.txt @@ -1,31 +1,18 @@ -Code that was under WTFPL are not under CC-BY-SA-NC (take note about non comercial) +Code that was under WTFPL are now under CC-BY-SA-NC (take note about non comercial) to respective prevous autors and mckaygerhard due modifications -All my models (K Pavel) and change code on valid license The MIT License +Source balrog **Source code's license:** [LGPL v2.1][1] + mobs_balrog this code is based in the Hamlet one -The MIT License (MIT) +Media (Textures, Models, Sounds) license:** [CC-BY-SA 3.0 Unported][2] + mobs_balrog.b3d initially the balrog was created by STHGOM / sparky + mobs_balrog*ogg BrandonReese + mobs_balrog_balrog.png STHGOM / sparky -Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Texture Copyright (CC0) creative commons zero by LordNeo + mobs_balrog_balrog_whip.png Chicken/Cow/Panda/Pig/Sheep sounds from freesounds.org under CC0 diff --git a/mods/mobs_jam/mod.conf b/mods/mobs_jam/mod.conf index 1a982c2..c6fdf55 100644 --- a/mods/mobs_jam/mod.conf +++ b/mods/mobs_jam/mod.conf @@ -1,5 +1,6 @@ name = mobs_jam -depends = mobs -optional_depends = default, farming, lucky_block, tnt, fire +depends = mobs, default, fire, mobs, tnt +optional_depends = farming, lucky_block, nether description = MOBS mod of animals, monters and extra, reduced version from tenplush1 and others mods min_minetest_version = 0.4.16 +media_license = CC-BY-SA-3.0 diff --git a/mods/mobs_jam/models/mobs_balrog.b3d b/mods/mobs_jam/models/mobs_balrog.b3d new file mode 100644 index 0000000..5fa371e Binary files /dev/null and b/mods/mobs_jam/models/mobs_balrog.b3d differ diff --git a/mods/mobs_jam/readme.md b/mods/mobs_jam/readme.md index 75893a0..d7f976d 100644 --- a/mods/mobs_jam/readme.md +++ b/mods/mobs_jam/readme.md @@ -32,6 +32,8 @@ It provides mobs: * `fox` * `owl` * `tortoise` +* `mobs_balrog` + * `balrog` !! It also has backguard compatibility for 0.4 engine. It also provides some new translatins and ajustments @@ -52,9 +54,12 @@ compatibility, but you can diable it to gain performan by not registered so many * mobs * default * farming +* fire +* tnt Optionally +* nether * intlib * lucky_blocks @@ -116,6 +121,9 @@ Found in dark areas like most monsters, Oerkki wander the caverns stealing away Fire Spirits will not tolerate players roaming around their domain and will fiercely attack until their dying puff of smoke. They will drop their spirit and some fire dust when using ethereal. +### balrog + +The final boss! it could inclusive crash the server.. be carefully! #### Lucky Blocks: 20 @@ -125,7 +133,14 @@ They will drop their spirit and some fire dust when using ethereal. CC-BY-SA-NC unless permission of * Copyright (C) 2022+ PICCORO Lenz MCKAY + +This mod handles several others works under following licences: + * Copyright (C) 2016-2020 tenplus1 +* Copyright (C) 2015 LordNeo +* Copyright (C) 2014 Hamlet +* Copyright (C) 2014 STHGOM / sparky +* Copyright (C) 2014 BrandonReese * Copyright (C) 2004-2012 Sam Hocevar Check license.txt for art and models diff --git a/mods/mobs_jam/screenshot.png b/mods/mobs_jam/screenshot.png index b6db76d..26dbeac 100644 Binary files a/mods/mobs_jam/screenshot.png and b/mods/mobs_jam/screenshot.png differ diff --git a/mods/mobs_jam/sounds/mobs_balrog_howl.ogg b/mods/mobs_jam/sounds/mobs_balrog_howl.ogg new file mode 100644 index 0000000..de7d8e8 Binary files /dev/null and b/mods/mobs_jam/sounds/mobs_balrog_howl.ogg differ diff --git a/mods/mobs_jam/sounds/mobs_balrog_stone_death.ogg b/mods/mobs_jam/sounds/mobs_balrog_stone_death.ogg new file mode 100644 index 0000000..8ff976e Binary files /dev/null and b/mods/mobs_jam/sounds/mobs_balrog_stone_death.ogg differ diff --git a/mods/mobs_jam/textures/mobs_balrog_balrog.png b/mods/mobs_jam/textures/mobs_balrog_balrog.png new file mode 100644 index 0000000..7d8a81a Binary files /dev/null and b/mods/mobs_jam/textures/mobs_balrog_balrog.png differ diff --git a/mods/mobs_jam/textures/mobs_balrog_balrog_whip.png b/mods/mobs_jam/textures/mobs_balrog_balrog_whip.png new file mode 100644 index 0000000..6ede89c Binary files /dev/null and b/mods/mobs_jam/textures/mobs_balrog_balrog_whip.png differ