Hi TotalFluke,
Long time lurker, I'm enjoying your game a little too much
Since you didn't check out my DM I'll post it here. I'd like some pointers to your own scripting language, functionally how was it created (did you create your own lexar+parser+interpreter), and semantically how to run callables in the console (when first parameter being Person), and how to call some tfl functions not found in the modules (eg. id_to_char, can't follow &module::func without knowing the module name).
Lastly, am I blocking sister story line by having her work at my club?
Thanks!
Yeah, the TFL language I created. It's not very original, it's most closely resembling Perl but with a bunch of simplifications to make the parsing easier at perhaps the expense of readability. I did create the language years ago for another project and have been re-using/modifying it as necessary. I've seen a lot of modding/scripting languages and they are either very specific to the game or extremely convoluted. So I wanted something simple from which fast code could be generated.
I'm hoping to publish a guide on the language at some point to allow users to create their own TFL scripts. Main reason I haven't done so is the lack of tools to debug the scripts. The logging system I use only works for me because in my dev environment I can see the log messages in real time, but on the published game the log file doesn't update until the game ends. So I need a solution for this.
In the meantime to answer your specific questions: calling a callable (love that you used that term!) can be done with the run command like:
run &module_name::call_name arg1 arg2
That will run the function "call_name" in module "module_name" and pass "arg1" and "arg2" as parameters. You need to always qualify the callable with the module name and specify the proper prefix: & for functions, ! for interactions, @ for actions or % for events. Then the arguments, if they refer to a character you need to specify them like char:3 or club:32. String arguments need to be enclosed in quotes.
For example, lets say that you want to find out which gender character 1234 is attracted to. You can do that by entering this in the console:
run &util::want_gender char:1234
To do something more complicated, lets say you want character 1234 to learn a random trait that character 5678 has. You can do that via:
run &util::learn_random_trait char:1234 char:5678 3
(the 3 is how many times to try until it finds one that 1234 doesn't know about)
As for the built-in functions, like &id_to_char (these are the ones without a module name), you can't call them directly from the console. The built ins are functions not defined in the TFL code but rather in the main C# code, either for speed or for full access to all the system data. Note that functions without a module name can also be defined in the local module which can be confusing.
You can get info as to what these built in functions do in the cheatsheet.txt file (in the runtime directory), created when you run in dev mode.
As for the sister, if you are referring to the college-student sister, yes. If she's not employed she will eventually get a job as a stripper in another club which will trigger some scenes.