I think sabotage is working properly now.
parent
d09b994dab
commit
6d7413e162
|
@ -116,9 +116,9 @@ function doors.door_toggle(pos, node, clicker, close)
|
|||
if not minetest.is_protected(pos, player_name) and minetest.check_player_privs(player_name, { creative = true }) then
|
||||
else
|
||||
local map_id = lobby.game[player_name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 0--hmmm
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local level = meta:get_int('level') or 0
|
||||
if level > sabotage_level then
|
||||
if level <= sabotage_level then
|
||||
if lock_status == 1 and (minetest.is_protected(pos, player_name) or not minetest.check_player_privs(player_name, { creative = true })) then
|
||||
return
|
||||
elseif lock_status == 2 then
|
||||
|
@ -376,9 +376,9 @@ function doors.trapdoor_toggle(pos, node, clicker, close)
|
|||
if not minetest.is_protected(pos, player_name) and minetest.check_player_privs(player_name, { creative = true }) then
|
||||
else
|
||||
local map_id = lobby.game[player_name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 0--hmmm
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local level = meta:get_int('level') or 0
|
||||
if level > sabotage_level then
|
||||
if level <= sabotage_level then
|
||||
if lock_status == 1 and (minetest.is_protected(pos, player_name) or not minetest.check_player_privs(player_name, { creative = true })) then
|
||||
return
|
||||
elseif lock_status == 2 then
|
||||
|
|
|
@ -318,7 +318,7 @@ minetest.register_node('lobby:button_1', {
|
|||
lobby.votes[map_id] = 0
|
||||
lobby.corpses[map_id] = {}
|
||||
lobby.sabotage[map_id] = false
|
||||
lobby.sabotage_level[map_id] = 0
|
||||
lobby.sabotage_level[map_id] = 5
|
||||
for i=1,player_count do
|
||||
minetest.chat_send_player(map_players[i], 'Hold tight, loading the level.')
|
||||
local player = minetest.get_player_by_name(map_players[i])
|
||||
|
@ -376,9 +376,9 @@ minetest.register_node('lobby:button_1', {
|
|||
})
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local name = player:get_player_name()
|
||||
if formname == 'lobby:button_display' then
|
||||
if fields.stats then
|
||||
local name = player:get_player_name()
|
||||
local map_id = lobby.stat[name]
|
||||
minetest.show_formspec(name, 'lobby:stats', lobby.retrieve_stats(map_id))
|
||||
end
|
||||
|
|
|
@ -188,6 +188,10 @@ function lobby.team_win(map_id)
|
|||
local player_inv = player:get_inventory()
|
||||
player_inv:set_list('main', {})
|
||||
lobby.game[rname] = 'lobby'
|
||||
local idx = sabotage.hud[rname]
|
||||
for key,value in pairs(idx) do
|
||||
player:hud_remove(value)
|
||||
end
|
||||
elseif lobby.game[rname] == map_id..'_ghost' then
|
||||
minetest.close_formspec(rname, '')
|
||||
local player_attributes = player:get_meta()
|
||||
|
@ -202,6 +206,10 @@ function lobby.team_win(map_id)
|
|||
local player_inv = player:get_inventory()
|
||||
player_inv:set_list('main', {})
|
||||
lobby.game[rname] = 'lobby'
|
||||
local idx = sabotage.hud[rname]
|
||||
for key,value in pairs(idx) do
|
||||
player:hud_remove(value)
|
||||
end
|
||||
end
|
||||
end
|
||||
lobby.map[map_id] = 0
|
||||
|
@ -243,6 +251,10 @@ function lobby.traitor_win(traitor, map_id)
|
|||
local player_inv = player:get_inventory()
|
||||
player_inv:set_list('main', {})
|
||||
lobby.game[rname] = 'lobby'
|
||||
local idx = sabotage.hud[rname]
|
||||
for key,value in pairs(idx) do
|
||||
player:hud_remove(value)
|
||||
end
|
||||
end
|
||||
end
|
||||
lobby.map[map_id] = 0
|
||||
|
|
|
@ -131,7 +131,7 @@ minetest.register_on_leaveplayer(function(player, timed_out)
|
|||
local map_id = lobby.game[name]
|
||||
local player_attributes = player:get_meta()
|
||||
local mode = player_attributes:get_string('mode')
|
||||
if map_id ~= 'lobby' and mode == 'player' then
|
||||
if map_id ~= 'lobby' and (mode == 'player' or mode == 'traitor') then
|
||||
local game_data = lobby.savedata.data[map_id]
|
||||
local map_name = game_data['map_name'] or map_id
|
||||
local traitor = lobby.traitors[map_id]
|
||||
|
|
|
@ -96,7 +96,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
end
|
||||
local time = meta:get_int('timer')
|
||||
sabotage.clear_hud(map_id)
|
||||
lobby.sabotage_level[map_id] = 0
|
||||
lobby.sabotage_level[map_id] = 5
|
||||
lobby.sabotage[map_id] = false
|
||||
if time > 29 then
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
|
|
|
@ -59,10 +59,10 @@ minetest.register_node('tasks:food_crate_apple_active',{
|
|||
on_rightclick = function(pos, node, clicker)
|
||||
local name = clicker:get_player_name()
|
||||
local map_id = lobby.game[name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 1
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local meta = minetest.get_meta(pos)
|
||||
local level = meta:get_int('level') or 0
|
||||
if level < sabotage_level then
|
||||
if level <= sabotage_level then
|
||||
tasks.player_config[name] = pos
|
||||
minetest.show_formspec(name, 'tasks:food_crate_apple', formspec_apple_bad())
|
||||
else
|
||||
|
|
|
@ -33,7 +33,7 @@ function tasks.add_xp(pos, node, puncher, swap_to) -- This function adds xp and
|
|||
lobby.xp[map_id] = lobby.xp[map_id] + earned_xp
|
||||
local needed_xp = game_data['xp'] - lobby.xp[map_id]
|
||||
minetest.chat_send_player(name, 'You just earned '..earned_xp..' XP for your team.\nYou need '..needed_xp..' more XP to defeat the imposter.')
|
||||
minetest.log('action', map_id..': Gained '..xp..' still '..needed_xp..' required to complete level.')
|
||||
minetest.log('action', map_id..': Gained '..earned_xp..' xp, still '..needed_xp..' xp required to complete level.')
|
||||
tasks.check_xp(map_id, needed_xp)
|
||||
else
|
||||
lobby.give_xp(puncher, 1)
|
||||
|
@ -64,7 +64,7 @@ function tasks.only_add_xp(xp, name) -- This function only adds XP, you are resp
|
|||
lobby.xp[map_id] = lobby.xp[map_id] + xp
|
||||
local needed_xp = game_data['xp'] - lobby.xp[map_id]
|
||||
minetest.chat_send_player(name, 'You just earned '..xp..' XP for your team.\nYou need '..needed_xp..' more XP to defeat the imposter.')
|
||||
minetest.log('action', map_id..': Gained '..xp..' still '..needed_xp..' required to complete level.')
|
||||
minetest.log('action', map_id..': Gained '..xp..' xp, still '..needed_xp..' xp required to complete level.')
|
||||
tasks.check_xp(map_id, needed_xp)
|
||||
else
|
||||
lobby.give_xp(player, 1)
|
||||
|
@ -78,23 +78,31 @@ function tasks.only_add_xp(xp, name) -- This function only adds XP, you are resp
|
|||
end
|
||||
|
||||
function tasks.right_click_on(pos, node, clicker, formspec)
|
||||
local name = clicker:get_player_name()
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local min = meta:get_int('time_min') or 30
|
||||
local max = meta:get_int('time_max') or 60
|
||||
local random_number = math.random(min,max)
|
||||
timer:start(random_number)
|
||||
minetest.show_formspec(clicker:get_player_name(), 'tasks:good', formspec)
|
||||
meta:set_string('formspec', '')--Can be removed at a future point, this just clears formspecs from individual nodes as they are now handled differently.
|
||||
local map_id = lobby.game[name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local level = meta:get_int('level') or 0
|
||||
if level <= sabotage_level then
|
||||
minetest.show_formspec(name, 'tasks:good', formspec)
|
||||
meta:set_string('formspec', '')--Can be removed at a future point, this just clears formspecs from individual nodes as they are now handled differently.
|
||||
else
|
||||
minetest.chat_send_player(name, 'level is currently sabotaged, and you can\'t do this now.')
|
||||
end
|
||||
end
|
||||
|
||||
function tasks.right_click_off(pos, node, clicker, formspec)
|
||||
local name = clicker:get_player_name()
|
||||
local map_id = lobby.game[name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 1
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local meta = minetest.get_meta(pos)
|
||||
local level = meta:get_int('level') or 0
|
||||
if level < sabotage_level then
|
||||
if level <= sabotage_level then
|
||||
tasks.player_config[name] = pos
|
||||
minetest.show_formspec(name, 'tasks:part_req_form', formspec)
|
||||
else
|
||||
|
|
|
@ -40,11 +40,13 @@ minetest.register_node('tasks:microscope',{
|
|||
on_rightclick = function(pos, node, clicker)
|
||||
local name = clicker:get_player_name()
|
||||
local map_id = lobby.game[name]
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 1
|
||||
local sabotage_level = lobby.sabotage_level[map_id] or 5
|
||||
local meta = minetest.get_meta(pos)
|
||||
local count = meta:get_int('count') or 0
|
||||
local level = meta:get_int('level') or 0
|
||||
if level < sabotage_level then
|
||||
print ('sabotage level is '..sabotage_level)
|
||||
print ('node level is '..level)
|
||||
if level <= sabotage_level then --helps to check if the level is actually sabotaged
|
||||
tasks.player_config[name] = pos
|
||||
if count == 0 then
|
||||
tasks.right_click_on(pos, node, clicker, formspec_idle)
|
||||
|
@ -52,7 +54,6 @@ minetest.register_node('tasks:microscope',{
|
|||
local name = clicker:get_player_name()
|
||||
local ran = math.random(1,9)
|
||||
meta:set_int('answer', ran)
|
||||
tasks.player_config[name] = pos
|
||||
minetest.show_formspec(name, 'tasks:microscope', microscope_identify(pos, ran, count))
|
||||
end
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue