Skip to content

Commit 202ac64

Browse files
committed
Add medkit, remove apples
1 parent 6375bb2 commit 202ac64

File tree

10 files changed

+123
-38
lines changed

10 files changed

+123
-38
lines changed

mods/ctf_map/schem_map.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ minetest.register_alias("flowers:geranium", "air")
1313
minetest.register_alias("flowers:viola", "air")
1414
minetest.register_alias("flowers:dandelion_white", "air")
1515
minetest.register_alias("flowers:chrysanthemum_green", "air")
16+
minetest.register_alias("default:apple", "air")
1617
minetest.register_alias("default:grass_1", "air")
1718
minetest.register_alias("default:grass_2", "air")
1819
minetest.register_alias("default:grass_3", "air")

mods/ctf_treasure/init.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
treasurer.register_treasure("default:ladder",0.3,5,{1,20})
22
treasurer.register_treasure("default:torch",0.3,5,{1,20})
33
treasurer.register_treasure("default:cobble",0.4,5,{45,99})
4-
treasurer.register_treasure("default:apple",0.3,5,{1,8})
54
treasurer.register_treasure("default:wood",0.3,5,{30,60})
65
treasurer.register_treasure("doors:door_steel",0.3,5,{1,3})
76

@@ -19,3 +18,5 @@ treasurer.register_treasure("shooter:grenade",0.08,2,1)
1918
treasurer.register_treasure("shooter:machine_gun",0.02,2,1)
2019
treasurer.register_treasure("shooter:ammo",0.3,2,{1,10})
2120
treasurer.register_treasure("shooter:arrow_white",0.5,2,{2,18})
21+
22+
treasurer.register_treasure("medkit:medkit",0.5,4,{2,5})

mods/default/aliases.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ minetest.register_alias("cobble", "default:cobble")
4040
minetest.register_alias("mossycobble", "default:mossycobble")
4141
minetest.register_alias("steelblock", "default:steelblock")
4242
minetest.register_alias("sapling", "default:sapling")
43-
minetest.register_alias("apple", "default:apple")
4443

4544
minetest.register_alias("WPick", "default:pick_wood")
4645
minetest.register_alias("STPick", "default:pick_stone")

mods/default/crafting.lua

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -878,12 +878,6 @@ minetest.register_craft({
878878
burntime = 30,
879879
})
880880

881-
minetest.register_craft({
882-
type = "fuel",
883-
recipe = "default:apple",
884-
burntime = 3,
885-
})
886-
887881
minetest.register_craft({
888882
type = "fuel",
889883
recipe = "default:coal_lump",

mods/default/mapgen.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ minetest.register_alias("mapgen_sandstone", "default:sandstone")
2222

2323
minetest.register_alias("mapgen_tree", "default:tree")
2424
minetest.register_alias("mapgen_leaves", "default:leaves")
25-
minetest.register_alias("mapgen_apple", "default:apple")
2625
minetest.register_alias("mapgen_jungletree", "default:jungletree")
2726
minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves")
2827
minetest.register_alias("mapgen_junglegrass", "air")

mods/default/nodes.lua

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ default:tree
7373
default:wood
7474
default:leaves
7575
default:sapling
76-
default:apple
7776
7877
default:jungletree
7978
default:junglewood
@@ -565,32 +564,6 @@ minetest.register_node("default:leaves", {
565564
after_place_node = default.after_place_leaves,
566565
})
567566

568-
minetest.register_node("default:apple", {
569-
description = "Apple",
570-
drawtype = "plantlike",
571-
tiles = {"default_apple.png"},
572-
inventory_image = "default_apple.png",
573-
stack_max = 30,
574-
paramtype = "light",
575-
sunlight_propagates = true,
576-
walkable = false,
577-
is_ground_content = false,
578-
selection_box = {
579-
type = "fixed",
580-
fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16}
581-
},
582-
groups = {fleshy = 3, dig_immediate = 3, flammable = 2,
583-
leafdecay = 3, leafdecay_drop = 1},
584-
on_use = minetest.item_eat(2),
585-
sounds = default.node_sound_leaves_defaults(),
586-
587-
after_place_node = function(pos, placer, itemstack)
588-
if placer:is_player() then
589-
minetest.set_node(pos, {name = "default:apple", param2 = 1})
590-
end
591-
end,
592-
})
593-
594567

595568
minetest.register_node("default:jungletree", {
596569
description = "Jungle Tree",
@@ -1256,7 +1229,7 @@ minetest.register_node("default:meselamp", {
12561229
if minetest.get_mapgen_setting("mg_name") == "v6" then
12571230
default.register_leafdecay({
12581231
trunks = {"default:tree"},
1259-
leaves = {"default:apple", "default:leaves"},
1232+
leaves = {"default:leaves"},
12601233
radius = 2,
12611234
})
12621235

@@ -1274,7 +1247,7 @@ if minetest.get_mapgen_setting("mg_name") == "v6" then
12741247
else
12751248
default.register_leafdecay({
12761249
trunks = {"default:tree"},
1277-
leaves = {"default:apple", "default:leaves"},
1250+
leaves = {"default:leaves"},
12781251
radius = 3,
12791252
})
12801253

-251 Bytes
Binary file not shown.

mods/medkit/init.lua

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
-- Table of tables indexed by player names, each having two fields:
2+
-- HP at time of left-click + max_regen,
3+
-- ID of "healing effect" HUD element
4+
local players = {}
5+
local max_regen = 6
6+
7+
-- Called when player uses a medkit
8+
-- Aborts if player is already healing
9+
function on_use(stack, user)
10+
if not user then
11+
return
12+
end
13+
local name = user:get_player_name()
14+
15+
if players[name] or user:get_hp() == 20 then
16+
return nil
17+
end
18+
19+
players[name] = {}
20+
players[name].hp = user:get_hp() + max_regen
21+
22+
-- Add effects
23+
players[name].hud = user:hud_add({
24+
hud_elem_type = "image",
25+
position = {x = 0.5, y = 0.5},
26+
scale = {x = -100, y = -100},
27+
text = "medkit_hud.png"
28+
})
29+
user:set_properties({glow = 5})
30+
user:set_physics_override({speed = 0.5})
31+
32+
minetest.after(0.5, update_hp, user)
33+
34+
stack:take_item()
35+
return stack
36+
end
37+
38+
-- Called when player drops a stack of medkits
39+
-- Healing is considered to be interrupted
40+
function on_drop(stack, dropper)
41+
local name = dropper:get_player_name()
42+
local inv = dropper:get_inventory()
43+
44+
local drop = minetest.item_drop(stack, dropper, dropper:get_pos())
45+
inv:remove_item("main", stack)
46+
47+
-- If healing and no more medkits in inv after drop, stop healing
48+
if players[name] and
49+
not inv:contains_item("main", ItemStack("medkit:medkit")) then
50+
stop_healing(dropper, true)
51+
end
52+
53+
-- Return original stack as item has already been removed from inv
54+
return stack
55+
end
56+
57+
-- Recursively called after left-click every 0.5s for a
58+
-- total regen of max_regen, limited by player's max hp (20)
59+
function update_hp(player)
60+
local name = player:get_player_name()
61+
local hp = player:get_hp()
62+
63+
if not players[name] then
64+
return
65+
end
66+
67+
player:set_hp(hp + 1)
68+
if hp < players[name].hp and hp < 20 then
69+
minetest.after(0.5, update_hp, player)
70+
else
71+
stop_healing(player)
72+
end
73+
end
74+
75+
-- Called after regen is complete. Remove additional effects
76+
-- If interrupted == true, revert to original HP and give back one medkit.
77+
function stop_healing(player, interrupted)
78+
local name = player:get_player_name()
79+
80+
if interrupted then
81+
minetest.chat_send_player(name, minetest.colorize("#FF4444",
82+
"Your healing was interrupted!"))
83+
player:set_hp(players[name].hp - max_regen)
84+
player:get_inventory():add_item("main", ItemStack("medkit:medkit 1"))
85+
end
86+
87+
player:set_properties({glow = 0})
88+
player:hud_remove(players[name].hud)
89+
player:set_physics_override({speed = 1})
90+
players[name] = nil
91+
end
92+
93+
minetest.register_craftitem("medkit:medkit", {
94+
description = "Medkit",
95+
inventory_image = "medkit_medkit.png",
96+
wield_image = "medkit_medkit.png",--^[transform:",
97+
stack_max = 5,
98+
99+
on_use = on_use,
100+
on_drop = on_drop
101+
})
102+
103+
-- Stop regen and revert back to original state if healing interrupted
104+
-- i.e. if player punches or is punched
105+
minetest.register_on_punchplayer(function(player, hitter)
106+
local pname = player:get_player_name()
107+
local hname = hitter:get_player_name()
108+
109+
if not player or not hitter then
110+
return
111+
end
112+
if players[pname] then
113+
stop_healing(player, true)
114+
end
115+
if players[hname] then
116+
stop_healing(hitter, true)
117+
end
118+
end)
1.17 KB
Loading
16.3 KB
Loading

0 commit comments

Comments
 (0)