50 and... I discovered another way to get infinite turns with my artifact EDH deck.
The old combo was pentavus + time sieve + illusionist's bracers
equip the bracers to pentavus -> this allows it to turn one +1/+1 counter into 2 pentavite tokens and 1 of those tokens into 2 counters
use this to get to 5 tokens without killing it
sacrifice the 5 tokens to time sieve to get your extra turn
Repeat for as long as you like
The other way to do this is by replacing the bracers for a Master transmuter. This allows me to take one of my artifacts from the battlefield back into my hand and then put one back onto the battlefield. Note: This can be the same one.
So.. the loop becomes
play pentavus (which comes with 5 +1/+1 counters into play)
remove 4 or less counters to get that many tokens
take it back with master transmuter and put it back into play
remove as many counters as needed to get to 5 tokens
sacrifice them to time sieve and on your next turn repeat step 2.
Using the transmuter you can also get the pentavus in play right before it will be your turn by taking another artifact back. This also means that this version of the combo is easier to pull of as it can be done with a lot less mana and/or you don't have to play the pentavus on your turn and hope it survives until its your turn again.
I have no idea why I never saw this version earlier, especially as I am pretty certain this version of the loop exists in that deck longer than the first one. In fact, I bought the bracers specifically so this deck had an infinite turn loop >_<
50 so... I would like to simplify how multi threading in my game is done. Specifically, the way that characters get updated.
Right now characters have both an update function and an update_par function. The update_par function is used to update the character in ways that multiple characters can do at the same time. For example calculating the path to their destination. the update function is used for everything else for example actually walking said path. The main reason I want to get rid of how its currently done is because I now need to iterate 2 times over the character list and though one of those iterations can use multiple threads that won't always be the case (WASM being one of those cases)
The problem that I run into is that I can't think of a nice way to fix it. Either I change it so that on WASM I only use 1 loop to run both but I feel that the difference between native and WASM becomes too big.
The other thing that I could do is to combine the update and update_par functions. However, this means that I need to provide certain values using Arc<Mutex<T>> however this will mean that the moment one of those threads needs access to one of those values all the other threads need to wait on this thread before they can also do this. This, at least in my eyes kind of defeats the point of using multiple threads.....
There is also something else that I can do, but that will only make native builds use the multi threading better while also slowing down the WASM builds. Or in other words, it fixes the problem for the one case where the problem doesn't have to be fixed while making the case when it needs to be fixed worse.
The difference is that on native the second function doesn't seem to get executed, while on WASM this does happen. This is a very important difference because it means that you have no way of knowing if an asset is loaded on native.
I am actually kind of proud of the load function as it isn't the easiest code to generate
and yes as you can see, it does handle sub folders correctly
The first screen you get is how far I got with the shop before I gave up. Simply click on some of the "names" to buy them, when you are done press ESC to go to the game.
The fact that this isn't exactly the most intuitive yet is why I haven't updated the online build for so long.....
Also, I found a nice little sprite that I should be able to use. It probably won't stay into the game but I needed something