1
0
mirror of https://github.com/minetest-mods/3d_armor.git synced 2025-06-28 06:20:33 +02:00

Add punch damage groups and effects

This commit is contained in:
stujones11
2017-04-05 17:46:09 +01:00
parent 1e059f2557
commit 0ec7858937
5 changed files with 361 additions and 107 deletions

View File

@ -3,6 +3,19 @@ if minetest.global_exists("intllib") then
S = intllib.Getter()
end
local use_moreores = minetest.get_modpath("moreores")
local function play_sound_effect(player, name)
if player then
local pos = player:get_pos()
if pos then
minetest.sound_play({
pos = pos,
name = name,
max_hear_distance = 10,
gain = 0.5,
})
end
end
end
if minetest.global_exists("armor") and armor.elements then
table.insert(armor.elements, "shield")
@ -12,25 +25,47 @@ end
-- Regisiter Shields
minetest.register_tool("shields:shield_admin", {
armor:register_armor("shields:shield_admin", {
description = S("Admin Shield"),
inventory_image = "shields_inv_shield_admin.png",
groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1},
wear = 0,
on_punch = function(player, hitter, time_from_last_punch, tool_capabilities)
if hitter then
hitter:punch(player, time_from_last_punch, tool_capabilities)
play_sound_effect(player, "default_dig_metal")
end
return false
end,
})
if armor.materials.wood then
minetest.register_tool("shields:shield_wood", {
armor:register_armor("shields:shield_wood", {
description = S("Wooden Shield"),
inventory_image = "shields_inv_shield_wood.png",
groups = {armor_shield=5, armor_heal=0, armor_use=2000},
wear = 0,
groups = {armor_shield=1, armor_heal=0, armor_use=2000},
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
})
minetest.register_tool("shields:shield_enhanced_wood", {
armor:register_armor("shields:shield_enhanced_wood", {
description = S("Enhanced Wood Shield"),
inventory_image = "shields_inv_shield_enhanced_wood.png",
groups = {armor_shield=8, armor_heal=0, armor_use=1000},
wear = 0,
groups = {armor_shield=1, armor_heal=0, armor_use=2000},
armor_groups = {fleshy=8},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=2},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
})
minetest.register_craft({
output = "shields:shield_enhanced_wood",
@ -43,17 +78,33 @@ if armor.materials.wood then
end
if armor.materials.cactus then
minetest.register_tool("shields:shield_cactus", {
armor:register_armor("shields:shield_cactus", {
description = S("Cactus Shield"),
inventory_image = "shields_inv_shield_cactus.png",
groups = {armor_shield=5, armor_heal=0, armor_use=2000},
wear = 0,
groups = {armor_shield=1, armor_heal=0, armor_use=1000},
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_wood_footstep")
end,
})
minetest.register_tool("shields:shield_enhanced_cactus", {
armor:register_armor("shields:shield_enhanced_cactus", {
description = S("Enhanced Cactus Shield"),
inventory_image = "shields_inv_shield_enhanced_cactus.png",
groups = {armor_shield=8, armor_heal=0, armor_use=1000},
wear = 0,
groups = {armor_shield=1, armor_heal=0, armor_use=1000},
armor_groups = {fleshy=8},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=2},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_dirt_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_dirt_footstep")
end,
})
minetest.register_craft({
output = "shields:shield_enhanced_cactus",
@ -66,56 +117,104 @@ if armor.materials.cactus then
end
if armor.materials.steel then
minetest.register_tool("shields:shield_steel", {
armor:register_armor("shields:shield_steel", {
description = S("Steel Shield"),
inventory_image = "shields_inv_shield_steel.png",
groups = {armor_shield=10, armor_heal=0, armor_use=500},
wear = 0,
groups = {armor_shield=1, armor_heal=0, armor_use=800},
armor_groups = {fleshy=10},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_dug_metal")
end,
})
end
if armor.materials.bronze then
minetest.register_tool("shields:shield_bronze", {
armor:register_armor("shields:shield_bronze", {
description = S("Bronze Shield"),
inventory_image = "shields_inv_shield_bronze.png",
groups = {armor_shield=10, armor_heal=6, armor_use=250},
wear = 0,
groups = {armor_shield=1, armor_heal=6, armor_use=400},
armor_groups = {fleshy=10},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_dug_metal")
end,
})
end
if armor.materials.diamond then
minetest.register_tool("shields:shield_diamond", {
armor:register_armor("shields:shield_diamond", {
description = S("Diamond Shield"),
inventory_image = "shields_inv_shield_diamond.png",
groups = {armor_shield=15, armor_heal=12, armor_use=100},
wear = 0,
groups = {armor_shield=1, armor_heal=12, armor_use=200},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_break_glass")
end,
})
end
if armor.materials.gold then
minetest.register_tool("shields:shield_gold", {
armor:register_armor("shields:shield_gold", {
description = S("Gold Shield"),
inventory_image = "shields_inv_shield_gold.png",
groups = {armor_shield=10, armor_heal=6, armor_use=250},
wear = 0,
groups = {armor_shield=1, armor_heal=6, armor_use=300},
armor_groups = {fleshy=10},
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_dug_metal")
end,
})
end
if armor.materials.mithril then
minetest.register_tool("shields:shield_mithril", {
armor:register_armor("shields:shield_mithril", {
description = S("Mithril Shield"),
inventory_image = "shields_inv_shield_mithril.png",
groups = {armor_shield=15, armor_heal=12, armor_use=50},
wear = 0,
groups = {armor_shield=1, armor_heal=12, armor_use=100},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_break_glass")
end,
})
end
if armor.materials.crystal then
minetest.register_tool("shields:shield_crystal", {
armor:register_armor("shields:shield_crystal", {
description = S("Crystal Shield"),
inventory_image = "shields_inv_shield_crystal.png",
groups = {armor_shield=15, armor_heal=12, armor_use=50, armor_fire=1},
wear = 0,
groups = {armor_shield=1, armor_heal=12, armor_use=100, armor_fire=1},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, stack)
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, stack)
play_sound_effect(player, "default_break_glass")
end,
})
end