Working Perfect Tower II Mining AI Script

Friday, 02 April, Year 13 d.Tr. | Author: Mircea Popescu

Not being one to waste too much time, here it directly isi :

perfect-tower-ii-scripting-interfaceBU1pbmVyAQAAAAlvcGVuLm1pbmUAAAAADAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAdNSU5FVEFCCGNvbnN0YW50AgIAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQJTUlORUxheWVyCGNvbnN0YW50AgAAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQGTUlORVhZCGNvbnN0YW50AgAAAAAIbWluZS5kaWcOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQGTUlORVhZCGNvbnN0YW50BANNT0QIY29uc3RhbnQCBAAAAA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAZNSU5FWFkIY29uc3RhbnQEAS8IY29uc3RhbnQCBAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAZNSU5FWFkOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQGTUlORVhZCGNvbnN0YW50BAErCGNvbnN0YW50AgEAAAAOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCBAAAAA5jb21wYXJpc29uLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAZNSU5FWFkIY29uc3RhbnQEATwIY29uc3RhbnQCEQAAAA1taW5lLm5ld2xheWVyDWxvY2FsLmludC5zZXQIY29uc3RhbnQECU1JTkVMQVlFUg5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAlNSU5FTGF5ZXIIY29uc3RhbnQEASsIY29uc3RhbnQCAQAAAA5nZW5lcmljLmdvdG9pZghjb25zdGFudAIDAAAADmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQECU1JTkVMQVlFUghjb25zdGFudAQBPAhjb25zdGFudAILAAAACG1pbmUudGFiDWxvY2FsLmludC5nZXQIY29uc3RhbnQEB01JTkV0QUINbG9jYWwuaW50LnNldAhjb25zdGFudAQHTUlORVRBQg5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAdNSU5FVEFCCGNvbnN0YW50BAErCGNvbnN0YW50AgEAAAAOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCAgAAAA5jb21wYXJpc29uLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAdNSU5FVEFCCGNvbnN0YW50BAE8CGNvbnN0YW50Ag4AAAA=

And here's how it looks while it's working :

Perfect Tower II Mining Script at work -- don't mind the primitive drill, it's unupgraded yet.

Perfect Tower II Mining Script at work -- don't mind the primitive drill, it's unupgraded yet.



~ * ~

perfect-tower-ii-battle-screenFor everyone else, Perfect Tower II (illustrated to the right) is an... unfinished, how shall we say this, alphaii tower defense game.iii

It's been in development for a year or two (it just hit the Steaming Pile Of Shit as an early release maybe last month) ; but it's interesting to me because it makes a very peculiar set of choices in terms of what to develop.

perfect-tower-ii-workshopThe graphics, for instance, are very much neglected (as you can see) ; whereas the interface level of access is extremely refined (as you can also see). I mean, there's an actual Basic Ada strap-on for crying out loudiv! I can script game activity to the level of peeling off layers and moving through tabs, and it's all natively supported.

Needless to say this is exactly the sort of balancing choice I tend to favour (and have been favouring systematically throughout Minigame's tenure, especially as seen in Eulora development). I happen to believe it's the right choice, because you can always paint later upon the many edges and panes of a well made game (even if that "later" never in practice comes) ; but you can never "make" a game out of a set of very expensive, elaborately hand-painted... paintings. And, most importantly at all, everyone must wait while the smartest are satisfied first -- always and everywhere FIRST, and always and thoroughly SATISFIED. If this should mean there'll be no resources left for "everyone else" left waiting in line, all the better. Nobody cares. Let all-but-the-smartest whither and die for lack of basics, I don't give a shit. Nor should you! Actually, strike that : nor may you.

Because the alternative, where "everyone gets the basics", results in atrocities like the present situation. Do you know there doesn't exist anywhere, google be damned, a workingv mining scriptvi for this year old game ? I had to make my own ; always and perpetually whenever I want something I gotta make my own, because nobody does anything useful, because everyone's way too busy jacking off and "helping everyone get the basics". Fuck that dumb shit.

Fuck that dumb shit with a red hot poker, the only interesting problem in the world is the complete satisfaction of the very best and nothing else matters.

———
  1. If you're curious, that base64 encoding decodes to the lulziest of mixed-binary-xmlish nonsense...

    00000000: 054d 696e 6572 0100 0000 096f 7065 6e2e .Miner.....open.
    00000010: 6d69 6e65 0000 0000 0c00 0000 0d6c 6f63 mine.........loc
    00000020: 616c 2e69 6e74 2e73 6574 0863 6f6e 7374 al.int.set.const
    00000030: 616e 7404 074d 494e 4554 4142 0863 6f6e ant..MINETAB.con
    00000040: 7374 616e 7402 0200 0000 0d6c 6f63 616c stant......local
    00000050: 2e69 6e74 2e73 6574 0863 6f6e 7374 616e .int.set.constan
    00000060: 7404 094d 494e 454c 6179 6572 0863 6f6e t..MINELayer.con
    00000070: 7374 616e 7402 0000 0000 0d6c 6f63 616c stant......local
    00000080: 2e69 6e74 2e73 6574 0863 6f6e 7374 616e .int.set.constan
    00000090: 7404 064d 494e 4558 5908 636f 6e73 7461 t..MINEXY.consta
    000000a0: 6e74 0200 0000 0008 6d69 6e65 2e64 6967 nt......mine.dig
    000000b0: 0e61 7269 7468 6d65 7469 632e 696e 740d .arithmetic.int.
    000000c0: 6c6f 6361 6c2e 696e 742e 6765 7408 636f local.int.get.co
    000000d0: 6e73 7461 6e74 0406 4d49 4e45 5859 0863 nstant..MINEXY.c
    000000e0: 6f6e 7374 616e 7404 034d 4f44 0863 6f6e onstant..MOD.con
    000000f0: 7374 616e 7402 0400 0000 0e61 7269 7468 stant......arith
    00000100: 6d65 7469 632e 696e 740d 6c6f 6361 6c2e metic.int.local.
    00000110: 696e 742e 6765 7408 636f 6e73 7461 6e74 int.get.constant
    00000120: 0406 4d49 4e45 5859 0863 6f6e 7374 616e ..MINEXY.constan
    00000130: 7404 012f 0863 6f6e 7374 616e 7402 0400 t../.constant...
    00000140: 0000 0d6c 6f63 616c 2e69 6e74 2e73 6574 ...local.int.set
    00000150: 0863 6f6e 7374 616e 7404 064d 494e 4558 .constant..MINEX
    00000160: 590e 6172 6974 686d 6574 6963 2e69 6e74 Y.arithmetic.int
    00000170: 0d6c 6f63 616c 2e69 6e74 2e67 6574 0863 .local.int.get.c
    00000180: 6f6e 7374 616e 7404 064d 494e 4558 5908 onstant..MINEXY.
    00000190: 636f 6e73 7461 6e74 0401 2b08 636f 6e73 constant..+.cons
    000001a0: 7461 6e74 0201 0000 000e 6765 6e65 7269 tant......generi
    000001b0: 632e 676f 746f 6966 0863 6f6e 7374 616e c.gotoif.constan
    000001c0: 7402 0400 0000 0e63 6f6d 7061 7269 736f t......compariso
    000001d0: 6e2e 696e 740d 6c6f 6361 6c2e 696e 742e n.int.local.int.
    000001e0: 6765 7408 636f 6e73 7461 6e74 0406 4d49 get.constant..MI
    000001f0: 4e45 5859 0863 6f6e 7374 616e 7404 013c NEXY.constant..<
    00000200: 0863 6f6e 7374 616e 7402 1100 0000 0d6d .constant......m
    00000210: 696e 652e 6e65 776c 6179 6572 0d6c 6f63 ine.newlayer.loc
    00000220: 616c 2e69 6e74 2e73 6574 0863 6f6e 7374 al.int.set.const
    00000230: 616e 7404 094d 494e 454c 4159 4552 0e61 ant..MINELAYER.a
    00000240: 7269 7468 6d65 7469 632e 696e 740d 6c6f rithmetic.int.lo
    00000250: 6361 6c2e 696e 742e 6765 7408 636f 6e73 cal.int.get.cons
    00000260: 7461 6e74 0409 4d49 4e45 4c61 7965 7208 tant..MINELayer.
    00000270: 636f 6e73 7461 6e74 0401 2b08 636f 6e73 constant..+.cons
    00000280: 7461 6e74 0201 0000 000e 6765 6e65 7269 tant......generi
    00000290: 632e 676f 746f 6966 0863 6f6e 7374 616e c.gotoif.constan
    000002a0: 7402 0300 0000 0e63 6f6d 7061 7269 736f t......compariso
    000002b0: 6e2e 696e 740d 6c6f 6361 6c2e 696e 742e n.int.local.int.
    000002c0: 6765 7408 636f 6e73 7461 6e74 0409 4d49 get.constant..MI
    000002d0: 4e45 4c41 5945 5208 636f 6e73 7461 6e74 NELAYER.constant
    000002e0: 0401 3c08 636f 6e73 7461 6e74 020b 0000 ..<.constant....
    000002f0: 0008 6d69 6e65 2e74 6162 0d6c 6f63 616c ..mine.tab.local
    00000300: 2e69 6e74 2e67 6574 0863 6f6e 7374 616e .int.get.constan
    00000310: 7404 074d 494e 4574 4142 0d6c 6f63 616c t..MINEtAB.local
    00000320: 2e69 6e74 2e73 6574 0863 6f6e 7374 616e .int.set.constan
    00000330: 7404 074d 494e 4554 4142 0e61 7269 7468 t..MINETAB.arith
    00000340: 6d65 7469 632e 696e 740d 6c6f 6361 6c2e metic.int.local.
    00000350: 696e 742e 6765 7408 636f 6e73 7461 6e74 int.get.constant
    00000360: 0407 4d49 4e45 5441 4208 636f 6e73 7461 ..MINETAB.consta
    00000370: 6e74 0401 2b08 636f 6e73 7461 6e74 0201 nt..+.constant..
    00000380: 0000 000e 6765 6e65 7269 632e 676f 746f ....generic.goto
    00000390: 6966 0863 6f6e 7374 616e 7402 0200 0000 if.constant.....
    000003a0: 0e63 6f6d 7061 7269 736f 6e2e 696e 740d .comparison.int.
    000003b0: 6c6f 6361 6c2e 696e 742e 6765 7408 636f local.int.get.co
    000003c0: 6e73 7461 6e74 0407 4d49 4e45 5441 4208 nstant..MINETAB.
    000003d0: 636f 6e73 7461 6e74 0401 3c08 636f 6e73 constant..<.cons
    000003e0: 7461 6e74 020e 0000 00 tant.....

    Da fuck is that "arithmetic.int.local.int.set.constant" / "local.int.get.constant" spelled out shit ? What is this, the spurious machine spelling bee competition ?! (Check it out btw, Layer / LAYER.) But do you have any idea what wonders zip/deflate would do to it !??! AND WHY DO I KNOW THIS, GOD DAMN IT!eleventy

    Anyway, if you wish to reproduce such wonders at home, it's not hard to do with all-standard tools :

    echo "VGhpcyBpcyBzb21lIHRleHQu" | base64 -d | xxd

    []

  2. You know how "beta" means "a rough prototype that doesn't work but might illustrate the contemplated concepts for deeply specialized minds that are generously inclined" everywhere, yet in software "engineering" it somehow means "eh, ship it to production, whatever" ? []
  3. Pro tip : don't use a skill point to get the Detector Mine skill. Just not worth anything (even if by level 30 or so you'll have spare points not worth using anyways). []
  4. And no, THERE IS NOTHING WRONG WITH GOTO PROGRAMMING.

    Yes, I know they insistently told you there is, and you ended up believing (just like you ended up believing there's something wrong with html's table element, or inline styling, or whatever the fuck else). Because back in the 80s it was the early age of human thinking, apparently, and you buncha simpletons simply believed what everyone insisted upon. Because "that's how it worked back in school", right, and d'oh, why's the world not simply school-continued, and thank you very much for ruining EVERYTHING because look now, 30 years later every last halfwit in existence is trying to nigger out of insisting in that manner (meanwhile called "consensus"). You had to ruin it, you buncha sheepcows. Didn't you!

    Yet there's nothing wrong with goto programming (nor is "recursion" gonna earn you brownie "intelligent kid" points ; nor is it the right solution in every fucking context) ; and you really did ruin the world. []

  5. Check out this nutfarm offering :

    :global int atr_layer
    :global int atr_index
    :local int index

    index = atr_index
    atr_index = atr_index + 1
    gotoif(7, atr_index == 17)
    execute("auto_tiler_recursive")
    5: dig(index % 4, index / 4)
    goto(5)
    7: waituntil(atr_layer > 0)
    8: newlayer()
    atr_layer = atr_layer - 1
    gotoif(8, atr_layer > 0)
    goto(7)

    It's on the game site's own wiki, perfecttower2.com/wiki/AI_Script_Repository. It recurses (!), yet nevertheless can't peel layers or move tabs (!!!) and what the fuck holy shit. There's more cowpigfoot offerings on rettardit (apparently the gamedevs are byproducts of that cowpie fermenter) and they're no better! I spent five minutes searching and ten minutes writing, and this is the state of the world you've wrought.

    Nothing for "everyone". Not even the basics. []

  6. Speaking of "working" : mine has this interesting property that it doesn't start mining on tab 1, it starts mining on the current tab, whatever that is, and continues from there to the 2nd and so on in order. This is important because right after a tier-up, all the resources being depleted, the mine white box finds are the best means to kickstart the tower modules into higher gear so you can start making some serious resources TD-ing. This means you'll be depleting the first few 5-6 tabs (the one for which the dig cost was reduced all the way to 1) way before you can afford to dig the further ones out (and in particular the 1st tab you deplete to even get enough orange resources to get going in the first place). Notwithstanding the tenuous circumstances, nothing is lost with my script because it will happily dig your current tab whichever it is, and then you have plenty of time to stop it while it drones impuissantly on tab 2.

    There's something to be said for "coding sloppiness", especially when that "sloppiness" matches underlying characteristics of the world. []

Category: Trolloludens
Comments feed : RSS 2.0. Leave your own comment below, or send a trackback.
Add your cents! »
    If this is your first comment, it will wait to be approved. This usually takes a few hours. Subsequent comments are not delayed.