mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-12-23 00:19:32 +01:00
Migrated beacons to the new API
Also added more effects to them
This commit is contained in:
parent
e36b7f413b
commit
55ce6f0f4b
1 changed files with 47 additions and 15 deletions
|
@ -4,8 +4,12 @@ there are strings in meta, which are being used to see which effect will be give
|
|||
Valid strings:
|
||||
swiftness
|
||||
leaping
|
||||
strenght
|
||||
strength
|
||||
regeneration
|
||||
haste
|
||||
resistance
|
||||
slow_falling
|
||||
absorption
|
||||
]]--
|
||||
|
||||
mcl_beacons = {
|
||||
|
@ -122,10 +126,17 @@ local formspec_string=
|
|||
"image[1,4.5;1,1;custom_beacom_symbol_2.png]"..
|
||||
"image[1,6;1,1;custom_beacom_symbol_1.png]"..
|
||||
|
||||
"image_button[5.2,1.5;1,1;mcl_potions_effect_swift.png;swiftness;]"..
|
||||
"image_button[5.2,1.5;1,1;mcl_potions_effect_swiftness.png;swiftness;]"..
|
||||
"image_button[8.5,1.5;1,1;mcl_potions_effect_haste.png;haste;]"..
|
||||
|
||||
"image_button[5.2,3;1,1;mcl_potions_effect_leaping.png;leaping;]"..
|
||||
"image_button[5.2,4.5;1,1;mcl_potions_effect_strong.png;strenght;]"..
|
||||
"image_button[5.2,6;1,1;mcl_potions_effect_regenerating.png;regeneration;]"..
|
||||
"image_button[8.5,3;1,1;mcl_potions_effect_resistance.png;resistance;]"..
|
||||
|
||||
"image_button[5.2,4.5;1,1;mcl_potions_effect_strength.png;strength;]"..
|
||||
"image_button[8.5,4.5;1,1;mcl_potions_effect_absorption.png;absorption;]"..
|
||||
|
||||
"image_button[5.2,6;1,1;mcl_potions_effect_regeneration.png;regeneration;]"..
|
||||
"image_button[8.5,6;1,1;mcl_potions_effect_slow_falling.png;slow_falling;]"..
|
||||
|
||||
"item_image[1,7;1,1;mcl_core:diamond]"..
|
||||
"item_image[2.2,7;1,1;mcl_core:emerald]"..
|
||||
|
@ -197,15 +208,7 @@ end
|
|||
local function effect_player(effect,pos,power_level, effect_level,player)
|
||||
local distance = vector.distance(player:get_pos(), pos)
|
||||
if distance > (power_level+1)*10 then return end
|
||||
if effect == "swiftness" then
|
||||
mcl_potions.swiftness_func(player,effect_level,16)
|
||||
elseif effect == "leaping" then
|
||||
mcl_potions.leaping_func(player, effect_level, 16)
|
||||
elseif effect == "strenght" then
|
||||
mcl_potions.strength_func(player, effect_level, 16)
|
||||
elseif effect == "regeneration" then
|
||||
mcl_potions.regeneration_func(player, effect_level, 16)
|
||||
end
|
||||
mcl_potions.give_effect_by_level(effect, player, effect_level, 16)
|
||||
end
|
||||
|
||||
local function apply_effects_to_all_players(pos)
|
||||
|
@ -254,7 +257,8 @@ minetest.register_node("mcl_beacons:beacon", {
|
|||
remove_beacon_beam(pos)
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght then
|
||||
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght
|
||||
or fields.haste or fields.resistance or fields.absorption or fields.slow_falling then
|
||||
local sender_name = sender:get_player_name()
|
||||
local power_level = beacon_blockcheck(pos)
|
||||
if minetest.is_protected(pos, sender_name) then
|
||||
|
@ -293,6 +297,14 @@ minetest.register_node("mcl_beacons:beacon", {
|
|||
end
|
||||
minetest.get_meta(pos):set_string("effect","swiftness")
|
||||
successful = true
|
||||
elseif fields.haste then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
else
|
||||
minetest.get_meta(pos):set_int("effect_level",1)
|
||||
end
|
||||
minetest.get_meta(pos):set_string("effect","haste")
|
||||
successful = true
|
||||
elseif fields.leaping and power_level >= 2 then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
|
@ -301,18 +313,38 @@ minetest.register_node("mcl_beacons:beacon", {
|
|||
end
|
||||
minetest.get_meta(pos):set_string("effect","leaping")
|
||||
successful = true
|
||||
elseif fields.resistance and power_level >= 2 then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
else
|
||||
minetest.get_meta(pos):set_int("effect_level",1)
|
||||
end
|
||||
minetest.get_meta(pos):set_string("effect","resistance")
|
||||
successful = true
|
||||
elseif fields.strenght and power_level >= 3 then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
else
|
||||
minetest.get_meta(pos):set_int("effect_level",1)
|
||||
end
|
||||
minetest.get_meta(pos):set_string("effect","strenght")
|
||||
minetest.get_meta(pos):set_string("effect","strength")
|
||||
successful = true
|
||||
elseif fields.absorption and power_level >= 3 then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
else
|
||||
minetest.get_meta(pos):set_int("effect_level",1)
|
||||
end
|
||||
minetest.get_meta(pos):set_string("effect","absorption")
|
||||
successful = true
|
||||
elseif fields.regeneration and power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
minetest.get_meta(pos):set_string("effect","regeneration")
|
||||
successful = true
|
||||
elseif fields.slow_falling and power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
minetest.get_meta(pos):set_string("effect","slow_falling")
|
||||
successful = true
|
||||
end
|
||||
if successful then
|
||||
if power_level == 4 then
|
||||
|
|
Loading…
Reference in a new issue