Good vs. Evil

  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
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 >_<
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
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.
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
50 if someone is able to tell me why the execute_or method of this file behaves differently on WASM then it does on native that would be great: https://github.com/ryanisaacg/quicksilver/blob/master/src/lifecycle/asset.rs

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.
 

duckfan77

Popular Member
Mar 18, 2013
80
683
118
49 I took a look, but I don't know rust and can't muddle through the syntax enough to figure out why it might not be.
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
50 and... I finally have the asset manager fully working.

There is still no load screen (as the thing I need is still broken on native) but I managed to make a script that creates the loading code for me :)

Now, when I want to add a new asset I simply place it in the static folder, run "yarn gen assets" and it will automatically add the asset to be loaded together with making an entry in the correct enum so I can access it easily withing from the AssetManager. The main code for this can be found here: https://github.com/lenscas/arena_keeper_quick/blob/master/scripts/generators/assets.ts .

I am actually kind of proud of the load function as it isn't the easiest code to generate
upload_2019-7-28_23-4-24.png

and yes as you can see, it does handle sub folders correctly :)
[/CODE]

This also marks the beginning of the fact that I'm going to restructure the old code generating scripts (at least the ones that I can still use). The biggest change is that I am now using typescript instead of Javascript.
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
50.5 decided to update the build of my game:
https://lenscas.github.io/arena_keeper_quick/

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
 

lenscas

Over-Achiever
Jul 31, 2013
2,015
1,801
248
51 I'm not the one that removes it, its a pull request for quicksilver made by the owner.