merge iron, gold, copper into metals skill, merge diamond and mese into crystals skill, fix level checking for magic missle

pull/2/head
Brandon 2014-05-16 17:11:37 -05:00
parent 6504782ad6
commit a55c33836a
11 changed files with 108 additions and 76 deletions

View File

@ -24,7 +24,7 @@ minetest.register_craftitem("default:coal_lump", {
minetest.register_craftitem("default:iron_lump", {
description = "Iron Lump",
inventory_image = "default_iron_lump.png",
groups = {skill=SKILL_IRON},
groups = {skill=SKILL_METAL},
})
minetest.register_craftitem("default:copper_lump", {
@ -59,31 +59,31 @@ minetest.register_craftitem("default:clay_lump", {
minetest.register_craftitem("default:steel_ingot", {
description = "Steel Ingot",
inventory_image = "default_steel_ingot.png",
groups = {skill=SKILL_IRON},
groups = {skill=SKILL_METAL},
})
minetest.register_craftitem("default:copper_ingot", {
description = "Copper Ingot",
inventory_image = "default_copper_ingot.png",
groups = {skill=SKILL_COPPER},
groups = {skill=SKILL_METAL},
})
minetest.register_craftitem("default:bronze_ingot", {
description = "Bronze Ingot",
inventory_image = "default_bronze_ingot.png",
groups = {skill=SKILL_BRONZE},
groups = {skill=SKILL_METAL},
})
minetest.register_craftitem("default:gold_ingot", {
description = "Gold Ingot",
inventory_image = "default_gold_ingot.png",
groups = {skill=SKILL_GOLD},
groups = {skill=SKILL_METAL},
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = "Mese Crystal Fragment",
inventory_image = "default_mese_crystal_fragment.png",
groups = {skill=SKILL_MESE},
groups = {skill=SKILL_CRYSTAL},
})
minetest.register_craftitem("default:clay_brick", {

View File

@ -36,7 +36,7 @@ minetest.register_node("default:stone_with_iron", {
groups = {cracky=2},
drop = 'default:iron_lump',
sounds = default.node_sound_stone_defaults(),
skill=SKILL_IRON,
skill=SKILL_METAL,
})
minetest.register_node("default:stone_with_copper", {
@ -46,7 +46,7 @@ minetest.register_node("default:stone_with_copper", {
groups = {cracky=2},
drop = 'default:copper_lump',
sounds = default.node_sound_stone_defaults(),
skill=SKILL_COPPER,
skill=SKILL_METAL,
})
minetest.register_node("default:stone_with_mese", {
@ -56,7 +56,7 @@ minetest.register_node("default:stone_with_mese", {
groups = {cracky=1},
drop = "default:mese_crystal",
sounds = default.node_sound_stone_defaults(),
skill=SKILL_MESE,
skill=SKILL_CRYSTAL,
})
minetest.register_node("default:stone_with_gold", {

View File

@ -4,26 +4,19 @@
-- CONSTANT IDs
SKILL_WOOD = 1
SKILL_STONE = 2
SKILL_IRON = 4
SKILL_STEEL = 4
SKILL_COPPER = 8
SKILL_DIAMOND = 16
SKILL_MESE = 32
SKILL_GOLD = 64
SKILL_METAL = 4
SKILL_CRYSTAL = 8
SKILL_SMELTING= 128
SKILL_CRAFTING= 256
SKILL_ARROW=512
SKILL_MAGIC=1024
SKILL_SMELTING= 16
SKILL_CRAFTING= 32
SKILL_ARROW = 64
SKILL_MAGIC = 128
-- REGISTER THE SKILLS
skills.register_skill(SKILL_WOOD, { desc = 'Wood', max_level = 10, level_exp = 15 })
skills.register_skill(SKILL_STONE, { desc = 'Stone', max_level = 10, level_exp = 15 })
skills.register_skill(SKILL_IRON, { desc = 'Iron/Steel', max_level = 25, level_exp = 20 })
skills.register_skill(SKILL_COPPER, { desc = 'Copper', max_level = 25, level_exp = 20 })
skills.register_skill(SKILL_DIAMOND, { desc = 'Diamond', max_level = 40, level_exp = 15 })
skills.register_skill(SKILL_MESE, { desc = 'Mese', max_level = 40, level_exp = 15 })
skills.register_skill(SKILL_GOLD, { desc = 'Gold', max_level = 15, level_exp = 20 })
skills.register_skill(SKILL_METAL, { desc = 'Metals', max_level = 25, level_exp = 20 })
skills.register_skill(SKILL_CRYSTAL, { desc = 'Crystals', max_level = 40, level_exp = 15 })
skills.register_skill(SKILL_SMELTING, { desc = 'Smelting', max_level = 50, level_exp = 10 })
skills.register_skill(SKILL_CRAFTING, { desc = 'Crafting', max_level = 50, level_exp = 10 })

View File

@ -6,7 +6,7 @@ minetest.register_item(":", {
wield_image = "wieldhand.png",
wield_scale = {x=1,y=1,z=2.5},
tool_capabilities = {
full_punch_interval = 0.9,
full_punch_interval = 1.1,
max_drop_level = 0,
groupcaps = {
crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1},
@ -59,7 +59,7 @@ minetest.register_tool("default:pick_steel", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_IRON,
skill = SKILL_METAL,
})
minetest.register_tool("default:pick_bronze", {
description = "Bronze Pickaxe",
@ -72,7 +72,7 @@ minetest.register_tool("default:pick_bronze", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_COPPER,
skill = SKILL_METAL,
})
minetest.register_tool("default:pick_mese", {
description = "Mese Pickaxe",
@ -85,7 +85,7 @@ minetest.register_tool("default:pick_mese", {
},
damage_groups = {fleshy=5},
},
skill = SKILL_MESE,
skill = SKILL_CRYSTAL,
})
minetest.register_tool("default:pick_diamond", {
description = "Diamond Pickaxe",
@ -98,7 +98,7 @@ minetest.register_tool("default:pick_diamond", {
},
damage_groups = {fleshy=5},
},
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
--
@ -146,7 +146,7 @@ minetest.register_tool("default:shovel_steel", {
damage_groups = {fleshy=3},
},
sounds = {[0]="default_shovel_steel",[1]="default_shovel_steel2",[2]="default_shovel_steel3"},
skill = SKILL_IRON,
skill = SKILL_METAL,
})
minetest.register_tool("default:shovel_bronze", {
description = "Bronze Shovel",
@ -161,7 +161,7 @@ minetest.register_tool("default:shovel_bronze", {
damage_groups = {fleshy=3},
},
sounds = {[0]="default_shovel_steel",[1]="default_shovel_steel2",[2]="default_shovel_steel3"},
skill = SKILL_COPPER,
skill = SKILL_METAL,
})
minetest.register_tool("default:shovel_mese", {
description = "Mese Shovel",
@ -175,7 +175,7 @@ minetest.register_tool("default:shovel_mese", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_MESE,
skill = SKILL_CRYSTAL,
})
minetest.register_tool("default:shovel_diamond", {
description = "Diamond Shovel",
@ -189,7 +189,7 @@ minetest.register_tool("default:shovel_diamond", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
--
@ -233,7 +233,7 @@ minetest.register_tool("default:axe_steel", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_IRON,
skill = SKILL_METAL,
})
minetest.register_tool("default:axe_bronze", {
description = "Bronze Axe",
@ -246,7 +246,7 @@ minetest.register_tool("default:axe_bronze", {
},
damage_groups = {fleshy=4},
},
skill = SKILL_COPPER + SKILL_IRON,
skill = SKILL_METAL,
})
minetest.register_tool("default:axe_mese", {
description = "Mese Axe",
@ -259,7 +259,7 @@ minetest.register_tool("default:axe_mese", {
},
damage_groups = {fleshy=6},
},
skill = SKILL_MESE,
skill = SKILL_CRYSTAL,
})
minetest.register_tool("default:axe_diamond", {
description = "Diamond Axe",
@ -272,7 +272,7 @@ minetest.register_tool("default:axe_diamond", {
},
damage_groups = {fleshy=7},
},
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
--
@ -283,12 +283,12 @@ minetest.register_tool("default:club_wood", {
description = "Wooden Club",
inventory_image = "default_tool_woodclub.png",
tool_capabilities = {
full_punch_interval = 1.1,
full_punch_interval = 0.8,
max_drop_level=0,
groupcaps={
snappy={times={[2]=1.6, [3]=0.40}, uses=10, maxlevel=1},
},
damage_groups = {fleshy=2},
damage_groups = {fleshy=1},
},
skill=SKILL_WOOD,
sounds = {[0]="default_sword_wood",[1]="default_sword_wood2"},
@ -297,7 +297,7 @@ minetest.register_tool("default:club_stone", {
description = "Stone Club",
inventory_image = "default_tool_stoneclub.png",
tool_capabilities = {
full_punch_interval = 1.5,
full_punch_interval = 1.7,
max_drop_level=0,
groupcaps={
snappy={times={[2]=1.4, [3]=0.40}, uses=20, maxlevel=1},
@ -311,14 +311,14 @@ minetest.register_tool("default:sword_steel", {
description = "Steel Sword",
inventory_image = "default_tool_steelsword.png",
tool_capabilities = {
full_punch_interval = 0.8,
full_punch_interval = 0.9,
max_drop_level=1,
groupcaps={
snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=30, maxlevel=2},
},
damage_groups = {fleshy=6},
},
skill=SKILL_IRON,
skill=SKILL_METAL,
sounds = {[0]="default_sword_steel",[1]="default_sword_steel2"},
})
minetest.register_tool("default:sword_bronze", {
@ -330,36 +330,36 @@ minetest.register_tool("default:sword_bronze", {
groupcaps={
snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=40, maxlevel=2},
},
damage_groups = {fleshy=6},
damage_groups = {fleshy=7},
},
sounds = {[0]="default_sword_steel",[1]="default_sword_steel2"},
skill=SKILL_IRON + SKILL_COPPER,
skill=SKILL_METAL,
})
minetest.register_tool("default:sword_mese", {
description = "Mese Sword",
inventory_image = "default_tool_mesesword.png",
tool_capabilities = {
full_punch_interval = 0.7,
full_punch_interval = 0.6,
max_drop_level=1,
groupcaps={
snappy={times={[1]=2.0, [2]=1.00, [3]=0.35}, uses=30, maxlevel=3},
},
damage_groups = {fleshy=7},
},
skill=SKILL_MESE,
skill=SKILL_CRYSTAL,
sounds = {[0]="default_sword_steel",[1]="default_sword_steel2"},
})
minetest.register_tool("default:sword_diamond", {
description = "Diamond Sword",
inventory_image = "default_tool_diamondsword.png",
tool_capabilities = {
full_punch_interval = 0.7,
full_punch_interval = 0.6,
max_drop_level=1,
groupcaps={
snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=40, maxlevel=3},
},
damage_groups = {fleshy=8},
},
skill=SKILL_DIAMOND,
skill=SKILL_CRYSTAL,
sounds = {[0]="default_sword_steel",[1]="default_sword_steel2"},
})

View File

@ -320,9 +320,9 @@ minetest.after(2.5, function()
if main_timer > HUD_TICK then main_timer = 0 end
for _,player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name()
local immortal = minetest.check_player_privs(name, {immortal=true})
-- only proceed if damage is enabled
if minetest.setting_getbool("enable_damage") then
if minetest.setting_getbool("enable_damage") and not immortal then
local h = tonumber(hud.hunger[name])
local hp = player:get_hp()
if HUD_ENABLE_HUNGER and timer > 4 then

View File

@ -9,6 +9,12 @@ function hud.update_stamina(p,name)
local pos = p:getpos()
if player_lastpos[name] ~= nil then
if player_stamina[name] ~= nil then
if minetest.check_player_privs(name, {immortal=true}) then
player_stamina[name] = 20
return
end
local anim = default.player_get_animation(p)
local adj = 0.25
if anim.animation == "lay" then

View File

@ -49,6 +49,7 @@ function magic.register_spell(def)
stack_max = 1,
on_use = def.on_use,
sounds = def.sounds,
skill = SKILL_MAGIC,
})
end

View File

@ -7,6 +7,10 @@ magic.player_magic = default.deserialize_from_file(magic_file)
dofile(magicpath.."/api.lua")
function magic.update_magic(player,name)
if minetest.check_player_privs(name, {immortal=true}) then
magic.player_magic[name] = 20
return
end
local s = skills.get_skill(name,SKILL_MAGIC)
local baseAdj = 2
if magic.player_magic[name] ~= nil then

View File

@ -32,6 +32,7 @@ MAGICMISSLE_ENTITY.on_step = function(self, dtime)
full_punch_interval=1.0,
damage_groups={fleshy=damage},
}, nil)
hitparticles(pos)
self.object:remove()
end
else
@ -43,6 +44,7 @@ MAGICMISSLE_ENTITY.on_step = function(self, dtime)
full_punch_interval=1.0,
damage_groups={fleshy=damage},
}, nil)
hitparticles(pos)
self.object:remove()
end
end
@ -52,6 +54,7 @@ MAGICMISSLE_ENTITY.on_step = function(self, dtime)
if self.lastpos.x~=nil then
if ( minetest.registered_nodes[node.name].walkable == true or minetest.registered_nodes[node.name].walkable == nil ) and ( node.name ~= "air" and node.name ~= "default:water_source" and node.name ~= "default:water_flowing" ) then
minetest.sound_play("magic_magicmissle_hit",{object=self.object})
hitparticles(pos)
self.object:remove()
end
end
@ -77,10 +80,30 @@ MAGICMISSLE_ENTITY.on_step = function(self, dtime)
if self.timer > 1.5 then
minetest.sound_play("magic_magicmissle_hit",{object=self.object})
hitparticles(pos)
self.object:remove()
end
end
function hitparticles(pos)
minetest.add_particlespawner(
45, --amount
0.75, --time
{x=pos.x-0.3, y=pos.y+0.3, z=pos.z-0.3}, --minpos
{x=pos.x+0.3, y=pos.y+0.5, z=pos.z+0.3}, --maxpos
{x=0, y=-2, z=0}, --minvel
{x=2, y=2, z=2}, --maxvel
{x=-4,y=-4,z=-4}, --minacc
{x=4,y=-4,z=4}, --maxacc
0.1, --minexptime
1, --maxexptime
1, --minsize
3, --maxsize
false, --collisiondetection
"magic_magicmissle_particle1.png" --texture
)
end
minetest.register_entity("magic:magicmissle", MAGICMISSLE_ENTITY)
local magicmissle_spell = {
@ -93,20 +116,25 @@ local magicmissle_spell = {
local sk = skills.get_skill(name,SKILL_MAGIC)
local skb = skills.get_def(SKILL_MAGIC)
local mana = 10 - ( ( (sk.level - 2) / skb.max_level ) * 10 )
if magic.player_magic[name] >= mana then
magic.player_magic[name] = magic.player_magic[name] - mana
minetest.sound_play("magic_magicmissle_cast",{object=user})
local playerpos = user:getpos()
local obj = minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, "magic:magicmissle")
local dir = user:get_look_dir()
obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19})
obj:setacceleration({x=dir.x*-3, y=-1, z=dir.z*-3})
obj:setyaw(user:get_look_yaw()+math.pi)
obj:get_luaentity().player = user
magic.update_magic(user,name)
if sk.level >= 4 then
local mana = 10 - ( ( (sk.level - 2) / skb.max_level ) * 10 )
if magic.player_magic[name] >= mana then
magic.player_magic[name] = magic.player_magic[name] - mana
minetest.sound_play("magic_magicmissle_cast",{object=user})
local playerpos = user:getpos()
local obj = minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, "magic:magicmissle")
local dir = user:get_look_dir()
obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19})
obj:setacceleration({x=dir.x*-3, y=-1, z=dir.z*-3})
obj:setyaw(user:get_look_yaw()+math.pi)
obj:get_luaentity().player = user
magic.update_magic(user,name)
else
minetest.chat_send_player(name,"You don't have enough magic")
end
else
minetest.chat_send_player(name,"You don't have enough magic")
minetest.chat_send_player(name,"You are not high enough level to use Magic Missle")
end
end,
max_mana = 10,

View File

@ -16,7 +16,7 @@ minetest.register_tool("3d_armor:helmet_steel", {
inventory_image = "3d_armor_inv_helmet_steel.png",
groups = {armor_head=10, armor_heal=0, armor_use=500 },
wear = 0,
skill=SKILL_STEEL,
skill=SKILL_METAL,
})
minetest.register_tool("3d_armor:helmet_bronze", {
@ -24,7 +24,7 @@ minetest.register_tool("3d_armor:helmet_bronze", {
inventory_image = "3d_armor_inv_helmet_bronze.png",
groups = {armor_head=10, armor_heal=6, armor_use=250},
wear = 0,
skill = SKILL_STEEL + SKILL_COPPER,
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:helmet_diamond", {
@ -32,7 +32,7 @@ minetest.register_tool("3d_armor:helmet_diamond", {
inventory_image = "3d_armor_inv_helmet_diamond.png",
groups = {armor_head=15, armor_heal=12, armor_use=100 },
wear = 0,
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
if use_moreores then
@ -61,7 +61,7 @@ minetest.register_tool("3d_armor:chestplate_steel", {
groups = {armor_torso=15, armor_heal=0, armor_use=500 },
wear = 0,
physics = { speed = -0.03 },
skill = SKILL_STEEL,
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:chestplate_bronze", {
@ -70,7 +70,7 @@ minetest.register_tool("3d_armor:chestplate_bronze", {
groups = {armor_torso=15, armor_heal=6, armor_use=250 },
wear = 0,
physics = { speed = -0.03 },
skill = SKILL_STEEL + SKILL_COPPER
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:chestplate_diamond", {
@ -79,7 +79,7 @@ minetest.register_tool("3d_armor:chestplate_diamond", {
groups = {armor_torso=20, armor_heal=12, armor_use=100 },
wear = 0,
physics = { speed = -0.04 },
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
if use_moreores then
@ -108,7 +108,7 @@ minetest.register_tool("3d_armor:leggings_steel", {
groups = {armor_legs=15, armor_heal=0, armor_use=500 },
wear = 0,
physics = { speed = -0.08 },
skill = SKILL_STEEL,
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:leggings_bronze", {
@ -116,7 +116,7 @@ minetest.register_tool("3d_armor:leggings_bronze", {
inventory_image = "3d_armor_inv_leggings_bronze.png",
groups = {armor_legs=15, armor_heal=6, armor_use=250 },
wear = 0,
skill = SKILL_STEEL + SKILL_COPPER,
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:leggings_diamond", {
@ -125,7 +125,7 @@ minetest.register_tool("3d_armor:leggings_diamond", {
groups = {armor_legs=20, armor_heal=12, armor_use=100 },
wear = 0,
physics = { speed = -0.09 },
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
if use_moreores then
@ -154,7 +154,7 @@ minetest.register_tool("3d_armor:boots_steel", {
groups = {armor_feet=10, armor_heal=0, armor_use=500 },
wear = 0,
physics = { speed = -0.07 },
skill = SKILL_STEEL,
skill = SKILL_METAL,
})
minetest.register_tool("3d_armor:boots_bronze", {
@ -163,7 +163,7 @@ minetest.register_tool("3d_armor:boots_bronze", {
groups = {armor_feet=10, armor_heal=6, armor_use=250 },
wear = 0,
physics = { speed = -0.07 },
skill = SKILL_STEEL + SKILL_COPPER
skill = SKILL_METAL
})
minetest.register_tool("3d_armor:boots_diamond", {
@ -172,7 +172,7 @@ minetest.register_tool("3d_armor:boots_diamond", {
groups = {armor_feet=15, armor_heal=12, armor_use=100 },
wear = 0,
physics = { speed = -0.08 },
skill = SKILL_DIAMOND,
skill = SKILL_CRYSTAL,
})
if use_moreores then

@ -1 +1 @@
Subproject commit 4d535cff739abc4af0ca18d1ee15784ddcd8ff17
Subproject commit 8653a1491fde10e0764f5c124269f581808231e5