SCED/objects/TheColourOutofOz.be7d21/TheColourOutofOzCampaignLog1.eda22b.ttslua
bootleggerFinn 9614ebcb37 Added Featured Content
Added featured content section containing featured fan campaigns.  also updated date on release notes.
Note that this commit has many files added as part of the two fan campaigns, as they have been "pre-downloaded"
2023-04-19 19:28:46 -05:00

511 lines
16 KiB
Plaintext

--[[ Character Sheet Template by: MrStump
You can set up your own character sheet if you follow these steps.
Step 1) Change the character sheet image
-Right click on the character sheet, click Custom
-Replace the image URL with one for your character sheet
-Click import, make sure your sheet loads
-SAVE THE GAME (the table setup)
-LOAD FROM THAT SAVE YOU JUST MADE
Step 2) Edit script to fit your character sheet
-Below you will see some general options, and then the big data table
-The data table is what determines how many of which buttons are made
-Checkboxes
-Counters
-Textboxes
-By default, there are 3 of each. You can add more or remove entries
-If you intend to add/remove, be sure only to add/remove ENTRIES
-This is what an entry looks like:
{
pos = {-0.977,0.1,-0.589},
size = 800,
state = false
},
-Deleting the whole thing would remove that specific item on the sheet
-Copy and pasting it after another entry would create another
-Each entry type has unique data points (pos, size, state, etc)
-Do not try to add in your own data points or remove them individually
-There is a summary of what each point does at the top of its category
Step 3) Save and check script changes
-Hit Save & Apply in the script window to save your code
-You can edit your code as needed and Save+Apply as often as needed
-When you are finished, make disableSave = false below then Save+apply
-This enables saving, so your sheet will remember whats on it.
Bonus) Finding/Editing Positions for elements
I have included a tool to get positions for buttons in {x,y,z} form
Place it where you want the center of your element to be
Then copy the table from the notes (lower right of screen)
You can highlight it and CTRL+C
Paste it into the data table where needed (pos=)
If you want to manually tweek the values:
{0,0,0} is the center of the character sheet
{1,0,0} is right, {-1,0,0} is left
{0,0,-1} is up, {0,0,1} is down
0.1 for Y is the height off of the page.
If it was 0, it would be down inside the model of the sheet
Begin editing below: ]]
--Set this to true while editing and false when you have finished
disableSave = false
--Remember to set this to false once you are done making changes
--Then, after you save & apply it, save your game too
--Color information for button text (r,g,b, values of 0-1)
buttonFontColor = {0,0,0}
--Color information for button background
buttonColor = {1,1,1}
--Change scale of button (Avoid changing if possible)
buttonScale = {0.1,0.1,0.1}
--This is the button placement information
defaultButtonData = {
--Add checkboxes
checkbox = {
--[[
pos = the position (pasted from the helper tool)
size = height/width/font_size for checkbox
state = default starting value for checkbox (true=checked, false=not)
]]
--End of checkboxes
},
--Add counters that have a + and - button
counter = {
--[[
pos = the position (pasted from the helper tool)
size = height/width/font_size for counter
value = default starting value for counter
hideBG = if background of counter is hidden (true=hidden, false=not)
]]
--1st Player Experience
{
pos = {-1.080,0.1,-1.010},
size = 800,
value = 0,
hideBG = true
},
--1st Player Physical Trauma
{
pos = {-1.270,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--1st Player Mental Trauma
{
pos = {-1.000,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--2nd Player Experience
{
pos = {-0.251,0.1,-1.010},
size = 800,
value = 0,
hideBG = true
},
--2nd Player Physical Trauma
{
pos = {-0.441,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--2nd Player Mental Trauma
{
pos = {-0.171,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--3rd Player Experience
{
pos = {0.579,0.1,-1.010},
size = 800,
value = 0,
hideBG = true
},
--3rd Player Physical Trauma
{
pos = {0.389,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--3rd Player Mental Trauma
{
pos = {0.659,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--4th Player Experience
{
pos = {1.407,0.1,-1.010},
size = 800,
value = 0,
hideBG = true
},
--4th Player Physical Trauma
{
pos = {1.217,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--4th Player Mental Trauma
{
pos = {1.487,0.1,-0.790},
size = 600,
value = 0,
hideBG = true
},
--End of counters
},
--Add editable text boxes
textbox = {
--[[
pos = the position (pasted from the helper tool)
rows = how many lines of text you want for this box
width = how wide the text box is
font_size = size of text. This and "rows" effect overall height
label = what is shown when there is no text. "" = nothing
value = text entered into box. "" = nothing
alignment = Number to indicate how you want text aligned
(1=Automatic, 2=Left, 3=Center, 4=Right, 5=Justified)
]]
--1st Player Name
{
pos = {-1.265,0.1,-1.390},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--1st Player Investigator
{
pos = {-1.265,0.1,-1.195},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--1st Player Story Assets/Weaknesses
{
pos = {-1.265,0.1,-0.420},
rows = 7,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--2nd Player Name
{
pos = {-0.436,0.1,-1.390},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--2nd Player Investigator
{
pos = {-0.436,0.1,-1.195},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--2nd Player Story Assets/Weaknesses
{
pos = {-0.436,0.1,-0.420},
rows = 7,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--3rd Player Name
{
pos = {0.394,0.1,-1.390},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--3rd Player Investigator
{
pos = {0.394,0.1,-1.195},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--3rd Player Story Assets/Weaknesses
{
pos = {0.394,0.1,-0.420},
rows = 7,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--4th Player Name
{
pos = {1.222,0.1,-1.390},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--4th Player Investigator
{
pos = {1.222,0.1,-1.195},
rows = 1,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--4th Player Story Assets/Weaknesses
{
pos = {1.222,0.1,-0.420},
rows = 7,
width = 3800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--Campaign Notes 1
{
pos = {-0.930,0.1,0.930},
rows = 27,
width = 7800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--Campaign Notes 2
{
pos = {0.820,0.1,0.707},
rows = 20,
width = 7800,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--Killed and Insane Investigators
{
pos = {1.010,0.1,1.700},
rows = 5,
width = 7400,
font_size = 300,
label = "Empty",
value = "",
alignment = 2
},
--End of textboxes
}
}
--Lua beyond this point, I recommend doing something more fun with your life
--Save function
function updateSave()
saved_data = JSON.encode(ref_buttonData)
if disableSave==true then saved_data="" end
self.script_state = saved_data
end
--Startup procedure
function onload(saved_data)
if disableSave==true then saved_data="" end
if saved_data ~= "" then
local loaded_data = JSON.decode(saved_data)
ref_buttonData = loaded_data
else
ref_buttonData = defaultButtonData
end
spawnedButtonCount = 0
createCheckbox()
createCounter()
createTextbox()
end
--Click functions for buttons
--Checks or unchecks the given box
function click_checkbox(tableIndex, buttonIndex)
if ref_buttonData.checkbox[tableIndex].state == true then
ref_buttonData.checkbox[tableIndex].state = false
self.editButton({index=buttonIndex, label=""})
else
ref_buttonData.checkbox[tableIndex].state = true
self.editButton({index=buttonIndex, label=string.char(10008)})
end
updateSave()
end
--Applies value to given counter display
function click_counter(tableIndex, buttonIndex, amount)
ref_buttonData.counter[tableIndex].value = ref_buttonData.counter[tableIndex].value + amount
self.editButton({index=buttonIndex, label=ref_buttonData.counter[tableIndex].value})
updateSave()
end
--Updates saved value for given text box
function click_textbox(i, value, selected)
if selected == false then
ref_buttonData.textbox[i].value = value
updateSave()
end
end
--Dud function for if you have a background on a counter
function click_none() end
--Button creation
--Makes checkboxes
function createCheckbox()
for i, data in ipairs(ref_buttonData.checkbox) do
--Sets up reference function
local buttonNumber = spawnedButtonCount
local funcName = "checkbox"..i
local func = function() click_checkbox(i, buttonNumber) end
self.setVar(funcName, func)
--Sets up label
local label = ""
if data.state==true then label=string.char(10008) end
--Creates button and counts it
self.createButton({
label=label, click_function=funcName, function_owner=self,
position=data.pos, height=data.size, width=data.size,
font_size=data.size, scale=buttonScale,
color=buttonColor, font_color=buttonFontColor
})
spawnedButtonCount = spawnedButtonCount + 1
end
end
--Makes counters
function createCounter()
for i, data in ipairs(ref_buttonData.counter) do
--Sets up display
local displayNumber = spawnedButtonCount
--Sets up label
local label = data.value
--Sets height/width for display
local size = data.size
if data.hideBG == true then size = 0 end
--Creates button and counts it
self.createButton({
label=label, click_function="click_none", function_owner=self,
position=data.pos, height=size, width=size,
font_size=data.size, scale=buttonScale,
color=buttonColor, font_color=buttonFontColor
})
spawnedButtonCount = spawnedButtonCount + 1
--Sets up add 1
local funcName = "counterAdd"..i
local func = function() click_counter(i, displayNumber, 1) end
self.setVar(funcName, func)
--Sets up label
local label = "+"
--Sets up position
local offsetDistance = (data.size/2 + data.size/4) * (buttonScale[1] * 0.002)
local pos = {data.pos[1] + offsetDistance, data.pos[2], data.pos[3]}
--Sets up size
local size = data.size / 2
--Creates button and counts it
self.createButton({
label=label, click_function=funcName, function_owner=self,
position=pos, height=size, width=size,
font_size=size, scale=buttonScale,
color=buttonColor, font_color=buttonFontColor
})
spawnedButtonCount = spawnedButtonCount + 1
--Sets up subtract 1
local funcName = "counterSub"..i
local func = function() click_counter(i, displayNumber, -1) end
self.setVar(funcName, func)
--Sets up label
local label = "-"
--Set up position
local pos = {data.pos[1] - offsetDistance, data.pos[2], data.pos[3]}
--Creates button and counts it
self.createButton({
label=label, click_function=funcName, function_owner=self,
position=pos, height=size, width=size,
font_size=size, scale=buttonScale,
color=buttonColor, font_color=buttonFontColor
})
spawnedButtonCount = spawnedButtonCount + 1
end
end
function createTextbox()
for i, data in ipairs(ref_buttonData.textbox) do
--Sets up reference function
local funcName = "textbox"..i
local func = function(_,_,val,sel) click_textbox(i,val,sel) end
self.setVar(funcName, func)
self.createInput({
input_function = funcName,
function_owner = self,
label = data.label,
alignment = data.alignment,
position = data.pos,
scale = buttonScale,
width = data.width,
height = (data.font_size*data.rows)+24,
font_size = data.font_size,
color = buttonColor,
font_color = buttonFontColor,
value = data.value,
})
end
end