From f1de9ff429d8c713140387024c6f4d899687cdd0 Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Sun, 24 Jun 2018 21:38:22 +0100 Subject: [PATCH] Added ExpGamingCommands.bonus --- modules/ExpGamingCommands/bonus/control.lua | 86 ++++++++++++++++++++ modules/ExpGamingCommands/bonus/softmod.json | 24 ++++++ to convert/Addons/Commands/bonus.lua | 66 --------------- 3 files changed, 110 insertions(+), 66 deletions(-) create mode 100644 modules/ExpGamingCommands/bonus/control.lua create mode 100644 modules/ExpGamingCommands/bonus/softmod.json delete mode 100644 to convert/Addons/Commands/bonus.lua diff --git a/modules/ExpGamingCommands/bonus/control.lua b/modules/ExpGamingCommands/bonus/control.lua new file mode 100644 index 00000000..1b387a1b --- /dev/null +++ b/modules/ExpGamingCommands/bonus/control.lua @@ -0,0 +1,86 @@ +--- A full ranking system for factorio. +-- @module ExpGamingCommands.kill +-- @author Cooldude2606 +-- @license https://github.com/explosivegaming/scenario/blob/master/LICENSE + +-- these are the settings which are changed with scale being as +100% +local settings = { + {key='character_mining_speed_modifier',scale=3}, + {key='character_crafting_speed_modifier',scale=3}, + {key='character_running_speed_modifier',scale=3}, + {key='character_build_distance_bonus',scale=20}, + {key='character_reach_distance_bonus',scale=20}, + {key='character_inventory_slots_bonus',scale=200} +} + +local global = global{} +local Game = require('FactorioStdLib.Game') + +--- Allows a player to set there bonus +-- @command bonus +-- @param bonus the amount of bonus there will get +commands.add_command('bonus', 'Set your player bonus (default is 20, guest has 0)', { + ['bonus'] = {true,'number-range',-1,50} -- -1 < math.floor(bonus) <= 50 +}, function(event,args) + local player = Game.get_player(event) + local bonus = args.bonus + for _,setting in pairs(settings) do player[setting.key] = setting.scale*math.floor(bonus)*0.01 end + global[player.index]=bonus + player_return('Bonus set to: '..math.floor(bonus)..'%') +end) + +script.on_event(defines.events.on_player_respawned,function(event) + local player = Game.get_player(event) + local bonus = global[player.index] + if bonus then + for _,setting in pairs(settings) do player[setting.key] = setting.scale*math.floor(bonus)*0.01 end + end +end) + +-- overided by ExpGamingCore.Ranking if present +script.on_event(defines.events.on_pre_player_died,function(event) + local player = Game.get_player(event) + if player.admin then + player.ticks_to_respawn = 120 + -- manually dispatch death event because it is not fired when ticks_to_respawn is set pre death + Event.dispatch{ + name=defines.events.on_player_died, + tick=event.tick, + player_index=event.player_index, + cause = event.cause + } + end +end) + +return { + on_init= function(self) + if loaded_modules['ExpGamingCore.Ranking'] then + local Ranking = require('ExpGamingCore.Ranking') + -- instant respawn + script.on_event(defines.events.on_pre_player_died,function(event) + local player = Game.get_player(event) + if Ranking.get_rank(player):allowed('bonus-respawn') then + player.ticks_to_respawn = 120 + -- manually dispatch death event because it is not fired when ticks_to_respawn is set pre death + Event.dispatch{ + name=defines.events.on_player_died, + tick=event.tick, + player_index=event.player_index, + cause = event.cause + } + end + end) + -- either clears or adds default when rank changed + script.on_event(defines.events.rank_change,function(event) + local player = Game.get_player(event) + if event.new_rank:allowed('bonus') then + for _,setting in pairs(settings) do player[setting.key] = setting.scale*0.2 end + global[player.index]=20 + else + for _,setting in pairs(settings) do player[setting.key] = 0 end + global[player.index]=nil + end + end) + end + end +} \ No newline at end of file diff --git a/modules/ExpGamingCommands/bonus/softmod.json b/modules/ExpGamingCommands/bonus/softmod.json new file mode 100644 index 00000000..21fa683a --- /dev/null +++ b/modules/ExpGamingCommands/bonus/softmod.json @@ -0,0 +1,24 @@ +{ + "name": "bonus", + "version": "4.0.0", + "type": "Module", + "description": "Allows a bonus to be applied to players and instant respawn.", + "location": "", + "keywords": [ + "Instant Respawn", + "Bonus", + "Cheat", + "Commands", + "ExpGaming", + "Respawn" + ], + "author": "", + "contact": "", + "license": "", + "dependencies": { + "FactorioStdLib.Game": "^0.8.0", + "ExpGamingLib": "^4.0.0", + "ExpGamingCore.Commands": "^4.0.0", + "ExpGamingCore.Ranking": "?^4.0.0" + } +} \ No newline at end of file diff --git a/to convert/Addons/Commands/bonus.lua b/to convert/Addons/Commands/bonus.lua deleted file mode 100644 index d38af150..00000000 --- a/to convert/Addons/Commands/bonus.lua +++ /dev/null @@ -1,66 +0,0 @@ ---[[ -Explosive Gaming - -This file can be used with permission but this and the credit below must remain in the file. -Contact a member of management on our discord to seek permission to use our code. -Any changes that you may make to the code are yours but that does not make the script yours. -Discord: https://discord.gg/r6dC2uK -]] ---Please Only Edit Below This Line----------------------------------------------------------- - -local settings = { - {key='character_mining_speed_modifier',scale=3}, - {key='character_crafting_speed_modifier',scale=3}, - {key='character_running_speed_modifier',scale=3}, - {key='character_build_distance_bonus',scale=20}, - {key='character_reach_distance_bonus',scale=20}, - {key='character_inventory_slots_bonus',scale=200} -} - -local function _bonus(reset) - global.addons = not reset and global.addons or {} - global.addons.bonus = not reset and global.addons.bonus or {} - return global.addons.bonus -end - -commands.add_command('bonus', 'Set your player bonus (default is 20, guest has 0)', {'bonus'}, function(event,args) - local player = Game.get_player(event) - local bonus = tonumber(args.bonus) - if not bonus or bonus < 0 or bonus > 50 then player_return{'commands.invalid-range',0,50} return commands.error end - for _,setting in pairs(settings) do player[setting.key] = setting.scale*math.floor(bonus)*0.01 end - _bonus()[player.index]=bonus - player_return('Bonus set to: '..math.floor(bonus)..'%') -end) - -Event.register(defines.events.rank_change,function(event) - local player = Game.get_player(event) - if event.new_rank:allowed('bonus') then - for _,setting in pairs(settings) do player[setting.key] = setting.scale*0.2 end - _bonus()[player.index]=20 - else - for _,setting in pairs(settings) do player[setting.key] = 0 end - _bonus()[player.index]=nil - end -end) - -Event.register(defines.events.on_player_respawned,function(event) - local player = Game.get_player(event) - local bonus = _bonus()[player.index] - if bonus then - for _,setting in pairs(settings) do player[setting.key] = setting.scale*math.floor(bonus)*0.01 end - end -end) - -Event.register(defines.events.on_pre_player_died,function(event) - local player = Game.get_player(event) - if Ranking.get_rank(player):allowed('bonus-respawn') then - player.ticks_to_respawn = 120 - -- manually dispatch death event because it is not fired when ticks_to_respawn is set pre death - Event.dispatch{ - name=defines.events.on_player_died, - tick=event.tick, - player_index=event.player_index, - cause = event.cause - } - end -end)