mirror of
https://github.com/Steffo99/noita-starting-perk.git
synced 2024-11-21 13:34:17 +00:00
Implement mod configuration
This commit is contained in:
parent
3c30b3c2c4
commit
b7b261848c
3 changed files with 104 additions and 6 deletions
67
init.lua
67
init.lua
|
@ -1,4 +1,6 @@
|
||||||
dofile("data/scripts/perks/perk.lua")
|
dofile("data/scripts/perks/perk.lua")
|
||||||
|
dofile("data/scripts/lib/utilities.lua")
|
||||||
|
dofile("data/scripts/lib/mod_settings.lua")
|
||||||
|
|
||||||
|
|
||||||
function OnPlayerSpawned( player_entity )
|
function OnPlayerSpawned( player_entity )
|
||||||
|
@ -10,9 +12,68 @@ function OnPlayerSpawned( player_entity )
|
||||||
end
|
end
|
||||||
GameAddFlagRun( init_check_flag )
|
GameAddFlagRun( init_check_flag )
|
||||||
|
|
||||||
-- Spawn a perk below the 1..2 wall
|
-- Load mod settings
|
||||||
perk_spawn_random( 771, -96 )
|
local perks_amount = ModSettingGet("starting_perk.perks_spawned")
|
||||||
|
local only_one = ModSettingGet("starting_perk.only_one")
|
||||||
|
|
||||||
|
-- Print mod settings to the player
|
||||||
|
if only_one then
|
||||||
|
GamePrint("Starting with a choice between " .. to_string(perks_amount) .. " perks")
|
||||||
|
else
|
||||||
|
GamePrint("Starting with " .. to_string(perks_amount) .. " free perks")
|
||||||
|
end
|
||||||
|
|
||||||
|
local x_center = 789
|
||||||
|
local y_bottom = -96
|
||||||
|
|
||||||
|
local gap = 6
|
||||||
|
local size = 14
|
||||||
|
local offset = gap + size
|
||||||
|
|
||||||
|
-- Find the number of rows
|
||||||
|
-- Ceil makes it wider instead of taller
|
||||||
|
local rows = math.ceil(math.sqrt(perks_amount))
|
||||||
|
|
||||||
|
GamePrint("Spawning rows: "..tostring(rows))
|
||||||
|
|
||||||
|
-- Draw perk rows
|
||||||
|
for current_row = 1, rows, 1 do
|
||||||
|
|
||||||
|
-- Find the number of columns
|
||||||
|
local cols
|
||||||
|
if perks_amount < rows then
|
||||||
|
-- Spawn only the leftover amount
|
||||||
|
cols = perks_amount
|
||||||
|
else
|
||||||
|
-- Spawn the full amount
|
||||||
|
cols = rows
|
||||||
|
end
|
||||||
|
|
||||||
|
GamePrint("Spawning cols: " .. tostring(cols))
|
||||||
|
|
||||||
|
-- If there is something to spawn
|
||||||
|
if cols ~= 0 then
|
||||||
|
-- Find the total row width
|
||||||
|
local width = (offset * cols) + size
|
||||||
|
|
||||||
|
-- Find the X position to start spawning perks at
|
||||||
|
local x_left = x_center - (width / 2)
|
||||||
|
|
||||||
|
-- Draw perk columns
|
||||||
|
for current_col=1, cols, 1 do
|
||||||
|
|
||||||
|
-- Find the position to spawn each perk at
|
||||||
|
local x = x_left + (current_col - 1) * offset
|
||||||
|
local y = y_bottom - (current_row - 1) * offset
|
||||||
|
|
||||||
|
-- Spawn the perk
|
||||||
|
-- perk_spawn_random(x, y, not only_one)
|
||||||
|
|
||||||
-- Used to take the screenshot
|
-- Used to take the screenshot
|
||||||
-- perk_spawn( 771, -96, "GENOME_MORE_LOVE" )
|
perk_spawn( 771, -96, "GENOME_MORE_LOVE" )
|
||||||
|
|
||||||
|
perks_amount = perks_amount - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
2
mod.xml
2
mod.xml
|
@ -1,5 +1,5 @@
|
||||||
<Mod
|
<Mod
|
||||||
name="Random starting perk"
|
name="Starting perk"
|
||||||
description="Start every run with a perk from the Holy Mountain pool."
|
description="Start every run with a perk from the Holy Mountain pool."
|
||||||
request_no_api_restrictions="0"
|
request_no_api_restrictions="0"
|
||||||
>
|
>
|
||||||
|
|
37
settings.lua
Normal file
37
settings.lua
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
dofile("data/scripts/lib/mod_settings.lua")
|
||||||
|
|
||||||
|
|
||||||
|
local mod_id = "starting_perk"
|
||||||
|
mod_settings_version = 1
|
||||||
|
mod_settings = {
|
||||||
|
{
|
||||||
|
id = "perks_spawned",
|
||||||
|
ui_name = "Number of perks spawned",
|
||||||
|
value_default = 1,
|
||||||
|
value_min = 1,
|
||||||
|
value_max = 25,
|
||||||
|
value_display_formatting = " $0 perks",
|
||||||
|
scope = MOD_SETTING_SCOPE_NEW_GAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = "only_one",
|
||||||
|
ui_name = "Only one",
|
||||||
|
ui_description = "Despawn the other perks when one is chosen.",
|
||||||
|
value_default = true,
|
||||||
|
scope = MOD_SETTING_SCOPE_NEW_GAME,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ModSettingsUpdate( init_scope )
|
||||||
|
local old_version = mod_settings_get_version( mod_id ) -- This can be used to migrate some settings between mod versions.
|
||||||
|
mod_settings_update( mod_id, mod_settings, init_scope )
|
||||||
|
end
|
||||||
|
|
||||||
|
function ModSettingsGuiCount()
|
||||||
|
return mod_settings_gui_count( mod_id, mod_settings )
|
||||||
|
end
|
||||||
|
|
||||||
|
function ModSettingsGui( gui, in_main_menu )
|
||||||
|
mod_settings_gui( mod_id, mod_settings, gui, in_main_menu )
|
||||||
|
end
|
Loading…
Reference in a new issue