v1.6.4: Adjustable Costs



The bot's recommended play is much more clear.

Fixed a bug where the bot overvalued indestructible creatures.

The life target has been revised from 320 - turn # to 400 - twice turn #.

Adjustable Costs

Up to this point, there's one rule that aethermancer has been following: costs are constant. If a card says it costs 4, it costs 4. Sure, wild magic and channel can change how you pay for that cost, but nothing changes the cost. This patch introduces cards that change that.

Reducing a cost below 0 has no effect.

Disabling the Core

There is one card whose cost can never be changed: Your core. Your core is consider an aether card with cost 0. If for any reason your core would have a cost above 0, it is instead disabled. Disabling the core means that it does nothing when played. In other words, ! and @ abilities no longer function. Start of turn and passive abilities will continue to function.

New Cards

Wall of Oppression (Abjurer 5)

! Opponent loses 1 of each mana.

Opponent's cards cost 1 more.

0/16

Sorcerer's Apprentice (2)

Your spells cost 1 less.

3/13

Dragon's Lair (2)

! Pay 3 of each basic mana or destroy this. +2 Aether.

R: +2 Aether.

Dragon costs you 3 less.

0/14

Tyler Estate Censor (Abjurer 4)

Your opponent's cards cost 1 more.

2/17

Doubling Cube (Abjurer 8)

Your opponent's cards cost their printed cost more.

0/17

Codex of Efficiency [37]

When you play a non-core aether card, -4 life.

Your cards cost 1 less.

[Codex rule.]

Alchemy [35]

Whenever you play a non-core aether card, lose 1 of each basic mana.

Your aether cards cost 2 less.

Xyz Casting [45]

Your aether cards cost their printed cost less if you control at least two basic creatures of that cost.

When you use this discount, destroy all creatures that provided it.

Venerated Loxodon (Restorer 5)

! Modify your other unfrozen creatures with +1 power. Heal them 2. Freeze them.

Costs 1 less per unfrozen creature you control.

4/17

Impervious Greatwurm (11)

! Freeze your other creatures.

Costs 1 less per unfrozen creature you control.

Indestructible

14/14

Blasphemous Act (Banisher 9)

! Attack all creatures.

Costs 1 less for each creature in play.

13

Card Changes

Quintessence: Life adjustment 0 -> -4

Astral Drake: 

"Sweep. I have additional power equal to your lowest mana. Playing your core has no effect." -> 

"Sweep. I have additional power equal to your lowest mana. Your core costs 1 more."

Trig:

"Sweep. Before opponent's action phase, reduce their aether to 0 and their basic mana to 6." ->

! Reduce opponent's mana to 5.

R: Reduce opponent's mana to 5.

Sweep. Opponent's aether cards cost 99 more.

Annihilation: Reworked. Now:

(Banisher 6)

! Destroy all creatures.

Can only be played if you control a creature with (printed) cost 5 or more.

Lens of Truth: [-2] -> [-3]

With a much larger card pool, and more situationally punishing cards (eg. Elvish Bow, A Quintessence), the value of perfect information is now higher. In addition, lens of truth was historically balanced to be -3 (pass was 48 and lens 45, then pass got nerfed to 47 without touching lens, which got lens to be a -2 when it was converted to a rune).

I've noticed a balance issue with the base set. The stats are fairly overwhelming on this, and my experience leads me to think the stats are not wrong.

E1: 2/8 -> 2/7

E11: 3/21 -> 3/20

Fumigate: Replaced again:

Brawl (Banisher 8)

! Destroy all creatures.

@ ally. Don't destroy it.

Rally, Rank 7: Life adjustment -2 -> 0

Rally, Rank 8: Power 7 -> 0+

Rally, Rank 9: Removed from the game

Refactoring the client and replay viewer

Removed the feature to have the AI play for you with [AI] in your name. The AI suggestion feature replaces that and is better for new players to learn what to do.

The client now automatically stores the replays of every game it plays. Unfortunately, the client's replay-viewing functionality is limited.

To use the limited replay-viewing function:

Ensure the replay only contains four lines, eg:

['Master', 'Guard', 'Turtle', 'Apprentice', 'Forest Sprite', 'Phoenix', 'Fire Elemental', 'Darksteel Piston', 'Blur Sliver', 'Elder', 'Giant Spider', 'Flame Wave, Basic', 'Cloud', 'Armageddon', 'Turn, Rank 4', 'Troll', 'Ritual of Fibonacci', 'Hydra', 'Wall of Fire', 'Sage']
[4, 5, 3, 4, 2]
['Wargear', 'Fence', 'Air Elemental', 'Master Healer', 'Inferno', 'Meditate, Basic', 'Hermit', 'Natural Fury', 'Xyz Casting', 'Arc Lightning', 'Apostate', 'Overlord', 'Drake', 'Water Elemental', 'Blasphemous Act', 'Skeleton Army, Rank 3', 'Rejuvenate', 'Commander', 'Tornado, Basic', 'Demon', 'Rune of Harvesting', 'No Rune', 'No Rune', 'No Rune']
[4, 2, 4, 5, 2]

You will have to manually replay the moves, though fortunately the replay.txt file is very human-readable.

The replay viewer will be upgraded in future versions, I will need some time to think about the best way to format and store replay files.

Image UI

I'm not bothered to manually add images myself, and some people complain when half the cards have no art. As a result, I've decided to outsource the job:

if r_name not in image_cache:
   image_cache[r_name] = "chess battle advanced"  # lets not ddos itch.io
   r = requests.get(f"<a href="<a href="<a href="https://html-classic.itch.zone/html/15409080/images/{r_name}.png">https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a>"><a href="https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a>">https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a></a>"><a href="<a href="https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a>">https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a></a>"><a href="https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a></a>">https://html-classic.itch.zone/html/15409080/images/{r_name}.png</a></a></a>")
   if r.status_code != 403:
      with open(f"img_ice/{r_name}.png", 'wb') as f:
         f.write(r.content)

Isn't downloading random files from the internet onto your computer a security vulnerability?

The onlything my code does with the downloaded file is call pygame.image.load on it. If there's a vulnerability, blame the pygame people for writing a load function that executes data.

end of patch notes

Get Aethermancer

Leave a comment

Log in with itch.io to leave a comment.