mirror of
https://github.com/Refactorio/RedMew.git
synced 2025-03-03 14:53:01 +02:00
Merge pull request #1146 from Refactorio/entities_built_fix
Added player_built and player_crafted to the crash site awards ceremony
This commit is contained in:
commit
c26148b1e7
@ -2,6 +2,7 @@ local Global = require 'utils.global'
|
||||
local Event = require 'utils.event'
|
||||
local ScoreTracker = require 'utils.score_tracker'
|
||||
require 'utils.table'
|
||||
|
||||
local pairs = pairs
|
||||
local sqrt = math.sqrt
|
||||
local change_for_global = ScoreTracker.change_for_global
|
||||
@ -26,6 +27,7 @@ local player_worms_killed_name = 'player-worms-killed'
|
||||
local player_spawners_killed_name = 'player-spawners-killed'
|
||||
local player_total_kills_name = 'player-total-kills'
|
||||
local player_turrets_killed_name = 'player-turrets-killed'
|
||||
local player_entities_built_name = 'player_entities_built'
|
||||
|
||||
ScoreTracker.register(rocks_smashed_name, {'player_stats.rocks_smashed'}, '[img=entity.rock-huge]')
|
||||
ScoreTracker.register(trees_cut_down_name, {'player_stats.trees_cut_down'}, '[img=entity.tree-02]')
|
||||
@ -46,6 +48,7 @@ ScoreTracker.register(player_worms_killed_name, {'player_stats.player_worms_kill
|
||||
ScoreTracker.register(player_spawners_killed_name, {'player_stats.player_spawners_killed'})
|
||||
ScoreTracker.register(player_turrets_killed_name, {'player_stats.player_turrets_killed'})
|
||||
ScoreTracker.register(player_total_kills_name, {'player_stats.player_total_kills'})
|
||||
ScoreTracker.register(player_entities_built_name, {'player_stats.player_entities_built'})
|
||||
|
||||
local train_kill_causes = {
|
||||
['locomotive'] = true,
|
||||
@ -166,12 +169,28 @@ local function player_console_chat(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function player_built_entity()
|
||||
change_for_global(built_by_players_name, 1)
|
||||
local function player_built_entity(event)
|
||||
local player_index = event.player_index
|
||||
if event.created_entity.is_registered_for_construction() == false then -- When is_registered_for_construction() is true we only register the entity as built once a robot builds it
|
||||
change_for_global(built_by_players_name, 1)
|
||||
change_for_player(player_index, player_entities_built_name, 1)
|
||||
end
|
||||
end
|
||||
|
||||
local function robot_built_entity()
|
||||
local function robot_built_entity(event)
|
||||
change_for_global(built_by_robots_name, 1)
|
||||
local robot = event.robot
|
||||
|
||||
if not robot.valid then
|
||||
return
|
||||
end
|
||||
|
||||
-- When item gets built, add to the total entities built for the player whose robot built the entity NOT for the player who placed the ghost
|
||||
local robot_owner = robot.logistic_network.cells[1].owner
|
||||
if robot_owner.player then -- nil if the robot owner is a roboport
|
||||
change_for_player(robot_owner.player.index, player_entities_built_name, 1)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local function get_player_index_from_cause(cause, event)
|
||||
@ -312,7 +331,8 @@ local Public = {
|
||||
player_worms_killed_name = player_worms_killed_name,
|
||||
player_spawners_killed_name = player_spawners_killed_name,
|
||||
player_total_kills_name = player_total_kills_name,
|
||||
player_turrets_killed_name = player_turrets_killed_name
|
||||
player_turrets_killed_name = player_turrets_killed_name,
|
||||
player_entities_built_name = player_entities_built_name
|
||||
}
|
||||
|
||||
-- Returns a dictionary of cause_name -> count
|
||||
|
@ -17,8 +17,12 @@ local ScoreTracker = require 'utils.score_tracker'
|
||||
local PlayerStats = require 'features.player_stats'
|
||||
local set_timeout_in_ticks = Task.set_timeout_in_ticks
|
||||
|
||||
-- Use these settings for live
|
||||
local map_promotion_channel = Discord.channel_names.map_promotion
|
||||
local crash_site_role_mention = Discord.role_mentions.crash_site
|
||||
-- Use these settings for testing
|
||||
--local map_promotion_channel = Discord.channel_names.bot_playground
|
||||
--local crash_site_role_mention = Discord.role_mentions.test
|
||||
|
||||
local Public = {}
|
||||
|
||||
@ -27,6 +31,7 @@ function Public.control(config)
|
||||
local server_player = {name = '<server>', print = print}
|
||||
local global_data = {restarting = nil}
|
||||
local airstrike_data = {radius_level = 1, count_level = 1}
|
||||
local default_name = config.scenario_name or 'crashsite'
|
||||
|
||||
Global.register({global_data = global_data, airstrike_data = airstrike_data}, function(tbl)
|
||||
global_data = tbl.global_data
|
||||
@ -76,6 +81,14 @@ function Public.control(config)
|
||||
return entity_count
|
||||
end
|
||||
|
||||
-- Scenario display name for printing new scenario to discord
|
||||
local scenario_display_name = {
|
||||
['crashsite'] = 'Crash Site',
|
||||
['crashsite-world'] = 'Crash Site World Map',
|
||||
['crashsite-desert'] = 'Crash Site Desert',
|
||||
['crashsite-arrakis'] = 'Crash Site Arrakis'
|
||||
}
|
||||
|
||||
local callback
|
||||
callback = Token.register(function(data)
|
||||
if not global_data.restarting then
|
||||
@ -83,8 +96,9 @@ function Public.control(config)
|
||||
end
|
||||
|
||||
local state = data.state
|
||||
local next_scenario = data.scenario_name
|
||||
if state == 0 then
|
||||
Server.start_scenario(data.scenario_name)
|
||||
Server.start_scenario(next_scenario)
|
||||
double_print('restarting')
|
||||
global_data.restarting = nil
|
||||
return
|
||||
@ -107,7 +121,8 @@ function Public.control(config)
|
||||
distance_walked = ScoreTracker.get_for_player(p.index,PlayerStats.player_distance_walked_name),
|
||||
player_deaths = ScoreTracker.get_for_player(p.index, PlayerStats.player_deaths_name),
|
||||
coins_earned = ScoreTracker.get_for_player(p.index, PlayerStats.coins_earned_name),
|
||||
entities_built = ScoreTracker.get_for_player(p.index,PlayerStats.built_by_players_name),
|
||||
entities_built = ScoreTracker.get_for_player(p.index,PlayerStats.player_entities_built_name),
|
||||
entities_crafted = ScoreTracker.get_for_player(p.index,PlayerStats.player_items_crafted_name),
|
||||
time_played = p.online_time
|
||||
}
|
||||
end
|
||||
@ -120,6 +135,7 @@ function Public.control(config)
|
||||
enemy_entities = count_enemy_entities(),
|
||||
biters_killed = ScoreTracker.get_for_global(PlayerStats.aliens_killed_name),
|
||||
total_players = #game.players,
|
||||
entities_built = ScoreTracker.get_for_global(PlayerStats.built_by_players_name),
|
||||
player_data = player_data
|
||||
}
|
||||
|
||||
@ -131,6 +147,7 @@ function Public.control(config)
|
||||
['player_deaths'] = {value = 0, player = ""},
|
||||
['time_played'] = {value = 0, player = ""},
|
||||
['entities_built'] = {value = 0, player = ""},
|
||||
['entities_crafted'] = {value = 0, player = ""},
|
||||
['distance_walked'] = {value = 0, player = ""},
|
||||
['coins_earned'] = {value = 0, player = ""}
|
||||
}
|
||||
@ -160,11 +177,14 @@ function Public.control(config)
|
||||
awards.time_played.value = v.time_played
|
||||
awards.time_played.player = v.name
|
||||
end
|
||||
-- This stat not working
|
||||
--if v.entities_built > awards.entities_built.value then
|
||||
-- awards.entities_built.value = v.entities_built
|
||||
-- awards.entities_built.player = v.name
|
||||
--end
|
||||
if v.entities_built > awards.entities_built.value then
|
||||
awards.entities_built.value = v.entities_built
|
||||
awards.entities_built.player = v.name
|
||||
end
|
||||
if v.entities_crafted > awards.entities_crafted.value then
|
||||
awards.entities_crafted.value = v.entities_crafted
|
||||
awards.entities_crafted.player = v.name
|
||||
end
|
||||
if v.distance_walked > awards.distance_walked.value then
|
||||
awards.distance_walked.value = v.distance_walked
|
||||
awards.distance_walked.player = v.name
|
||||
@ -182,13 +202,16 @@ function Public.control(config)
|
||||
.. 'Map time: '..time_string..'\\n'
|
||||
.. 'Total kills: '..statistics.biters_killed..'\\n'
|
||||
.. 'Biters remaining on map: '..statistics.enemy_entities..'\\n'
|
||||
.. 'Players: '..statistics.total_players..'\\n\\n'
|
||||
.. 'Players: '..statistics.total_players..'\\n'
|
||||
.. 'Total entities built: '..statistics.entities_built..'\\n\\n'
|
||||
.. 'Awards:\\n'
|
||||
.. 'Most kills overall: '..awards.total_kills.player..' ('..awards.total_kills.value..')\\n'
|
||||
.. 'Most biters/spitters killed: '..awards.units_killed.player..' ('..awards.units_killed.value..')\\n'
|
||||
.. 'Most spawners killed: '..awards.spawners_killed.player..' ('..awards.spawners_killed.value..')\\n'
|
||||
.. 'Most worms killed: '..awards.worms_killed.player..' ('..awards.worms_killed.value..')\\n'
|
||||
.. 'Most deaths: '..awards.player_deaths.player..' ('..awards.player_deaths.value..')\\n'
|
||||
.. 'Most items crafted: '..awards.entities_crafted.player..' ('..awards.entities_crafted.value..')\\n'
|
||||
.. 'Most entities built: '..awards.entities_built.player..' ('..awards.entities_built.value..')\\n'
|
||||
.. 'Most time played: '..awards.time_played.player..' ('..Core.format_time(awards.time_played.value)..')\\n'
|
||||
.. 'Furthest walked: '..awards.distance_walked.player..' ('..math.floor(awards.distance_walked.value)..')\\n'
|
||||
.. 'Most coins earned: '..awards.coins_earned.player..' ('..awards.coins_earned.value..')\\n'
|
||||
@ -202,7 +225,7 @@ function Public.control(config)
|
||||
.. 'Players: '..statistics.total_players..'\\n'
|
||||
)
|
||||
end
|
||||
Server.to_discord_named_raw(map_promotion_channel, crash_site_role_mention .. ' **Crash Site has just restarted!!**')
|
||||
Server.to_discord_named_raw(map_promotion_channel, crash_site_role_mention .. ' **'..scenario_display_name[default_name]..' has just restarted!!**')
|
||||
|
||||
Server.set_data('crash_site_data', tostring(end_epoch), statistics) -- Store the table, with end_epoch as the key
|
||||
Popup.all('\nServer restarting!\nInitiated by ' .. data.name .. '\n')
|
||||
@ -541,7 +564,6 @@ function Public.control(config)
|
||||
allowed_by_server = true
|
||||
}, abort)
|
||||
|
||||
local default_name = config.scenario_name or 'crashsite'
|
||||
Command.add('crash-site-restart', {
|
||||
description = {'command_description.crash_site_restart'},
|
||||
arguments = {'scenario_name'},
|
||||
|
Loading…
x
Reference in New Issue
Block a user