My math expresions for checking variables are getting kind off a bit too long.. I think?

SkyHeart

Avid Affiliate
Joined
Apr 17, 2017
Hi,
The expresion I'm talking about is this one:
Code:
timeAdvance_skip1_INSTANT:"[SETVAR_newValue_*( da.random x 100 ) \ 1 / 100*][timeAdvance_tryFor_randomExtremeEvent*( da.random < ( ( ( 0.52 / 6 ) x ( ( Progress.stats.love.affection <= 5 ) + ( Progress.stats.love.care <= 5 ) + ( Progress.stats.love.respect <= 5 ) + ( Progress.stats.will.pride <= 5 ) + ( Progress.stats.will.trust <= 5 ) + ( Progress.stats.will.hope <= 5 ) ) ) - ( ( ( ( Player.girl.love >= 4 ) x ( Player.girl.love x 1.2 ) ) - ( ( Player.girl.love <= 2 ) x ( Player.girl.love x 1.2 ) ) + ( ( Player.girl.will <= 2 ) x ( Player.girl.will x 1.2 ) ) - ( ( Player.girl.will >= 4 ) x ( Player.girl.will x 1.2 ) ) ) / 10 ) - Event.randomEvent.happened ) )**( da.random < ( ( ( 0.52 / 6 ) x ( ( Progress.stats.love.affection >= 15 ) + ( Progress.stats.love.care >= 15 ) + ( Progress.stats.love.respect >= 15 ) + ( Progress.stats.will.pride >= 15 ) + ( Progress.stats.will.trust >= 15 ) + ( Progress.stats.will.hope >= 15 ) ) ) - ( ( ( ( Player.girl.love <= 2 ) x ( Player.girl.love x 1.2 ) ) - ( ( Player.girl.love >= 4 ) x ( Player.girl.love x 1.2 ) ) - ( ( Player.girl.will <= 2 ) x ( Player.girl.will x 1.2 ) ) + ( ( Player.girl.will >= 4 ) x ( Player.girl.will x 1.2 ) ) ) / 10 ) - Event.randomEvent.happened ) )*_INSTANT]" {"style":"him"}
So, let me explain..
The variables that you see mean this
  • "Progress.stats.love.<affection / care / respect>"
    • They range from 1 to 20
    • Below 5 is bad | Above 15 is good
    • Their sum devided by 0.17 defines the value of the value of another variable ( not present in the expresion ): "Progress.stats.love"
      • This variable ranges from 1 to 10
      • It's value defines the likeliness of the variable "Player.girl.love" to change values.
        • If it's too low, "Player.girl.love" will lose a point
        • If it's too high, it will gain a point
        • It ranges from 1 to 5 (1 - hatefull, 5 - loving)
  • "Progress.stats.will.<pride / trust / hope>"
    • They range from 1 to 20
    • Below 5 is bad | Above 15 is good
    • Their sum devided by 0.17 defines the value of the value of another variable ( not present in the expresion ): "Progress.stats.will"
      • This variable ranges from 1 to 10
      • It's value defines the likeliness of the variable "Player.girl.will" to change values.
        • If it's too low, "Player.girl.will" will lose a point
        • If it's too high, it will gain a point
        • It ranges from 1 to 5 (1 - broken, 5 - stubborn)
  • "Player.girl.will" and "Player.girl.love" basically deffine her personality
  • "Event.randomEvent.happened"
    • Ranges from 0 to 0.8
    • Reduces the chance for random events to happen very often
What is this / What does this line do?
  • It basically dictates if a random event is going to happen or not, as well as it's type of event
    • Low stats event
    • High stats event
Does that like this:
  • There are actually 2 expresions in there and they both check if an outcome of da.random is smaller than the expresion after it
    • So, for the first one, if the stats are bad, that adds up to the sum, making the outcome of da.random more likely to be smaller than the expresion
    • Same for the second one, if the stats are good, that adds up..
There are 4 outcomes to this line:
  • timeAdvance_tryFor_randomExtremeEvent00_INSTANT (Stats are most probably neutral (berween 5 and 15)) (Goes to test how "neutral" are the stats, but that expresion is considerablly smaller)
  • timeAdvance_tryFor_randomExtremeEvent10_INSTANT (Stats are most probably bad (below 5))
  • timeAdvance_tryFor_randomExtremeEvent01_INSTANT (Stats are most probably good (above 15))
  • timeAdvance_tryFor_randomExtremeEvent11_INSTANT (Don't know how the hell you would get this outcome.. but for the sake of having no gaps I've made this line to choose at random either a low stats event or a high stats event)
    ( that's what the [SETVAR_newValue_da.random x 100 \ 1 / 100] trigger at the beggining of the line is for )
After all that it leaves into another file, but that part is irrelevant..


Problems that led me to this "solution"
Tried to cut it in half, test for low and high stats differently.. but I couldn't find a way where both would be checked.. either I was checking for low or high and if the outcome was 0 the other would get ignored
Thought about putting it on 2 chained triggers but that doesn't make sense to me.. it's still the same expresion just done on two different lines.. that can't be faster.. can it??


The length of this expresion is what worries me.. granted there are some useless paranthesess in there and DA needs a space in between stuff but still.. this gets up to 1255 characters..

Funny enough.. this boils down to: Does size matter?
Bad jokes aside..

Pim_gd Pim_gd This is the reason I asked about the math thingy a few days ago.. I guess I should have asked this from the start..
Am I checking it the wrong way?
Is it fine to leave it like this? The line does get used pretty often..
WeeWillie WeeWillie Have you encountered a similar problem in your dialogue? If yes, could you please point me in the right direction to solve this?
Anyone.. if you know D.A. and you have an idea please leave a post.
 
Last edited:

WeeWillie

Content Creator
Joined
Nov 8, 2013
There's a lot to digest there, so I didn't look through in super detail, but it seems like the right approach to the issue. As long as the line runs, I don't think there is any issue with line length?
 

SkyHeart

Avid Affiliate
Joined
Apr 17, 2017
There's a lot to digest there, so I didn't look through in super detail, but it seems like the right approach to the issue. As long as the line runs, I don't think there is any issue with line length?
The line runs.. but I've only tried it in an isolated dialogue.. since a few of the things that get influenced by it aren't done, I've kind of been reluctant to keep working on this part of the dialogue to avoid having to change a lot of stuff in case I need to change it. But I that's holding me back a lot.. so I'll keep going and if Pim_gd Pim_gd says it's a problem I'll take the bullet and make the changes

I knew time passing would be a bitch to implement..

I've tried to break the checks into parts and scatter the math across the dialogue, but that didn't really work out..

More so I've noticed I haven't taken her mood into acount so that's another check I should add.. although I have an Idea on how to still check that later in the event generation..


PS: I just had an idea.. but it requires an answer to a different question..

So, I structure my dialouge like so:
One main file, with mostly all the srcripting
And than other smaller files, as script free as I can have them, used for scenes and events.
As such
Would saving.. a considerable ammount of variables and than loading them inside the ecents file, speed the process at all?
That would require me to load more variables than the majority of the file needs but if it makes a difference, that could be an easy solution?
 

Pim_gd

Club Regular
Joined
Jan 25, 2013
Long lines are not a problem as far as I know. At least not in the sense of long lines causing issues earlier than file size causing issues.

If you make 1 line with 500 MB of characters I bet SDT will choke on it. But if you make a 500 MB dialogue in general SDT will choke on it.

Hmmmmh

Although to be fair there might be something bleh with the substitution script where long lines might take long but you probably won't even see this until 10k+. At which point I do have to ask wtf you are doing.

Anyway.

To keep us both sane, make smaller files with scripting functions. Take callbacks. What follows is a bit of code that sums an array.

Code:
//takes an object sumFunction.arguments with properties length (for how many properties) and properties 0 through .length - 1. So length is 3, it expects 0, 1 and 2. Also takes sumFunction.callback, unless you don't want a callback. Result is set into sumFunction.result
sumFunction_INSTANT:"[DELETELOCALS_sumFunction.locals.][sumFunction_startloop*sumFunction.arguments.length > 0*_INSTANT]" 
sumFunction_startloop0_INSTANT:"Error, not called properly, sumFunction.arguments.length is non-positive or non-existant"
sumFunction_startloop1_INSTANT:"[SETVAR_sumFunction.locals.index_0][SETVAR_sumFunction.locals.sum_0][sumFunction_loopAddPrep_INSTANT]"

sumFunction_loopAddPrep_INSTANT:"[SETVAR_sumFunction.locals.source_sumFunctions.arguments.*sumFunctions.locals.index*][sumFunction_loopAddPrep2_INSTANT]"
sumFunction_loopAddPrep2_INSTANT:"[SETVARBYNAEM_sumFunction.locals.source_*sumFunction.locals.source*][sumFunction_loopAddAndCheckLoopCondition_INSTANT]"
sumFunction_loopAddAndCheckLoopCondition_INSTANT:"[SETVAR_sumFunction.locals.sum_+=*sumFunction.locals.source*][sumFunction_loop*sumFunction.arguments.length > sumFunction.locals.index*_INSTANT]"
sumFunction_loop1_INSTANT:"[SETVAR_sumFunction.locals.index_+=1][sumFunction_loopAddPrep_INSTANT]"
sumFunction_loop0_INSTANT:"[SETVARBYNAEM_sumFunction.result_sumFunction.locals.sum][sumFunction_return_INSTANT]"

sumFunction_return_INSTANT:"[DELETELOCALS_sumFunction.callback_sumFunction.locals][*sumFunction.callback*]"
If you did this sort of thing in the middle of your dialogue script you'd go insane, I think. You just need to watch out for namespace pollution (that's why I dump everything under the prefix "sumFunction" here and even DELETELOCALS whenever I enter and leave my function.

In your case, you don't need a loop. It can be much simpler. You have an entry point, you might just take the whole "Player." and "Progress." variables for granted (no "arguments" sub-object).

The basic skeleton for such a function is this:

Code:
isXDefinedAsTwo_INSTANT:"[DELETELOCALS_isXDefinedAsTwo.locals._isXDefinedAsTwo.result][isXDefinedAsTwo_check_INSTANT]"
isXDefinedAsTwo_check_INSTANT:"[isXDefinedAsTwo_result*( x == 2 )*_INSTANT]"
isXDefinedAsTwo_result0_INSTANT:"[SETVAR_isXDefinedAsTwo.result_no][isXDefinedAsTwo_return_INSTANT]"
isXDefinedAsTwo_result1_INSTANT:"[SETVAR_isXDefinedAsTwo.result_yes][isXDefinedAsTwo_return_INSTANT]"
isXDefinedAsTwo_return_INSTANT:"[DELETELOCALS_isXDefinedAsTwo.locals._isXDefinedAsTwo.callback][*isXDefinedAsTwo.callback*]"
You have a start line, where you clear your locals (I don't have any, but you know... examples), this is the entry point. You guarantee yourself that if you call the entry point with sane arguments, then nothing will explode. (You can jump straight to isXDefinedAsTwo_result1_INSTANT if you really want to shoot yourself in the foot...)

You have a return line, where you clean your crap up (prevents things like leaving massive arrays around if you made them), as well as clearing the callback so that the next time someone calls your function, they don't trigger the same callback again. (If you do not do this, and you use a callback everywhere except in 1 spot, you will see something like "at random times, random bits of my dialogue are ran again". But what's really happening is just the last bit of dialogue being poked again by the callback).

And then you put this somewhere. Either in a separate file or somewhere near the bottom.

I'd personally go for the separate file which is imported once at the start.

I also have to mention that this is slower. Going through a bunch of lines to perform a bunch of operations is slower than just having a long variable insertion in which DA has a huge equation to solve.

But DA's parenthesis counter is poorly implemented and as such if you give it a long string with many parenthesis then you will have a bad time eventually.

And I don't know about you, but readability beats performance until things get slow. At which point we make a copy of the readable code and then try to make it fast.

-------

Alternatively:

DA has a mod API. Define your OWN triggers via DA's API and just program in ActionScript. It's no longer a "simple" text file, yes, but I really have to say that at some point you guys are just programming things in SDT's dialogue system. And if you have heavy programming work to do then it is best implemented in a programming language and not in Dialogue. Heck, ActionScript even has a debugger, so you can write your code and write "tests" for it (just call it from a main method with some input and check what you get back), and then feed it the same input from your dialogue and it should work. And if it doesn't, you just get the debugger flash player and crash with an error message which states the input you got. IMHO, that beats "and after they say this line, the dialogue stops...." any time.

Oh, it's late.

Oh, I should mention people so they see replies.

SkyHeart SkyHeart

...

someone ping me if they want me to add it to the index of links I have, you know, this one Pim_gd's Advanced Dialogue Guide (v1.01 - updated 10 December 2013)
 

SkyHeart

Avid Affiliate
Joined
Apr 17, 2017
Long lines are not a problem as far as I know. At least not in the sense of long lines causing issues earlier than file size causing issues.

If you make 1 line with 500 MB of characters I bet SDT will choke on it. But if you make a 500 MB dialogue in general SDT will choke on it.

Hmmmmh

Although to be fair there might be something bleh with the substitution script where long lines might take long but you probably won't even see this until 10k+. At which point I do have to ask wtf you are doing.

Anyway.

To keep us both sane, make smaller files with scripting functions. Take callbacks. What follows is a bit of code that sums an array.

Code:
//takes an object sumFunction.arguments with properties length (for how many properties) and properties 0 through .length - 1. So length is 3, it expects 0, 1 and 2. Also takes sumFunction.callback, unless you don't want a callback. Result is set into sumFunction.result
sumFunction_INSTANT:"[DELETELOCALS_sumFunction.locals.][sumFunction_startloop*sumFunction.arguments.length > 0*_INSTANT]"
sumFunction_startloop0_INSTANT:"Error, not called properly, sumFunction.arguments.length is non-positive or non-existant"
sumFunction_startloop1_INSTANT:"[SETVAR_sumFunction.locals.index_0][SETVAR_sumFunction.locals.sum_0][sumFunction_loopAddPrep_INSTANT]"

sumFunction_loopAddPrep_INSTANT:"[SETVAR_sumFunction.locals.source_sumFunctions.arguments.*sumFunctions.locals.index*][sumFunction_loopAddPrep2_INSTANT]"
sumFunction_loopAddPrep2_INSTANT:"[SETVARBYNAEM_sumFunction.locals.source_*sumFunction.locals.source*][sumFunction_loopAddAndCheckLoopCondition_INSTANT]"
sumFunction_loopAddAndCheckLoopCondition_INSTANT:"[SETVAR_sumFunction.locals.sum_+=*sumFunction.locals.source*][sumFunction_loop*sumFunction.arguments.length > sumFunction.locals.index*_INSTANT]"
sumFunction_loop1_INSTANT:"[SETVAR_sumFunction.locals.index_+=1][sumFunction_loopAddPrep_INSTANT]"
sumFunction_loop0_INSTANT:"[SETVARBYNAEM_sumFunction.result_sumFunction.locals.sum][sumFunction_return_INSTANT]"

sumFunction_return_INSTANT:"[DELETELOCALS_sumFunction.callback_sumFunction.locals][*sumFunction.callback*]"
If you did this sort of thing in the middle of your dialogue script you'd go insane, I think. You just need to watch out for namespace pollution (that's why I dump everything under the prefix "sumFunction" here and even DELETELOCALS whenever I enter and leave my function.

In your case, you don't need a loop. It can be much simpler. You have an entry point, you might just take the whole "Player." and "Progress." variables for granted (no "arguments" sub-object).

The basic skeleton for such a function is this:

Code:
isXDefinedAsTwo_INSTANT:"[DELETELOCALS_isXDefinedAsTwo.locals._isXDefinedAsTwo.result][isXDefinedAsTwo_check_INSTANT]"
isXDefinedAsTwo_check_INSTANT:"[isXDefinedAsTwo_result*( x == 2 )*_INSTANT]"
isXDefinedAsTwo_result0_INSTANT:"[SETVAR_isXDefinedAsTwo.result_no][isXDefinedAsTwo_return_INSTANT]"
isXDefinedAsTwo_result1_INSTANT:"[SETVAR_isXDefinedAsTwo.result_yes][isXDefinedAsTwo_return_INSTANT]"
isXDefinedAsTwo_return_INSTANT:"[DELETELOCALS_isXDefinedAsTwo.locals._isXDefinedAsTwo.callback][*isXDefinedAsTwo.callback*]"
You have a start line, where you clear your locals (I don't have any, but you know... examples), this is the entry point. You guarantee yourself that if you call the entry point with sane arguments, then nothing will explode. (You can jump straight to isXDefinedAsTwo_result1_INSTANT if you really want to shoot yourself in the foot...)

You have a return line, where you clean your crap up (prevents things like leaving massive arrays around if you made them), as well as clearing the callback so that the next time someone calls your function, they don't trigger the same callback again. (If you do not do this, and you use a callback everywhere except in 1 spot, you will see something like "at random times, random bits of my dialogue are ran again". But what's really happening is just the last bit of dialogue being poked again by the callback).

And then you put this somewhere. Either in a separate file or somewhere near the bottom.

I'd personally go for the separate file which is imported once at the start.

I also have to mention that this is slower. Going through a bunch of lines to perform a bunch of operations is slower than just having a long variable insertion in which DA has a huge equation to solve.

But DA's parenthesis counter is poorly implemented and as such if you give it a long string with many parenthesis then you will have a bad time eventually.

And I don't know about you, but readability beats performance until things get slow. At which point we make a copy of the readable code and then try to make it fast.

-------

Alternatively:

DA has a mod API. Define your OWN triggers via DA's API and just program in ActionScript. It's no longer a "simple" text file, yes, but I really have to say that at some point you guys are just programming things in SDT's dialogue system. And if you have heavy programming work to do then it is best implemented in a programming language and not in Dialogue. Heck, ActionScript even has a debugger, so you can write your code and write "tests" for it (just call it from a main method with some input and check what you get back), and then feed it the same input from your dialogue and it should work. And if it doesn't, you just get the debugger flash player and crash with an error message which states the input you got. IMHO, that beats "and after they say this line, the dialogue stops...." any time.

Oh, it's late.

Oh, I should mention people so they see replies.

SkyHeart SkyHeart

...

someone ping me if they want me to add it to the index of links I have, you know, this one Pim_gd's Advanced Dialogue Guide (v1.01 - updated 10 December 2013)
Hi
Yeah, I don't have 10k characters in one line... just 1.2k for now :)))
But no seriously..

This could work, and I also take it that saving variables and than loading them up is faster than doing it in a busy file?
The reason for this is that I have a lot of variables I need to have the values for.. not only the objects you saw, "Player." and "Progress"
there's also an "Event", and an "Outfits" object as well as a "Misc." object for all the random variables I need...
Actually, here are my initial setting..
Code:
initial_settings:{"Progress.skill.cleaning":0, "Progress.skill.cooking":0, "Progress.skill.bathing":0, "Progress.skill.etiquete":0, "Progress.skill.dancing":0, "Progress.skill.massage":0, "Progress.skill.acting":0, "Progress.skill.stamina":0, "Progress.skill.painTolerance":0, "Progress.skill.foreplay":0, "Progress.skill.dirtyTalk":0, "Progress.skill.service":0, "Progress.skill.sex":0, "Progress.skill.anal":0, "Progress.skill.fetish":0, "Progress.skill.bondage":0, "Progress.stats.love":5, "Progress.stats.love.affection":10, "Progress.stats.love.care":10, "Progress.stats.love.respect":10, "Progress.stats.will":5, "Progress.stats.will.pride":10, "Progress.stats.will.trust":10, "Progress.stats.will.hope":10, "Event.pimp.current":"none", "Event.train.current":"none", "Event.work.current":"none", "Event.reward.current":"none", "Event.punishment.current":"none", "Event.punishment.startingTime":0, "Event.punishment.durationBeatHer":0, "Event.punishment.durationSexPunishment":0, "Event.punishment.durationBondage":0, "Event.punishment.durationHumiliate":0, "Event.punishment.intensity":0, "Event.punishment.rememberValue":"", "Event.punishment.halfOutfitActive":0, "Event.punishment.ruleForADayActive":0, "Progress.menu":"menuStart", "Progress.day":0, "Progress.fileID":0, "Outfits.currentMakeup":"", "Outfits.currentOutfit.number":0, "Outfits.currentOutfit.name":"", "Outfits.currentOutfit.comp":"", "Outfits.currentBody.comp":"", "Outfits.normalOutfit1.name":"none", "Outfits.normalOutfit2.name":"none", "Outfits.normalOutfit3.name":"none", "Outfits.normalOutfit4.name":"none", "Outfits.normalOutfit5.name":"none", "Outfits.normalOutfit6.name":"none", "Outfits.normalOutfit7.name":"none", "Outfits.normalOutfit1.comp":0, "Outfits.normalOutfit2.comp":0, "Outfits.normalOutfit3.comp":0, "Outfits.normalOutfit4.comp":0, "Outfits.normalOutfit5.comp":0, "Outfits.normalOutfit6.comp":0, "Outfits.normalOutfit7.comp":0, "Outfits.MaidOutfit.name":"", "Outfits.FetishOutfit.name":"", "Outfits.BunnySuitOutfit.name":"", "Outfits.MaidOutfit.comp":0, "Outfits.FetishOutfit.comp":0, "Outfits.BunnySuitOutfit.comp":0, "Outfits.UnderwearOutfit.name":"", "Outfits.SwimsuitOutfit.name":"", "Outfits.UnderwearOutfit.comp":0, "Outfits.SwimsuitOutfit.comp":0, "Player.item.catEars":0, "Player.item.lustCollar":0, "Player.item.demonCharm":0, "Player.item.bondageGear":0, "Player.item.ennemaSyringe":0, "Player.item.piercingRings":0, "Player.item.chasityBelt":0, "Player.item.toolsToys":0, "Player.item.toolsCamera":0, "Player.item.toolsWhip":0, "Player.item.toolsCandles":0, "Player.item.contraceptivePills":0, "Player.item.sleepingPills":0, "Player.item.laxativePills":0, "Player.item.alcoholPotion":0, "Player.item.lovePotion":0, "Player.item.breastPotion":0, "Player.item.focusPotion":0, "Player.item.energyPotion":0, "Player.item.woodenHorse":0, "Player.item.prisonCages":0, "Player.item.electricChair":0, "Player.item.extraBedroom":0, "Player.item.roomLibrary":0, "Player.item.roomDressing":0, "Player.item.roomBedroom":0, "Player.item.giftRoses":0, "Player.item.giftChocolate":0, "Player.item.giftCake":0, "Player.item.giftMakeup":0, "Player.item.servantMaid":0, "Player.item.servantOrc":0}

initial_settings:{"x":"*", "debug":1, "Progress.menu":"", "Progress.time":23, "Progress.scene":"none", "Player.guyPronoun":"", "Player.girl.mood":0, "Player.girl.energy":0, "Player.girl.hunger":0, "Player.rules.food":2, "Player.rules.sleepTime":2, "Player.rules.bedroom":2, "Player.rules.outfits":3, "Player.rules.freeTime":2, "Player.rules.allowedLocation":2, "Player.rules.masturbation":2, "Player.rules.freeSpeech":2, "Player.rules.title":1, "Player.rules.workGroceries":0, "Player.rules.workAnimal":0, "Player.rules.workCleaning":0, "Player.rules.workCooking":0, "Player.rules.workHelp":0, "Player.rules.workAmmount":0, "Player.girl.work":0, "Player.gold":0, "lastChoice":"", "Misc.lastMenu":"", "lastValue":0, "lastValue2":0, "newValue":0, "newValue2":0, "Time":"Time", "Spacer":"-", "Energy":"Energy", "energyName":"", "outfitName":"", "timeName":"", "Misc.moodModifier":0, "Misc.moodModifierTools":0, "Misc.moodModifierRules":0, "change":0, "timeModifier":0, "thisTime":0, "lastCheck":"", "tempDuration":0, "Misc.halfOutfitTempComp":0, "Misc.ruleForADayChanged":"", "Misc.ruleForADayValue":0, "Misc.timeToSkip":0, "Event.randomEvent.ID":0, "Event.randomEvent.choices":0, "Event.randomEvent.happened":0, "Player.girl.schedule.hour1":"none", "Player.girl.schedule.hour2":"none", "Player.girl.schedule.hour3":"none", "Player.girl.schedule.hour4":"none", "Player.girl.schedule.hour5":"none", "Player.girl.schedule.hour6":"none", "Player.girl.schedule.hour7":"none", "Player.girl.schedule.hour8":"none", "Player.girl.schedule.hour9":"none", "Player.girl.schedule.hour10":"none", "Player.girl.schedule.hour11":"none", "Player.girl.schedule.hour12":"none", "Player.girl.schedule.hour13":"none", "Player.girl.schedule.hour14":"none", "Player.girl.schedule.hour15":"none", "Player.girl.schedule.hour16":"none", "Player.girl.schedule.hour17":"none", "Player.girl.schedule.hour18":"none", "Player.girl.schedule.hour19":"none", "Player.girl.schedule.hour20":"none", "Player.girl.schedule.hour21":"none", "Player.girl.schedule.hour22":"none", "Player.girl.schedule.hour23":"none", "Player.girl.schedule.hour24":"none"}

initial_settings:{"x":"*", "lastMenu":"", "Player.girl.name":"s", "Player.girl.pronoun":"", "Player.girl.know":1, "Player.girl.age":1, "Player.girl.will":1, "Player.girl.love":1, "Player.girl.personality":1, "Player.girl.personalityA":1, "Player.girl.personalityB":1, "Player.girl.personalityS":1, "Player.girl.personalityR":1, "Player.girl.pastAttitude":1}
just program in ActionScript
Yeah.. probablly the best idea.. but I don't know how.. but I'll probably have to learn cause yeah, I do find myself programing in dialogue script.. I have an all out raw "while" loop for asigning actions to the schedule system I made which would go so much faster in actual code but.. anyway, I guess WeeWillie WeeWillie did make his own triggers for a reason..

In other news, I did expand upon that big line, and it executes... fine, but it requires the best framerate you can get in SDT. So, my solution is to just remember what setting the player is on, set them to low, disable everything while he's in the script heavy file, and apply them back whenever the girl appears,

But if I do find myself crafting another one of these frankenExpresions I'm just gonna take a break to learn AS.. cause it's getting ridiculous..

Thanks a lot for the little function file idea. If it's fine loading back that many variables into main file every time I go back from the function I will do it this way..
Or should I just make all those objects global?? That seems like a bad idea to me but still worth asking :)
 
Top Bottom