added automated supply rolls with tracking toggles!
Printable View
added automated supply rolls with tracking toggles!
I like the cleaner look for the timer pr6i6e6st. You're really adding alot of automation. That's really cool. Thanks for your hard work.
I'm starting to wind down on the GUI, everything seems pretty good on the usability and readability areas and the theme feels pretty cohesive.
Minor graphic updates(nothing majorly new)
Went back through the character sheet and cleaned up text and re-created texts for easier readability. (Things like frame header, and bonus / damage / range columns, etc.)
Made a broken link icon so you can see your unlinked items when creating story entries.
Great work guys. keep up the solid work!
I'm going to try and edit this post later, i'm heading to work and i want to see if someone can help me figure out what's quite wrong with it. it's for the freezing condition
Edit: what I want to happen:
(RadStrength is leftover from using the same code as the radiation script on manager_char.lua)
If conditions.cold is 1
When cold.strength is 0:
-if the number of minutes that have passed is equal to or greater than a game.turn, if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
-if a whole hour or more has passed if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
-if a whole day has passed if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
When cold.strength is 1:
-if the number of hours that has passed is equal to or greater than a game.shift, if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
-if a whole day has passed, if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
When cold.strength is 2:
-if a day has passed, if health.current is greater than 0, roll stamina; if health.current is 0, roll deathroll.
Edit: after reviewing this in a different light, I think I see my problem.
Code:function onSourceChanged(nodeChar)
local RadStrength = DB.getValue(nodeChar, "cold.strength", 0);
Debug.console("CharManager, RadStrength = ", RadStrength);
if RadStrength == 2 then
newLimit = 1;
Debug.console("CharManager, onSourceChanged, newLimit = ", newLimit);
end
if RadStrength == 1 then
newLimit = DB.getValue(nodeChar, "game.shift", 0);
Debug.console("CharManager, onSourceChanged, newLimit = ", newLimit);
end
if RadStrength == 0 then
newLimit = DB.getValue(nodeChar, "game.turn", 0);
Debug.console("CharManager, onSourceChanged, newLimit = ", newLimit);
end
DB.setValue(nodeChar, "cold.timelimit", "number", newLimit);
local TimeLimit = DB.getValue(nodeChar, "cold.timelimit", 0);
local TimeLimitFactor = CheckTimeLimitFactor(nodeChar);
if TimeLimitFactor == 0 then
onCheckDay();
onCheckMinute();
if MinuteDifference > DB.getValue(nodeChar, "game.turn", 0) and MinuteDifference < 60 then
nMaths = 60 / DB.getValue(nodeChar, "game.turn", 0);
Reduced = DB.getValue(nodeChar, "cold.timelimitcurrent", 0) - nMaths;
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", Reduced)
bMinute = false;
nOldMinute = DB.getValue("calendar.current.minute");
nOldHour = DB.getValue("calendar.current.hour");
nOldRound = DB.getValue("calendar.current.day");
nNewMinute = 0;
NewHour = 0;
NewDay = 0;
if DB.getValue(nodeChar, "cold.timelimitcurrent", 0) <= 0 then
if DB.getValue(nodeChar, "health.current", 0) > 0 then
throwStamina(nodeChar);
elseif DB.getValue(nodeChar, "health.current", 0) == 0 then
throwDeathRoll(nodeChar);
end
Debug.console("CharManager, onSourceChanged, cold.timelimitcurrent = ", DB.getValue(nodeChar, "cold.timelimitcurrent", 0));
end
elseif MinuteDifference < 1 or MinuteDifference > 59 then
onCheckHour();
if HourDifference > 0 and HourDifference < 23 then
nMaths = 3600 / DB.getValue(nodeChar, "game.shift", 0);
Reduced = DB.getValue(nodeChar, "cold.timelimitcurrent", 0) - nMaths;
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", Reduced)
if DB.getValue(nodeChar, "conditions.cold", 0) == 1 then
bHour = false;
nOldHour = DB.getValue("calendar.current.hour");
nOldRound = DB.getValue("calendar.current.day");
nOldMinute = DB.getValue("calendar.current.minute");
NewDay = 0;
NewHour = 0;
if DB.getValue(nodeChar, "health.current", 0) > 0 then
throwStamina(nodeChar);
elseif DB.getValue(nodeChar, "health.current", 0) == 0 then
throwDeathRoll(nodeChar);
end
end
end
end
elseif TimeLimitFactor == 1 then
onCheckDay();
onCheckMinute();
if HourDifference > DB.getValue(nodeChar, "game.hour", 0) and HourDifference < 59 then
Reduced = DB.getValue(nodeChar, "cold.timelimitcurrent", 0) - 1;
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", Reduced)
if DB.getValue(nodeChar, "conditions.cold", 0) == 1 then
bMinute = false;
nOldMinute = DB.getValue("calendar.current.minute");
nOldHour = DB.getValue("calendar.current.hour");
nNewMinute = 0;
NewHour = 0;
NewDay = 0;
if DB.getValue(nodeChar, "health.current", 0) > 0 then
throwStamina(nodeChar);
elseif DB.getValue(nodeChar, "health.current", 0) == 0 then
throwDeathRoll(nodeChar);
end
end
elseif HourDifference < 1 or HourDifference > 59 then
onCheckMinute();
if MinuteDifference > 0 and MinuteDifference < 23 then
nMaths = 60 / DB.getValue(nodeChar, "game.turn", 0);
Reduced = DB.getValue(nodeChar, "cold.timelimitcurrent", 0) - nMaths;
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", Reduced);
if DB.getValue(nodeChar, "conditions.cold", 0) == 1 then
bMinute = false;
nOldMinute = DB.getValue("calendar.current.minute");
nOldHour = DB.getValue("calendar.current.hour");
nNewMinute = 0;
NewHour = 0;
NewDay = 0;
if DB.getValue(nodeChar, "health.current", 0) > 0 then
throwStamina(nodeChar);
elseif DB.getValue(nodeChar, "health.current", 0) == 0 then
throwDeathRoll(nodeChar);
end
end
end
end
elseif TimeLimitFactor == 2 then
onCheckDay();
onCheckHour();
if DayDifference >= 0 then
Reduced = DB.getValue(nodeChar, "cold.timelimitcurrent", 0) - 1;
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", Reduced);
if DB.getValue(nodeChar, "conditions.cold", 0) == 1 then
bHour = false;
nOldHour = DB.getValue("calendar.current.hour");
nOldDay = DB.getValue("calendar.current.day");
nOldDay = DB.getValue("calendar.current.minute");
NewDay = 0;
if DB.getValue(nodeChar, "health.current", 0) > 0 then
throwStamina(nodeChar);
elseif DB.getValue(nodeChar, "health.current", 0) == 0 then
throwDeathRoll(nodeChar);
end
end
if DB.getValue(nodeChar, "cold.timelimitcurrent", 0) <= 0 then
DB.setValue(nodeChar, "cold.timelimitcurrent", "number", TimeLimit);
Debug.console("CharManager, onSourceChanged, cold.timelimitcurrent = ", TimeLimit);
end
end
end
end
I love this and what you have created. I have a feeling I am missing out on how a lot of the automation works. I'm continuing to learn as I build tables and import Items and characters. I don't know if I am setting the calendar correctly or am missing something on the character sheet, because I'm not seeing the automatic healing taking place. The more I play with this ruleset, the more impressive it gets though. Thanks for doing this.
automated healing works as stated in the rules where if you are not suffering from a condition, are not exposed to irradiation, and a turn goes by, you gain a point. you also have to be human. i'm not seeing any issues with it at the moment
BUT i am currently in the process of changing how i check for time differences, by converting the dates to seconds, rather than relying on too many scenarios. hopefully i'll get this all beat out before too long. might have to settle and ignore months somehow, as that's my current stumping factor. thank you for sticking through it.
I'm certain any issues I am having are due to my ignorance.
i plan to make an updated video at some point when i get this mechanic and a couple others worked out.
but here's a checklist:
-calendar is set up
-shift/round is set up
-human/synth button above health is set as desired (click to change)
-"Stressed" button means you are in a stressful situation and thus can't lose stress over time, if you are looking for stress loss
-are your conditions toggled on(black) or off(white)?
-is the panicking button toggled on or off? set this to on only when you are panicking. when you stop panicking, click it off.
-some functions need you to be on the combat tracker or for a player to have control of the PC.
-are your items set to the right type? click where it says "gear" to set it to the appropriate type of item
-are your items equipped? armor, weapons, power supplies and air supplies must be equipped.
-MaxHealth is not automatically set yet, you may set this with the field below the health section
-the Panic Mod modifies the result you get on your panic results
-combat type changes the panic table to roll on
-NPC's can be set to a creature, or npc; you can decide if they roll on a Human, Synth, or custom defined table by cycling the other button next to it.
-Vehicles can be changed by clicking on the vehicle type section.
hopefully this gets you started
Definitely. Thanks!
This looks like a great extension/mod/ruleset!
Any chance that we could get the clock as a separate extension for use in other rulesets?