1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-04 00:15:45 +02:00
ComfyFactorio/modules/rpg/commands.lua
2021-11-22 20:16:33 +01:00

230 lines
5.5 KiB
Lua

local Public = require 'modules.rpg.table'
local Utils = require 'utils.core'
local Color = require 'utils.color_presets'
local round = math.round
local validate_args = function(data)
local player = data.player
local target = data.target
local rpg_t = Public.get_value_from_player(target.index)
if not target then
return false
end
if not target.valid then
return false
end
if not target.character then
return false
end
if not target.connected then
return false
end
if not game.players[target.index] then
return false
end
if not player then
return false
end
if not player.valid then
return false
end
if not player.character then
return false
end
if not player.connected then
return false
end
if not game.players[player.index] then
return false
end
if not target or not game.players[target.index] then
Utils.print_to(player, 'Invalid name.')
return false
end
if not rpg_t then
Utils.print_to(player, 'Invalid target.')
return false
end
return true
end
local print_stats = function(target)
if not target then
return
end
local rpg_t = Public.get_value_from_player(target.index)
if not rpg_t then
return
end
local level = rpg_t.level
local xp = round(rpg_t.xp)
local strength = rpg_t.strength
local magicka = rpg_t.magicka
local dexterity = rpg_t.dexterity
local vitality = rpg_t.vitality
local output = '[color=blue]' .. target.name .. '[/color] has the following stats: \n'
output = output .. '[color=green]Level:[/color] ' .. level .. '\n'
output = output .. '[color=green]XP:[/color] ' .. xp .. '\n'
output = output .. '[color=green]Strength:[/color] ' .. strength .. '\n'
output = output .. '[color=green]Magic:[/color] ' .. magicka .. '\n'
output = output .. '[color=green]Dexterity:[/color] ' .. dexterity .. '\n'
output = output .. '[color=green]Vitality:[/color] ' .. vitality
return output
end
commands.add_command(
'stats',
'Check what stats a user has!',
function(cmd)
local player = game.player
if not player or not player.valid then
return
end
local param = cmd.parameter
if not param then
return
end
if param == '' then
return
end
local target = game.players[param]
if not target or not target.valid then
return
end
local data = {
player = player,
target = target
}
if validate_args(data) then
local msg = print_stats(target)
player.play_sound {path = 'utility/scenario_message', volume_modifier = 1}
player.print(msg)
else
player.print('Please type a name of a player who is connected.', Color.warning)
end
end
)
if _DEBUG then
commands.add_command(
'give_xp',
'DEBUG ONLY - if you are seeing this then this map is running on debug-mode.',
function(cmd)
local p
local player = game.player
local param = tonumber(cmd.parameter)
if player then
if player ~= nil then
p = player.print
if not player.admin then
p("[ERROR] You're not admin!", Color.fail)
return
end
if not param then
return
end
p('Distributed ' .. param .. ' of xp.')
Public.give_xp(param)
end
end
end
)
commands.add_command(
'rpg_debug_module',
'',
function()
local player = game.player
if not (player and player.valid) then
return
end
if not player.admin then
return
end
Public.toggle_debug()
end
)
commands.add_command(
'rpg_debug_one_punch',
'',
function()
local player = game.player
if not (player and player.valid) then
return
end
if not player.admin then
return
end
Public.toggle_debug_one_punch()
end
)
commands.add_command(
'rpg_cheat_stats',
'',
function()
local player = game.player
if not (player and player.valid) then
return
end
if not player.admin then
return
end
local data = Public.get('rpg_t')
for k, _ in pairs(data) do
data[k].dexterity = 999
data[k].enable_entity_spawn = true
data[k].explosive_bullets = true
data[k].level = 1000
data[k].magicka = 999
data[k].mana = 50000
data[k].mana_max = 50000
data[k].debug_mode = true
data[k].one_punch = true
data[k].stone_path = true
data[k].strength = 3000
data[k].vitality = 3000
data[k].xp = 456456
local p = game.get_player(k)
if p and p.valid then
Public.update_player_stats(p)
end
end
end
)
end
return Public