Re: More good stuff.
I completed my auto battler for Exalted 2e. It took me the better part of a decade to slowly stitch the formulas and trim the fat on origin points. It's done though! It's actually in it's 1.0 functioning system. It makes choices based on IF then else, and seeds in random actions, rolls those actions, spends the motes and willpower and health, adds the limit. Pretty much runs a full combat or mass combat (no social combat, nor will there probably ever be one) from start to finish in just under 30 seconds. I'm sure if I knew Python, or someone looked at my spaghetti code they'd whip out a .02 second version with dynamic prompts and visuals. I'm happy with what I have though. It's basically worthless to anyone else, since it's made for my purpose by my method. I love it though.
It's hilarious though, I've been testing it and put in some old characters in past games and saw how combat went, and...it just...somehow...**kiss fingers* It just nailed the roles that are so nuanced, that played characters I've been at tables with for two decades, and made choices, over repeated battles as the players would have, and did.
I welcome the AI Overlords, but I appreciate my little spreadsheet abomination of code.
I haven't written in literally EVERY charm and spell, but the vast, vast majority are included. The output is excellent too. Well...very bloated if I'm honest, but I have OCD and so that's a feature not a bug. So it transcribes everything action by action and even preserves reflexive charm use in a way that doesn't make me want to cut my eyes with razor blade. That was huge hurdle that I overcame, but still couldn't reach the finish line for years with all the work that could have been done just aggregating that data to its own output. It was nightmarish to go through methods, and then when it was done, just groan and realize it really made no visual impact and was just as dreadful of hundreds of rows of text.
I'm so proud though. Just...I'm so proud of having completed this. 3e is old now, and I just finished by v1.0 for 2e Exalted. It does what I set out to do with it. I need to add more charms and spells, until every conceivable one is there. I need to better seed the random roles. I need to do things IF I want to improve it. It functions though. As is.
What this means is I can have PC's subordinates take independent actions (like manse defense, or infiltration) and not go through one of the two bad options; wasting GMing time rolling it out solo, or just waving my hand and making gut assessment. The latter is always an option I use when obviously appropriate. The former, and having players roll out their underlings actions, have been my MO. Now I can just set the database and save that version for a particular game.
I want to say so bad that that's what's "better" about having spreadsheet, versus a program; but I know that Python would be able to have protocols far more precise and still maintain permanent state based content. I wish I had the foresight to know it would take be eight years of work and one year of latency, I could have better used the time learn Arch Linux (for other reasons) or base functioning Python. I still can, but probably won't.
Anyway. This was such a cherry on top of a crap sundae that has been my day. It was such a minimal clearance to go from 99.99...% done to version 1.0. It could not have come at a better time. I ran a few dozen combats and just enjoyed seeing what came out.
I'll share one excerpt from the auto battler that particularly captured the spirit I always wanted the spreadsheet to have.
Kejak uses Without Assumption. He's set to the role of boss, has the attitude conservative, and the motive to kill. A Lunar has the role of defender, the attitude of at all costs, and motive of clearance. Lunar uses FRozen Ripple Lair with the enhancement that doubles time differential after an unknown assailant is harming his mate. Lawgiver mate casts Mists of Eventide and activates Metasorcerous Phylactery to release it when a "new foe appears". The Hidden state clicks on Kejak. The damage from Kejak on the Lawgiver is high, but mitigated down to 0. KEjak is 10 motes and 1 willpower down, after first attack but Lawgiver only down 8 motes. Kejak Water Spider Bites but chooses not to use sutra (master is only valid option, student is basically in the "N/A" or 0 priority, but Lawgiver is only down 21, 1 W to perfectly parry, while Kejak is down 30 motes and 1 willpower. Kejak finishes his action. The spread sheet processes this exactly as it should, in the right cells, at the right row, and with the correct values. Perfect! Lunar enters the High Alert attitude and opens the Frozen Ripple Lair. Lawgiver enters the conservative attitude and then in the same action changes again to the systematic attitude. Showing a best case outcome in a very high complexity combat. Being able to trip each level of checks flawlessly. Kejak enters the determined attitude and survivor role. Not sure why, the survivor attitude, but I'm guessing because his target has no appreciable impact shown, and Kejak's "player" registers this as a value less than acceptable, and must perceive he's outmatched. No idea. Didn't make the spreadsheet to ever open the black box. I just thought that was an interesting quirk. Kejak uses Master Sutra of PRismatic Arrangement of Creation AND Charcoal March of Spiders. Enters all but one Prismatic Arrangement of Creation Form, all but Games of Divinity Form (IIRC). Kejak next attacks the Lunar with WAter Spider bite with three attacks, costs another 38-ish motes. Hits with two attacks, but manages to roll zero successes on his 12 damage dice (between two attacks). Lunar and Lawgiver enter the Hidden state, as they enter the FRozen Ripple Lair. Kejak enters the ambush attitude, which just made me very gleeful. Kejak takes some actions I need to patch later, that by rights he should have been able to use prior to the combat. I just didn't think about the fact I need preload for seemingly innocuous charms, that nonetheless cost KEjak 17ish motes he should have spent and respired. Kejak waits for ten actions, before entering the watchful attitude and having an amalgam summoned by Faithful Ally. Meanwhile Lunar and Lawgiver only have one action pass, during which they enter the ambush attitude and motive pause. They exit, and what follows is classic Kejak minimizing impact on himself while taking small but certain actions, instead of going for the Water Spider Bites, using his now incredible post soak damage and ability to tax any mote expenditure. Kejak, however, was caught by the contradiction note that actually showed he failed the Mists of Eventide. This was the final moment I cheered. Because the Phylactery and Without Assumption don't have special interraction, that is specifically for each other, but the Without Assumption noticed it was a reflexive action and an area effect. The Mists of Eventide recognized Kejak as not hidden. The program...I call it that because, to me, it is. This is just a spreadsheet though. I had planned for parallel instances to fracture rather than bottleneck. So it rolled out Kejak fighting but fleeing, but also long before that, Kejak being hit by the Mists of Eventide and losing his Hidden State. Ultimately I'd rule the Phylactery would issue the "attack" of the mists of eventide as a...I guess contingent action, or First Priority Reflexive. Not sure which term will be more universally applicable and thus which will be labeled. It was enjoyable to see the branching of the combat; I'm just glad it only branched once. I had not anticipated the halting problem coming up from that, but clearly I need to have some sort of count for how many times a given file can branch and failsafe aginst the spreadsheet crashing. Even four branches could be killer if I'm doing other loads of work and not thinking about it. The idea is to set it up and then just run it and go back to other tasks. Worse case scenario is the spreadsheet crashes and I look for nonexistant save that I "knew" I did, when in fact the program crashed before it could halt.
In conclusion. Kejak spent too many motes. That was the only patch I'd make. The fact is, I'd roll out Kejak myself or conclude the trial to be better hand waved. I wanted to test the limits and it...it actually was really rewarding. I don't have children, nor contact with my niece and nephew in many years; so it's a far cry, but I don't know how else to describe my pride in seeing the program I made do an excellent job. I created it, and rose to the task of fullfilling the purpose I created it for.
I had done so much debugging. I mean, seriously, that was my 2001 strategy showing of just bodging and debugging, but I think I can say without exaggeration that I was astounded that nothing seemed to be missed.
In the end, it's a file now. Like time is construct that in all its dimensions is static, and only seems to be linear to our human minds. The combat took more time in game, than in RL. By quite a bit. It's memory I'll have, but it's sort of sad too. I don't really know why. Maybe it's that such a grand battle, as I've seen it in games where PCs faced or sided with Kejak, should have had more than procedural dictation. Maybe it's that I coded the spreadsheet so thorughly it ran an unsurprising duplication of actual battle, with similar preferences and outcome. Or...maybe it';s that I've spent SOOOOO long waiting for this fireworks show, and just knew deep down, knew and accepted, and move on with how to go from acceptance to resolution...and it...it just worked. That while I built it to do a this job, that I've spent so many hours, countless weeks in fact, doing the work so it could do the rest...I no longer have a part that's necessary in this project. That it's finally done to a standard I may never have the need to update with any conviction. I think it's combination, but the fact that I have this spread sheet to...not roll out combat...it's...it's...it feel funny. Hollow almost. I'm glad I have it. It was fun to work through toward the end. It was a great boost to an awful day. I think the most likely and largest factor is...it's just a shortcut now. The wormhole is created, the hard part is over. It's supposed to be there for the little characters, not the Kejaks and PCs. I will probably never spend a tenth the time I have with it, even if I use it for every game I run, and I never stop running Exalted 2e. IT was worth the effort. There have been sessions that PCs spent time fortifying allies and defenses, and then sessions that felt bad when their characters weren't on screen, but I'd have to figure out "So how will this play out" without bias, but without missing the Forest for all the trees. This is a program that easily reduces full month of posts, to a single hour of entry and then I hav the file saved to produce for player interraction. That will mean so much. IT will let me focus on the players, and also let the many, many hordemasters see fruition to having contingent defenses.
Today....well Today is no longer the day I thought it was. Well, by that I mean It went from Midnight to morning. Yesterday sucked. Today is good. I'm going to close down the web, and relax.