Jump to content

Summoning and spell immunity


DavidW

Recommended Posts

Alright. This is the stuff that's already mixed-target and power zero...suggest away for changes.

MELIS03.SPL // Taint of the Slayer uses slaysh.eff without primary type.
MELIS03.SPL // Taint of the Slayer uses slaysh.eff without secondary type.

// SPIN114.SPL // Summon Dread Wolf summons creature with power zero..
// SPIN114.SPL // Summon Dread Wolf summons creature without primary type.
// SPIN114.SPL // Summon Dread Wolf summons creature without secondary type.

// SPIN115.SPL // Summon Ghast summons creature with power zero.
// SPIN115.SPL // Summon Ghast summons creature without primary type.
// SPIN115.SPL // Summon Ghast summons creature without secondary type.

SPIN534.SPL // Call Dark Horde uses devshad.eff without primary type.
SPIN534.SPL // Call Dark Horde uses devshad.eff without secondary type.

SPIN548.SPL // Gate uses dglab01.eff with power zero.
SPIN548.SPL // Gate uses dglab01.eff without primary type.
SPIN548.SPL // Gate uses dglab01.eff without secondary type.

SPIN549.SPL // Summon the Infernal Host uses demosum1.eff with power zero.
SPIN549.SPL // Summon the Infernal Host uses demosum1.eff without primary type.
SPIN549.SPL // Summon the Infernal Host uses demosum1.eff without secondary type.

SPIN569.SPL // Summon Ice Salamander uses sutelice.eff with power zero.
SPIN570.SPL // Summon Fire Elemental uses sutelfir.eff with power zero.

SPIN576.SPL // <Invalid Strref -1> summons creature with power zero.
SPIN576.SPL // <Invalid Strref -1> summons creature without primary type.
SPIN576.SPL // <Invalid Strref -1> summons creature without secondary type.

SPIN677.SPL // <Invalid Strref -1> uses sppois.eff with power zero.
SPIN677.SPL // <Invalid Strref -1> uses sppois.eff without primary type.
SPIN677.SPL // <Invalid Strref -1> uses sppois.eff without secondary type.

SPIN715.SPL // <Invalid Strref -1> summons creature with power zero.

SPIN730.SPL // Summon Fungus uses sufungus.eff with power zero.

SPIN840.SPL // <Invalid Strref -1> uses golada01.eff with power zero.
SPIN840.SPL // <Invalid Strref -1> uses golada01.eff without primary type.
SPIN840.SPL // <Invalid Strref -1> uses golada01.eff without secondary type.

SPIN841.SPL // <Invalid Strref -1> uses behold01.eff with power zero.
SPIN841.SPL // <Invalid Strref -1> uses behold01.eff without primary type.
SPIN841.SPL // <Invalid Strref -1> uses behold01.eff without secondary type.

SPIN842.SPL // <Invalid Strref -1> uses mindfl01.eff with power zero.
SPIN842.SPL // <Invalid Strref -1> uses mindfl01.eff without primary type.
SPIN842.SPL // <Invalid Strref -1> uses mindfl01.eff without secondary type.

SPIN843.SPL // <Invalid Strref -1> uses umbhul01.eff with power zero.
SPIN843.SPL // <Invalid Strref -1> uses umbhul01.eff without primary type.
SPIN843.SPL // <Invalid Strref -1> uses umbhul01.eff without secondary type.

SPIN844.SPL // <Invalid Strref -1> uses spidsw01.eff with power zero.
SPIN844.SPL // <Invalid Strref -1> uses spidsw01.eff without primary type.
SPIN844.SPL // <Invalid Strref -1> uses spidsw01.eff without secondary type.

SPIN845.SPL // <Invalid Strref -1> uses kobcap01.eff with power zero.
SPIN845.SPL // <Invalid Strref -1> uses kobcap01.eff without primary type.
SPIN845.SPL // <Invalid Strref -1> uses kobcap01.eff without secondary type.

SPIN855.SPL // <Invalid Strref -1> uses spdjinn.eff with power zero.
SPIN855.SPL // <Invalid Strref -1> uses spdjinn.eff without primary type.
SPIN855.SPL // <Invalid Strref -1> uses spdjinn.eff without secondary type.

SPIN856.SPL // <Invalid Strref -1> uses spdeath.eff with power zero.
SPIN856.SPL // <Invalid Strref -1> uses spdeath.eff without primary type.
SPIN856.SPL // <Invalid Strref -1> uses spdeath.eff without secondary type.

SPIN857.SPL // <Invalid Strref -1> uses sppit.eff with power zero.
SPIN857.SPL // <Invalid Strref -1> uses sppit.eff without primary type.
SPIN857.SPL // <Invalid Strref -1> uses sppit.eff without secondary type.

SPIN870.SPL // <Invalid Strref -1> uses spshadw.eff with power zero.
SPIN870.SPL // <Invalid Strref -1> uses spshadw.eff without primary type.
SPIN870.SPL // <Invalid Strref -1> uses spshadw.eff without secondary type.

SPIN880.SPL // <Invalid Strref -1> uses spshad.eff with power zero.
SPIN880.SPL // <Invalid Strref -1> uses spshad.eff without primary type.
SPIN880.SPL // <Invalid Strref -1> uses spshad.eff without secondary type.

SPWI722.SPL // Limited Wish uses wish.eff with power zero.
SPWI722.SPL // Limited Wish uses wish.eff without primary type.
SPWI722.SPL // Limited Wish uses wish.eff without secondary type.

SPWI919.SPL // Wish summons creature with power zero.
SPWI919.SPL // Wish summons creature without primary type.
SPWI919.SPL // Wish summons creature without secondary type.

SPWI935.SPL // <Invalid Strref -1> summons creature with power zero.
SPWI935.SPL // <Invalid Strref -1> summons creature without primary type.
SPWI935.SPL // <Invalid Strref -1> summons creature without secondary type.

SPWI936.SPL // <Invalid Strref -1> summons creature with power zero.
SPWI936.SPL // <Invalid Strref -1> summons creature without primary type.
SPWI936.SPL // <Invalid Strref -1> summons creature without secondary type.

SPWI937.SPL // <Invalid Strref -1> summons creature with power zero.
SPWI937.SPL // <Invalid Strref -1> summons creature without primary type.
SPWI937.SPL // <Invalid Strref -1> summons creature without secondary type.

SPWI951.SPL // <Invalid Strref -1> summons creature with power zero.
SPWI951.SPL // <Invalid Strref -1> summons creature without primary type.
SPWI951.SPL // <Invalid Strref -1> summons creature without secondary type.

// SPWI982.SPL // Dimension Door summons creature with power zero.
// SPWI982.SPL // Dimension Door summons creature without primary type.
// SPWI982.SPL // Dimension Door summons creature without secondary type.

SPWI986.SPL // <Invalid Strref -1> summons creature with power zero.
SPWI986.SPL // <Invalid Strref -1> summons creature without primary type.
SPWI986.SPL // <Invalid Strref -1> summons creature without secondary type.

SPWM103.SPL // Repulsion, caster summons creature with power zero.
SPWM103.SPL // Repulsion, caster summons creature without primary type.
SPWM103.SPL // Repulsion, caster summons creature without secondary type.

SPWM134.SPL // Repulsion, caster summons creature with power zero.
SPWM134.SPL // Repulsion, caster summons creature without primary type.
SPWM134.SPL // Repulsion, caster summons creature without secondary type.

// ARROPHEO.ITM // Short Sword +1 summons creature with power 0

MISC3C.ITM // Efreeti Bottle uses sumefr.eff with power 0

MISC3D.ITM // Golden Lion Figurine uses figlion.eff with power 0

MISC3E.ITM // Black Spider Figurine uses figspid.eff with power 0

MISC3F.ITM // Jade Hound uses figdog.eff with power 0

MISC3I.ITM // Silver Horn of Valhalla uses horn1.eff with power 0

MISC3J.ITM // Bronze Horn of Valhalla uses horn2.eff with power 0

MISC3K.ITM // Iron Horn of Valhalla uses horn3.eff with power 0

MISC7T.ITM // Moon Dog Figurine summons creature with power 0

RING26.ITM // Ring of Djinni Summoning uses sumdjinn.eff with power 0

SCRL14.ITM // Cursed Scroll of Summon Monster summons monster with power 0

STAF14.ITM // Staff of the Woodlands +4 uses MOUND.eff with power 0

STAF15.ITM // Staff of Air +2 uses STAF15.eff with power 0

STAF16.ITM // Staff of Earth +2 uses STAF16.eff with power 0

STAF17.ITM // Staff of Fire +2 uses STAF17.eff with power 0

SW1H68.ITM // Spectral Brand +4 summons creature with power 0

SW1H68C.ITM // Spectral Brand +4 summons creature with power 0

SW1H69.ITM // Spectral Brand +5 summons creature with power 0

SW1H69C.ITM // Spectral Brand +5 summons creature with power 0

TOME01.ITM // Golem Manual uses tome01.eff with power 0

TOME02.ITM // Clay Golem Manual uses tome02.eff with power 0

TOME03.ITM // Stone Golem Manual uses tome03.eff with power 0

TOME04.ITM // Juggernaut Golem Manual uses tome04.eff with power 0

 

Grr, I deliberately stripped Otiluke's Resilient Sphere of its secondary type 6 protection too....

Link to comment
The various monster summoning spells (MSI-VII, Animal Summoning I-III) all fail to penetrate immunity-to-spell-level defences. For instance, if you cast Monster Summoning I on someone protected by Minor Globe of Invulnerability, nothing happens.

 

I think there's a strong case for treating this as a bug. Reason being: it's trivial for players to circumvent it by casting the spell right next to the intended target rather than actually on it. It only matters for enemy AI scripting, and then only because

 

OnTheFloorButReallyReallyReallyCloseTo(NearestEnemyOf(Myself))

 

inexplicably got left out of the scripting language.

 

As far as I can see this is fixable just by increasing the Power of all summoning spells to 10 (that's what SCS does). Thoughts?

 

Hello,

 

why don't you solve scripting problems by scripting in another way :) ?

 

The BG games have mighty scripting abilities, but I guess, most of the modders learn WeiDu first... ;)

 

Use this command and you get rid of your scripting probelm:

 

IF

 

See(NearestEnemyOfType([0.0.0.MAGE_ALL]))

See(NearestEnemyOfType([0.0.0.FIGHTER_ALL]))

HaveSpell(MONSTER_SUMMONING_3)

 

THEN

 

RESPONSE #100

 

Spell(LastSeenBy(Myself),MONSTER_SUMMONING_3)

 

END

 

As the Minor Globe of Invulnerability can only be cast on target "caster", a fighter will never have it :) (except there is - may be - one item somewhere in the game, that can cast it... - but this item has to be equipped and used just at the moment, the enemy cast his spell - chance is there, but it is a very little chance)

 

Just my two cents :)

 

Regards

 

Roana

Link to comment

I've no problems setting the power to zero to bypass these protections; I'm not in favor of changing the schools or types because I think these may have unforeseen ramifications.

 

@Nythrun

Please stop deleting posts; it made the thread completely incomprehensible. If code turns out to be incorrect or unnecessary, just edit your post to say so. :)

 

@Roana

For parties without fighters it means they won't cast the spell at all, which I consider a bigger bug than the original issue. Whatever target you choose to use there, it still wouldn't cast at a solo mage and would still fail on a Globed fighter-mage.

Link to comment

There's a version difference between Windows BG2 and the Mac port then, because in WinBG2 casters' spell level immunity, secondary type immunity, and magic resistance never protect from their own spells. The caster is the only one who can't break summoning.

Link to comment

Right, because the target type for summoning spells is area in the extended header and self for the actual effects, so the area is checked before target self has a chance to pass on its bypassing abilities via inheritance.

 

I think I'm talking past you again somehow, though, so I'll shut up.

Link to comment

I saw bypassing resistance and immunities mentioned elsewhere, so I wanted to clarify a bit: although it can be qualified that Target: Self effects bypass resistance, it omits the crucial part of the check -- the caster needs to be the target of the ability. Even dripping with resistance or immunities, you can still cast Magic Missile on yourself and feel the burn. In this case, it doesn't matter that the ability target and effect target is Preset Target, it matters that the effect to be applied is applied to the originator of the effect (caster == target).

 

Armor will bypass resistance because you cast it on yourself (and the effects affect the caster). If you cast Lightning Bolt or Burning Hands on Mrs. Berrybreath (before she gets swallowed by da bear!), since the target is not the same object as the caster, the effects won't bypass resistance, but you can cast them on yourself, and the effects will bypass resistance. Monster Summoning I will not bypass resistance because you can only choose a ground target (even if you click or script to cast on an actor, the engine will still pick only coordinates to target), in which case the originator of the Target: Self effects is not the caster (they're external effects and subject to normal resistance and immunity checks).

 

I haven't done anything with Baldur's Gate in a long time, but I suspect that there's no way any of these summoning spells will ever fail due to resistance and immunities on actors other than the caster (even if you click on Mencar Pebblecrusher, the game just treats it as if you'd clicked on the ground exactly at his current location). The only issue here is that any resistances or immunities that the caster has will block the effects from the summoning spells from being applied (causing the spell to fail).

Link to comment
I haven't done anything with Baldur's Gate in a long time, but I suspect that there's no way any of these summoning spells will ever fail due to resistance and immunities on actors other than the caster (even if you click on Mencar Pebblecrusher, the game just treats it as if you'd clicked on the ground exactly at his current location). The only issue here is that any resistances or immunities that the caster has will block the effects from the summoning spells from being applied (causing the spell to fail).

 

For player casters, this is dead right. But it's not right (I'm fairly sure) for enemy AI scripts. They still target individuals, not the floor around them.

Link to comment
For player casters, this is dead right. But it's not right (I'm fairly sure) for enemy AI scripts. They still target individuals, not the floor around them.
The behavior should be identical (even scripted to Spell(NearestEnemyOf(),SUMMON_THIS), the engine still picks a spot on the ground). But it's been a long time.
Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...