This commit is contained in:
ThePython 2023-10-30 15:42:11 -07:00
parent 4708b59092
commit 024ff88dd6
12 changed files with 326 additions and 206 deletions

File diff suppressed because one or more lines are too long

View File

@ -33,8 +33,7 @@ Dependencies: Minetest Game or MineClone.
## Known issues:
* In MineClone, it is impossible to heal past 20 health (10 hearts) without potions of healing (or the soul/life stones, which I haven't added yet)
* With a full set of red matter armor, you can almost instantly go back to 200 health (100 hearts), no matter what you health is, by removing one piece of red matter armor and putting it back on. I don't really know what to do about this. If I could, I would simply make 200 the maximum health, and leave the player's health how it is, but that doesn't really work because the extra maximum health would be useless because it's unreachable.
* It is impossible to die from most things when wearing DM/RM armor... MineClone's damage system is annoying.
* When machines are exploded, they (and the items inside) do not drop. I can't figure out why.
* Dark/Red matter shears will sometimes (randomly) be treated as normal shears when used by MineClone dispensers. This will not be fixed.
* Nodes destroyed by special abilities will not usually update surrounding nodes (so you may end up with floating gravel, flowers, torches, etc.). This will *probably* not be fixed, unless a change to Minetest makes it easier.
@ -55,6 +54,15 @@ Dependencies: Minetest Game or MineClone.
<details><summary><h1>Changelog:</h1></summary>
### 5.1
* Fixed Mineclonia energy values (I foolishly assumed that all items would have the same itemstrings and groups).
* Added new Mineclonia items (pottery, sculk, smithing templates, suspicious sand, etc.)
* Changed a couple of energy values (enchanted golden apple was way too cheap, clay seemed too expensive)
* Sword/Katar AOE damage now matches ProjectE (DM sword = 12, RM sword = 16, katar = 1000... kinda OP). All AOE cooldowns (including swinging swords/katar) are now 0.7 seconds.
* DM/RM pickaxe/hammer/morningstar dig times now are approximately the same as ProjectE (at full charge), meaning they are now maybe too fast.
* Red Matter Armor no longer increases player health (the wiki lied to me).
* A couple of changes to DM/RM armor in MineClone, which may or may not be noticeable. I really don't know.
### 5.0 (the most insteresting release so far)
**You MUST break and replace any existing Constructors, Deconstructors, and Energy Collectors when updating from any previous version. Nothing will be lost (hopefully). In Minetest Game, this is a bit of a problem (try blowing it up maybe? I don't know, sorry).**
* New features:
@ -129,7 +137,7 @@ Dependencies: Minetest Game or MineClone.
* Red Matter Armor (full set gives lava/fire/drowning immunity PLUS 2000 health, although you may want HUD Bars to see it)
* Added energy values for MineClone's new items.
* Changes:
* Changed the amount of damage done by Dark/Red Matter Sword special abilities (used to be `max_damage/distance`, now is `max_damage-distance`)
* Changed the amount of damage done by Dark/Red Matter Sword special abilities (used to be `damage/distance`, now is `damage-distance`)
* A whole bunch of things that won't be noticible when playing, mostly code reorganization. It's *possible* that tools that mine multiple nodes at a time (hammer, pickaxe, hoe, katar, and morningstar) will be slightly less laggy
* Texture/sound license changed to CC-BY-SA-3.0 (because GPLv3+ isn't really meant as a media license).
* Bugfixes:
@ -237,19 +245,24 @@ Dependencies: Minetest Game or MineClone.
### Plans for 6.0
* Automatically generated energy values based on crafting recipes
* A slightly better method for tools that break multiple nodes (hammer, hoe, pickaxe, morningstar, katar) that may decrease lag.
* A slightly better method for tools that break multiple nodes at once (hammer, hoe, pickaxe, morningstar, and katar) that may slightly decrease lag.
* Alchemical Chest
* Repair Talisman (maybe, would only work in Alchemical Chest)
* Covalence Dust (maybe custom repairer machine)
* Mind, Life, Body, and Soul Stones (although MTG will only have the soul stone).
* Ability to smelt with the Philosopher's Stone and coal/charcoal (irritatingly difficult, so maybe not)
* Mercurial Eye (maybe)
* Energy Condenser (maybe, IDK why anyone would use it)
### Features that I plan on adding eventually:
* As soon as Minetest 5.8 comes out, better textures for armor...
* Divining Rods
* Rings (I'll probably add a new PESA-like item for holding rings)
* Archangel's Smite (though arrows will not track targets)
* Archangel's Smite (arrows will not track targets, MineClone only)
* Ring of Ignition
* Zero Ring
* Swiftwolf's Rending Gale (but without the force field; basically Why's Flying Sausage with a different texture)
* Swiftwolf's Rending Gale (but without the force field; basically Why's Flying Sausage with a different texture and maybe lightning in MCL)
* Harvest Band (maybe not)
* Ring of Arcana (possibly without the Harvest Band)
* Gem Armor
* Gem Armor
* Catalytic Lens

129
armor.lua
View File

@ -1,9 +1,12 @@
-- true = blocks all damage
-- {base_block, block_per_rm}: Amount blocked by full dark matter, extra amount per red matter armor piece
local blocked_damage_types = {
drown = true,
lava = true,
in_fire = true,
on_fire = true,
hot_floor = true,
fall = {0.9, 0.0125},
}
local function get_armor_texture(type, matter, preview)
@ -27,55 +30,12 @@ local function get_armor_texture(type, matter, preview)
return result
end
-- Reset health
function exchangeclone.check_armor_health(obj)
if not obj:is_player() then return end
local max_armor = 5
local armor_pieces = 0
if exchangeclone.mcl then
max_armor = 4
local inv = mcl_util.get_inventory(obj)
if inv then
for name, element in pairs(mcl_armor.elements) do
local itemstack = inv:get_stack("armor", element.index)
if not itemstack:is_empty() then
if minetest.get_item_group(itemstack:get_name(), "red_matter_armor") > 0 then
armor_pieces = armor_pieces + 1
end
end
end
end
else
local name, armor_inv = armor:get_valid_player(obj, "[checking for red matter]")
if not armor_inv then return end
local list = armor_inv:get_list("armor")
if type(list) ~= "table" then
return
end
for i, stack in ipairs(list) do
if stack:get_count() == 1 then
if minetest.get_item_group(stack:get_name(), "red_matter_armor") > 0 then
armor_pieces = armor_pieces + 1
end
end
end
end
local already_has_health = 0
if obj:is_player() then
already_has_health = obj:get_meta():get_int("exchangeclone_red_matter_armor") or 0
end
if armor_pieces >= max_armor then
obj:set_properties({hp_max = 200})
if already_has_health == 0 then
-- TODO: fix this if MineClone changes to max_hp instead of hardcoding 20
obj:set_hp(200-math.max(20-obj:get_hp(), 0))
obj:get_meta():set_int("exchangeclone_red_matter_armor", 1)
end
else
if already_has_health == 1 then
obj:set_hp(math.min(obj:get_hp(), 20))
obj:set_properties({hp_max = 20})
obj:get_meta():set_int("exchangeclone_red_matter_armor", 0)
end
if obj:get_meta():get_int("exchangeclone_red_matter_armor") == 1 then
obj:set_hp(math.min(obj:get_hp(), 20))
obj:set_properties({hp_max = 20})
obj:get_meta():set_int("exchangeclone_red_matter_armor", 0)
end
end
@ -83,10 +43,6 @@ minetest.register_on_joinplayer(function(ObjectRef, last_login)
exchangeclone.check_armor_health(ObjectRef)
end)
minetest.register_on_respawnplayer(function(ObjectRef)
exchangeclone.check_armor_health(ObjectRef)
end)
if exchangeclone.mcl then
mcl_armor.register_set({
name = "dark_matter",
@ -100,9 +56,9 @@ if exchangeclone.mcl then
durability = -1,
enchantability = 0,
points = {
head = 5,
torso = 8,
legs = 7,
head = 6,
torso = 10,
legs = 8,
feet = 4,
},
textures = {
@ -130,7 +86,7 @@ if exchangeclone.mcl then
points = {
head = 7,
torso = 12,
legs = 8,
legs = 9,
feet = 5,
},
textures = {
@ -143,18 +99,6 @@ if exchangeclone.mcl then
groups = {red_matter_armor = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
craft_material = "exchangeclone:red_matter",
cook_material = "exchangeclone:dark_matter",
on_equip_callbacks = {
head=exchangeclone.check_armor_health,
torso=exchangeclone.check_armor_health,
legs=exchangeclone.check_armor_health,
feet=exchangeclone.check_armor_health
},
on_unequip_callbacks = {
head=exchangeclone.check_armor_health,
torso=exchangeclone.check_armor_health,
legs=exchangeclone.check_armor_health,
feet=exchangeclone.check_armor_health
}
})
for _, matter in ipairs({"dark", "red"}) do
@ -167,28 +111,34 @@ if exchangeclone.mcl then
end
mcl_damage.register_modifier(function(obj, damage, reason)
if reason.type ~= "fall" and not blocked_damage_types[reason.type] then return end
minetest.log(dump({damage, reason}))
local blocked = blocked_damage_types[reason.type]
local inv = mcl_util.get_inventory(obj)
if inv then
local armor_pieces = 0
local red_armor_pieces = 0
for name, element in pairs(mcl_armor.elements) do
local itemstack = inv:get_stack("armor", element.index)
if not itemstack:is_empty() then
if minetest.get_item_group(itemstack:get_name(), "dark_matter_armor") > 0
or minetest.get_item_group(itemstack:get_name(), "red_matter_armor") > 0 then
if minetest.get_item_group(itemstack:get_name(), "dark_matter_armor") > 0 then
armor_pieces = armor_pieces + 1
elseif minetest.get_item_group(itemstack:get_name(), "red_matter_armor") > 0 then
armor_pieces = armor_pieces + 1
red_armor_pieces = red_armor_pieces + 1
end
end
end
if armor_pieces >= 4 then
if reason.type == "fall" then
return damage/5
else
return 0
if blocked then
if blocked == true then
return 0
else
return (blocked[1] + blocked[2]*red_armor_pieces) * damage
end
end
end
end
end, 0)
end)
else
armor:register_armor("exchangeclone:helmet_dark_matter", {
description = "Dark Matter Helmet",
@ -196,7 +146,7 @@ else
inventory_image = get_armor_texture("inv_helmet","dark"),
preview = get_armor_texture("helmet","dark", true),
armor_groups = {fleshy = 13},
groups = {["armor_head"] = 1, ["dark_matter_armor"] = 1, armor_heal = 5, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_head = 1, dark_matter_armor = 1, armor_heal = 5, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:chestplate_dark_matter", {
description = "Dark Matter Chestplate",
@ -204,7 +154,7 @@ else
inventory_image = get_armor_texture("inv_chestplate","dark"),
preview = get_armor_texture("chestplate","dark", true),
armor_groups = {fleshy = 21},
groups = {["armor_torso"] = 1, ["dark_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_torso = 1, dark_matter_armor = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:leggings_dark_matter", {
description = "Dark Matter Leggings",
@ -212,7 +162,7 @@ else
inventory_image = get_armor_texture("inv_leggings","dark"),
preview = get_armor_texture("leggings","dark", true),
armor_groups = {fleshy = 18},
groups = {["armor_legs"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_legs = 1, dark_matter_armor = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:boots_dark_matter", {
description = "Dark Matter Boots",
@ -220,7 +170,7 @@ else
inventory_image = get_armor_texture("inv_boots","dark"),
preview = get_armor_texture("boots","dark", true),
armor_groups = {fleshy = 10},
groups = {["armor_feet"] = 1, ["dark_matter_armor"] = 1, armor_heal = 4, armor_fire = 1, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_feet = 1, dark_matter_armor = 1, armor_heal = 4, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:shield_dark_matter", {
description = "Dark Matter Shield",
@ -228,7 +178,7 @@ else
inventory_image = get_armor_texture("inv_shield","dark"),
preview = get_armor_texture("shield","dark", true),
armor_groups = {fleshy = 18},
groups = {["armor_shield"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_shield = 1, dark_matter_armor = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:helmet_red_matter", {
description = "Red Matter Helmet",
@ -236,7 +186,7 @@ else
inventory_image = get_armor_texture("inv_helmet","red"),
preview = get_armor_texture("helmet","red", true),
armor_groups = {fleshy = 15},
groups = {["armor_head"] = 1, ["red_matter_armor"] = 1, armor_heal = 10, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_head = 1, red_matter_armor = 1, armor_heal = 10, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:chestplate_red_matter", {
description = "Red Matter Chestplate",
@ -244,7 +194,7 @@ else
inventory_image = get_armor_texture("inv_chestplate","red"),
preview = get_armor_texture("chestplate","red", true),
armor_groups = {fleshy = 23},
groups = {["armor_torso"] = 1, ["red_matter_armor"] = 1, armor_heal = 16, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_torso = 1, red_matter_armor = 1, armor_heal = 16, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:leggings_red_matter", {
description = "Red Matter Leggings",
@ -252,7 +202,7 @@ else
inventory_image = get_armor_texture("inv_leggings","red"),
preview = get_armor_texture("leggings","red", true),
armor_groups = {fleshy = 20},
groups = {["armor_legs"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_legs = 1, red_matter_armor = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:boots_red_matter", {
description = "Red Matter Boots",
@ -260,7 +210,7 @@ else
inventory_image = get_armor_texture("inv_boots","red"),
preview = get_armor_texture("boots","red", true),
armor_groups = {fleshy = 12},
groups = {["armor_feet"] = 1, ["red_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_feet = 1, red_matter_armor = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_armor("exchangeclone:shield_red_matter", {
description = "Red Matter Shield",
@ -268,15 +218,8 @@ else
inventory_image = get_armor_texture("inv_shield","red"),
preview = get_armor_texture("shield","red", true),
armor_groups = {fleshy = 20},
groups = {["armor_shield"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
groups = {armor_shield = 1, red_matter_armor = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
})
armor:register_on_equip(function(player, index, stack)
exchangeclone.check_armor_health(player)
end)
armor:register_on_unequip(function(player, index, stack)
exchangeclone.check_armor_health(player)
end)
end
local d = "exchangeclone:dark_matter"
local r = "exchangeclone:red_matter"

View File

@ -73,7 +73,7 @@ minetest.register_tool("exchangeclone:dark_matter_axe", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=6,
damage_groups = {fleshy=16},
punch_attack_uses = 0,
groupcaps={
@ -98,7 +98,7 @@ minetest.register_tool("exchangeclone:red_matter_axe", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.4,
max_drop_level=5,
max_drop_level=7,
damage_groups = {fleshy=19},
punch_attack_uses = 0,
groupcaps={

View File

@ -107,7 +107,7 @@ exchangeclone.mtg_energy_values = {
obsidian_block = 64,
-- Soft / Non-Stone,
clay = 64,
clay = 16,
-- Trees,
apple = 5,
@ -186,7 +186,7 @@ exchangeclone.mtg_energy_values = {
obsidian_glass = 7,
brick = 64,
brick = 16,
meselamp = 4097,
mese_post_light = 3074,
@ -200,8 +200,8 @@ exchangeclone.mtg_energy_values = {
book = 96,
book_written = 96,
bronze_ingot = 327,
clay_brick = 16,
clay_lump = 16,
clay_brick = 4,
clay_lump = 4,
coal_lump = 128,
copper_ingot = 320,
copper_lump = 320,
@ -388,7 +388,7 @@ exchangeclone.mtg_energy_values = {
local copper_amount = (exchangeclone.mineclonia and 9) or 4
@ -504,8 +504,8 @@ exchangeclone.mcl_energy_values = {
vine = 8,
cobweb = 12,
ladder = 9,
clay_lump = 16,
brick = 16,
clay_lump = 4,
brick = 4,
charcoal_lump = 32,
reeds = 32,
paper = 32,
@ -513,8 +513,8 @@ exchangeclone.mcl_energy_values = {
obsidian = 64,
stone_with_redstone = 0, --ores are worth 0, because the amount sometimes varies (Fortune)
crying_obsidian = 1000,
clay = 64,
brick_block = 64,
clay = 16,
brick_block = 16,
coal_lump = 128,
stone_with_coal = 0,
apple = 128,
@ -531,7 +531,7 @@ exchangeclone.mcl_energy_values = {
diamond = 8192,
stone_with_diamond = 0,
apple_gold = 16512,
apple_gold_enchanted = 7378,
apple_gold_enchanted = 147584,
bone_block = 432,
bowl = 24,
coalblock = 1152,
@ -661,7 +661,7 @@ exchangeclone.mcl_energy_values = {
fletching_table = 72,
},
["mcl_flowerpots"] = {
flower_pot = 48,
flower_pot = 12,
},
["mcl_fishing"] = {
fishing_rod = 36,
@ -690,11 +690,23 @@ exchangeclone.mcl_energy_values = {
["mcl_doors"] = {
acacia_door = 16,
birch_door = 16,
cherry_blossom_door = 16,
dark_oak_door = 16,
iron_door = 512,
jungle_door = 16,
spruce_door = 16,
wooden_door = 16,
door_acacia = 16,
door_bamboo = 16,
door_birch = 16,
door_cherry_blossom = 16,
door_crimson = 16,
door_dark_oak = 16,
door_jungle = 16,
door_mangrove = 16,
door_oak = 16,
door_spruce = 16,
door_warped = 16,
iron_trapdoor = 768
},
["mcl_lanterns"] = {
@ -872,9 +884,12 @@ exchangeclone.mcl_energy_values = {
},
["mcl_fences"] = {
nether_brick_fence = 3,
nether_brick_fence_gate = 6,
red_nether_brick_fence = 34, --technically energy duplication is possible, but only 2 per craft...
red_nether_brick_fence_gate = 150,
},
["mcl_walls"] = {
brick = 64,
brick = 16,
mossycobble = 9,
netherbrick = 4,
rednetherbrick = 50,
@ -933,33 +948,45 @@ exchangeclone.mcl_energy_values = {
sponge_wet = 1024,
sponge_wet_river_water = 1024,
},
["screwdriver"] = {
screwdriver = 260,
},
["mcl_spyglass"] = {
spyglass = 426,
},
["mcl_copper"] = {
copper_ingot = 85,
raw_copper = 85,
block_raw = 765,
block_raw = 85*9,
stone_with_copper = 0,
-- TODO: If MineClone switches to 9, change blocks to 765 (and 797 for waxed)
block = 340,
block_exposed = 340,
block_oxidized = 340,
block_weathered = 340,
block_cut = 340,
block_exposed_cut = 340,
block_oxidized_cut = 340,
block_weathered_cut = 340,
waxed_block = 372,
waxed_block_exposed = 372,
waxed_block_oxidized = 372,
waxed_block_weathered = 372,
waxed_block_cut = 372,
waxed_block_exposed_cut = 372,
waxed_block_oxidized_cut = 372,
waxed_block_weathered_cut = 372,
block = 85*copper_amount,
block_exposed = 85*copper_amount,
block_oxidized = 85*copper_amount,
block_weathered = 85*copper_amount,
block_cut = 85*copper_amount,
block_exposed_cut = 85*copper_amount,
block_oxidized_cut = 85*copper_amount,
block_weathered_cut = 85*copper_amount,
waxed_block = 85*copper_amount+32,
block_preserved = 85*copper_amount+32,
waxed_block_exposed = 85*copper_amount+32,
block_exposed_preserved = 85*copper_amount+32,
waxed_block_oxidized = 85*copper_amount+32,
block_oxidized_preserved = 85*copper_amount+32,
waxed_block_weathered = 85*copper_amount+32,
block_weathered_preserved = 85*copper_amount+32,
waxed_block_cut = 85*copper_amount+32,
block_cut_preserved = 85*copper_amount+32,
waxed_block_exposed_cut = 85*copper_amount+32,
block_exposed_cut_preserved = 85*copper_amount+32,
waxed_block_oxidized_cut = 85*copper_amount+32,
block_oxidized_cut_preserved = 85*copper_amount+32,
waxed_block_weathered_cut = 85*copper_amount+32,
block_weathered_cut_preserved = 85*copper_amount+32,
},
["mcl_deepslate"] = {
infested_deepslate = 0,
deepslate_reinforced = 0,
deepslate_with_coal = 0,
deepslate_with_copper = 0,
deepslate_with_diamond = 0,
@ -968,7 +995,6 @@ exchangeclone.mcl_energy_values = {
deepslate_with_iron = 0,
deepslate_with_redstone = 0,
deepslate_with_lapis = 0,
},
["xpanes"] = {
bar_flat = 96,
@ -1128,6 +1154,7 @@ exchangeclone.mcl_energy_values = {
rabbit_hide = 16,
rabbit_stew = 144,
warped_fungus_on_a_stick = 68,
nametag = 128,
},
["mcl_mobs"] = {
nametag = 128,
@ -1166,12 +1193,23 @@ exchangeclone.mcl_energy_values = {
wall_sign_acaciawood = 17,
wall_sign_bamboo = 17,
wall_sign_birchwood = 17,
wall_sign_cherrywood = 17,
wall_sign_crimson_hyphae_wood = 17,
wall_sign_darkwood = 17,
wall_sign_junglewood = 17,
wall_sign_mangrove_wood = 17,
wall_sign_sprucewood = 17,
wall_sign_warped_hyphae_wood = 17,
wall_sign_oak = 17,
wall_sign_acacia = 17,
wall_sign_birch = 17,
wall_sign_cherry_blossom = 17,
wall_sign_crimson= 17,
wall_sign_dark_oak = 17,
wall_sign_jungle = 17,
wall_sign_mangrove = 17,
wall_sign_spruce = 17,
wall_sign_warped = 17,
},
["mcl_crimson"] = {
crimson_door = 16,
@ -1222,10 +1260,43 @@ exchangeclone.mcl_energy_values = {
chest_boat = 104,
chest_boat_acacia = 104,
chest_boat_birch = 104,
chest_boat_cherry = 104,
chest_boat_dark_oak = 104,
chest_boat_jungle = 104,
chest_boat_mangrove = 104,
chest_boat_spruce = 104,
boat_acacia_chest = 104,
boat_bamboo_chest = 104,
boat_birch_chest = 104,
boat_cherry_blossom_chest = 104,
boat_dark_oak_chest = 104,
boat_jungle_chest = 104,
boat_mangrove_chest = 104,
boat_oak_chest = 104,
boat_spruce_chest = 104,
},
["mcl_sus_nodes"] = {
brush = 137,
gravel = 0,
sand = 0,
},
["mcl_dyes"] = {
black = 8,
blue = 8,
brown = 8,
cyan = 8,
green = 8,
grey = 8,
light_blue = 8,
lime = 8,
magenta = 8,
orange = 8,
pink = 8,
purple = 8,
red = 8,
silver = 8, -- why
white = 8,
yellow = 8,
},
["mcl_compass"] = {
lodestone = 73736,
@ -1242,6 +1313,46 @@ exchangeclone.mcl_energy_values = {
["mcl_target"] = {
target_off = 280,
},
["mcl_cherry_blossom"] = {
cherry_door = 16
},
["mcl_trees"] = {
bark_acacia = 43,
bark_birch = 43,
bark_cherry_blossom = 43,
bark_crimson = 43,
bark_dark_oak = 43,
bark_jungle = 43,
bark_mangrove = 43,
bark_oak = 43,
bark_spruce = 43,
bark_warped = 43,
bark_stripped_acacia = 43,
bark_stripped_birch = 43,
bark_stripped_cherry_blossom = 43,
bark_stripped_crimson = 43,
bark_stripped_dark_oak = 43,
bark_stripped_jungle = 43,
bark_stripped_mangrove = 43,
bark_stripped_oak = 43,
bark_stripped_spruce = 43,
bark_stripped_warped = 43,
},
["mcl_lush_caves"] = {
cave_vines = 8,
cave_vines_lit = 0,
glow_berry = 36,
moss_carpet = 0.5,
spore_blossom = 32,
},
["mcl_pottery_sherds"] = {
pot = 16
},
["mcl_sculk"] = exchangeclone.mineclonia and {
sculk = 64,
sculk_vein = 32,
sculk_catalyst = 8192,
},
["mcl_stairs"] = {
slab_acaciatree_bark = 16,
slab_birchtree_bark = 16,
@ -1250,18 +1361,33 @@ exchangeclone.mcl_energy_values = {
slab_sprucetree_bark = 16,
slab_tree_bark = 16,
slab_bamboo_stripped = 8,
slab_acacia_bark= 21.5,
slab_birch_bark= 21.5,
slab_cherry_blossom_bark= 21.5,
slab_crimson_bark= 21.5,
slab_dark_oak_bark= 21.5,
slab_jungle_bark= 21.5,
slab_mangrove_bark= 21.5,
slab_oak_bark= 21.5,
slab_spruce_bark= 21.5,
slab_warped_bark= 21.5,
slab_copper_cut = 337,
slab_copper_exposed_cut = 337,
slab_copper_oxidized_cut = 337,
slab_copper_weathered_cut = 337,
slab_waxed_copper_cut = 398,
slab_copper_cut_preserved = 398,
slab_waxed_copper_exposed_cut = 398,
slab_copper_exposed_cut_preserved = 398,
slab_waxed_copper_oxidized_cut = 398,
slab_copper_oxidized_cut_preserved = 398,
slab_waxed_copper_weathered_cut = 398,
slab_copper_weathered_cut_preserved = 398,
slab_mud_brick = 0.5,
slab_quartzblock = 256,
slab_redsandstone = 2,
slab_sandstone = 2,
slab_stone_rough = 0.5,
stair_acaciatree_bark = 16*3,
stair_birchtree_bark = 16*3,
stair_darktree_bark = 16*3,
@ -1269,18 +1395,33 @@ exchangeclone.mcl_energy_values = {
stair_sprucetree_bark = 16*3,
stair_tree_bark = 16*3,
stair_bamboo_stripped = 8*3,
stair_acacia_bark= 64,
stair_birch_bark= 64,
stair_cherry_blossom_bark= 64,
stair_crimson_bark= 64,
stair_dark_oak_bark= 64,
stair_jungle_bark= 64,
stair_mangrove_bark= 64,
stair_oak_bark= 64,
stair_spruce_bark= 64,
stair_warped_bark= 64,
stair_copper_cut = 337*3,
stair_copper_exposed_cut = 337*3,
stair_copper_oxidized_cut = 337*3,
stair_copper_weathered_cut = 337*3,
stair_waxed_copper_cut = 398*3,
stair_copper_cut_preserved = 398*3,
stair_waxed_copper_exposed_cut = 398*3,
stair_copper_exposed_cut_preserved = 398*3,
stair_waxed_copper_oxidized_cut = 398*3,
stair_copper_oxidized_cut_preserved = 398*3,
stair_waxed_copper_weathered_cut = 398*3,
stair_copper_weathered_cut_preserved = 398*3,
stair_mud_brick = 0.5*3,
stair_quartzblock = 256*3,
stair_redsandstone = 2*3,
stair_sandstone = 2*3,
stairs_stone_rough = 1.5,
},
["meat_blocks"] = {
sausage = 64,
@ -1347,7 +1488,8 @@ exchangeclone.mcl_energy_values = {
["flying_sausage"] = {
cooked_elytra = 297216,
burnt_elytra = 297216,
flying_sausage = 297216 + (576*8)
flying_sausage = 297216 + (576*8),
flight_stomach = 128,
},
["sticky_things"] = {
bucket_glue = 776,
@ -1371,22 +1513,32 @@ exchangeclone.mcl_energy_values = {
blue_feather = 0,
},
["mcl_colorblocks"] = {
glazed_terracotta_black = 64,
glazed_terracotta_blue = 64,
glazed_terracotta_brown = 64,
glazed_terracotta_cyan = 64,
glazed_terracotta_green = 64,
glazed_terracotta_grey = 64,
glazed_terracotta_light_blue = 64,
glazed_terracotta_lime = 64,
glazed_terracotta_magenta = 64,
glazed_terracotta_orange = 64,
glazed_terracotta_pink = 64,
glazed_terracotta_purple = 64,
glazed_terracotta_red = 64,
glazed_terracotta_silver = 64,
glazed_terracotta_white = 64,
glazed_terracotta_yellow = 64
glazed_terracotta_black = 16,
glazed_terracotta_blue = 16,
glazed_terracotta_brown = 16,
glazed_terracotta_cyan = 16,
glazed_terracotta_green = 16,
glazed_terracotta_grey = 16,
glazed_terracotta_light_blue = 16,
glazed_terracotta_lime = 16,
glazed_terracotta_magenta = 16,
glazed_terracotta_orange = 16,
glazed_terracotta_pink = 16,
glazed_terracotta_purple = 16,
glazed_terracotta_red = 16,
glazed_terracotta_silver = 16,
glazed_terracotta_white = 16,
glazed_terracotta_yellow = 16
},
["mcl_banners"] = {
pattern_bricks = 32+64,
pattern_creeper = 32+256,
pattern_curly_border = 32+8,
pattern_flower = 32+8,
pattern_skull = 32+50000,
pattern_thing = 32+147584,
pattern_globe = 360,
pattern_piglin = 300
},
["useful_green_potatoes"] = {
useful_green_potato = 256,
@ -1460,6 +1612,7 @@ exchangeclone.mcl_group_values = {
{"pane", 0.5},
{"pressure_plate", 16},
{"trapdoor", 24},
{"door", 16},
{"fence_gate", 32},
{"sapling", 32},
{"mushroom", 32},
@ -1473,12 +1626,18 @@ exchangeclone.mcl_group_values = {
{"huge_mushroom", 0}, --if you want energy, break it into mushrooms; doesn't always drop.
{"carpet", 32},
{"spawn_egg", 0},
{"hardened_clay", 16},
{"wood_slab", 4},
{"wood_stairs", 12},
{"smithing_template", 8192*7+1792*2},
{"concrete", 2},
{"concrete_powder", 2},
{"useless", 0},
{"hardened_clay", 64},
{"decorated_pot_recipe", 4}, -- has to be 4 because of brick.
{"NO_GROUP", 1},
}
exchangeclone.mcl_potion_data = {
exchangeclone.mcl_potion_data = { -- automatically assumes base cost is awkward potion
{name = "water", ingredient_cost = 0, custom_base_cost = 0, no_arrow = true},
{name = "awkward", ingredient_cost = 0, no_arrow = true},
{name = "fire_resistance", ingredient_cost = 768, plus = true},
@ -1493,7 +1652,8 @@ exchangeclone.mcl_potion_data = {
{name = "swiftness", ingredient_cost = 32, plus = true, two = true},
{name = "thick", ingredient_cost = 384, no_arrow = true, custom_base_cost = 0},
{name = "water_breathing", ingredient_cost = 64, plus = true},
{name = "invisibility", ingredient_cost = 192, custom_base_cost = 623, plus = true}
{name = "invisibility", ingredient_cost = 192, custom_base_cost = 623, plus = true},
{name = "withering", ingredient_cost = 128, plus = true, two = true}
}
exchangeclone.whitelisted_mods = {
@ -1566,6 +1726,7 @@ exchangeclone.whitelisted_mods = {
mcl_doors = true,
mcl_droppers = true,
mcl_dye = true,
mcl_dyes = true, -- Why, MineClonia? (unless MineClonia did it first, in which case, "Why, MineClone2?")
mcl_enchanting = true,
mcl_end = true,
mcl_experience = true,
@ -1589,6 +1750,7 @@ exchangeclone.whitelisted_mods = {
mcl_lectern = true,
mcl_lightning_rods = true,
mcl_loom = true,
mcl_lush_caves = true,
mcl_mangrove = true,
mcl_maps = true,
mcl_minecarts = true,
@ -1601,8 +1763,9 @@ exchangeclone.whitelisted_mods = {
mcl_ocean = true,
mcl_paintings = true,
mcl_potions = true,
mcl_pottery_sherds = true,
mcl_raw_ores = true,
--mcl_sculk = true, TODO
mcl_sculk = exchangeclone.mineclonia and true,
mcl_shields = true,
mcl_signs = true,
mcl_smithing_table = true,
@ -1611,13 +1774,15 @@ exchangeclone.whitelisted_mods = {
mcl_spyglass = true,
mcl_stairs = true,
mcl_stonecutter = true,
mcl_sus_nodes = true,
mcl_sus_stew = true,
mcl_target = true,
mcl_throwing = true,
mcl_tnt = true,
mcl_tools = true,
mcl_throwing = true,
mcl_torches = true,
mcl_totems = true,
mcl_trees = true,
mcl_villages = true,
mcl_walls = true,
mcl_wool = true,
@ -1790,7 +1955,7 @@ minetest.register_on_mods_loaded(function()
set_item_energy("mcl_bone_meal:bone_meal", 48)
--Bone meal just doesn't work either, for some reason.
for i = 1, 8 do --faster than doing everything individually.
set_item_energy("mcl_jukebox:record_"..i, 1024)
set_item_energy("mcl_jukebox:record_"..i, 8192)
end
for _, info in ipairs(exchangeclone.mcl_potion_data) do
add_potion_energy(info)

View File

@ -77,7 +77,7 @@ minetest.register_tool("exchangeclone:dark_matter_hammer", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=6,
damage_groups = {fleshy=7},
punch_attack_uses = 0,
groupcaps={
@ -102,7 +102,7 @@ minetest.register_tool("exchangeclone:dark_matter_hammer_3x3", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=6,
damage_groups = {fleshy=7},
punch_attack_uses = 0,
groupcaps={
@ -127,7 +127,7 @@ minetest.register_tool("exchangeclone:red_matter_hammer", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.3,
max_drop_level=5,
max_drop_level=7,
damage_groups = {fleshy=9},
punch_attack_uses = 0,
groupcaps={
@ -152,7 +152,7 @@ minetest.register_tool("exchangeclone:red_matter_hammer_3x3", {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.3,
max_drop_level=5,
max_drop_level=7,
damage_groups = {fleshy=9},
punch_attack_uses = 0,
groupcaps={

View File

@ -2,5 +2,5 @@ name = exchangeclone
title = ExchangeClone
description = Equivalent Exchange for Minetest Game and MineClone! Turn items into energy and energy into items, transmute nodes into other nodes, and craft Dark and Red Matter tools!
min_minetest_version = 5.5
optional_depends = 3d_armor, mcl_item_id, mcl_core, default, moreswords, mcl_stairs, meat_blocks, ghost_blocks, sticky_things, fake_liquids, sound_machine, stairs, mcl_dispensers, farming, mobs_mc
author = ThePython10110
optional_depends = 3d_armor, mcl_item_id, mcl_core, default, moreswords, mcl_stairs, meat_blocks, sticky_things, fake_liquids, sound_machine, stairs, mcl_dispensers, farming, mobs_mc, screwdriver
author = ThePython10110

View File

@ -1,4 +1,5 @@
--Personal Energy Storage Accessor (PESA)
-- Personal Energy Storage Accessor (PESA)
-- Deprecated now that personal energy exists.
local formspec
if not exchangeclone.mcl then

View File

@ -106,17 +106,17 @@ local pick_def = {
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=6,
damage_groups = {fleshy=7},
punch_attack_uses = 0,
groupcaps={
cracky = {times={[1]=1.5, [2]=0.75, [3]=0.325}, uses=0, maxlevel=4},
cracky = {times={[1]=0.4, [2]=0.2, [3]=0.1}, uses=0, maxlevel=4},
},
},
sound = { breaks = "default_tool_breaks" },
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 16, level = 7, uses = 0 }
pickaxey = { speed = 40, level = 7, uses = 0 }
},
on_secondary_use = pickaxe_on_use,
on_place = pickaxe_on_use,
@ -127,8 +127,8 @@ minetest.register_tool("exchangeclone:dark_matter_pickaxe", table.copy(pick_def)
local pick_def_3x1 = table.copy(pick_def)
pick_def_3x1.exchangeclone_pick_mode = "tall"
pick_def_3x1.groups.not_in_creative_inventory = 1
pick_def_3x1.tool_capabilities.groupcaps.cracky.times = {[1]=1.8, [2]=0.9, [3]=0.5}
pick_def_3x1._mcl_diggroups.pickaxey.speed = 12
pick_def_3x1.tool_capabilities.groupcaps.cracky.times = {[1]=0.45, [2]=0.27, [3]=0.11}
pick_def_3x1._mcl_diggroups.pickaxey.speed = 35
minetest.register_tool("exchangeclone:dark_matter_pickaxe_3x1", table.copy(pick_def_3x1))
@ -140,22 +140,22 @@ pick_def.groups.red_matter_pickaxe = 1
pick_def.groups.dig_speed_class = 8
pick_def.tool_capabilities = {
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=7,
damage_groups = {fleshy=9},
punch_attack_uses = 0,
groupcaps={
cracky = {times={[1]=1.2, [2]=0.7, [3]=0.4}, uses=0, maxlevel=5},
cracky = {times={[1]=0.27, [2]=0.13, [3]=0.07}, uses=0, maxlevel=5},
},
}
pick_def._mcl_diggroups.pickaxey = { speed = 20, level = 8, uses = 0 }
pick_def._mcl_diggroups.pickaxey = { speed = 60, level = 8, uses = 0 }
minetest.register_tool("exchangeclone:red_matter_pickaxe", table.copy(pick_def))
local pick_def_3x1 = table.copy(pick_def)
pick_def_3x1.exchangeclone_pick_mode = "tall"
pick_def_3x1.groups.not_in_creative_inventory = 1
pick_def_3x1.tool_capabilities.groupcaps.cracky.times = {[1]=1.2, [2]=0.7, [3]=0.4}
pick_def_3x1._mcl_diggroups.pickaxey.speed = 16
pick_def_3x1.tool_capabilities.groupcaps.cracky.times = {[1]=0.32, [2]=0.16, [3]=0.08}
pick_def_3x1._mcl_diggroups.pickaxey.speed = 52
minetest.register_tool("exchangeclone:red_matter_pickaxe_3x1", table.copy(pick_def_3x1))

View File

@ -44,7 +44,6 @@ local katar_on_use = function(itemstack, player, pointed_thing)
end
else
local damage_all = itemstack:get_meta():get_int("exchangeclone_damage_all")
exchangeclone.aoe_attack{max_damage = 2}
if damage_all ~= 0 then damage_all = 1 end
if player:get_player_control().sneak then
if damage_all == 0 then
@ -58,7 +57,7 @@ local katar_on_use = function(itemstack, player, pointed_thing)
return itemstack
end
local aoe_function = exchangeclone.aoe_attack({max_damage = 16, knockback = 20, radius = 9, damage_all = damage_all, cooldown = 0.2})
local aoe_function = exchangeclone.aoe_attack({damage = 1000, knockback = 20, radius = 10, damage_all = damage_all, cooldown = 0.7})
aoe_function(itemstack, player, pointed_thing)
end
end
@ -73,8 +72,8 @@ local katar_def = {
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
full_punch_interval = 0.3,
max_drop_level=5,
damage_groups = {fleshy=21},
max_drop_level=8,
damage_groups = {fleshy=28},
punch_attack_uses = 0,
groupcaps={
exchangeclone_dirt = {times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=0, maxlevel=4},
@ -236,19 +235,19 @@ local morningstar_def = {
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
full_punch_interval = 0.3,
max_drop_level=5,
damage_groups = {fleshy=20},
max_drop_level=8,
damage_groups = {fleshy=25},
punch_attack_uses = 0,
groupcaps={
cracky = {times={[1]=0.5, [2]=0.3, [3]=0.15}, uses=0, maxlevel=5},
crumbly = {times={[1]=0.5, [2]=0.3, [3]=0.15}, uses=0, maxlevel=5},
choppy = {times={[1]=0.5, [2]=0.3, [3]=0.15}, uses=0, maxlevel=5},
cracky = {times={[1]=0.2, [2]=0.1, [3]=0.05}, uses=0, maxlevel=5},
crumbly = {times={[1]=0.2, [2]=0.1, [3]=0.05}, uses=0, maxlevel=5},
choppy = {times={[1]=0.2, [2]=0.1, [3]=0.05}, uses=0, maxlevel=5},
},
},
sound = { breaks = "default_tool_breaks" },
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = {speed = 22, level = 8, uses = 0},
pickaxey = {speed = 80, level = 8, uses = 0},
shovely = {speed = 22, level = 8, uses = 0},
axey = { speed = 22, level = 8, uses = 0 }
},
@ -258,7 +257,7 @@ minetest.register_tool("exchangeclone:red_morningstar", table.copy(morningstar_d
for k, v in pairs({cracky = "pickaxey", crumbly = "shovely"}) do
morningstar_def.tool_capabilities.groupcaps[k].times = {[1]=0.7,[2]=0.5,[3]=0.25}
morningstar_def._mcl_diggroups[v].speed = 18
morningstar_def._mcl_diggroups[v].speed = 70
end
morningstar_def.groups.not_in_creative_inventory = 1
morningstar_def.exchangeclone_pick_mode = "3x3"
@ -267,7 +266,7 @@ minetest.register_tool("exchangeclone:red_morningstar_3x3", table.copy(morningst
for k, v in pairs({cracky = "pickaxey", crumbly = "shovely"}) do
morningstar_def.tool_capabilities.groupcaps[k].times = {[1]=0.6,[2]=0.4,[3]=0.20}
morningstar_def._mcl_diggroups[v].speed = 20
morningstar_def._mcl_diggroups[v].speed = 60
end
morningstar_def.exchangeclone_pick_mode = "tall"

View File

@ -77,12 +77,12 @@ minetest.register_tool("exchangeclone:dark_matter_shovel", {
description = "Dark Matter Shovel",
wield_image = "exchangeclone_dark_matter_shovel.png",
inventory_image = "exchangeclone_dark_matter_shovel.png",
groups = { tool=1, shovel=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
groups = { tool=1, shovel=1, dig_speed_class=6, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=6,
damage_groups = {fleshy=7},
punch_attack_uses = 0,
groupcaps={
@ -102,12 +102,12 @@ minetest.register_tool("exchangeclone:red_matter_shovel", {
description = "Red Matter Shovel",
wield_image = "exchangeclone_red_matter_shovel.png",
inventory_image = "exchangeclone_red_matter_shovel.png",
groups = { tool=1, shovel=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
groups = { tool=1, shovel=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.5,
max_drop_level=5,
max_drop_level=7,
damage_groups = {fleshy=9},
punch_attack_uses = 0,
groupcaps={

View File

@ -57,15 +57,15 @@ end)
exchangeclone.aoe_attack = function(info)
if not info then return end
local max_damage = info.max_damage
local damage = info.damage or 12 -- 12 = DM sword AOE
local knockback = info.knockback
local radius = info.radius
local damage_all = info.damage_all --damage all mobs/players or just hostile ones
local cooldown = info.cooldown or 0
if not max_damage or not knockback or not radius then return end
local cooldown = info.cooldown or 0.7
if not (damage and radius and knockback) then return end
if damage_all == nil then damage_all = 1 end
return function(itemstack, player, pointed_thing) --copied from MineClone's TNT; I would simply use the explosion function but it would hurt the player.
return function(itemstack, player, pointed_thing) --modified from MineClone's TNT; I would simply use the explosion function but it would hurt the player.
-- Use pointed node's on_rightclick function first, if present
local click_test = exchangeclone.check_on_rightclick(itemstack, player, pointed_thing)
if click_test ~= false then
@ -99,7 +99,6 @@ exchangeclone.aoe_attack = function(info)
and obj:get_hp() > 0 and obj ~= player then
local opos = obj:get_pos()
local distance = math.max(1, vector.distance(pos, opos))
-- Punch entity with damage depending on explosion exposure and
@ -107,7 +106,6 @@ exchangeclone.aoe_attack = function(info)
local punch_vec = vector.subtract(opos, pos)
local punch_dir = vector.normalize(punch_vec)
punch_dir = {x=punch_dir.x, y=punch_dir.y+0.3, z=punch_dir.z} -- knockback should be more upward
local damage = math.min(max_damage, max_damage-distance)
--minetest.log(dump({name=ent.name, distance=distance, damage=damage}))
local sleep_formspec_doesnt_close_mt53 = false
@ -165,7 +163,7 @@ local red_matter_sword_action = function(itemstack, player, pointed_thing)
return itemstack
end
local aoe_function = exchangeclone.aoe_attack({max_damage = 12, knockback = 20, radius = 7, damage_all = damage_all, cooldown = 0.2})
local aoe_function = exchangeclone.aoe_attack({damage = 16, knockback = 20, radius = 7.5, damage_all = damage_all, cooldown = 0.7})
aoe_function(itemstack, player, pointed_thing)
end
@ -173,20 +171,20 @@ minetest.register_tool("exchangeclone:dark_matter_sword", {
description = "Dark Matter Sword",
wield_image = "exchangeclone_dark_matter_sword.png",
inventory_image = "exchangeclone_dark_matter_sword.png",
groups = { tool=1, sword=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
groups = { tool=1, sword=1, dig_speed_class=6, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.25,
max_drop_level=5,
damage_groups = {fleshy=12},
full_punch_interval = 0.7,
max_drop_level=6,
damage_groups = {fleshy=15},
punch_attack_uses = 0,
groupcaps={
snappy = {times={[1]=0.95, [2]=0.45, [3]=0.15}, uses=0, maxlevel=4},
},
},
on_secondary_use = exchangeclone.aoe_attack({max_damage = 10, knockback = 12, radius = 5, cooldown = 0.5}),
on_place = exchangeclone.aoe_attack({max_damage = 10, knockback = 12, radius = 5, cooldown = 0.5}),
on_secondary_use = exchangeclone.aoe_attack({damage = 12, knockback = 12, radius = 5, cooldown = 0.7}),
on_place = exchangeclone.aoe_attack({damage = 12, knockback = 12, radius = 5, cooldown = 0.7}),
sound = { breaks = "default_tool_breaks" },
_mcl_toollike_wield = true,
_mcl_diggroups = {
@ -198,13 +196,13 @@ minetest.register_tool("exchangeclone:red_matter_sword", {
description = "Red Matter Sword",
wield_image = "exchangeclone_red_matter_sword.png",
inventory_image = "exchangeclone_red_matter_sword.png",
groups = { tool=1, sword=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
groups = { tool=1, sword=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
wield_scale = exchangeclone.wield_scale,
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.17,
max_drop_level=6,
damage_groups = {fleshy=14},
full_punch_interval = 0.7,
max_drop_level=7,
damage_groups = {fleshy=20},
punch_attack_uses = 0,
groupcaps={
snappy = {times={[1]=0.6, [2]=0.25, [3]=0.1}, uses=0, maxlevel=5},