#Codrineyes TowerTesting

1 messages · Page 1 of 1 (latest)

spark pendant
#

This script lets you idle through tower testing. You just press x to start/stop the script. It can be initialised at any point with any screeen active, as soon as you enter town it begins.
It waits for your tower to die, and then it enters a new difficulty, you can start/stop cycling through regeons by pressing w.
Some qol features are 'r' for an instant restart of your tower testing round, 'e' to exit your tower testing session and 't' so that, when in tower testing, you can open the stats menu and look at how many resources/s you get and at the wave acceleration factor
To prevent the right side of your screen from being an eyesore from the variables, stopping the script unasignes the other global variables, this means that if you want to cycle through regeons, you've got to press w again
In theory it works for everyone, if you've got issues don't hesitate to ask/report.
Known Issue: Tower Testing Stats doesn't work if you have any menu open
Thanks to fireball541 for fixing my broken attempt at the cycling AI that can be found here #ai-help message

The script has its own file in the scripts repo, check it out here

#1186247659233751140 message

The script has been finished, check out the message here

#1186247659233751140 message

#

This does not automate your blueprint, you require a separate script for that. You are likely to find a bp you're looking for by checking out the pins in the progression channels
there's an intentional delay inbetween restarts so that the blueprint script has time to perform its logic for when not tower testing, if you've crafted a bp that functions without the need of a seperate script, you can go into Codrineye's TowerTesting:Difficulty Cycling and delete the wait after the waitwhile (isTowerTesting || anywindowOpen) this won't break anything, it will speed your idling up but it is likely to break your blueprint scripts
I've tested this with winAI2.23 and winRP+ 1.12 found in the pinned message at https://discord.com/channels/488444879836413975/1094013225915396127
If you're interested in making one for yourself, I'm more than happy to help. For an easier time, I recommend using d0sboots's AI editor, use the coordinators so you don't have to debug and you can use bluecats's https://discord.com/channels/488444879836413975/1163605891833139331 Watercat AI as a template to make the clicks register. The goal is to get the best functional AI, not the most popular/best known

keen mantle
#

I need to execute a script at the end of each run, to disable some softwares, and I tried to put the 'execute...' in 2 places in your algorithms, and I couldn't get it to work, where can I put it ?

spark pendant
#

executesync makes the program freeze up as long as the executed file is running, and execute just tells the program to start the specified script

keen mantle
#

True, I could try to do it inside my script, I didn't think about it

#

but I will try that, thank you !

spark pendant
spark pendant
spark pendant
#

yey, thank you

dreamy vortex
#

#ai-help

spark pendant
#

Update to the AI to better support 90/90 farming by the creation of 2 modes.
Just like before, pressing "x" toggles the script on and off. Tower testing is stopped until you're looking at town and you've selected a mode.
By default "q" is used to cycle between the modes.
The package comes with "Codrineye's TowerTesting:Restart Every X Sec", which will restart your run every 30 real time seconds (as requested by@rishi1502).
If your Facility AI shows global variables, you can use variable names and their values to get a better understanding of what's going on.
"active" is the toggle of the script
"CurrentMode" tells you what's being prioritised
"Region_Cycling" determines if the script can move to regions, switching modes always enables this and you can toggle it by pressing "w"
"change_difficulty" is true when y is changed
"y" is the difficulty you're entering

dreamy vortex
#

Lmk when new update to inc inf 1 getter

dreamy vortex
#

Also pin it

spark pendant
dreamy vortex
#

auto era divider?

#

and power disable included?

spark pendant
spark pendant
spark pendant
dreamy vortex
#

@spark pendant how make it so it leaves upon getting inf1

spark pendant
dreamy vortex
#

aww

#

so the earlier one was better

#

can u help me do it?

#

@spark pendant

#

like make it

spark pendant
#

sure
head over to #ai-help

dreamy vortex
#

or do i just use the earlier one and wherever it says era i make it inf

dreamy vortex
#

ahhh gotta remake inf 1 exiter

scenic crow
#

so this just scrolls thorugh all difficulties until theyre at inf 1?

spark pendant
rare flume
#

the difficulty>region mode hasn't worked for me, it successfully swaps difficulty but doesn't start a new round of testing, but the other mode is working fine

spark pendant
#

that sounds interesting
I probably messed something up
which version are you using?

#

does it have the "W" cycling toggle?

rare flume
#

yeah it is the most recent version in this thread

spark pendant
spark pendant
#

This update marks the end of Codrineye's TowerTesting
The AI is officially under rework, structure version 0.3 is getting bumped up to version 0.5

## what's new?
Instant Exit now has a timer, default is 10 seconds, which lets it quit by itself. this no longer effects the keybind
The AI is now equipped with a mine switcher, you initialise it with m
radiant canopy
#

still regeon

buoyant osprey
#

im having an issue getting it to re enter TT

spark pendant
buoyant osprey
#

no it gets stuck at main screen

#

the town screen

spark pendant
#

which version?

buoyant osprey
#

latest

buoyant osprey
#

yes

buoyant osprey
#

ooh ok

spark pendant
#

if you still experience a problem, please ping me

buoyant osprey
#

ok do i have to configure anything else in the script or just press x?

spark pendant
#

just press the x, it should be functional without anything else

buoyant osprey
#

ok ty

spark pendant
#

no problem

knotty birch
spark pendant
knotty birch
#

ok ty

#

and if doesn't dies it restart or not?

spark pendant
#

it exits, pardon

#

death = exit and initiate cycle

knotty birch
#

but if you doesnt die?

spark pendant
#

it keeps running until you die
unless you add the timer from the latest version
just "exit"

#

I think restart is a little risky for the script
I forget tho, it's been a while since I last looked in its innerds

spark pendant
# knotty birch .

you're using that version?
I can't be sure but that looks like version 2
if v1 had kinda bad logic, v2 has even worse 😅

knotty birch
#

I use v1

#

The first message

spark pendant
#

oh, that's good

spark pendant
knotty birch
#

k ty

hollow iris
#

@spark pendant Im on the first difficulty of chaos, It keeps restarting the run over and over again, with the restart timer being at zero everytime.

#

This problem just started, what is was around ~80B. Its been running fine since the I started it(after I unlocked the first Era).

ornate wasp
#

did you set it to 0?

hollow iris
#

no, I left to town and then when back to tower and started the script again and it fixed it.

#

I had died multiple times, so Maybe that had something to do with it.

spark pendant
hollow iris
#

How does the time restart work? does it increase by a multiplied amount after every death/restart?

spark pendant
#

it depends on which one you're talking about
version 2 or version 3?

hollow iris
#

I think I might be on version 2.

spark pendant
#

restart every x minutes?

hollow iris
#

X seconds

#

Is it possible it hit the overflow value, resetting to 0 then couldn't increase do to 0*x still being 0?

spark pendant
hollow iris
#

Ya I am, I may be on the wrong sub channel

spark pendant
#

my AI just has

remain in regeon
y```
hollow iris
#

oop, :P

spark pendant
#

no worry
I can't help much, I never cracked that one open

hollow iris
#

Its all good, lol. My bad.

spark pendant
#

if you want one that I can guarantee works, you can use this one
#1186247659233751140 message

#

not because it's a competition, just because I couldn't get the one you're using to function XD

hollow iris
#

I just started using this one yesterday, and It ran all night, then for a while today. It only failed when I was no longer able to reach era.

#

Ill, try that one. :)

spark pendant
#

mine or the most-in-one era/infinity?

hollow iris
#

yours, Im currently using most-in-one...

spark pendant
#

aha
v2 failed

#

well, let it roll, and we'll see how v1 behaves

radiant canopy
#

btw I think your main post links to the wrong one @spark pendant

radiant canopy
#

worked a bit on a rework of the script, lemme know if you see anything weird @spark pendant

spark pendant
#

oh damn
many thanks bluecat XD
really didn't expect that

radiant canopy
#

got every script with at most 2 impulses and 11 lines so it fits below the minimum ram cost

I'm hoping it should work fine, @spark pendant tell me if you see any bugs and I can try to fix them, I can't really test it right now though

spark pendant
#

it's all good
tysm for removing the bad logic and turning it into a good scrip XD

radiant canopy
#

there wasn't too much that actually needed changing, it was mostly moving stuff around, changing some of the names, and making it work better with the editor. Some of the index stuff was slightly weird though, but that was an easy fix

#

idk where the clicks are clicking though, I'm hoping they're right

spark pendant
spark pendant
#

one million thank you's for doing this

radiant canopy
#

totally didn't just see a bug

spark pendant
#

:D
it's ok, it can wait, unless you want to use it rn (but I don't see why you would honnestly XD)

radiant canopy
#

nah its all fixed now

#

should be

#

I don't know if I'll be dragged into doing something later so I'd rather it be bug tested now if you can

#

I wonder if I can download the external editor

spark pendant
radiant canopy
#

@spark pendant did the ai work?

spark pendant
#

seems to be working perfectly
that's interesting

spark pendant
#

Fast update because it's not fair to keep people waiting for a good AI

This is the modified one made by bluecat up above, with the difference being that it now uses relative vectors instead of opened up relative vectors (basically, I can now guarantee that you're clicking in the right place)

spark pendant
radiant canopy
#

removed miner?

spark pendant
#

it was just for 1 user, and it wasn't even that efficient at its job

spark pendant
#

updated script so that it's properly delayed and its conditions have been fixed a little bit

radiant canopy
spark pendant
#

oh, I forgot to delete it

#

it's all good
this one is basically just a rushed fix so that @hybrid portal can use something at least

radiant canopy
#

also the force restart presses the stats button now

#

and the auto exit now just waits until era is 1 or above

spark pendant
#

yes, that's what I meant by "rushed so that zizzy can use something"

spark pendant
#

that's also why it doesn't hold a toggle, because you cannot access the stats tab unless you're in a round of towertesting and a click close to the middle of the screen doesn't have much wrong it can do

orchid wigeon
#

im probably doing something wrong but, for me it doesnt seem to work? doesnt start waves, just goes to tower tab and...

spark pendant
#

seems about right
it seems as though this relative vector struggles with some resolutions

orchid wigeon
#

soo mess about with the resolution and hope it works? ;P

spark pendant
#

well, press f2 and tell me what resolution your screen is at

orchid wigeon
spark pendant
#

yea, seems about right

orchid wigeon
#

had the issue at my home PC. now at laptop, 2560x1334

#

now sends me to the endles tab in testing but doesnt start

#

F4 and then X

spark pendant
#

1280/667
gimme 1 small moment

#

oh, do you have dynamic ui on?

orchid wigeon
#

take all the time u need 😉

#

i had 😉

#

(just turned it off)

#

there it goes!

spark pendant
#

that explains it XD
maybe I should make a better documentation of how to use the script XD

orchid wigeon
#

so it goes over normal difs, then endless difs then next area?

spark pendant
#

nope
just endless

#

well actually, I think doing it in normal will brick the AI XD

orchid wigeon
#

hmm, dnno xD hve taken a quick look at some codes before, but not my cup of tee "yet" xD

tight elkBOT
#

@orchid wigeon has earned the Spark role!

rare patrol
#

hi guys i need a inf push script

manic juniper
#

isn't that a bp-specific thing

spark pendant
#

pretty much, yea

rare patrol
#

no like i need a afk inf push script

spark pendant
#

I cannot guarantee success
but you can give it a try

rare patrol
#

ok

#

is there a era divider in this

spark pendant
#

no, it's purely for manoeuvring between every region and every difficulty

rare patrol
#

k

#

whats the controls

spark pendant
#

x and w
X to start, W to toggle region switching

rare patrol
#

ok

#

i gtg

#

ill test afterwards

#

ok so i wont go becuz its raining outside so i can test

plucky stratus
#

does this work on era

spark pendant
#

it should, yea

#

there's nothing in it that should prevent it from working in era

plucky stratus
#

alright coo

#

well more specifically

spark pendant
#

only thing you need to make sure of is that you have all regions unlocked and that you don't have adaptive UI scaling enabled

plucky stratus
#

can it like do the thing

#

where you have to turn off the softwares

#

or else era shield goes infinite?

spark pendant
#

it doesn't interract with anything in tower testing
it just gets you in a region and difficulty and exits tower testing on death to cycle

plucky stratus
#

ah ok

spark pendant
#

you need a bluepring AI for that

plucky stratus
#

k

solar aurora
#

do i need some specific graphics settings to get it to work? i need to press to town after every clear for it to go to the tower testing and start next difficulty

spark pendant
solar aurora
#

no, i clear 100 waves, then it just sits at the results screen till i press go to town, then it continues

spark pendant
#

or if you're using the AI on normal and not on endless, that's not compatible with the AI since its exit condition is based on health

solar aurora
#

oh, its for endless?

manic juniper
#

#1136809113578381372 has an option for all normal modes

#

set the stage value in the config script to 0

spark pendant
#

yea, scratch that, the exit function is compatible with the UI's, I was thinking about the restart function

solar aurora
#

its actually working sometimes

spark pendant
#

when your health is 0?

solar aurora
#

no i win and it goes to next by itself

#

but just sometimes

spark pendant
#

without any modifications to the code?
I'm impressed my half baked logic is able to do that XD
I'll fix it rq, one moment

solar aurora
#

seems to be working better and better the later areas i get to

#

the first 3 areas was like 0 working, since metall i havent pushed a single time and it just works

spark pendant
#

that's strange behaviour XD
If you want something reliable, go with what fireball recommended, but feel free to stick with this if it works

solar aurora
#

thanks!, and awesome work

tight elkBOT
#

@solar aurora has earned the Spark role!

solar aurora
#

the one fireball reccomended needed more ram than i have, so will try later will use this to get ther

spark pendant
spark pendant
spark pendant
#

Codrineye's TowerTesting has been finalized

Instead of continuing to place the instructions on discord, I have moved the description over to my github
https://github.com/Codrineye/Codrineye-s-TPT2-Compendium/blob/0e8a66f91507b1041a4e0ea059c9131ddfaf74c7/TPT2 Scripting/Codrineye's TowerTesting/Codrineye's TowerTesting.md

If you end up experiencing issues, please let me know

Remember, this AI does not have any knowledge of your blueprint, so you will need a separate blueprint AI for activations if your blueprint requires it, this goes for software activations

You can use this AI no matter what difficulty/region/game phase you're in, this AI will keep you in the round as long as you're alive

I mention it in my repo but I'll mention it again, this AI is incompatible with Dynamic UI Scaling, see the repo as to why

If you have any requests of this AI, please let me know, you can ask me in my post or in #ai-help, please do not ask me in other peoples posts or in progression channels as I will try and redirect you to #ai-help

This AI is unlikely to be of any help in challenges, the escape condition is unlikely to be met if you finish the round in under 100 waves, remember that a round means a session of tower testing, not a wave

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

ornate wasp
#

i must ask the significance of these numbers

spark pendant
#

it's a relative vector
to get the position of the button for Easy, the y coordinate needs to be 290.0

#

I could also just delete that whole sequence by hiding Curent_Diff, if you think it's better ignored

spark pendant
#

What was the bad logic in there?
stoping scripts and unsetting variables
the amount of scripts was just because of prototyping

spark pendant
#

welp, I've already defined the AI, if you'd be willing to give your thoughts on the new features, that'd be neat

#

whenever you want, ofc, things with me are always flexible

spark pendant
#

Update to version 1.1 to support a newly added integration within #1275961817151307847

spark pendant
#

Update to version 1.2.1 to apply bug fixes

Merged Restart At Will within Initialiser, this can now be seen at the bottom of the AI
Region>Difficulty no longer repeats the same region at the end
The shutdown message is gone, so is the z impulse, replaced with r

manic juniper
#

What's next? Version 1.3.3.1?

spark pendant
#

it would've been 1.2 but because of the fixes I had to add .1
I don't think there's going to be another .x

snow zealot
#

❤️❤️❤️❤️❤️

spark pendant
#

Update to version 1.2.2
Rebranded to Cods TowerTesting instead of Codrineye's TowerTesting to include a version in the packages name

spark pendant
#

Update to version 1.2.5
Fixed infinite copies I missed
Added a variable in Initialiser, I give an example on the repo
Moved the timer at the bottom of Enter Region

spark pendant
#

update to version 1.2.7
Added Restart At Will back into the package

wind swallow
#

Thank you for this. I'm doing 90/90 inf with bluecat's AllBlue BP and this is working great so far.

wind swallow
#

@spark pendant I am curious though. why did you add a script impulse to open wave stats when there is already a button to do that same thing in game?

spark pendant
wind swallow
#

Hmm. That doesn't happen for me. It just opens the stats and I still have to click over to the waves tab within the stats

spark pendant
wind swallow
#

My modules tab stays open

spark pendant
# wind swallow My modules tab stays open

oh, that's interesting
so it simply doesn't act?
I probably have the anchors of the button wrong
can you send a screenshot of your game after pressing t with the debug overlay <f2> active so I can get your screen resolution?

wind swallow
#

Sure. I'll need a minute

spark pendant
#

at your convenience, take your time
just, please ping me with the reply :D

wind swallow
#

@spark pendant

spark pendant
#

many thanks

spark pendant
wind swallow
#

yep yep

#

I play on a 3440x1440 ultra wide monitor and in windowed mode on it. so a very custom resolution since the window is not fullscreen either.
But either way, Dynamic UI is off and your relative vectors have worked for everything else

#

i.e. selecting region/difficulty works well

spark pendant
#

I think I fixed it
if you'd be willing to test it, I can send the package right away to see if it fits with your conditions

spark pendant
wind swallow
#

sure! I'd be happy to test it out

spark pendant
# wind swallow sure! I'd be happy to test it out

nice
I also changed the version so you can just disable the other package and re-enable it if something in this one goes catastrophically wrong XD
but as long as you don't shut down your AI overlay, the AI will keep your progress (so you won't have to start the cycle over, if that's a concern)

wind swallow
#

I'm happy to clear out the cache. I can just press e a few times to skip a stage anyway. no big deal

#

ok it works when I have the modules closed but not when I have modules open. So works as advertised in the readme now

spark pendant
#

while I have you here, and I opened up the project again
do you have any feelings around screen_delay?
would you like it to be hidden, or do you not mind?

wind swallow
#

I don't really konw what it's doing but it doesn't bother me that it's visible

#

I was curious about what exactly r does.
it restarts the round on the current region/difficulty but also adds a 30s restart timer? and sometimes the 30s pass by and it doesn't reset again? it confuses me what it's trying to do beyond just restart the current tower testing region/difficulty

#

was useful when I was doing 90/90 era but now that I'm grinding to 90/90 inf 1, I don't need the timer/restart so I don't plan on using it but figured I'd ask about it (also I'm MT13 now so no need to restart every 5 minutes due to ||Wave Breach||

spark pendant
wind swallow
#

well I guess I am trusting my fps to the script from dfirestorm:
#1143725850982879325 message

spark pendant
spark pendant
wind swallow
#

I thought winAI automatically dies and restarts every 60s?

wind swallow
spark pendant
spark pendant
wind swallow
#

oh ok. for getting to era 100b I used the CaptainCursical's #1093910772318470185 message and it had a 5 minute timer. couldn't I just set a restart to be every 30s or 60s with that? I guess I don't understand what yours does outside of setting a timer for a restart()?

#

one thing that would likely be a HUGE QoL would be making a custom restart ai that has customizable timer so people don't have to go back to faciltyAI to change the timer everytime. perhaps only a few selections would be fine? 30s, 60s, 5min, I'm not sure if longer is useful but maybe?

#

ideally, the restart would work outside of this specific ai so it's more generically useful

spark pendant
#

the timer wasn't in my original idea for the automator, that came after a request The package comes with "Codrineye's TowerTesting:Restart Every X Sec", which will restart your run every 30 real time seconds (as requested by@rishi1502).

wind swallow
#

When I first read your README, I thought when I pressed r it would see what the round real time was and use that value for continual restarts. i.e. if I pressed r at 00:10:03 it would restart the round every 10 minutes and 3 seconds and if I died, it would proceed to the next region/difficulty. that does sound cool

spark pendant
#

yea, I could add a recording system to it, now that the devs added a new function to give us that info

wind swallow
#

sounds cool.

spark pendant
wind swallow
#

OH!!!

Does it have 30s restart if not era?

If NOT era! I didn't see that in the docs, that explains why it sometimes did the restart at 30s while I was era climbing and sometimes not. super useful!

spark pendant
wind swallow
#

oh that makes sense.
Does it actually confine to only if not in era? that seems less generically useful for your 90/90 as some may want it if trying to 90/90 inf before MT13

spark pendant
wind swallow
#

and it's supposed to only run once?
like restart now and again in 30s and then never again?
Can you toggle it instead of auto disable?

#

would be nice if you pressed r it would show the restart timer amount on the right side

#

looks like the timer portion isn't even working while in era for me right now in 1.28

#

One major QoL would be a an impulse overlay kinda like the factory/museum ai. I keep forgetting what x, q, etc. do since I'm flipping between a few scripts depending on what I'm doing

spark pendant
wind swallow
#

wonderful!

spark pendant
wind swallow
#

it can't just be a global to show that it's 30s?

spark pendant
#

well, actually
It wouldn't be that bad, but it will just lack some precision

#

and adding that will make it an inaccurate timer

wind swallow
#

maybe just a boolean that shows it's using a timer to restart the round?

#

essentially I want to kow when I have pressed r. sometimes I think I'm typing on a different monitor and ... 😄

spark pendant
#

active= has that covered

spark pendant
wind swallow
#

active shows true when CodsTowertesting is running but doesn't show the restart timer state unless what I'm seeing currently is related to bug you noticed and fixed

#

active = True
but round timer is ~1 minute:

spark pendant
#

if active doesn't exist or is false, you will no longer get a timer
if active is true, you will get a timer

wind swallow
#

sorry for the snowstorm blow out screenshot lol

spark pendant
#

no XD

wind swallow
#

I still don't understand active=true. sorry

spark pendant
#

wth?
I completely missed the worry from that
3 am is taking a toll on my communication skills, lol XD

wind swallow
#

haha get some sleep. we can chat later. I'm PST so it's about dinner time anyway

spark pendant
# wind swallow I still don't understand active=true. sorry

version I'm modifying now that you don't have access to

:import TowerTesting_lib
:name {package(Restart At Will)}

game.newround()
key.r()

global.double.set("screen_delay", 0.5)
goto(if(\
  {state_get}, \
  if(contains(impulse(), "key."), restart, timer), \
  99\
))
timer:
wait(30.0)

restart:
restart()

so
if active = true, I move to the second condition
if the script was activated by pressing key.r(), the AI will skip to restart: and restart, otherwise, it moves to the timer

if active = false, I go to 99

wind swallow
#

gotcha! when you are ready to release 1.28 or 1.29, please let me know. I really find this package super helpful

tight elkBOT
#

@wind swallow has earned the Ember role!

spark pendant
#

that's its purpose :D
I started developing it when I was mt11 to get me to mt12 XD
I couldn't get other packages that claim to do this cycling to work, so I made this one

#

Codrineye's TowerTesting was originally an AI to make my blueprint function
I then repurposed the name after getting mt12 to create this, because I needed 90/90 era

spark pendant
wind swallow
#

only other thing that may be nice is, is there a way in a script set the tower hp to 0? that way it can trigger a region/difficulty transition?
i.e. eventually, I'll want all 90/90 to be inf 1m and 100m and I would like to have a way to trigger your script to go to the next thing in the list

ornate wasp
#

i think you could mess with the inf number where it kicks you out, if it does do that automatically

wind swallow
#

right now I'm using blueprints and ais that don't survive past the point I care about.
i.e I used an ai that let era kill me for unlocking era and I used one that kills me at inf 1.
But I'm not sure how to have one that lives until inf 1m or whatever

#

ideally I'd like to look at an inf number like you are suggesting Yoshi and then trigger CodsTowerTesting to go to next in list

spark pendant
#

well, that is the purpose for the additional_cond
it's a more convenient way to add a custom condition than it would be to change the entire waitwhile before the exit() XD

wind swallow
#

how do I do that in your additional_cond?

#

it's a local in your script so I can't access it from another script, right?

spark pendant
#

it's a local, the whole point is that you don't really have to mess with it in other scripts

wind swallow
#

ok, so how do I have it look at the inf number?

spark pendant
#

so, if you want to additional_cond, you'll want a basic condition
to make sure I understand, you want the AI to exit once you reach inf <number> right?

wind swallow
#

yes, exactly right. I'd like to use your ai to get 1m inf in 90/90

spark pendant
#

local:set_double("additional_cond" comparison:double(game:infinity != <number>))
I think that's the ingame sequence

#

additional_cond = infinity() != <number> is how to write it in d0s's editor XD

wind swallow
#

I'll try to modify the 1.28 you gave me in dos' workspace and import to game. first time doing that in this game 🤞

spark pendant
#

umm, you'll need the source code, not the import code XD

spark pendant
#

but in all seriousness, just tell me the number you want and I can do it rn XD

ornate wasp
wind swallow
#

1000 would be fine for now and I can modify it as I go up in progression

#

I'm working on getting inf 25 right now and then I'll be in mt15 and I'll want to get everything to a better inf for stones

spark pendant
spark pendant
# ornate wasp why, is it because of comments?

no
because otherwise, you'd need to make sense of this

:local bool additional_cond

key.x()

additional_cond = infinity() == (10.0 ^ 3.0)
gss(("<size=0>" . "Variable_Hider") . "Condineye's TowerTesting", if(gbg("<size=0>Condineye's TowerTesting</size>active"), "Codrineye's TowerTesting Is Shutdown", "Hider Blocker" . "</size>"))
gbs("<size=0>Condineye's TowerTesting</size>active", false == gbg("<size=0>Condineye's TowerTesting</size>active"))
goto(if(gbg("<size=0>Condineye's TowerTesting</size>active"), 5, 99))
execute("Cods TowerTesting v1.3.0:Stats Exit Diff_Change")
execute("Cods TowerTesting v1.3.0:Movement Manager")
executesync("Cods TowerTesting v1.3.0:Toggles")
waitwhile(gbg("<size=0>Condineye's TowerTesting</size>active") && (anyopen() || isTowerTesting()))
waitwhile(gbg("<size=0>Condineye's TowerTesting</size>active") && (isTowerTesting() == false))
waitwhile(((gbg("<size=0>Condineye's TowerTesting</size>active") && (health(false) > 0.0)) && (additional_cond == false)) && ((enemies() > 0) || (wave() < 100.0)))
exit()
gotoif(11, isTowerTesting())
stop("Cods TowerTesting v1.3.0:Restart At Will")
gotoif(9, gbg("<size=0>Condineye's TowerTesting</size>active"))

instead of

:name {package(Initialiser)}

key.x()

:local bool additional_cond

additional_cond = infinity() == a.d(10.0, "^", 3.0)
global.string.set({hider}, if(\
  {state_get}, \
  "Codrineye's TowerTesting Is Shutdown", \
  concat("Hider Blocker", "</size>")\
))

{state_toggle}
goto(if({state_get}, skip, 99))

skip:
execute("{package(Stats Exit Diff_Change)}")
execute("{package(Movement Manager)}")
executesync("{package(Toggles)}")
waitwhile({state_get} && (anyopen() || isTowerTesting()))

loop:
waitwhile({state_get} && (isTowerTesting() == false))
waitwhile({state_get} && health(false) > 0.0 && (additional_cond == false) && (enemies() > 0 || wave() < 100.0))
exit:
exit()
gotoif(exit, isTowerTesting())
stop("{package(Restart At Will)}")
gotoif(loop, {state_get})
#

there aren't any comments in the project XD

#

every time I re-open the project I need to re-learn how it does stuff
luckly, re-learning is quicker for me in this structure than if I had to read what was going on :D

wind swallow
#

it just exits immediately instead of of wating to get to the proper inf.

#

I think it should likely be < comparison, right?

spark pendant
#

your current infinity count == 10 ^ 3
the AI will wait while this is false, which I guess will always be the case cus it doesn't update, gad dangit

wind swallow
#

ah, there we go. I understand. so we need to do the comparison within the waitwhile.

#

too bad we can't use lambda functions or something like that lol

spark pendant
#

I mean, I can by using a macro
the ingame AI can't

wind swallow
#

oh macros works here, cool

#

I've not really dabbled in lua nor the custom language for this game

spark pendant
#

yea, I forget at times that bool conditions don't update after every run

spark pendant
wind swallow
#

testing it. so far it works but I haven't advanced to inf 3 yet. I'm trying something small (3.0 ^ 1.0) for now I'm currently at era 54b in inf 2. I'll let you know if there are any issues. get some sleep and feel free to check back when it's convenient for you. thank you for all your help!

#

and thanks Yoshi for the inf query idea. 👍

spark pendant
wind swallow
#

Just something simple:
'q' activate
'r' reset with timer
'w' mode

spark pendant
spark pendant
wind swallow
#

I'm not able to trigger the inf condition

#

with the new package

#

I changed it to check for inf 2 and just does a 30s restart even though I never hit r

#

what I wanted is to go to next in region/difficulty when it reaches the inf number and it keeps restarting every 30s

#

I don't want restarts every 30s in this case. so I'd like to toggle that off

spark pendant
#

nono, you hit r to restart immediately
when you enter a new round, the timer starts immediately

ornate wasp
#

what is the timer for

wind swallow
#

I want the timer off. I want to not restart the round at all right now, but just go to next area after inf 2 is reached in this example

spark pendant
#

it restarts the round after the set amount of time passes

ornate wasp
#

but why

wind swallow
#

it was was doing what I wanted before where it restarted while in era but not while in inf

ornate wasp
#

it shouldn't restart if the era is at least 1

wind swallow
spark pendant
#

alrighty then
so timer off if era is >= 1, yea?

wind swallow
#

yes please!

spark pendant
#

very well then
it's added :D

wind swallow
#

I've been updating your code to use:
inf < 2.0 ^ 1.0 since if I skip it too quickly, I didn't want it to get stuck

spark pendant
#

it can no longer get stuck
and if it does manage to get stuck, please tell me

wind swallow
#

ok will do! thank you

#

I'm happy to test the new era reset timer check when you are ready. no rush. I'm sitting at desk eating some dinner 😄

spark pendant
wind swallow
#

yeah. perhaps dos or someone else can give some UI advice regarding that later.
The museum combiner and factory automation ui is really nice and compact and easy to read. probably not worth adding until some design ux review by others as it can get really cluttered

spark pendant
#

d0s's AI's don't have toggles
the user has very few components to keep track off of
by creating something that moves this much, I needed to bring in options because the process of moving through the towertesting menu is complex
I tried to link the basic actions to logical keys
r = restart
e = exit
t = stats because it's the default keybind for stats
x = execute program
w = forward, so you toggle if you want to proceed or not
q = mode, because it was the best key my brain could think off of, since both movement toggles should be close to eachother

wind swallow
#

that list is more readable to me than the paragraph in your readme. perhaps that is a viable solution in itself?

spark pendant
#

sadly, it's way too long XD
the only keys that I feel would require explanation are w and q

wind swallow
#

sure thing. in game is too clunky.
But how about editing this like you did above:

spark pendant
#

is this enough information?

wind swallow
#

that's perfect!!

spark pendant
# wind swallow sure thing. in game is too clunky. But how about editing this like you did above...

what do you think of this?

The impulses

To start the AI, you may use x, q or w, and press x to stop it.
To cycle through the modes mentioned previously, you press q, and to toggle Region_Cycling use w.
You can restart instantly by pressing r, or if you're running the game in a difficulty with a wavegoal that's less than era 1, you will reset after a set timer, its default set to 30 seconds.
To exit the round of tower testing, you can press e
While in tower testing, pressing t will toggle the stats to the Waves tab

wind swallow
#

That's better but I kinda like a table form list in addition:

r = restart
e = exit
t = stats because it's the default keybind for stats
x = execute program
w = forward, so you toggle if you want to proceed or not
q = mode, because it was the best key my brain could think off of, since both movement toggles should be close to eachother

#

why not both 🤷 depends on how you want to read the information I suppose, but it's easier for me to read it as:
impulse does thing

instead of:
thing is done by impulse

spark pendant
#

yea, I'll just add a "spoiler" for Table view that when clicked just gives you what the impulse does XD

wind swallow
#

perfect

spark pendant
#

Cods TowerTesting has been updated to version 1.3.0
Mostly bug fixes
Introduced a slight helper text in the UI
Updated how The impulses are explained

#

if anyone has imported the code yet, I advise you to re-import with the new code
I have just pushed a fix, because I forgot to reset the condition in additional_cond to default

wind swallow
#

Thank you!

#

descriptions look great!

#

update logic works well and the in game UI update is much appreciated 🙂

wind swallow
#

Looks like restart is getting initialized multiple times when you press r once and then making it do strange things. I've seen it change regions/difficulties after a restart too and I didn't die as far as I could tell
maybe I did since sometimes the waves come too fast at the start and the ai for my BP (AllBlue) doesn't always catch the era dividers properly. This is why I manually restart it sometimes

#

||I finally got light stone perk so I can bypass this issue for now||

#

||Editing this post for bug reports as I notice them in the new version so I don't spam notifications while you are sleeping Cod :D||
Looks like when it transitions between regions, it executes easy, quits, and goes back into easy.

And sometimes it skips impossible difficulty

Also when in a region on era (not yet on inf) at 30s when it is supposed to restart the round, it changes difficulty instead.

#

also I think I noticed a way to condense the UI:

spark pendant
wind swallow
#

Does this work to shorten it?
CurrentMode(Q):Difficulty>Region

spark pendant
#

that'd work, yea

spark pendant
wind swallow
#

Also, would it be possible to add a toggle for transition on death? When I'm going for higher infinities my BP sometimes has a rocky start and dies, but usually it's ok. And in some regions on impossible, I want it to creep using wave restart bit by bit up to my goal

spark pendant
#

what do you mean transition on death?

#

do you want to not exit after death?

wind swallow
#

I want to restart the round and only transition to next area after I reach my inf goal

#

Was thinking if you made a toggle to transition on death or custom condition or something

#

In my case I want to only go to next area after it reaches inf e6

spark pendant
#

well, isn't that just supported with turning region cycling off?

wind swallow
#

But death triggers next area, I ONLY want to go to next area after goal and restart round on death

#

Maybe I don't understand region cycling

#

I assumed it still did difficulty cycling

#

What I want is to go to each regions easy inf e6 then medium inf e6, etc

spark pendant
#

yes
so you only need to cycle through 5 difficulties instead of 89 difficulties

wind swallow
#

And if I die just abuse wave restart

#

I still want it to hit each of the 90 areas, just do all easy first, then medium, then hard etc

spark pendant
#

and the Region>Difficulty mode does that for you

wind swallow
#

Oh! And when in mode, it disables transition to next thing on death? Cool! I'll check it out tomorrow. I'm in bed on phone right now lol

spark pendant
#

by default you're in Difficulty>Region, so the AI will prioritise cycling through difficulties before switching regions
in Region>Difficulty, the AI will prioritise cycling through regions before switching difficulties

wind swallow
#

Yes, that's how I understood it.

What I'd like to do is not change anything when tower dies. Only move to next map AFTER custom condition

#

Even if I die on easy, just slam tower face first to get to the goal

#

Wave restart is good lol

spark pendant
# wind swallow But death triggers next area, I ONLY want to go to next area after goal and rest...

well look, if you want to have such control over the tower testing session, it's just better that you shut down my AI and stay active in the game
my AI works best if you simply let it do what it's programmed to do, and you can simply do something else, instead of paying attention to towertesting

You give up the control of the towertesting session behaving exactly as you want it to, and in return you get a tool that lets you not pay attention to towertesting

wind swallow
#

Ok. 👍

spark pendant
#

Tower Testing Automation Script (Cods TowerTesting) is first and foremost a tool with the intent of letting you idle
to add the level of complexity needed for it to know what region and difficulty you are to compare with your infinity target, is just going to give results worse than if you just looked at the monitor and stopped the AI XD

wind swallow
#

I'm probably not explaining it well but it's fine, no worries. Thanks for this nice AI works well for most things I'm trying to do. Helped a ton to get 90/90 era/inf1

spark pendant
#

yea, that's what its original purpose was :D
glad it helped you

spark pendant
spark pendant
#

Update to version 1.3.1
Fixed the timer in Restart At Will creating infinite copies of itself
Replaced the helper text in the UI with the updated variable names
Added comments in the source code of the AI

wind swallow
#

new ui looks great
restart is working well
really nice comments in the code.

Thank you!

three bugs I noticed:

  • when changing modes to R>D it does wonky things and sometimes starts later difficulties same region, exit the round and choose another difficulty in same region or sometimes changing regions
  • seems like when just pressing e to end the round general, it has some weird issues about moving to next area. and region changes are unstable too.
    e.g. going from R1-6 to R2-1 sometimes flakey and on R2-1 when I press e it goes back into R2-1 instead of going to R2-2 the first time. if I press it again it then leaves R2-1, starts and exits R2-2, starts and exist R2-3, and starts and stays in R2-4
  • I tested the auto 30s restart by turning off all software except for New Bounds and the round isn't auto restarting at 30s.
wind swallow
#

I'm also having an issue with my additional_cond logic.
I have Forest easy at i774 and Forest Medium at i303. I set additional_cond = infinity() >= 500

spark pendant
# wind swallow new ui looks great restart is working well really nice comments in the code. T...

the timer only gets engaged if your era is strictly lower than 1, so New Bounds passes over this threshold
The weirdness with e is likely related to the reason I added the global variable screen_delay
increase the value and that should be fixed
Changing modes can result in unwanted behaviour, luckily tho, repeating a difficulty isn't too big of a time loss, if you can cause this to happen because of changing the mode, it means you're also able to just exit the game yourself

spark pendant
wind swallow
#

let me change screen_delay and I'll retest it out. one moment

manic juniper
#

(By the way, if you want to exit with AI immediately after entering Tower Testing, you'd have to wait 5 frames, IIRC. Does that cause any issues?)

spark pendant
#

sure
as always, take your time, there's no rush for results with me XD

spark pendant
#
exit_loop:
exit()
stop("{package(Restart At Will)}")
gotoif(if(isTowerTesting(), exit_loop, loop), {state_get})
spark pendant
wind swallow
#

yeah it's doing that to me.
I set screen delay to 2.0 and still an issue. very strange

wind swallow
# spark pendant so, what is it? does it not exit on Forest easy?

it just exits early on both. if I set the conditional to exactly equal an inf number like you suggested before it works fine when it first reaches that. but when I start on inf above that number it never reaches it. so I changed it to >= and now it doesn't work

#

I am using this with winAI 3.0 would that cause any issue?

spark pendant
spark pendant
wind swallow
#

do you want me to jump into a voice channel and I can share my screen? the screenshots are kinda weird since it closes so quickly

manic juniper
#

That's Dynamic Rendering doing this.

wind swallow
#

dynamic UI I thought was off?

manic juniper
#

Rendering, not UI Scaling.

wind swallow
#

also off:

#

oh you mean in the screenshot! I got you

spark pendant
#

maybe my AI caused an unhandled exception

wind swallow
#

!logs

robust escarpBOT
#
Logfile location

%userprofile%\appdata\locallow\Fire Sword Studios\The Perfect Tower II
Current log: perfect.log
Previous log: perfect.1.log

wind swallow
#

what should I search for in the log? I can send it here but I don't know if that's appropriate

manic juniper
#

Just send the entire log file.

wind swallow
manic juniper
#

Wait, those are blank characters... from Tower Customization?

wind swallow
#

yeah I'm using basically the default tower currently

#

it's almost like if the additional condition becomes true, it takes a few area to get working again (screen_delay = 5.0 right now).
it properly ended R1-1, didn't process R1-[2:6] nor R2-[1:2] but it handled R2-3 (I watched it go from inf 220-500 and move to next) properly and then started auto skipping again.
Next time it properly waited was all they at R3-3

spark pendant
#

alright, nothing seems to be an AI exception
I guess the best thing to recommend is to reload the game, it could be that the game is working to resolve the exceptions which in turn leads to a more laggy experience that requires a longer delay than would be reasonable
closing towertesting and reopening it should remove this stress

wind swallow
#

I'll restart my entire computer and see what happens.
What screen_delay do you recommend I set to when I try again?
According to steam I'm getting 544FPS right now:

spark pendant
#

no no
closing TPT2 and re-opening is, not closing towertesting and reopening it

wind swallow
#

so do you want me to press x to exit tower testing?

spark pendant
#

nono, exit and reopen the game TPT2

wind swallow
#

oh gotcha. will do

#

I guess I have been running it for a few days lol

#

still skips over R1-2 and R1-3 which have inf ~250

#

memory usage is under 220MB now

spark pendant
wind swallow
spark pendant
wind swallow
#

yep

#

assuming your R1-1 is higher inf than your R1-2, just set it to something below R1-1 and above R1-2 and see what you get

spark pendant
#

so, the AI can only exit if
state == false, not the case
health(false) <= 0.0, I don't think you'd be confused about it if it was the case
infinity() >= 500.0 == false, which returns true for any infinity smaller than 500

and you're saying that infinity() >= 500.0 returns true
well, what happens when you run the AI without the additional_cond?

manic juniper
#

Smaller than 500? That'd need a different sign.

#

Oh wait, nevermind, didn't see the == false.

wind swallow
#

I tried flipping it as well

#

it only reliably works when I have it check == instead of >= or < or any other comparison other than ==
and == will always fail to exit if I start at a higher inf than the goal due to wave_restart software

spark pendant
#

just set additional_cond to false, like it is by default, and see if you get the same result of exiting when you wouldn't want

wind swallow
#

that works fine for transitioning on death

#

I'll set to false and then press e to see about the region transitioning with the new screen_delay though

#

but I'd like to get all 90/90 to a a minimum inf of 1m and I'm trying to get this to work with that condition. using 500 as a simple test for now

#

with screen_delay of 5 I started the AI and pressed e on R1-1 and it exited the round, started up R1-1 again and then exited to town

spark pendant
#

so, even without additional_cond, you're still getting this, yea?

wind swallow
#

yeah

#

here is the current log with the most recent thing being what I described if that is helpful

manic juniper
#

...Absolutely nothing.

wind swallow
manic juniper
#

Nothing in the log.

spark pendant
#

he means that this is a clean log, which is good

wind swallow
#

hmm let me try again.

spark pendant
#

and what're the AI's you have on?
TowerTesting Automation
winAI3
turbo exec
anything else?

wind swallow
#

turbo start
turbo stop
DOS.Autominer
DOS.DungeonMap 1.1
TE2.2
DOS.factory v3.2.3
DOS.Museum v4.7
Adventure v3.3
winAI 3
Cods TowerTesting v1.3.1

manic juniper
#

The only Tower Testing ones are winAI and TT Automation.

#

So you're good on that.

wind swallow
#

yep

#

I can probably turn off turbo start and turbo stop since I have TE2.2 in there. 😄

manic juniper
#

Yeah, you don't need those. They are for compatibility with very old scripts that use TE.

spark pendant
#

there we go, it's because I wanted to remove a crucial waituntil in Initialiser without realising how important it was XD

wind swallow
#

🎉

spark pendant
#

mind giving it a try to ensure it works with your machine too?

wind swallow
#

sure thing!

spark pendant
wind swallow
#

why can't I see Game.Inifnity with the in game component picker?

manic juniper
#

It's a double, not a boolean.

wind swallow
#

I don't understand how that changes what I can see in the drop down? or the search

spark pendant
#

that's also the bool section XD

comparison:double game:infinity

wind swallow
#

OOOOH I found it now

#

thank you!

spark pendant
#

heh

the menus give you functions that only return the data-type you selected
Because you sellected boolean, you can only see functions that return a bool value, so functions that return a double value aren't included to avoid giving a bool value the value "flompt"

#

yes, I gave a string value as an example, it fits better XD

wind swallow
#

conditional failed to transition after one successful transition
It's like it's not getting updated again or something?

spark pendant
#

the AI I gave you is faulty XD
it indeed isn't getting updated

wind swallow
#

two steps forward one step back. lol been there

spark pendant
#

I just forgot the lable, so to update additional_cond, the AI would go back to waituntil(state == true && (isTowerTesting() == false)) which means it'll wait forever because the game is in a round of towertesting

wind swallow
#

skipped over a ~250 inf now instead of getting to inf 500.

spark pendant
#

so, didn't die, it just decided to exit on you?

wind swallow
#

yep

#

properly waiting on R2-Insane at inf 100 and climbing above 275 now. I'll see if it exits at inf 500 successfully again

#

oh. I didn't update screen_delay from 0.5 default. should I change that to something else still?

spark pendant
#

nope, there shouldn't be a need for it

wind swallow
#

R2-Insane did indeed properly exit on inf 500 and now looks like it's doing R2-nightmare when started at inf ~150

#

so something strange happening in R1 I guess?

#

I'll set it to 200 so I more speedily check other difficulty/regions

spark pendant
#

well, I got a concerning thing of the AI repeating a difficulty, so that's nice :D

wind swallow
#

at inf 200. it should skip all of R1 until R1-6 and then get impossible from 93 to 200 and then go to R2

#

failed to skip R1-5 this time

#

and when I pressed e it skipped R1-6 even though it only had ~100 inf and it should have stayed

spark pendant
#

I, in fact, did not

wind swallow
#

oh noes!

spark pendant
#

Update to version 1.3.2
AI's Initialiser loop now works propperly, something that's been missing since releasing version 1.0.0

wind swallow
#

yay! I'll test it out! thank you!

spark pendant
#

no worry bub :D

wind swallow
#

it's still exiting early R1-6 has ~100 and it got skipped over when I set it to 200

spark pendant
#

oh gad dangit

#

welp, sorry bud, you're gonna have to live with this for a while longer

wind swallow
#

No worries

warm fulcrum
#

is it possible to make it quit when I reach era on a new difficulty? I'm in the process of getting 90/90 era 1s

spark pendant
warm fulcrum
#

well I'm almost done anyway, and I got it from the github (it said v1.0.0 tho)

spark pendant
#

I don't think the old version has additional_cond, sorry

warm fulcrum
#

np I have 90/90 eras anyway now

merry venture
#

im new to this game ans the scripts. Ive tried this one but it doesnt seem to do anything besides auto restart my run. I thought this was supposed to go through the regions and/or difficulty levels

manic juniper
#

This is... designed for #infinity-phase, I'm pretty sure?

merry venture
#

so if im MT6 i dont have that yet right?

manic juniper
#

#infinity-phase is MT12+.

merry venture
#

are there any scripts worth running at MT6?

manic juniper
#

Related to Tower Testing? There does exist a different AI that can cycle through regions and difficulties for Normal Mode and later things - #1136809113578381372.
In general? #1094056086585213008 is pretty good if you're focusing on it, #1094053622536478720 is just good because more damage and resource drops (the latter matters at MT11+, if you have a T5 Town Producer in Factory), #1212232046164967516 for... #adventure and its 1000 skillpoints.

spark pendant
tawdry dirge
spark pendant
#

it does not interact with your blueprint
only with moving

wind swallow
#

it only handles moving between region/difficulty it does not handle using your skills or anything.

spark pendant
#

Codrineye's TowerTesting is live once more
This time, it's version 2.0.0 thanks to update 0.49.0

additional_cond is now fully functional (finally), the script is able to cycle through regions and difficulties without ever entering the same difficulty in the same region on the same cycle

It has now been moved to only 1 script, and when it's in use it has 2 instances running

If you have any questions or experience any issues with the AI, please let me know

spark pendant
#

Sorry about that buds, excitement got the better of me 😅

I didn't test mode 2 in the previous version and it turns out it was bugged
I just pushed a new version that fixed it and both modes were tested

spark pendant
#

Codrineye's TowerTesting got a minor update

Added a second condition, that tells you the lines you may be interested in modifying

spark pendant
#

Codrineyes TowerTesting

spark pendant
spark pendant
#

Codrineye's TowerTesting has gotten an update

Fully removed the transition delay, the script is now shorter, from 35 actions to 31, and (in theory) slightly faster

Also, you can now easily change the cycling direction using the source, and the additional_cond condition can be added through a macro, in the source

It's been a long day, I do not remember what the 4 actions I removed were, but I know 1 of them was deleting transition_delay

spark pendant
#

Codrineye's TowerTesting has gotten an update

Reworded the README.md to hopefully explain everything about the script

Moved the waitframe() above the change region click (previously it was after it to prevent overlapping clicks) because the screen transition of show() can eat that click if the game is running fast enough.

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

indigo lintel
#

@spark pendant is this still working?

#

If i do a region, i have set up a auto-restarter.. so with the script i stay in the region..

#

just if i go back to town manually it will select the next difficulty

spark pendant
#

why are you using a region and difficulty cycler script if you don't want it to cycle through regions and difficulties?

spark pendant
indigo lintel
#

well im just mt4, may its not my script

#

😛

#

i found another one which works

#

is there any AI-Script which searches for the area with the most income and cycles/stays there?
for a given blueprint

spark pendant
#

most income is almost always chaos impossible, I think

indigo lintel
#

so just highest area at chaos/impossible? ok

spark pendant
indigo lintel
#

It just didn't work for me

#

See if I do a run.. at wave 100 it either restarts the area or pauses there..

#

your script is doing nothing.

#

just if i click back to town

#

it cycles to the next difficulty

spark pendant
#

are you starting it in towertesting?

indigo lintel
#

yes

spark pendant
#

yea, it waits for you to be in town to not mess up anything else you may be doing

indigo lintel
#

okay wait, i dont get what you want to say. maybe im completly stupid

spark pendant
#

no no, it's all good

So, you activate the script by pressing X, if you're in any screen other than town, my script will wait for you to finish whatever it is you were doing and start doing stuff

indigo lintel
#

thats how i start.

spark pendant
#

exit the towertesting window

#

so, press esc or the X button in the corner

indigo lintel
#

okay i did

#

now it starts easy

#

and now it does region 1 - easy forever (autorestart 1s)

spark pendant
#

oh wait XD

you're on normal, oh man, I completely forgot that normal has a broken exit condition

indigo lintel
#

...

#

i told you that as the first sentence

indigo lintel
#

so that script is not working for beginners right

#

If i go manually to town it will select the next difficulty

spark pendant
#

it's for cycling, there's no reason to do cycling in normal mode...
Enter endless and it can do cycling

indigo lintel
#

Well, I do not even know what "cycling" means 😛

#

how should I 😛

#

seems like there will be cycling in endless mode hehe

#

whatever endless is

spark pendant
#

Cycling...
you cycle through every difficulty and every region

Since the exit condition is additional_cond or your tower dies, and since normal mode usually ends with your tower alive, there's nothing to signal that it should exit towertesting

indigo lintel
#

it restarts when tower is dead and it starts a higher difficulty if the stage is completed

spark pendant
#

I mean, the readme for the script explicitly says that it doesn't automate the entirety of TowerTesting (aka, normal mode)"Please keep in mind that the script does not know what region or difficulty you're on, nor does it try to interact with blueprint. This is purely for movement automation, not for entire TowerTesting automation."

and the readme needs to be looked over again for tipos, gad dangit XD

indigo lintel
#

sorry for taking your time

#

and thanks for your work, i guess i need in in the future^^

spark pendant
#

I'm sorry, but I haven't been able to find a reliable way to detect when normal mode is over

Closest check is to see if enemies == 0, but the problem is that resetting tricks the AI into thinking you've ended normal, so it kicks you out of the run

indigo lintel
#

may you check the other script

#

it instantly leaves when the are is cleaned.

#

or restarts if dead

#

and if to often dead it changes the location

spark pendant
# indigo lintel it instantly leaves when the are is cleaned.

yes, that one can do it because it has its progression hard-coded (aka, it knows what region and difficulty you are on because it takes forest as the root location), which goes against the core idea behind this script "you're free do use it wherever and whenever you want", even if you try to use it in a location it's not made to work, because making it work for that location makes no sense XD

indigo lintel
#

i dont want you to change your script at all

#

it has a different use case it seems 😛

spark pendant
#

wait, doing things on normal mode at mt4?

people usually stop caring about it around this level, why are you even doing things on normal mode?

indigo lintel
#

i have no idea what to do^^

#

i just try to unlock higher difficulties to farm more

#

to get the higher mt-tiers..

#

if you have any recommendation let me know, but i dont want to spam your thread here

spark pendant
#

it's all good, that's the purpose of the pinned messages links XD

spark pendant
spark pendant
spark pendant
spark pendant
indigo lintel
#

hey @spark pendant

#

i still dont get for what your tool is for 😛

spark pendant
#

hello

it's for cycling through your difficulties and regions without needing to be at your computer

indigo lintel
#

and why should i do that @spark pendant ?

#

i mean for what is this important?

#

I unlock ERA right now

manic juniper
#

This is important for MT11 and above.

spark pendant
#

for when you need to have all/most of your difficulties and/or regions at the same wavegoal

sharp vault
#

0

spark pendant
#

indeed

sharp vault
#

i don't even see that i send something, but while im here, does the script have a fonction to switch to the next before the tower die ?

spark pendant
#

you mean an early exit?
yes, you just set an additional condition in the variable called additional_cond

#

say you want to exit at wave 10

you'd go over to the script and modify additional_cond to comparison.double: game:wave >= 10.0

this will make it so you exit if your wave is 10 or higher

sharp vault
#

okay to you think its possible to change it that it after some time ?

spark pendant
#

I don't believe I understand the question

manic juniper
#

Is there a way to exit after a certain amount of time passes?

sharp vault
#

thanks that what i mean

spark pendant
#

ah, not without an external timer

it did have a timer builtin, but I scrapped it because it was inconvenient for users

#

If you have a specific time requirement, it'd be better to do it externally

a script you have that's likely just

game.newround()
:budget_cap 1

:local double t
t = time.delta + t
waitframe()
gotoif(0, t <= 10.0 && health(false) > 0.0)
exit()
#

oh, there's actually no need for an external timer

one second, I'll make an update right now

sharp vault
#

okay great

manic juniper
#

Are you integrating it in this script?

spark pendant
#

yup, and just letting people set additional_cond to t > 10.0

spark pendant
#

I'm done with the update, but just so it's easier for you, I'll just set the additional cond right now so you can test it too

#

unless you were just asking for the feature and don't have a need for it at the moment?

sharp vault
tight elkBOT
#

@sharp vault has earned the Spark role!

manic juniper
#

Now the question is 10 game time or real time minutes?

spark pendant
#

oh right, I was thinking game time, do you want real time?

spark pendant
sharp vault
#

it was 10 real but i juste double it and its good

spark pendant
#

wdym by 10 real?

manic juniper
#

10 real time minutes.

sharp vault
#

10 minutes

spark pendant
#

as in, that's what you wanted?

sharp vault
#

yes

spark pendant
#

alright, there's 2 timers now, tick.unscaled is using real time, tick.scaled is using game time

#

maybe I should just change the names to

time.real and time.game?

sharp vault
#

and is there a key to activate it or its on by default ?

spark pendant
#

they're constantly running

sharp vault
#

where can i change the time to exit early ? i can't find it x)

manic juniper
#

Should be line 12, unless he moved it below because of the timer. (It's named additional_cond.)

spark pendant
#

Codrineye's TowerTesting has updated to version 2.0.5

Introduced 2 timers. One for game time called time.game and one for real time called time.real

Adding a timer has also made it possible for the script to be used in normal mode and challenged (Tho it's not going to help you much there) as resetting is no longer able to trick the script into thinking the tower cleared all enemies

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

spark pendant
sharp vault
spark pendant
#

condition 2, not comment, sorry XD

sharp vault
spark pendant
#

so, in condition 2 you have 2 boxes
Box 1 is To change the diff
Box 2 is To use addition

I personally believe that it is clear that you should click on box 2, as addition is part of the name additional_cond

sharp vault
#

Yes i see it, i just sont understand how to do it, because i already change the number on line 16 and it doesn't change the time that it takes

spark pendant
#

alright, can you send a screenshot of your additional_cond?

#

or even an export so I can see it directly

sharp vault
#

i just import the last version but there is juste the true/false on line 17

spark pendant
#

alright, what time do you want and what kind of time?

sharp vault
#

was thinking 5 minutes in real time

spark pendant
#

ok, so you want to set additional_cond to comparison.double: local double: time.real >= 300.0

#

local: set (bool) additional_cond, comparison: double local: get (double) timer.real, >=, 300.0

#

however, if you are working with real-time, the timer does not get set back to 0 if you reset

sharp vault
#

like that ?

spark pendant
#

yea

spark pendant
# sharp vault so it would be better to work with game time ?

if you're working with game time, the additional condition says that you'd want your round to be this long, so if you reset the run, it makes sense to me that you'd want to reset the timer.

If you're working with real time, the additional condition says that you'd want your time in the round to be this long, so if you reset the run, it makes sense to me that you'd want to keep the amount of time you've already spent on that run.

idk if that makes sense for anybody else tho

sharp vault
#

i understand what you mine at least but game time would be better for what i need

spark pendant
#

It still resets after it moves to the next difficulty, it just doesn't reset if you press key.r to reset the run

sharp vault
#

Okay ! Thanks and sorry for all the question and extra work x)

spark pendant
#

no no, I'm perfectly happy to make changes to it

I'll overhaul the block hider so that both the real time and game time values are global instead of local so that they're both reset by game.newround

spark pendant
sharp vault
spark pendant
#

oki

I assume you want 300 seconds but you're on 2x speed?

sharp vault
#

Yup

spark pendant
#

I can give you the time.real version if you want

I've just finished the update and am about to push it, but I can give you the pre-configured version if you want

sharp vault
#

I can keep the time.game, at the moment it doesn't change a thing, i just have to remember to multiply it.

I will get the time.real when you finish it

spark pendant
#

you can also remove the pre-multiplication by simply making additional_cond = time.game >= arithmetic: double 2.0 * 300.0

sharp vault
#

Oh nice

#

Thx

spark pendant
#

no problemo

#

you can also simplify it further by doing 2.0 * 60.0 * 5.0
because you're at 2x speed and want 5 minutes

#

with the downside being that the AI now has a little bit more to calculate which means just a little bit more for your computer to handle, but that little bit is minuscule compared to the other things done by tpt2

sharp vault
#

I have a lot of calculation free, i dont use a lot of AI, so i will see

spark pendant
indigo lintel
#

@spark pendant are you here maybe? 🙂

spark pendant
indigo lintel
#

hey hey @spark pendant 🙂

spark pendant
indigo lintel
#

nice

#

yes, it would be awesome if you could tell me how i bet set the codrineyes tower testing for my given state of the game

#

think im MT12 and unlock the first easy INF levels

#

so i guess it would be nice that the tool runs from easy level to level to unlock infs.=P

#

could you may edit the script for that?

spark pendant
#

so, get infinity on easy for every region?

indigo lintel
#

yes

#

i think thats a good farm goal right

#

so easy first, then the next harder if thats a succeess

spark pendant
#

not for mt12, but it's what you want ig...

that's already supported, just set additional cond to infinity >= 1.0 and sellect the mode Region>Difficulty

indigo lintel
#

how to do that?

#

ah

#

like this?

#

how to do that?
cond to infinity >= 1.

spark pendant
#

additional cond is a bool in the script on line idk

The script has 2 conditions, condition 2 tells you where to find additional cond

spark pendant
indigo lintel
#

do i need to go into the browser or just the AI headquater setting?

spark pendant
#

the script itself

indigo lintel
#

somewhere herE?

spark pendant
#

yea, click on condition 2

indigo lintel
spark pendant
#

yes, and click on the third field

#

To use addition...

indigo lintel
spark pendant
#

so it's line 17

indigo lintel
spark pendant
#

yes, that's the line you edit
you set it from false to comparison: double game: infinity >= 1.0

indigo lintel
#

i feel like 100% stupid^^

#

here somewhere or ...

#

or 1 and 2?

spark pendant
#

2

spark pendant
#

you passed it

indigo lintel
#

infinity >= 1.0

spark pendant
#

you did it, congrats, now you just have to complete the condition

indigo lintel
#

this?

spark pendant
#

that's how you do it, yea

indigo lintel
#

well, it feels a bit like a learn programming haha

spark pendant
#

The UI makes it pretty obvious, the issue usually resides in how to get to the instruction you wanted

indigo lintel
#

not sure if the tester does what i want

#

i was in INF 1 from level 1-4

#

but he skips lvl 5-10 and starts there

spark pendant
spark pendant
indigo lintel
#

yes but i had inf1 just for level 1-4

#

so i would asume that the tool starts to farm lvl 5

#

but it skips 5-6-7-8 and goes to 9

#

even though thats not inf1 yet

spark pendant
#

alright, so in region 5, it's not in infinity 1 and it still exited?

indigo lintel
#

yes

spark pendant
#

Did your tower die?

indigo lintel
#

lets see

#

thats region 4

#

thats 5

#

i start the tool at Region 1 Forest EAsy

#

it skips 1, 2,3,4

#

skips 5,6,7

#

and starts at 8

#

it doesnt Die at 5,6,7

spark pendant
#

alright, first thing, what on earth do you have active that's messing up the block hider?

If the UI is messed up, something has gone wrong. I don't even know what you could've done to make my globals become jank

#

second, do you have a recording software such as obs so I can see it running?

indigo lintel
#

i just imported it yesterday ithink^^

#

i can stream my game here on discord?

#

if thats helpful

spark pendant
#

sure
I just need to see the behaviour

indigo lintel
#

live on general yes

#

thats how it runs

spark pendant
#

alright, interesting

Well, the first problem is that you're launching the round yourself

the intent is that it's the one that starts towertesting

indigo lintel
#

well evenn if the program starts it

#

it shifts crazy through the levels

#

i dont know why it just starts at lvl 8 😛

#

seems to like lvl 8..

#

unfortunatly i need to eat now, may i re-import the full script afterwards?

spark pendant
#

nope, that's impossible for it to do

It has no memory of past activations so it first starts at easy or impossible. Reimport the script

indigo lintel
#

RE

spark pendant
#

yes

indigo lintel
#

reimported

#

it does exactly the same again

#

skipping to region 8 haha

#

lets deactivate the allCat AI to see if that is interfeering..

#

hmm now it skips all the regions, strange..

spark pendant
#

if it dies it will exit tower testing, turning off the AI for allCat makes the tower get killed

indigo lintel
#

so is the script bugged or what do i do wrong?

spark pendant
#

that can't be reproduced, only thing that can be done is you send over your version of the code for me to analyze

indigo lintel
#

my version of the code?

#

i just imported your version of the code 😛

#

only change was row 17

spark pendant
#

the AI doesn't skip anything, it's not allowed to do such a thing.
Lag could be causing things to get a little slow but it's made to never skip anything

idk, I'll have a look at it later ig, but this behaviour can't be reproduced locally

indigo lintel
#

i can show you on my stream how i import your script

#

it doesnt make sense that it skips to region 8..

#

like instant skip..

spark pendant
indigo lintel
#

ok

spark pendant
#

already added the additional cond for you

indigo lintel
#

that one works!

spark pendant
#

yea... damn you normal mode

#

the change that added support for normal mode made the script be a lot more sensitive to lag

indigo lintel
#

oh haha i was the reason for that as well haha

#

tyyyy buddy

spark pendant
#

have fun

spark pendant
#

Update to version 2.0.7

The script now has a job status through which it tells you what's going on.
Most importantly, it will tell you if you left because you've hit your additional_cond or not.

There's now a segment that explains how to use the condition instructions to navigate through the script.

The script can no longer be used for challenges or normal mode from the import, you have to add the additional_cond.

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

pliant ridge
#

im sorry im having issues trying to set the additional value to time.game, do i just replace "additional value" on line 20?

spark pendant
pliant ridge
#

so i change additional value to a time.game and then compare with boolean? it says false in the brackets which side do i want to be the time i ran? im so sorry i dont understand coding at all

spark pendant
#

ok, what do you want to do?

Exit the run of towertesting after how many ingame seconds?

pliant ridge
#

im thinking 5 min so 300 seconds, i want to automatically run each region and difficulty and i think this ai will help me but im so lost\

spark pendant
#

set local additional_called to comparison.double: global get (double) time.game >= 300

spark pendant
pliant ridge
#

Thank You a million for pictures

spark pendant
#

no worry

I could also compile a version with your condition, but you wouldn't learn how to do this basic editing XD

pliant ridge
#

What do I set as the string for the comparison

#

I mean for before the comparison

spark pendant
#

time.game if you want game time, time.real if you want irl time

pliant ridge
#

I don’t think I did the bottom left one correct

spark pendant
#

oh god XD

Why did you change the name of additional_cond

pliant ridge
#

I assumed I had to?

spark pendant
#

don't change the string

spark pendant
#

I mean... unless you want to edit the gotoif, but you wouldn't want to have to edit too much

pliant ridge
#

It now says “set local additional_cond to [global(global(time.game)) >= 300”

#

I just wanna confirm that is correct

#

The line 20

#

I should specify what I’m talking about before saying stuff

spark pendant
#

no

You just want global(time.game)

#

global(global(time.game)) returns an empty string, so you won't get the value of time.game

pliant ridge
#

Thank you

spark pendant
#

no problemo... just send a screenshot to verify if it's constructed correctly

pliant ridge
#

Gimme a min and I’ll snip it

#

I say screw snipping tool rn

spark pendant
#

ok, should be good then

pliant ridge
#

Awesome! Thank you

spark pendant
#

no problemo, feel free to ping me if you experience any issues

pliant ridge
#

Got through the first stage and it’s amazing, this is gonna make getting each stage at least started for inf, so like thank you thank you thank you so much, it’s awesome

spark pendant
#

no worry, that's why I made the script

plucky moat
#

can this be run in reverse (meaning, impossible -> easy rather than easy -> impossible)?

plucky moat
#

nvm I found it, it's there already

spark pendant
spark pendant
#

This change may have lead to exiting being laggy, if you do experience obnoxious lag, please ping me

brazen rain
spark pendant
#

nope, the curent pin is good enough

brazen rain
#

aites

toxic idol
#

Btw, can you add option to stop after certain time to push inf for spreading inf stone bonus

plucky moat
#

start from #1186247659233751140 message

spark pendant
#

all good, problem is being solved in #ai-help

raw pollen
#

it somehow doesn't work for me, it just stay at the same region though i pressed 'w'

#

oh lol i forgot to press 'x'

#

it works now

leaden ridge
#

is there a way to set the additional condition to a certain amount of infinities?

#

like this?

spark pendant
#

ye, that's the way to do it

You set the additional condition to what you want to be reached

leaden ridge
#

it seemed to be working at first, but randomly exited and went down a difficulty. not sure if i died cuz i didn't catch it in time, and when i restarted the ai it switched from imp>easy back to easy>imp

spark pendant
#

what?
It can't do that

Do you mean the mode changed from Region>Difficulty to Difficulty>Region?

spark pendant
leaden ridge
#

here's lines 20 and 29

#

ok, so i did a quick test, if i activate the script while in the TT menu it goes to easy, but if i start it from town it goes to impossible first.

spark pendant
#

ok, good

you see this?

When the script exits tower testing, it'll tell you if the exit was caused by additional_cond becoming true or if the tower died

leaden ridge
#

okay, i'll run it again and check it.

#

also not sure about that functionality when starting the script from TT menu

spark pendant
leaden ridge
#

it does though, strange.

spark pendant
#

in that case, I likely messed something up XD

#

well, I can't reproduce it on my end

It just waits while I'm in the tower testing menu

spark pendant
leaden ridge
spark pendant
#

hmm, could you try it again, but with only my towertesting script active?

maybe something else is starting the round?
I doubt it, but it's the only thing that comes to mind

leaden ridge
#

ahhh

#

that was it

spark pendant
#

something else is activating it?

leaden ridge
#

yep, i had another TT script that I used to use

spark pendant
#

that'd explain it, yea

Good to know that I didn't mess something up XD

leaden ridge
#

for sure, good troubleshooting, boss 🤝

spark pendant
#

ah, goals.crawl

leaden ridge
#

yep

spark pendant
leaden ridge
#

Thanks, will do!

spark pendant
#

so, unfortunately, I can't detect if the exit was caused by an external script, but I can add Exit caused by user request if you press key.e to exit tower testing

Do you think that's worth adding?

and if you do, would you prefer Exit caused by user request or Exit caused by user input?

spark pendant
leaden ridge
spark pendant
#

I went over it in infinity phase, maybe you come to the same agreement with fireball? #infinity-phase message

spark pendant
#

Update to version 2.0.9

when you exit tower testing, and the script is running, you can now get 4 reasons for the exit, no longer just 2

version 2.0.8 only had```
Exit caused by additional_cond
Exit caused by tower death

version 2.0.9 has```
Exit caused by pressing key.e
Exit caused by additional_cond
Exit caused by tower death
Exit caused by external cause

key.e changes to the corresponding key if you change the letter of the macro {exit} in the source

external cause means that something else exited the run, not my script

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

spark pendant
#

Update to version 2.1.0

Fixed an un-managed lingering hiding block that could happen if you pressed the keys to exit, open stats or to restart before the script initialized.

Updated the script condition to a better format. You can now figure out what line to modify in a single click as apposed to 2 clicks

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

spark pendant
spark pendant
#

Update to version 2.2.3

Complete design overhaul.
You can now only interact with the script when in the HQ, town, the TowerTesting menu and a game of towertesting.
Added new global variable Diff Order(D) that determines the order in which difficulties are entered.

Renamed time.game into game_time. Removed time.real and replaced it with end_time.

Reformatted README to hopefully be more digestible.
README now includes a gif that shows you how to use the condition comments.

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

#

script should no longer be able to conflict with AllBlue

If you are using AllBlue and experience issues with the UI, please ping me immediately

plucky moat
#

so does it just start from the last selected difficulty now? I had it set to I->E and it kept starting on E (since that was the last difficulty ran)

spark pendant
#

I may not be resetting the script memory correctly then

spark pendant
spark pendant
spark pendant
plucky moat
#

Reg>Dif, yeah

spark pendant
#

I assume it's unchanged after 15 cycles then?

plucky moat
#

I don't know, my run length is too long to find out without having to restart the whole thing

#

but I can test it with a short cap

#

but the previous behavior was that it would reinitialize from E or I depending on what was set

spark pendant
#

so, pingpong between Easy and Impossible if you're changing the Diff Order?

#

like, is that what you expect?

plucky moat
#

sort-of - the problem was that I was seeing this from a reinitialize after turning the entire overlay off

spark pendant
#

oh, the state is completely removed then

The default setting is Easy -> Impossible

plucky moat
#

my assumption with flipping the difficulty switch is just that it'll turn it around - say I'm on hard going E->I and I flip it, in theory it should go to Medium after that hard run finishes (since in the I->E order medium would be after hard)

#

but if I'm turning the overlay off and on again it shouldn't be starting at hard

#

okay so I just tested from start.
launched the script from Winter Hard, hit E and it kicked over to Underground Easy
then I hit E again and it kicked over to Underground Nightmare

spark pendant
#

well, it should be impossible for it to chose that unless you got really unlucky and the click to sellect the difficulty didn't go through but the click to launch did go through

#

oh, you probably just got the unlucky clicks then
I would not have expected it, but ig I can add a wait(time.unscaled()) after the show("towertesting", true) just to make it less likely to happen... the only downside being that it'll make the menuing a little slower, but that's not too big of a sacrifice, is it?

plucky moat
#

well if you can hop into general voice I can show you what I'm seeing

spark pendant
#

sure

plucky moat
#

so region cycling is taking precedence over difficulty switching if it's D>R but region cycling is true

spark pendant
#

yea, I honnestly can't see anything XD

plucky moat
#

oh right, dynamic rendering

#

how about now?

spark pendant
#

yea, my eyes started to work again

#

I didn't expect job_status to still have a leaking <color> block, thanks for showing me that btw XD

#

I'm honestly just completely lost at what's going on XD

I think I'm understanding the problem less now than I was before XD

plucky moat
#

it looks like there's an off-by-one somewhere in there - at one point after flipping D around I saw Hard -> Hard -> Nightmare

#

I think updated settings are getting applied a run behind?

#

if I X all the way back out it looks like it works As Intended so this might just be something that happens if you play around with the settings after it's launched

#

but I can't see changing WQD without X being active because the globals get hidden

spark pendant
#

only difficulty order changes, just fixed it

want a version without the block hider?

plucky moat
#

yes please

spark pendant
#

sure, can I get your additional_cond?

#

what is it?
a global int, bool?

#

bool

plucky moat
#

global bool, hang on

#

I100B or <25% shieldpoints or >3600 Seconds runtime

spark pendant
#

Pokota:Stop?

plucky moat
#

yeah

spark pendant
#

oh, fr?
I thought that'd change XD

#

umm, can you increase the UI size to 100% pls?

#

ok, ty

That's broken XD

plucky moat
#

hopefully we can make some headway on this later (gotta get back to work)

spark pendant
#

sure

#

ok, this is gonna make things about 3 times more difficult XD

spark pendant
#

I don't think you're gonna be here in the next 12 minutes, so I'll be away for a bit

spark pendant
plucky moat
#

none, I'm on the clock still xD
was just waiting for file transfers to fail

spark pendant
#

lol

spark pendant
#

Update to version 2.2.4

Fixed some variables still being editable while outside of their context
Fixed a leaking <color> block in job status
Fixed a bug where the hidden variable holding the difficulty coordinate would get eaten if you were in mode Region -> Difficulty (Issue was that I was treating the game as if it had 16 regions instead of 15)

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

spark pendant
#

I'm about to update the script to 2.2.5 to remove variables game_time and time.real since the game now gives us those variables.

I could, and would like to, remove additional_cond as well, since its purpose is now obsolete and it'd let me changein_towertesting: waitframe() additional_cond = {additional_cond} gotoif(in_towertesting, bla bla bla)into a simple waitwhile(bla bla bla), however, additional_cond is also used in setting the job status.

Do you friendos think that the text Exit caused by additional_cond is enough of a reason not to turn 3 actions into 1?
This change would also invert the syntax for additional_cond, sadly. So that, if you wanted to exit after wave 5, where you'd currently have to do additional_cond = waves() >= 5, you'd now have to edit the waitwhile's first condition to waves() < 5

spark pendant
#

wait, do you guys even know what I mean by job status?

spark pendant
#

Update to version 2.2.5

Removed variables game_time and time.real. Added impulse close.towertesting, reworked some stuff so that the script is now shorter by 3 actions and added an explanation for what job_status actually is, because the readme didn't have it for whatever reason

GitHub

A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium

#

Not a lot of testing on this, but it survives my attempts to break it, so have fun trying to rip it to shreds :)

obtuse marsh
#

@spark pendant it is never changing region. yes i had region cycle on. i have tried prioritizing region, prioritizing difficulty, both difficulty directions, setting the variables while in hq instead of during a run.

spark pendant
#

aha, I don't think I ever tested region cycling XD

spark pendant
obtuse marsh
#

i dont have a additional cond

#

though i now realize i should add 100b or i will just forevor stay at forest easy

spark pendant
#

shadow patch. Fixed, no need for a version bump. If you've had it imported beforehand, you should reimport

obtuse marsh
#

for difficulty priotizing at least, have not tested region prioty, it goes to next region before entering first tower test, and it changes regions one difficulty to soon @spark pendant

spark pendant
#

I have no clue how this worked any sort of well beforehand, the counting string appears to be shorter than the number of regions actually is

#

I can now see why I wanted to give it a redesign, jees

obtuse marsh
#

cassualy hands me a script with a additional cond set to infinity 1T

#

still changes region on startup, but it goes through all difficulties now

spark pendant
spark pendant
#

or are you getting it on Difficulty>Region too?

obtuse marsh
#

it is happening on difficulty>region too

spark pendant
#

I either went out of my way to make that happen because people wanted it, or I went out of my way to fix that and I failed... idk which one it is

#

oooh, I see how it used to work

spark pendant
#

extra* not else

spark pendant
timid bramble
#

not sure what's going on but it keeps exiting "because of tower death" while the tower is very much alive

#

i could be wrong but it feels like it's checking the tower presence before the rounds loads finds nothing and close exit tower testing as soon as it starts

spark pendant
#

yea, it's not really checking if your tower actually died.
The check is as follows:
Is the job_status telling the user why I exited? If yes, don't change it
Otherwise, determine why we exited:
Is the additional_condition true? If yes, say that's the cause
Are we still in towertesting? If yes, assume the tower died, otherwise, assume an external script exited instead

I uhh, broke it unintentionally by adding now() back to end_time and not updating the gotoif.
It makes the script unusable, so I need to fix it, thanks for telling me, one sec

spark pendant
timid bramble
#

goal was to unlock as many infinity as i could while afk

spark pendant
spark pendant
timid bramble
#

thanks works great 💚

wheat sleet
#

tried using this, but i have to manually press exit to town when a round ends? (from hitting 100/100)

spark pendant
#

yea, it has no way to detect if you beat normal mode. You need to add an additional_cond for that

robust flume
#

would u consider other predetermined conditions?

things like inf,era,wave reach count on the region
gained count
be more than the previos one
reach a wave speed

spark pendant
# robust flume would u consider other predetermined conditions? things like inf,era,wave reach...

That's what additional_cond is for, so that you can add any of the conditions you want.

The tools I give you are as follows:
Exit the game after seconds + minutes + hours real time has passed.
Exit the game if your tower died.
Exit the game if you shut down the script.
Exit the game if key.e or another script exited the game.

and, of course
Exit the game if additional_cond is met.

all of these conditions are universally valid. You wouldn't want to stay in the game if your tower died, or if the script shut down, or if you asked to exit the game, or if your defined additional condition has been met.

Adding stuff like exit after x infinities, eras, waves or after reaching x wave speed are user dependent. Not everyone wants to exit after advancing by 25 infinities, some may wants to do so after 100 infinities. Such a thing would require adding more things the user has to modify, which goes against the core principle of a script made for you to leave running in the background, which is: Make the user have do as little as possible to achieve what they want.

robust flume
#

yeah i meant it in under additional conditions

thoose all seem as valid as picking the time to me
person can always keep them at 0 or not keep them closed

spark pendant
#

oh, you mean pre-defined fields in additional cond so you have less to edit?

#

I mean, if you want that, you also have a hidden tool... the ability to ping me and have me deal with it and just give you the modified import code

spark pendant
#

yea, to modify it for you, I need to know the values you want XD

robust flume
#

i may also try something like "till x more inf of the lowest inf"

#

i dont need the era and wave count tho