Shandalar - Feature Requests
Import destroys_if_blocked system from Manalink (reviewed)
The game is strange when it comes to deathtouch. It used to just behave like it's not there at all, which it still does.
It's not being "recognized" as a combat ability:
The AI won't attack with a Deadly Recluse , even if it could, for example, regenerate it.
The AI will gang-block with several deadly recluses + other creatures where just one recluse would do (better).
The AI won't block with a single recluse, it'll wait untill it has enough total power to kill something in a gang-block.
But!
I've had the AI use Rabid Bite targeting Deadly Recluse to kill my dude, repeatedly. Which means that outside of combat it does "understand" deathtouch and take it into account.
So can it be made to "work" in combat properly, too?
It's not being "recognized" as a combat ability:
The AI won't attack with a Deadly Recluse , even if it could, for example, regenerate it.
The AI will gang-block with several deadly recluses + other creatures where just one recluse would do (better).
The AI won't block with a single recluse, it'll wait untill it has enough total power to kill something in a gang-block.
But!
I've had the AI use Rabid Bite targeting Deadly Recluse to kill my dude, repeatedly. Which means that outside of combat it does "understand" deathtouch and take it into account.
So can it be made to "work" in combat properly, too?
Last edited by Korath on 19 Sep 2016, 00:39, edited 4 times in total.
Reason: Rename from "Assorted Deathtouch oddities"
Reason: Rename from "Assorted Deathtouch oddities"
Comments
Posted by Korath » 19 Sep 2016, 00:52
commit 379f99db9c014dbcb30705d3069ba9c73287f059
Author: Korath <dgk@Beleriand.none>
Date: Sun Sep 18 20:50:42 2016 -0400
[GG] #1179: use bit 0x40 in enemies_against_color for deathtouch
This works exactly like Manalink's DIFB_DESTROYS_UNPROTECTED: it teaches the
combat AI that a creature (call it "victim") that blocks or is blocked by a
so-flagged creature (call it "lethal") that victim doesn't have protection from,
then victim will be destroyed.
This isn't exactly what's needed for deathtouch - it doesn't take into account
that it should be watching for damage-dealing, not blocking - but it works well
in practice.
It might work better to check that lethal has a power of at least 1, but then it
would fail for a pumpable creature. (Unless it *also* checked EVENT_POW_BOOST
and EVENT_CHECK_PUMP. It can't do so directly within
are_enemies_against_color(), but the cached AI combat data might be available by
then.)
Add this bit to any object with deathtouch at the end of EVENT_ABILITIES and
EVENT_ABILITIES_NOT_IN_PLAY, and also to the creature Venomous Fangs enchants.
Support:
has_protection_from()
Incidental:
Battering Ram no longer sets 0x40, which didn't previously do anything
anyway. (Apparently it was meant to be a walls-only flag, like how the absence
of 0x80 is limits the color-based options to non-walls.)
Abu Ja'far no longer exempts walls from its enemies_against_color.
Author: Korath <dgk@Beleriand.none>
Date: Sun Sep 18 20:50:42 2016 -0400
[GG] #1179: use bit 0x40 in enemies_against_color for deathtouch
This works exactly like Manalink's DIFB_DESTROYS_UNPROTECTED: it teaches the
combat AI that a creature (call it "victim") that blocks or is blocked by a
so-flagged creature (call it "lethal") that victim doesn't have protection from,
then victim will be destroyed.
This isn't exactly what's needed for deathtouch - it doesn't take into account
that it should be watching for damage-dealing, not blocking - but it works well
in practice.
It might work better to check that lethal has a power of at least 1, but then it
would fail for a pumpable creature. (Unless it *also* checked EVENT_POW_BOOST
and EVENT_CHECK_PUMP. It can't do so directly within
are_enemies_against_color(), but the cached AI combat data might be available by
then.)
Add this bit to any object with deathtouch at the end of EVENT_ABILITIES and
EVENT_ABILITIES_NOT_IN_PLAY, and also to the creature Venomous Fangs enchants.
Support:
has_protection_from()
Incidental:
Battering Ram no longer sets 0x40, which didn't previously do anything
anyway. (Apparently it was meant to be a walls-only flag, like how the absence
of 0x80 is limits the color-based options to non-walls.)
Abu Ja'far no longer exempts walls from its enemies_against_color.
1 Post
• Page 1 of 1
Ticket details
- Ticket ID: 1179
- Project: Shandalar
- Status: Reviewed
- Component: (unknown)
- Project version: (unknown)
- Priority: Normal
- Assigned to: Korath
- Reported by: lujo
- Reporter's tickets: List all tickets
- Reported on: 17 Sep 2016, 01:33
- Last visited by Korath » 30 Oct 2016, 16:30.