armor tweaks
parent
505d29daba
commit
7152a7ae1c
|
@ -11,3 +11,7 @@ Authors of media (sounds)
|
|||
Yuval (CC0 1.0)
|
||||
https://freesound.org/people/Yuval/sounds/197023/
|
||||
env_sounds_water.*.ogg
|
||||
|
||||
Halion (CC0 1.0)
|
||||
https://freesound.org/people/Halion/sounds/17785/
|
||||
env_sounds_lava.*.ogg
|
||||
|
|
|
@ -1,11 +1,41 @@
|
|||
-- Parameters
|
||||
|
||||
local radius = 8 -- Water node search radius around player
|
||||
-- Node search radius around player
|
||||
local radius = 8
|
||||
|
||||
-- End of parameters
|
||||
local allsounds = {
|
||||
["env_sounds_water"] = {
|
||||
trigger = {"default:water_flowing", "default:river_water_flowing"},
|
||||
base_volume = 0.04,
|
||||
max_volume = 0.4,
|
||||
per_node = 0.004,
|
||||
},
|
||||
["env_sounds_lava"] = {
|
||||
trigger = {"default:lava_source", "default:lava_flowing"},
|
||||
base_volume = 0,
|
||||
max_volume = 0.6,
|
||||
per_node = {
|
||||
["default:lava_source"] = 0.008,
|
||||
["default:lava_flowing"] = 0.002,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if minetest.settings:get_bool("river_source_sounds") then
|
||||
table.insert(allsounds["env_sounds_water"].trigger,
|
||||
"default:river_water_source")
|
||||
end
|
||||
|
||||
|
||||
local river_source_sounds = minetest.settings:get_bool("river_source_sounds")
|
||||
-- Cache the union of all trigger nodes
|
||||
|
||||
local cache_triggers = {}
|
||||
|
||||
for sound, def in pairs(allsounds) do
|
||||
for _, name in ipairs(def.trigger) do
|
||||
table.insert(cache_triggers, name)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Update sound for player
|
||||
|
@ -13,39 +43,57 @@ local river_source_sounds = minetest.settings:get_bool("river_source_sounds")
|
|||
local function update_sound(player)
|
||||
local player_name = player:get_player_name()
|
||||
local ppos = player:get_pos()
|
||||
ppos = vector.add(ppos, player:get_properties().eye_height)
|
||||
local areamin = vector.subtract(ppos, radius)
|
||||
local areamax = vector.add(ppos, radius)
|
||||
local water_nodes = {"default:water_flowing", "default:river_water_flowing"}
|
||||
if river_source_sounds then
|
||||
table.insert(water_nodes, "default:river_water_source")
|
||||
end
|
||||
local wpos, _ = minetest.find_nodes_in_area(areamin, areamax, water_nodes)
|
||||
local waters = #wpos
|
||||
if waters == 0 then
|
||||
|
||||
local pos = minetest.find_nodes_in_area(areamin, areamax, cache_triggers, true)
|
||||
if next(pos) == nil then -- If table empty
|
||||
return
|
||||
end
|
||||
for sound, def in pairs(allsounds) do
|
||||
-- Find average position
|
||||
local posav = {0, 0, 0}
|
||||
local count = 0
|
||||
for _, name in ipairs(def.trigger) do
|
||||
if pos[name] then
|
||||
for _, p in ipairs(pos[name]) do
|
||||
posav[1] = posav[1] + p.x
|
||||
posav[2] = posav[2] + p.y
|
||||
posav[3] = posav[3] + p.z
|
||||
end
|
||||
count = count + #pos[name]
|
||||
end
|
||||
end
|
||||
|
||||
-- Find average position of water positions
|
||||
local wposav = vector.new()
|
||||
for _, pos in ipairs(wpos) do
|
||||
wposav.x = wposav.x + pos.x
|
||||
wposav.y = wposav.y + pos.y
|
||||
wposav.z = wposav.z + pos.z
|
||||
if count > 0 then
|
||||
posav = vector.new(posav[1] / count, posav[2] / count,
|
||||
posav[3] / count)
|
||||
|
||||
-- Calculate gain
|
||||
local gain = def.base_volume
|
||||
if type(def.per_node) == 'table' then
|
||||
for name, multiplier in pairs(def.per_node) do
|
||||
if pos[name] then
|
||||
gain = gain + #pos[name] * multiplier
|
||||
end
|
||||
end
|
||||
else
|
||||
gain = gain + count * def.per_node
|
||||
end
|
||||
gain = math.min(gain, def.max_volume)
|
||||
|
||||
minetest.sound_play(sound, {
|
||||
pos = posav,
|
||||
to_player = player_name,
|
||||
gain = gain,
|
||||
}, true)
|
||||
end
|
||||
end
|
||||
wposav = vector.divide(wposav, waters)
|
||||
|
||||
minetest.sound_play(
|
||||
"env_sounds_water",
|
||||
{
|
||||
pos = wposav,
|
||||
to_player = player_name,
|
||||
gain = math.min(0.04 + waters * 0.004, 0.4),
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
-- Update sound 'on joinplayer'
|
||||
-- Update sound when player joins
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
update_sound(player)
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,117 +1,127 @@
|
|||
Helmets .25
|
||||
Chestplate .5
|
||||
Leggings .5
|
||||
Chest:plate .5
|
||||
Legging:s .5
|
||||
Boots .25
|
||||
|
||||
|
||||
|
||||
Wooden Armor
|
||||
Heal 0
|
||||
Block 24
|
||||
DMG Resist 1
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 0.92
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 0
|
||||
Block: 24
|
||||
DMG Resist: 1
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 0.92
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Steel Armor
|
||||
Heal 0
|
||||
Block 36
|
||||
DMG Resist 2
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 0.91
|
||||
Jump 1
|
||||
Gravity 1.09
|
||||
steel Armor
|
||||
Heal: 0
|
||||
Block: 36
|
||||
DMG Resist: 2
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 0.91
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1.09
|
||||
|
||||
Bronze Armor
|
||||
Heal 0
|
||||
Block 48
|
||||
DMG Resist 3
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 0.91
|
||||
Jump 1
|
||||
Gravity 1.09
|
||||
Heal: 0
|
||||
Block: 48
|
||||
DMG Resist: 3
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 0.91
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1.09
|
||||
|
||||
Gold Armor
|
||||
Heal 0
|
||||
Block 60
|
||||
DMG Resist 4
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 0.74
|
||||
Jump 1
|
||||
Gravity 1.13
|
||||
Heal: 0
|
||||
Block: 60
|
||||
DMG Resist: 4
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 0.74
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1.13
|
||||
|
||||
Diamond Armor
|
||||
Heal 0
|
||||
Block 72
|
||||
DMG Resist 5
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 0.74
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 0
|
||||
Block: 72
|
||||
DMG Resist: 5
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Diamond Huntite
|
||||
Heal 0
|
||||
Block 78
|
||||
DMG Resist 6
|
||||
Fire 6
|
||||
Oxygen Regen 0
|
||||
Speed 1
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 0
|
||||
Block: 78
|
||||
DMG Resist: 6
|
||||
Fire Rating: 6
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Diamond Actinolite
|
||||
Heal 0
|
||||
Block 78
|
||||
DMG Resist 6
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 1
|
||||
Jump 1
|
||||
Gravity 0.3
|
||||
Heal: 0
|
||||
Block: 78
|
||||
DMG Resist: 6
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 0.3
|
||||
|
||||
Diamond Prismarine
|
||||
Heal: 0
|
||||
Block: 78
|
||||
DMG Resist: 6
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 4
|
||||
Speed Multiplier: 1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Diamond Bloodstone
|
||||
Heal 4
|
||||
Block 78
|
||||
DMG Resist 6
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 1
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 4
|
||||
Block: 78
|
||||
DMG Resist: 6
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Diamond Garnet
|
||||
Heal 0
|
||||
Block 78
|
||||
DMG Resist 6
|
||||
Fire 0
|
||||
Oxygen Regen 0
|
||||
Speed 2.2
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 0
|
||||
Block: 78
|
||||
DMG Resist: 6
|
||||
Fire Rating: 0
|
||||
Oxygen Regen: 0
|
||||
Speed Multiplier: 2.2
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: 1
|
||||
|
||||
Titanium Armor
|
||||
Heal 0
|
||||
Block 102
|
||||
DMG Resist 4
|
||||
Fire 0
|
||||
Oxygen Regen
|
||||
Speed 1.8
|
||||
Jump 1.4
|
||||
Gravity .9
|
||||
Heal: 0
|
||||
Block: 102
|
||||
DMG Resist: 4
|
||||
Fire Rating: 0
|
||||
Oxygen Regen:
|
||||
Speed Multiplier: 1.8
|
||||
Jump Multiplier: 1.4
|
||||
Gravity Multiplier: .9
|
||||
|
||||
Thennium
|
||||
Heal 1.2
|
||||
Block 90
|
||||
DMG Resist 8
|
||||
Fire 2
|
||||
Oxygen Regen 2.2
|
||||
Speed 1
|
||||
Jump 1
|
||||
Gravity 1
|
||||
Heal: 1.2
|
||||
Block: 90
|
||||
DMG Resist: 8
|
||||
Fire Rating: 2
|
||||
Oxygen Regen: 1
|
||||
Speed Multiplier: 1.1
|
||||
Jump Multiplier: 1
|
||||
Gravity Multiplier: .6
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ armor:register_armor('epic:thennium_helmet', {
|
|||
texture = 'epic_helmet_thennium.png',
|
||||
preview = 'epic_helmet_thennium_pre.png',
|
||||
inventory_image = 'epic_helmet_thennium_inv.png',
|
||||
groups = {armor_head=1, armor_block=15, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, armor_dmg_resist=2},
|
||||
groups = {armor_head=1, armor_block=15, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, physics_gravity=-.1, armor_dmg_resist=2},
|
||||
armor_groups = {fleshy=1},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=5},
|
||||
})
|
||||
|
@ -15,7 +15,7 @@ armor:register_armor('epic:thennium_chestplate', {
|
|||
texture = 'epic_chestplate_thennium.png',
|
||||
preview = 'epic_chestplate_thennium_pre.png',
|
||||
inventory_image = 'epic_chestplate_thennium_inv.png',
|
||||
groups = {armor_torso=1, armor_block=30, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, armor_dmg_resist=2},
|
||||
groups = {armor_torso=1, armor_block=30, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, physics_gravity=-.1, armor_dmg_resist=2},
|
||||
armor_groups = {fleshy=1},
|
||||
damage_groups = {cracky=2, snappy=1, level=5},
|
||||
})
|
||||
|
@ -26,7 +26,7 @@ armor:register_armor('epic:thennium_leggings', {
|
|||
texture = 'epic_leggings_thennium.png',
|
||||
preview = 'epic_leggings_thennium_pre.png',
|
||||
inventory_image = 'epic_leggings_thennium_inv.png',
|
||||
groups = {armor_legs=1, armor_block=30, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, armor_dmg_resist=2},
|
||||
groups = {armor_legs=1, armor_block=30, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, physics_gravity=-.1, armor_dmg_resist=2},
|
||||
armor_groups = {fleshy=1},
|
||||
damage_groups = {cracky=2, snappy=1, level=5},
|
||||
})
|
||||
|
@ -37,7 +37,7 @@ armor:register_armor('epic:thennium_boots', {
|
|||
texture = 'epic_boots_thennium.png',
|
||||
preview = 'epic_boots_thennium_pre.png',
|
||||
inventory_image = 'epic_boots_thennium_inv.png',
|
||||
groups = {armor_feet=1, armor_block=15, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, armor_dmg_resist=2},
|
||||
groups = {armor_feet=1, armor_block=15, armor_use=100, armor_water=.3, armor_fire=.5, armor_heal=.3, physics_gravity=-.1, physics_speed=.1, armor_dmg_resist=2},
|
||||
armor_groups = {fleshy=1},
|
||||
damage_groups = {cracky=2, snappy=1, level=5},
|
||||
})
|
||||
|
|
|
@ -106,8 +106,6 @@ function epic.space_to_top_and_side(pos)
|
|||
local top = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local side_node = minetest.get_node(side)
|
||||
local top_node = minetest.get_node(top)
|
||||
print ('top node is '..(top_node.name))
|
||||
print ('side node is '..(side_node.name))
|
||||
local side_def = minetest.registered_nodes[side_node.name] or nil
|
||||
local top_def = minetest.registered_nodes[top_node.name] or nil
|
||||
if not top_def.buildable_to or not side_def.buildable_to then
|
||||
|
|
|
@ -393,6 +393,7 @@ minetest.register_on_player_hpchange(function(player, hp_change)
|
|||
local time = last_punch_time[name] or 0
|
||||
local attackchance = attack_chance[name] or 100
|
||||
if time ~= 'fire' then
|
||||
print ('breath is '..(player:get_breath())..' and hunger is '..(hbhunger.hunger[name]))
|
||||
if player:get_breath() > 0 and hbhunger.hunger[name] >= 1 then
|
||||
local dmg_resist = math.floor(armor.def[name].dmg_resist)
|
||||
local block = armor.def[name].block
|
||||
|
|
|
@ -35,7 +35,7 @@ minetest.register_alias("adminshield", "shields:shield_admin")
|
|||
armor:register_armor("shields:shield_wood", {
|
||||
description = S("Wooden Shield"),
|
||||
inventory_image = "shields_inv_shield_wood.png",
|
||||
groups = {armor_shield=1, armor_heal=0, armor_block=15, armor_use=2000, flammable=1, armor_dmg_resist=.25},
|
||||
groups = {armor_shield=1, armor_block=5, armor_use=2000, flammable=1, armor_dmg_resist=.25},
|
||||
armor_groups = {fleshy=5},
|
||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
|
||||
reciprocate_damage = true,
|
||||
|
@ -49,7 +49,7 @@ armor:register_armor("shields:shield_wood", {
|
|||
armor:register_armor("shields:shield_enhanced_wood", {
|
||||
description = S("Enhanced Wood Shield"),
|
||||
inventory_image = "shields_inv_shield_enhanced_wood.png",
|
||||
groups = {armor_shield=1, armor_heal=0, armor_use=2000},
|
||||
groups = {armor_shield=1, armor_block=7, armor_use=2000, armor_dmg_resist=.5},
|
||||
armor_groups = {fleshy=8},
|
||||
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=2},
|
||||
reciprocate_damage = true,
|
||||
|
@ -72,8 +72,8 @@ minetest.register_craft({
|
|||
armor:register_armor("shields:shield_steel", {
|
||||
description = S("Steel Shield"),
|
||||
inventory_image = "shields_inv_shield_steel.png",
|
||||
groups = {armor_shield=1, armor_heal=0, armor_use=800,
|
||||
physics_speed=-0.03, physics_gravity=0.03},
|
||||
groups = {armor_shield=1, armor_block=10, armor_use=800,
|
||||
physics_speed=-0.03, physics_gravity=0.03, armor_dmg_resist=.75},
|
||||
armor_groups = {fleshy=10},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
reciprocate_damage = true,
|
||||
|
@ -88,8 +88,8 @@ armor:register_armor("shields:shield_steel", {
|
|||
armor:register_armor("shields:shield_bronze", {
|
||||
description = S("Bronze Shield"),
|
||||
inventory_image = "shields_inv_shield_bronze.png",
|
||||
groups = {armor_shield=1, armor_heal=6, armor_use=400,
|
||||
physics_speed=-0.03, physics_gravity=0.03},
|
||||
groups = {armor_shield=1, armor_block=15, armor_use=400,
|
||||
physics_speed=-0.03, physics_gravity=0.03, armor_dmg_resist=1},
|
||||
armor_groups = {fleshy=10},
|
||||
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
|
||||
reciprocate_damage = true,
|
||||
|
@ -104,7 +104,7 @@ armor:register_armor("shields:shield_bronze", {
|
|||
armor:register_armor("shields:shield_diamond", {
|
||||
description = S("Diamond Shield"),
|
||||
inventory_image = "shields_inv_shield_diamond.png",
|
||||
groups = {armor_shield=1, armor_heal=12, armor_use=200},
|
||||
groups = {armor_shield=1, armor_block=20, armor_use=200, armor_dmg_resist=2},
|
||||
armor_groups = {fleshy=15},
|
||||
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
|
||||
reciprocate_damage = true,
|
||||
|
@ -119,8 +119,8 @@ armor:register_armor("shields:shield_diamond", {
|
|||
armor:register_armor("shields:shield_gold", {
|
||||
description = S("Gold Shield"),
|
||||
inventory_image = "shields_inv_shield_gold.png",
|
||||
groups = {armor_shield=1, armor_heal=6, armor_use=300,
|
||||
physics_speed=-0.04, physics_gravity=0.04},
|
||||
groups = {armor_shield=1, armor_use=300, armor_block=17,
|
||||
physics_speed=-0.04, physics_gravity=0.04, armor_dmg_resist=1.5},
|
||||
armor_groups = {fleshy=10},
|
||||
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
|
||||
reciprocate_damage = true,
|
||||
|
|
|
@ -111,6 +111,7 @@ minetest.register_craft({
|
|||
|
||||
local old_handle_node_drops = minetest.handle_node_drops
|
||||
function minetest.handle_node_drops(pos, drops, digger)
|
||||
if not digger then return end
|
||||
-- are we holding Lava Pick?
|
||||
if digger:get_wielded_item():get_name() ~= ('mobs:pick_lava') then
|
||||
return old_handle_node_drops(pos, drops, digger)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
local news = {
|
||||
'7/18/20',
|
||||
'Printing press checks above node before placing.',
|
||||
'Massive overhaul of armor/combat systems.',
|
||||
'',
|
||||
'7/11/20',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
local function loom_formspec(progress)
|
||||
formspec =
|
||||
local formspec =
|
||||
'size[8,8.5]'..
|
||||
'list[current_name;input;.5,1;1,1;]'..
|
||||
'label[1.5,1.5;Input string]'..
|
||||
|
@ -36,13 +36,14 @@ minetest.register_node('stations:weaving_loom', {
|
|||
},
|
||||
groups = {oddly_breakable_by_hand = 1, choppy=3},
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
if not epic.space_to_side(pos) then
|
||||
if not epic.space_to_top_and_side(pos) then
|
||||
minetest.remove_node(pos)
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
epic.remove_side_node(pos, oldnode)
|
||||
epic.remove_top_node(pos)
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
@ -136,13 +137,14 @@ minetest.register_node('stations:weaving_loom_locked', {
|
|||
},
|
||||
groups = {oddly_breakable_by_hand = 1, choppy=3},
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
if not epic.space_to_side(pos) then
|
||||
if not epic.space_to_top_and_side(pos) then
|
||||
minetest.remove_node(pos)
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
epic.remove_side_node(pos, oldnode)
|
||||
epic.remove_top_node(pos)
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
|
Loading…
Reference in New Issue