Standardize mob hp/damage.
This commit is contained in:
parent
17fc19f787
commit
6a793059f2
6 changed files with 120 additions and 20 deletions
4
abms.lua
4
abms.lua
|
@ -444,9 +444,9 @@ minetest.register_abm({
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"},
|
nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"},
|
||||||
neighbors = {"air"},
|
neighbors = {"air"},
|
||||||
interval = 100000 * fun_caves.time_factor,
|
interval = 1000000 * fun_caves.time_factor,
|
||||||
catch_up = false,
|
catch_up = false,
|
||||||
chance = 10000,
|
chance = 30000,
|
||||||
action = function(pos, node)
|
action = function(pos, node)
|
||||||
local ps = {}
|
local ps = {}
|
||||||
local players = minetest.get_connected_players()
|
local players = minetest.get_connected_players()
|
||||||
|
|
|
@ -15,6 +15,7 @@ newnode.sunlight_propagates = true
|
||||||
newnode.post_effect_color = {a = 50, r = 30, g = 60, b = 90},
|
newnode.post_effect_color = {a = 50, r = 30, g = 60, b = 90},
|
||||||
minetest.register_node("fun_caves:asteroid_water", newnode)
|
minetest.register_node("fun_caves:asteroid_water", newnode)
|
||||||
|
|
||||||
|
|
||||||
--bucket.liquids['fun_caves:asteroid_water'] = {
|
--bucket.liquids['fun_caves:asteroid_water'] = {
|
||||||
-- source = 'fun_caves:asteroid_water',
|
-- source = 'fun_caves:asteroid_water',
|
||||||
-- flowing = 'fun_caves:asteroid_water',
|
-- flowing = 'fun_caves:asteroid_water',
|
||||||
|
|
129
mobs.lua
129
mobs.lua
|
@ -178,6 +178,98 @@ fun_caves.custom_ready = function(self, delay)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Try to standardize creature stats based on (log of) mass.
|
||||||
|
local mob_stats = {
|
||||||
|
|
||||||
|
{name = 'dmobs:badger', hp = 12, damage = 1, armor = 100},
|
||||||
|
{name = 'dmobs:dragon', hp = 40, damage = 6, armor = 50},
|
||||||
|
{name = 'dmobs:elephant', hp = 38, damage = 5, armor = 75},
|
||||||
|
{name = 'dmobs:fox', hp = 8, damage = 1, armor = 100},
|
||||||
|
{name = 'dmobs:hedgehog', hp = 2, damage = 1, armor = 100},
|
||||||
|
{name = 'dmobs:ogre', hp = 26, damage = 3, armor = 75},
|
||||||
|
{name = 'dmobs:orc', hp = 22, damage = 2, armor = 100},
|
||||||
|
{name = 'dmobs:owl', hp = 6, damage = 1, armor = 100},
|
||||||
|
{name = 'dmobs:panda', hp = 22, damage = 2, armor = 100},
|
||||||
|
{name = 'kpgmobs:deer', hp = 20, damage = 2, armor = 100},
|
||||||
|
{name = 'kpgmobs:horse2', hp = 30, damage = 3, armor = 100},
|
||||||
|
{name = 'kpgmobs:horse3', hp = 30, damage = 3, armor = 100},
|
||||||
|
{name = 'kpgmobs:horse', hp = 30, damage = 3, armor = 100},
|
||||||
|
{name = 'kpgmobs:jeraf', hp = 32, damage = 3, armor = 100},
|
||||||
|
{name = 'kpgmobs:medved', hp = 26, damage = 3, armor = 100},
|
||||||
|
{name = 'kpgmobs:wolf', hp = 18, damage = 3, armor = 100},
|
||||||
|
{name = 'mobs_animal:bee', hp = 1, damage = 1, armor = 200},
|
||||||
|
{name = 'mobs_animal:bunny', hp = 2, damage = 1, armor = 100},
|
||||||
|
{name = 'mobs_animal:chicken', hp = 8, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_animal:cow', hp = 30, damage = 3, armor = 150},
|
||||||
|
{name = 'mobs_animal:kitten', hp = 8, damage = 1, armor = 100},
|
||||||
|
{name = 'mobs_animal:pumba', hp = 20, damage = 2, armor = 100},
|
||||||
|
{name = 'mobs_animal:rat', hp = 2, damage = 1, armor = 100},
|
||||||
|
{name = 'mobs_animal:sheep', hp = 18, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_bat:bat', hp = 2, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_birds:bird_lg', hp = 4, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_birds:bird_sm', hp = 2, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_birds:gull', hp = 4, damage = 1, armor = 150},
|
||||||
|
{name = 'mobs_butterfly:butterfly', hp = 1, damage = 0, armor = 200},
|
||||||
|
{name = 'mobs_creeper:creeper', hp = 14, damage = 2, armor = 150},
|
||||||
|
{name = 'mobs_crocs:crocodile_float', hp = 26, damage = 3, armor = 75},
|
||||||
|
{name = 'mobs_crocs:crocodile', hp = 26, damage = 3, armor = 75},
|
||||||
|
{name = 'mobs_crocs:crocodile_swim', hp = 26, damage = 3, armor = 75},
|
||||||
|
{name = 'mobs_fish:clownfish', hp = 2, damage = 0, armor = 100},
|
||||||
|
{name = 'mobs_fish:tropical', hp = 2, damage = 0, armor = 100},
|
||||||
|
{name = 'mobs_jellyfish:jellyfish', hp = 2, damage = 2, armor = 200},
|
||||||
|
{name = 'mobs_monster:dirt_monster', hp = 20, damage = 2, armor = 100},
|
||||||
|
{name = 'mobs_monster:dungeon_master', hp = 30, damage = 5, armor = 50},
|
||||||
|
{name = 'mobs_monster:lava_flan', hp = 16, damage = 3, armor = 50},
|
||||||
|
{name = 'mobs_monster:mese_monster', hp = 10, damage = 2, armor = 40},
|
||||||
|
{name = 'mobs_monster:oerkki', hp = 16, damage = 2, armor = 100},
|
||||||
|
{name = 'mobs_monster:sand_monster', hp = 20, damage = 2, armor = 200},
|
||||||
|
{name = 'mobs_monster:spider', hp = 22, damage = 2, armor = 100},
|
||||||
|
{name = 'mobs_monster:stone_monster', hp = 20, damage = 2, armor = 50},
|
||||||
|
{name = 'mobs_monster:tree_monster', hp = 18, damage = 2, armor = 75},
|
||||||
|
{name = 'mobs_sandworm:sandworm', hp = 42, damage = 7, armor = 100},
|
||||||
|
{name = 'mobs_sharks:shark_lg', hp = 34, damage = 5, armor = 80},
|
||||||
|
{name = 'mobs_sharks:shark_md', hp = 25, damage = 3, armor = 80},
|
||||||
|
{name = 'mobs_sharks:shark_sm', hp = 16, damage = 2, armor = 80},
|
||||||
|
--{name = 'mobs_slimes:green_big', hp = 16, damage = 3, armor = 100},
|
||||||
|
--{name = 'mobs_slimes:green_medium', hp = 16, damage = 3, armor = 100},
|
||||||
|
--{name = 'mobs_slimes:green_small', hp = 16, damage = 3, armor = 100},
|
||||||
|
--{name = 'mobs_slimes:lava_big', hp = 16, damage = 3, armor = 100},
|
||||||
|
--{name = 'mobs_slimes:lava_medium', hp = 16, damage = 3, armor = 100},
|
||||||
|
--{name = 'mobs_slimes:lava_small', hp = 16, damage = 3, armor = 100},
|
||||||
|
{name = 'mobs_turtles:seaturtle', hp = 18, damage = 2, armor = 75},
|
||||||
|
{name = 'mobs_turtles:turtle', hp = 10, damage = 1, armor = 50},
|
||||||
|
{name = 'mobs_yeti:yeti', hp = 22, damage = 2, armor = 100},
|
||||||
|
}
|
||||||
|
local colors = { 'black', 'blue', 'brown', 'cyan', 'dark_green', 'dark_grey', 'green', 'grey', 'magenta', 'orange', 'pink', 'red', 'violet', 'white', 'yellow',}
|
||||||
|
for _, color in pairs(colors) do
|
||||||
|
mob_stats[#mob_stats+1] = {name = 'mobs_animal:sheep_'..color, hp = 18, damage = 1, armor = 150}
|
||||||
|
end
|
||||||
|
for _, mob in pairs(mob_stats) do
|
||||||
|
if string.find(mob.name, 'mobs_monster') or string.find(mob.name, 'mobs_animal') then
|
||||||
|
local i, j = string.find(mob.name, ':')
|
||||||
|
local suff = string.sub(mob.name, i)
|
||||||
|
mob_stats[#mob_stats+1] = {name = 'mobs'..suff, hp = mob.hp, damage = mob.damage, armor = mob.armor}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local mob_check = {}
|
||||||
|
for _, mob in pairs(mob_stats) do
|
||||||
|
if minetest.registered_entities[mob.name] then
|
||||||
|
minetest.registered_entities[mob.name].damage = mob.damage
|
||||||
|
minetest.registered_entities[mob.name].hp_min = math.ceil(mob.hp * 0.5)
|
||||||
|
minetest.registered_entities[mob.name].hp_max = math.ceil(mob.hp * 1.5)
|
||||||
|
minetest.registered_entities[mob.name].armor = mob.armor
|
||||||
|
mob_check[mob.name] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for name, mob in pairs(minetest.registered_entities) do
|
||||||
|
if not mob_check[name] then
|
||||||
|
print(name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if minetest.registered_entities["dmobs:fox"] then
|
if minetest.registered_entities["dmobs:fox"] then
|
||||||
local function fire_walk(self)
|
local function fire_walk(self)
|
||||||
if not fun_caves.custom_ready(self, 1000000) then
|
if not fun_caves.custom_ready(self, 1000000) then
|
||||||
|
@ -198,8 +290,8 @@ if minetest.registered_entities["dmobs:fox"] then
|
||||||
local m = table.copy(minetest.registered_entities["dmobs:fox"])
|
local m = table.copy(minetest.registered_entities["dmobs:fox"])
|
||||||
m.name = 'fun_caves:fire_fox'
|
m.name = 'fun_caves:fire_fox'
|
||||||
m.damage = 3
|
m.damage = 3
|
||||||
--hp_min = 42,
|
m.hp_min = 8
|
||||||
--hp_max = 52,
|
m.hp_max = 24
|
||||||
m.lava_damage = 0
|
m.lava_damage = 0
|
||||||
m.textures = { {"fun_caves_fire_fox_2.png"}, }
|
m.textures = { {"fun_caves_fire_fox_2.png"}, }
|
||||||
m.base_texture = m.textures[1]
|
m.base_texture = m.textures[1]
|
||||||
|
@ -263,9 +355,9 @@ if minetest.registered_entities["mobs:bee"] then
|
||||||
attacks_monsters = true,
|
attacks_monsters = true,
|
||||||
reach = 2,
|
reach = 2,
|
||||||
damage = 1,
|
damage = 1,
|
||||||
hp_min = 5,
|
hp_min = 2,
|
||||||
hp_max = 10,
|
hp_max = 6,
|
||||||
armor = 200,
|
armor = 100,
|
||||||
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
|
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_bee.x",
|
mesh = "mobs_bee.x",
|
||||||
|
@ -316,8 +408,8 @@ if minetest.registered_entities["mobs:bee"] then
|
||||||
local m = table.copy(minetest.registered_entities["fun_caves:killer_bee"])
|
local m = table.copy(minetest.registered_entities["fun_caves:killer_bee"])
|
||||||
m.name = 'fun_caves:killer_bee_drone'
|
m.name = 'fun_caves:killer_bee_drone'
|
||||||
m.damage = 3
|
m.damage = 3
|
||||||
m.hp_min = 10
|
m.hp_min = 3
|
||||||
m.hp_max = 20
|
m.hp_max = 9
|
||||||
m.visual_size = {x = 1.25, y = 1.25}
|
m.visual_size = {x = 1.25, y = 1.25}
|
||||||
|
|
||||||
minetest.registered_entities["fun_caves:killer_bee_drone"] = m
|
minetest.registered_entities["fun_caves:killer_bee_drone"] = m
|
||||||
|
@ -327,8 +419,8 @@ if minetest.registered_entities["mobs:bee"] then
|
||||||
|
|
||||||
m = table.copy(minetest.registered_entities["fun_caves:killer_bee"])
|
m = table.copy(minetest.registered_entities["fun_caves:killer_bee"])
|
||||||
m.damage = 2
|
m.damage = 2
|
||||||
m.hp_min = 15
|
m.hp_min = 4
|
||||||
m.hp_max = 30
|
m.hp_max = 12
|
||||||
m.name = 'fun_caves:killer_bee_queen'
|
m.name = 'fun_caves:killer_bee_queen'
|
||||||
m.visual_size = {x = 1.5, y = 1.25}
|
m.visual_size = {x = 1.5, y = 1.25}
|
||||||
|
|
||||||
|
@ -433,9 +525,10 @@ if minetest.registered_entities["mobs_monster:spider"] then
|
||||||
m = table.copy(minetest.registered_entities["mobs_monster:spider"])
|
m = table.copy(minetest.registered_entities["mobs_monster:spider"])
|
||||||
m.docile_by_day = false
|
m.docile_by_day = false
|
||||||
m.attacks_monsters = true
|
m.attacks_monsters = true
|
||||||
m.damage = 1
|
m.damage = 2
|
||||||
m.hp_min = 10
|
m.hp_min = 9
|
||||||
m.hp_max = 20
|
m.hp_max = 27
|
||||||
|
m.armor = 100
|
||||||
m.water_damage = 0
|
m.water_damage = 0
|
||||||
m.fall_damage = 0
|
m.fall_damage = 0
|
||||||
m.collisionbox = {-0.32, -0.0, -0.25, 0.25, 0.25, 0.25}
|
m.collisionbox = {-0.32, -0.0, -0.25, 0.25, 0.25, 0.25}
|
||||||
|
@ -506,8 +599,9 @@ end
|
||||||
if minetest.registered_entities["mobs_monster:sand_monster"] then
|
if minetest.registered_entities["mobs_monster:sand_monster"] then
|
||||||
local m = table.copy(minetest.registered_entities["mobs_monster:sand_monster"])
|
local m = table.copy(minetest.registered_entities["mobs_monster:sand_monster"])
|
||||||
m.damage = 2
|
m.damage = 2
|
||||||
m.hp_min = 15
|
m.hp_min = 10
|
||||||
m.hp_max = 40
|
m.hp_max = 30
|
||||||
|
m.armor = 200
|
||||||
m.textures = { {"fun_caves_tar_monster.png"}, }
|
m.textures = { {"fun_caves_tar_monster.png"}, }
|
||||||
m.base_texture = m.textures[1]
|
m.base_texture = m.textures[1]
|
||||||
m.drops = { {name = "default:coal_lump", chance = 1, min = 3, max = 5}, }
|
m.drops = { {name = "default:coal_lump", chance = 1, min = 3, max = 5}, }
|
||||||
|
@ -541,7 +635,6 @@ if minetest.registered_entities["dmobs:elephant"] then
|
||||||
local m = minetest.registered_entities["dmobs:elephant"]
|
local m = minetest.registered_entities["dmobs:elephant"]
|
||||||
m.type = "monster"
|
m.type = "monster"
|
||||||
m.reach = 3
|
m.reach = 3
|
||||||
m.damage = 3
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.registered_entities["mobs_monster:dirt_monster"] then
|
if minetest.registered_entities["mobs_monster:dirt_monster"] then
|
||||||
|
@ -585,9 +678,9 @@ if minetest.registered_entities["mobs_sharks:shark_lg"] then
|
||||||
local l_spawn_in = {"default:water_flowing","default:water_source"}
|
local l_spawn_in = {"default:water_flowing","default:water_source"}
|
||||||
local l_spawn_near = {"default:water_flowing","default:water_source","seawrecks:woodship","seawrecks:uboot"}
|
local l_spawn_near = {"default:water_flowing","default:water_source","seawrecks:woodship","seawrecks:uboot"}
|
||||||
|
|
||||||
m.damage = 15
|
m.damage = 7
|
||||||
m.hp_min = 40
|
m.hp_min = 20
|
||||||
m.hp_max = 50
|
m.hp_max = 60
|
||||||
m.visual_size = {x=3, y=3}
|
m.visual_size = {x=3, y=3}
|
||||||
m.collisionbox = {-2, -1.5, -2, 2, 1.5, 2}
|
m.collisionbox = {-2, -1.5, -2, 2, 1.5, 2}
|
||||||
m.textures = {"fun_caves_albino.png"}
|
m.textures = {"fun_caves_albino.png"}
|
||||||
|
|
|
@ -502,3 +502,8 @@ minetest.register_craftitem("fun_caves:philosophers_stone", {
|
||||||
groups = {dig_immediate = 3},
|
groups = {dig_immediate = 3},
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
newnode = fun_caves.clone_node("default:stone")
|
||||||
|
newnode.tiles = {'dna.png'}
|
||||||
|
minetest.register_node("fun_caves:dna", newnode)
|
||||||
|
|
BIN
textures/dna.png
Normal file
BIN
textures/dna.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 74 KiB |
|
@ -6,3 +6,4 @@ Original tanzanite: Chromalys (cc-by-sa 4), https://en.wikipedia.org/wiki/File:T
|
||||||
Original aquamarine: Diamondexpert (cc-by-sa 2.5), https://commons.wikimedia.org/wiki/File:Gems_aquamarine.jpg
|
Original aquamarine: Diamondexpert (cc-by-sa 2.5), https://commons.wikimedia.org/wiki/File:Gems_aquamarine.jpg
|
||||||
Original garnet: von de Wela49 (cc-by-sa 3), https://en.wikipedia.org/wiki/File:Garnet_cut.JPG
|
Original garnet: von de Wela49 (cc-by-sa 3), https://en.wikipedia.org/wiki/File:Garnet_cut.JPG
|
||||||
Modified radioactive ore: everamzah
|
Modified radioactive ore: everamzah
|
||||||
|
Original DNA: Zephyris (cc-by-sa 3), https://en.wikipedia.org/wiki/File:DNA_Structure%2BKey%2BLabelled.pn_NoBB.png
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue