It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
Primal_Savage: Try to see if the Wilding Shaman can cast Summon Ignys as this was a mod fix (Although I believe the only reason it worked was because of the fix in version 1.7, so if that's broken, Wilding Shaman Summon Ignys probably doesn't work either).
For me Wilding Shaman cannot cast Summon Ignys.

I did another test battle against 3 Wilding Shamans and out of all the attempted spells (6x summon Wilding (rider), 4x Summon Ignys) only one (Wilding rider which has bugged gfx which is not new) worked. All the others including 4x Summon Ignys did absolutely nothing. The summon text is displayed in the battle and appears in the battle log but no effect == nothing is summoned.
Just experimented with "DragonTeeth_Ability" (added it to the 'Weak' trait) and if my Weak units try to cast it in autocombat they almost always fail completely. At one time I think (not 100% sure) they managed to make a single (out of the 3) skeletons appear. If I casted it manually in the same combat I had no problems with it though.

Somehow the enemy Weak units never tried to cast it though. No idea why and didnt investigate. I earlier had used 'Summon Plaguestalker' instead and they (other type of creep though) attempted to cast that which failed.
Post edited December 19, 2019 by Zrevnur
Tested somewhat and found a .xml code combination which apparently works except for one major problem:

modification to <SpellDef InternalName="SummonPlaguestalker_Ability"> which I use for testing:

<SpellTargetTileOccupied>Empty</SpellTargetTileOccupied>
<IgnoreInvalidTargetsInRadius>1</IgnoreInvalidTargetsInRadius>
<Radius>1</Radius>
The major problem is that it summons one per empty tile surrounding the target. Now if I can somehow prevent that too it would probably be functional.

--

Using this made the game hang in combat similar to the (now maybe fixed) well known tactical battle hangs bug:
<SpellTargetTileOccupied>EnemyOrEmpty</SpellTargetTileOccupied>
I think it also didnt work properly if at all.
Post edited December 19, 2019 by Zrevnur
avatar
Zrevnur: Tested somewhat and found a .xml code combination which apparently works except for one major problem:

modification to <SpellDef InternalName="SummonPlaguestalker_Ability"> which I use for testing:

<SpellTargetTileOccupied>Empty</SpellTargetTileOccupied>
<IgnoreInvalidTargetsInRadius>1</IgnoreInvalidTargetsInRadius>
<Radius>1</Radius>
avatar
Zrevnur: The major problem is that it summons one per empty tile surrounding the target. Now if I can somehow prevent that too it would probably be functional.

--

Using this made the game hang in combat similar to the (now maybe fixed) well known tactical battle hangs bug:
<SpellTargetTileOccupied>EnemyOrEmpty</SpellTargetTileOccupied>
I think it also didnt work properly if at all.
Try adding a radius type should limit the number of spawns:
<RadiusType>ADJACENT</RadiusType>
<RadiusType>LINE_BACKWARD</RadiusType>
<RadiusType>LINE_FORWARD</RadiusType>

e.g.
<Radius>1</Radius>
<RadiusType>LINE_BACKWARD</RadiusType>
<Range>1</Range>

Can play w/ the numbers to see what works best.
Post edited December 19, 2019 by Primal_Savage
avatar
Primal_Savage: Try adding a radius type should limit the number of spawns:
<RadiusType>ADJACENT</RadiusType>
<RadiusType>LINE_BACKWARD</RadiusType>
<RadiusType>LINE_FORWARD</RadiusType>

e.g.
<Radius>1</Radius>
<RadiusType>LINE_BACKWARD</RadiusType>
<Range>1</Range>

Can play w/ the numbers to see what works best.
Tried various combinations. Unfortunately none gave the desired result. Most didnt summon anything unless caster was adjacent to target maybe.

The following is a slight improvement (summons 4 adjacent in cross shape) to previous version:
<SpellTargetTileOccupied>Empty</SpellTargetTileOccupied>
<IgnoreInvalidTargetsInRadius>1</IgnoreInvalidTargetsInRadius>
<Radius>1</Radius>
<RadiusType>LINE_FORWARD</RadiusType>
<RadiusType>ADJACENT</RadiusType>

Also tried other stuff: 'IsTargetWorthy' => make it so that target (unit) is always unworthy. Unfortunately it still targets units instead of empty tiles.

Most promising looked trying to use variables to "turn off" additional summons per setting their duration to 0. Setting duration to 0 makes them not appear although I dont know if this would have had effect on XP or sth. Anyway I was unable to make duration dynamic. I dont understand the syntax if it is even possible. This didnt work - no summons appeared:
<Calculate InternalName="Duration">
<Expression><![CDATA[-1]]></Expression>
</Calculate>

And setting spell to 'Defensive' didnt change the mis-targeting by the AI.
That should work, to some extent. Expect some hanging issues when there's multiple casters, multiple summons, or too many units around the target. Adding a summon spell blocker on the target after one cast might reduce the hanging issues. Frankly, I would just disable all summon spells until they patch them in a few months or years when they feel a worthy sale is on the horizon.

<SpellSubClass>Summon</SpellSubClass>
<SpellTargetType>Empty</SpellTargetType>
<AppliesRandomModifier>1</AppliesRandomModifier>
<IsSpecialAbility>1</IsSpecialAbility>
<Radius>1</Radius>
<RadiusType>ADJACENT</RadiusType>
<IsResistable>0</IsResistable>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>CurHealth</Attribute>
<DisplayName>Failed!</DisplayName>
<Value>0</Value>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>SummonUnit</Attribute>
<UnitClass>Ignys_BG_Summon</UnitClass>
<Duration>-1</Duration>
<Value>5</Value>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>CurHealth</Attribute>
<DisplayName>Failed!</DisplayName>
<Value>0</Value>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>CurHealth</Attribute>
<DisplayName>Failed!</DisplayName>
<Value>0</Value>
</GameModifier>
<Cooldown>5</Cooldown>
Post edited December 22, 2019 by Primal_Savage
avatar
Primal_Savage: Frankly, I would just disable all summon spells until they patch them in a few months or years when they feel a worthy sale is on the horizon.
I was thinking about going back to 2.4... - the only notable probable improvement that I am aware of is that the multithreading appears less buggy - I used to change processor affinity but it doesnt seem to help any more in 2.5.1. My gameplay experience does not agree with their "months of fixes, performance optimizations, AI enhancements, balance tweaks and a host of other improvements" claim.

Edit: If they would actually bother to list their "fixes", "optimizations", "enhancements" and "improvements" it would be
more comprehensible and also help people with modding.

--

avatar
Primal_Savage: That should work, to some extent. Expect some hanging issues when there's multiple casters, multiple summons, or too many units around the target.
<snip / relocate to further down>
<SpellSubClass>Summon</SpellSubClass>
<SpellTargetType>Empty</SpellTargetType>
<AppliesRandomModifier>1</AppliesRandomModifier>
<snip>
Unfortunately for my "hardcore no reload unless crash/bug/hang" play style an unlucky roll could be a game ender for sth like Wildling riders - so not my thing.

--

I had some other "really good" ideas which didnt work at all:
1) use tactical autocast on the summoned monster to kill other versions of itself - tactical autocast isnt used when summoning sth unfortunately, this probably also means that the Fear effect on summoned Delin is wasted I think
2) do damage to all but one of the summons upon summoning them (like Earth Elemental) - problem is that the summons inside the spell in which they are summoned appear to be excluded from the damages from that spell no matter how I order stuff in the .xml
If it would be possible to immediately somehow chain two spell casts onto the same target into the same AI action it may be possible with creative scripting but I dont see a way to do that either.

--

avatar
Primal_Savage: Adding a summon spell blocker on the target after one cast might reduce the hanging issues.
Whats a "summon spell blocker"?
And isnt the problem that the AI targets an enemy unit independently of it being allowed to do so or it making sense? At least thats my impression: The AI picks an enemy unit as spell target no matter what the .xml code says - it seems to just ignore the .xml code for the targeting purpose. Except for ~10% of the cases that it actually does pick an empty tile.
Post edited December 22, 2019 by Zrevnur
avatar
Primal_Savage: Frankly, I would just disable all summon spells until they patch them in a few months or years when they feel a worthy sale is on the horizon.
avatar
Zrevnur: I was thinking about going back to 2.4... - the only notable probable improvement that I am aware of is that the multithreading appears less buggy - I used to change processor affinity but it doesnt seem to help any more in 2.5.1. My gameplay experience does not agree with their "months of fixes, performance optimizations, AI enhancements, balance tweaks and a host of other improvements" claim.

Edit: If they would actually bother to list their "fixes", "optimizations", "enhancements" and "improvements" it would be
more comprehensible and also help people with modding.

--

avatar
Primal_Savage: That should work, to some extent. Expect some hanging issues when there's multiple casters, multiple summons, or too many units around the target.
<snip / relocate to further down>
<SpellSubClass>Summon</SpellSubClass>
<SpellTargetType>Empty</SpellTargetType>
<AppliesRandomModifier>1</AppliesRandomModifier>
<snip>
avatar
Zrevnur: Unfortunately for my "hardcore no reload unless crash/bug/hang" play style an unlucky roll could be a game ender for sth like Wildling riders - so not my thing.

--

I had some other "really good" ideas which didnt work at all:
1) use tactical autocast on the summoned monster to kill other versions of itself - tactical autocast isnt used when summoning sth unfortunately, this probably also means that the Fear effect on summoned Delin is wasted I think
2) do damage to all but one of the summons upon summoning them (like Earth Elemental) - problem is that the summons inside the spell in which they are summoned appear to be excluded from the damages from that spell no matter how I order stuff in the .xml
If it would be possible to immediately somehow chain two spell casts onto the same target into the same AI action it may be possible with creative scripting but I dont see a way to do that either.

--

avatar
Primal_Savage: Adding a summon spell blocker on the target after one cast might reduce the hanging issues.
avatar
Zrevnur: Whats a "summon spell blocker"?
And isnt the problem that the AI targets an enemy unit independently of it being allowed to do so or it making sense? At least thats my impression: The AI picks an enemy unit as spell target no matter what the .xml code says - it seems to just ignore the .xml code for the targeting purpose. Except for ~10% of the cases that it actually does pick an empty tile.
I think it's just me being rusty and not remembering the XML rules all that well. I don't think a "summon spell blocker" would work, as adding a (Restricted)AbilityBonusOption usually works to block the caster not the target.

Beyond that, it seems better to go w/ random 1/4 most likely than no solution or a 4/4. If you get 2/4-3/4-4/4 too often, just add a failed gamemodifier to the spell and you end up w/ 1/5 and even less likelihood of getting more than 1. Also, in the limited testing I did, I never got 2/4 or more, so maybe it won't happen (or maybe I didn't test enough). There's also a slight (untested) possibiliy that the AppliesRandomModifier ends the spell as soon as it spawns 1, in which case you would never get 2.

At the end of the day, that's probably as much time as I'm willing to spend looking at this. New bugs, XML errors, forgotten dependencies, etc., every patch and all these errors staying in for years without being even acknowledged was certainly one of the reasons I stopped doing this. Still annoyed at them breaking the AI in version 1.7 and never fixing it.
Post edited December 26, 2019 by Primal_Savage
avatar
Primal_Savage: Also, in the limited testing I did, I never got 2/4 or more, so maybe it won't happen (or maybe I didn't test enough). There's also a slight (untested) possibiliy that the AppliesRandomModifier ends the spell as soon as it spawns 1, in which case you would never get 2.
Your code didnt seem to work properly for me so I changed it a bit. I think the "Empty" needs to be "EmptyTile". I did get multiple summons per cast though.

avatar
Primal_Savage: At the end of the day, that's probably as much time as I'm willing to spend looking at this.
Ok, thanks for helping.

avatar
Primal_Savage: New bugs, XML errors, forgotten dependencies, etc., every patch and all these errors staying in for years without being even acknowledged was certainly one of the reasons I stopped doing this. Still annoyed at them breaking the AI in version 1.7 and never fixing it.
I dont understand this dont-fix-no-communication attitude of game developers either...
From my POV it would be easy enough to significantly improve the game by fixing broken things. But somehow they have an unmitigable desire to make new things (or "improve" things which dont need it) which inevitably breaks (more) old things.
According to claims here https://steamcommunity.com/app/228260/discussions/0/2659870916605606544/#c2659870916606351700 AoW3 doesnt suffer from this "unfinished partially broken" problem though. Unfortunately Age of Wonders series didnt go into the direction I would have preferred...
There is a nasty bug in this: <SpellDef InternalName="SummonEarthElemental_Tactical">
It uses 'Calc2' which is uninitialized. (It probably was supposed to multiply by 2.)
Effect is that it can do very high amount of damage - have seen >50 damage.

<GameModifier>
<ModType>Unit</ModType>
<Attribute>DefendableDamage</Attribute>
<AttackStat>UnitStat_Attack_Pierce</AttackStat>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_SpellDamage_Earth] * 6]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock1" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_X_IsCultLeader] * [UnitStat_X_Clock]]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock2" ValueOwner="CastingUnit">
<Expression><![CDATA[[Calc_X_Clock1] * 0.01]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock3" ValueOwner="CastingUnit">
<Expression><![CDATA[[Calc_X_Clock2] + 1]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock4">
<Expression><![CDATA[[Calc_X_Clock3] * [Calc2]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc_X_Clock4]]]></Expression>
</Calculate>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>DefendableDamage</Attribute>
<AttackStat>UnitStat_Attack_Earth</AttackStat>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_SpellDamage_Earth] * 6]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock1" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_X_IsCultLeader] * [UnitStat_X_Clock]]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock2" ValueOwner="CastingUnit">
<Expression><![CDATA[[Calc_X_Clock1] * 0.01]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock3" ValueOwner="CastingUnit">
<Expression><![CDATA[[Calc_X_Clock2] + 1]]></Expression>
</Calculate>
<Calculate InternalName="Calc_X_Clock4">
<Expression><![CDATA[[Calc_X_Clock3] * [Calc2]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc_X_Clock4]]]></Expression>
</Calculate>
</GameModifier>

Edit: It was probably not supposed to multiply with 2 as the 12 damage (description) is the sum of the two damage components.
Edit: The bug is in both components - see above.
Post edited June 23, 2020 by Zrevnur
The code for <SpellDef InternalName="Tornado"> has the following bug:

<Calculate InternalName="Calc4" ValueOwner="TargetUnit">
<Expression><![CDATA[[Calc3] * [UnitStat_SpellDamage_Air]]]></Expression>
</Calculate>
It should be "CastingUnit" instead of "TargetUnit".
One instance of <GameItemType InternalName="Reliquary_Dragonrage"> is probably bugged in that the -10% pierce resist vs Dragons is a general -10% pierce resist. The respective part is probably missing this: "<vsHigher>1</vsHigher>"
The description of <SpellDef InternalName="Spell_X_Voodoo"> says its resistable but its missing a "<IsResistable>1</IsResistable>"
There is a missing brace in <SpellDef InternalName="Spell_X_Boulder">
The respective line should be: <Expression><![CDATA[[Calc2] * [Unit_GetTroopCount]]]></Expression>

Due to the syntax error it seems to be using the attack values from the equipped weapon instead of the ~8 earth attack.
Post edited June 26, 2020 by Zrevnur
Hey there!!

Glad this mod is still working with LH, i know it helps make other mods compatible like children of the storm, but anyone know if it'll work with Demons and Wizards by chance? tried that and lots of crashes. How is Xtra working with the latest patch of LH??