mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-11-13 02:28:00 +01:00
added missing effects for variable states
This commit is contained in:
parent
bea29aed26
commit
7a0c442508
@ -79,13 +79,19 @@ local values_block = {"", "place", "dig", "punch", "right-click"}
|
|||||||
-- comparison operators for variables
|
-- comparison operators for variables
|
||||||
local check_operator = {
|
local check_operator = {
|
||||||
"- please select -", -- 1
|
"- please select -", -- 1
|
||||||
"set to value:", -- 2
|
"new value:", -- 2
|
||||||
"is no longer needed (unset)", -- 3
|
"discard/unset/forget", -- 3
|
||||||
"set to current time", -- 4
|
"current time", -- 4
|
||||||
|
"quest step completed:", -- 5
|
||||||
|
minetest.formspec_escape("max(current, new_value)"), -- 6
|
||||||
|
minetest.formspec_escape("min(current, new_value)"), -- 7
|
||||||
|
"increment by:", -- 8
|
||||||
|
"decrement by:", -- 9
|
||||||
}
|
}
|
||||||
|
|
||||||
-- how to store these as r_value (the actual variable is stored in r_variable, and the value in r_new_value):
|
-- how to store these as r_value (the actual variable is stored in r_variable, and the value in r_new_value):
|
||||||
local values_operator = {"", "set_to", "unset", "set_to_current_time"}
|
local values_operator = {"", "set_to", "unset", "set_to_current_time",
|
||||||
|
"quest_step", "maximum", "minimum", "increment", "decrement"}
|
||||||
|
|
||||||
|
|
||||||
-- get the list of variables the player has *write* access to
|
-- get the list of variables the player has *write* access to
|
||||||
@ -152,6 +158,21 @@ yl_speak_up.show_effect = function(r, pname)
|
|||||||
return "discard "..var_name.." (unset)"
|
return "discard "..var_name.." (unset)"
|
||||||
elseif(r.r_operator == "set_to_current_time") then
|
elseif(r.r_operator == "set_to_current_time") then
|
||||||
return "set "..var_name.." to the current time"
|
return "set "..var_name.." to the current time"
|
||||||
|
elseif(r.r_operator == "quest_step") then
|
||||||
|
return "store that the player has completed quest step \""..
|
||||||
|
tostring(r.r_var_cmp_value).."\""
|
||||||
|
elseif(r.r_operator == "maximum") then
|
||||||
|
return "set "..var_name.." to value \""..
|
||||||
|
tostring(r.r_var_cmp_value).."\" if its current value is larger than that"
|
||||||
|
elseif(r.r_operator == "minimum") then
|
||||||
|
return "set "..var_name.." to value \""..
|
||||||
|
tostring(r.r_var_cmp_value).."\" if its current value is lower than that"
|
||||||
|
elseif(r.r_operator == "increment") then
|
||||||
|
return "increment the value of "..var_name.." by \""..
|
||||||
|
tostring(r.r_var_cmp_value).."\""
|
||||||
|
elseif(r.r_operator == "decrement") then
|
||||||
|
return "decrement the value of "..var_name.." by \""..
|
||||||
|
tostring(r.r_var_cmp_value).."\""
|
||||||
else
|
else
|
||||||
return "ERROR: Wrong operator \""..tostring(r.r_operator).."\" for "..var_name
|
return "ERROR: Wrong operator \""..tostring(r.r_operator).."\" for "..var_name
|
||||||
end
|
end
|
||||||
@ -429,6 +450,23 @@ yl_speak_up.execute_effect = function(player, n_id, o_id, r)
|
|||||||
-- we store the time in seconds - because microseconds would just
|
-- we store the time in seconds - because microseconds would just
|
||||||
-- confuse the users and be too fine grained anyway
|
-- confuse the users and be too fine grained anyway
|
||||||
new_value = math.floor(minetest.get_us_time()/1000000)
|
new_value = math.floor(minetest.get_us_time()/1000000)
|
||||||
|
elseif(r.r_operator and r.r_operator == "quest_step") then
|
||||||
|
-- quest_step and maximum are effectively the same
|
||||||
|
-- TODO: later on, quest steps may be strings
|
||||||
|
local var_val = yl_speak_up.get_quest_variable_value(pname, r.r_variable)
|
||||||
|
new_value = math.max(var_val, r.r_var_cmp_value)
|
||||||
|
elseif(r.r_operator and r.r_operator == "maximum") then
|
||||||
|
local var_val = yl_speak_up.get_quest_variable_value(pname, r.r_variable)
|
||||||
|
new_value = math.max(var_val, r.r_var_cmp_value)
|
||||||
|
elseif(r.r_operator and r.r_operator == "minimum") then
|
||||||
|
local var_val = yl_speak_up.get_quest_variable_value(pname, r.r_variable)
|
||||||
|
new_value = math.min(var_val, r.r_var_cmp_value)
|
||||||
|
elseif(r.r_operator and r.r_operator == "increment") then
|
||||||
|
local var_val = yl_speak_up.get_quest_variable_value(pname, r.r_variable)
|
||||||
|
new_value = var_val + r.r_var_cmp_value
|
||||||
|
elseif(r.r_operator and r.r_operator == "decrement") then
|
||||||
|
local var_val = yl_speak_up.get_quest_variable_value(pname, r.r_variable)
|
||||||
|
new_value = var_val - r.r_var_cmp_value
|
||||||
else
|
else
|
||||||
yl_speak_up.debug_msg(player, n_id, o_id, tostring(r.r_id).." "..
|
yl_speak_up.debug_msg(player, n_id, o_id, tostring(r.r_id).." "..
|
||||||
"state: Unsupported type: "..tostring(r.r_value)..".")
|
"state: Unsupported type: "..tostring(r.r_value)..".")
|
||||||
@ -728,7 +766,7 @@ yl_speak_up.get_fs_edit_effects = function(player, table_click_result)
|
|||||||
yl_speak_up.get_sorted_player_var_list_write_access,
|
yl_speak_up.get_sorted_player_var_list_write_access,
|
||||||
yl_speak_up.show_effect,
|
yl_speak_up.show_effect,
|
||||||
"table_of_elements",
|
"table_of_elements",
|
||||||
"Change the value of the following variable:", "What to do:", "New value:",
|
"Change the value of the following variable:", "Set variable to:", "New value:",
|
||||||
"The NPC shall do something to the block at the following position:"
|
"The NPC shall do something to the block at the following position:"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1142,7 +1142,7 @@ yl_speak_up.get_fs_edit_option_related = function(player, table_click_result,
|
|||||||
|
|
||||||
local show_var_usage = ""
|
local show_var_usage = ""
|
||||||
if(x_id
|
if(x_id
|
||||||
and elements
|
|
||||||
and elements[ x_id ]
|
and elements[ x_id ]
|
||||||
and elements[ x_id ][ id_prefix.."type"]
|
and elements[ x_id ][ id_prefix.."type"]
|
||||||
and elements[ x_id ][ id_prefix.."type"] == "state"
|
and elements[ x_id ][ id_prefix.."type"] == "state"
|
||||||
@ -1382,7 +1382,7 @@ yl_speak_up.get_fs_edit_option_p_and_e_state = function(
|
|||||||
data.operator = 1
|
data.operator = 1
|
||||||
save_button = ""
|
save_button = ""
|
||||||
end
|
end
|
||||||
local field_for_value = "field[11.2,4.8;7.0,0.6;var_cmp_value;;"..
|
local field_for_value = "field[11.7,4.8;7.5,0.6;var_cmp_value;;"..
|
||||||
minetest.formspec_escape(data.var_cmp_value or "- enter value -").."]"
|
minetest.formspec_escape(data.var_cmp_value or "- enter value -").."]"
|
||||||
-- do not show value input field for unary operators
|
-- do not show value input field for unary operators
|
||||||
-- (unary operators are diffrent for prerequirements and effects)
|
-- (unary operators are diffrent for prerequirements and effects)
|
||||||
@ -1390,7 +1390,7 @@ yl_speak_up.get_fs_edit_option_p_and_e_state = function(
|
|||||||
or (id_prefix == "p_" and (data.operator == 1 or (data.operator>=8 and data.operator<11)))
|
or (id_prefix == "p_" and (data.operator == 1 or (data.operator>=8 and data.operator<11)))
|
||||||
-- "unset", "set_to_current_time"
|
-- "unset", "set_to_current_time"
|
||||||
or (id_prefix == "r_" and (data.operator == 3 or data.operator == 4))) then
|
or (id_prefix == "r_" and (data.operator == 3 or data.operator == 4))) then
|
||||||
field_for_value = "label[11.2,5.1;- not used for this operator -]"
|
field_for_value = "label[11.7,5.1;- not used for this operator -]"
|
||||||
end
|
end
|
||||||
-- the list of available variables needs to be extended with the ones
|
-- the list of available variables needs to be extended with the ones
|
||||||
-- the player has read access to, and the order has to be constant
|
-- the player has read access to, and the order has to be constant
|
||||||
@ -1402,10 +1402,10 @@ yl_speak_up.get_fs_edit_option_p_and_e_state = function(
|
|||||||
"- please select -"..var_list_stripped..";"..
|
"- please select -"..var_list_stripped..";"..
|
||||||
tostring(data.variable + 1)..";]"..
|
tostring(data.variable + 1)..";]"..
|
||||||
"label[7.0,4.3;"..text_select_operator.."]"..
|
"label[7.0,4.3;"..text_select_operator.."]"..
|
||||||
"dropdown[7.0,4.8;4.0,0.6;select_operator;"..
|
"dropdown[7.0,4.8;4.5,0.6;select_operator;"..
|
||||||
table.concat(check_operator, ",")..";"..
|
table.concat(check_operator, ",")..";"..
|
||||||
tostring(data.operator)..";]"..
|
tostring(data.operator)..";]"..
|
||||||
"label[11.2,4.3;"..text_select_value.."]"..
|
"label[11.7,4.3;"..text_select_value.."]"..
|
||||||
field_for_value..
|
field_for_value..
|
||||||
"button[0.2,6.0;4.0,0.6;manage_variables;Manage variables]"..
|
"button[0.2,6.0;4.0,0.6;manage_variables;Manage variables]"..
|
||||||
"button[4.7,6.0;6.5,0.6;show_var_usage_edit_element;Show where this variable is used]"..
|
"button[4.7,6.0;6.5,0.6;show_var_usage_edit_element;Show where this variable is used]"..
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user