Jump to content

Summoning and spell immunity


DavidW

Recommended Posts

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?

Link to comment

If not a fix, this is certainly OBC-worthy. On a similar note, is there anything we can do about allowing fireballs to explode on people who are immune to them? Once again, this is convenient for players and sidesteps the need for the AI to use invisible rats to target spells.

Link to comment

The power for the effects that target self for these spells should be set to 0. There may be a thread in pending for these sorts of issues already.

 

Other than breaking up the spells, I don't think you can bypass the projectile behavior with any reasonable hack. The explosion will always occur.

Link to comment

Oh yeah, spell power has been a bitch to sort out so far.

 

@Sim

Did you mean a fireball not exploding, or not doing damage to creatures who are supposed to be immune (like Skull Trap affecting characters with Globe of Invulnerability)?

Link to comment

Doesn't look a single one of .eff changes is necessary here, splitting them off for...um...posterity. Yep.

// incorrect (nonzero) power in 119 .eff summoning files, generally lazily copied from a power 8 effect
COPY_EXISTING ~BEHOLD01.eff~ ~override~ // BOOK_BEHOLD (spin841.spl)
		  ~BOTSMITH.eff~ ~override~ // Cespenar (may I break this, CamDawg, please?)
		  ~DECK.eff~	 ~override~ // Deck of Many Things (deck.itm)
		  ~DECK615.eff~  ~override~ // Knight (spin615.spl)
		  ~DECK616.eff~  ~override~ // Flames (spin616.spl)
		  ~DECK616A.eff~ ~override~ // Flames (spin616.spl)
		  ~DECK622.eff~  ~override~ // Skull (spin.622)
		  ~DEMOSUM1.eff~ ~override~ // Summon the Infernal Host (spin549.spl)
		  ~DEMOSUM2.eff~ ~override~ // Removed demosum2.cre (Balor)
		  ~DEMOSUM3.eff~ ~override~ // Removed demosum3.cre (Glabrezu)
		  ~DEMOSUM4.eff~ ~override~ // Removed demosum4.cre (Cambion)
		  ~DEMSUC01.eff~ ~override~ // Removed demsuc01.cre (Succubus)
		  ~DEVSHAD.eff~  ~override~ // Summon Dark Horde (spin534.spl)
		  ~DGLAB01.eff~  ~override~ // DEMOGORGON_GATE (spin548.spl)
		  ~FIGDOG.eff~   ~override~ // Jade Dog (misc3f.itm)
		  ~FIGLION.eff~  ~override~ // Golden Lion Figurine (misc3d.itm)
		  ~FIGSPID.eff~  ~override~ // Kitthix (spidfgsu.cre)
		  ~HORN1.eff~	~override~ // Silver Horn of Valhalla (misc3i.itm)
		  ~HORN2.eff~	~override~ // Bronze Horn of Valhalla (misc3j.itm)
		  ~HORN3.eff~	~override~ // Iron Horn of Valhalla (misc3k.itm)
		  ~KOBCAP01.eff~ ~override~ // BOOK_KOBOLD (spin845.spl)
		  ~MDK2DOC.eff~  ~override~ // The MDK2 Spell (mdk2summ.spl)
		  ~MDK2KURT.eff~ ~override~ // The MDK2 Spell (mdk2summ.spl)
		  ~MDK2MAX.eff~  ~override~ // The MDK2 Spell (mdk2summ.spl)
		  ~MINDFL01.eff~ ~override~ // BOOK_MIND (spin842.spl)
		  ~MOUND.eff~	~override~ // Staff of the Woodlands (staf14.itm)
		  ~NYMPHSU.eff~  ~override~ // Call Woodland Beings (sppr410.spl)
		  ~PLANEVIL.eff~ ~override~ // Unused planevil.cre (Fallen Planetar)
		  ~PLANGOOD.eff~ ~override~ // Unused plangood.cre (Planetar)
		  ~RABBITSU.eff~ ~override~ // Wish (spin735.spl)
		  ~SENSPISU.eff~ ~override~ // Summon Spider (senspisu.spl)
		  ~SLAYSH.eff~   ~override~ // Taint of the Slayer (melis03.spl)
		  ~SPAIR1.eff~   ~override~ // Conjure Air Elemental (spwi621.spl)
		  ~SPAIR2.eff~   ~override~ // Conjure Air Elemental (spwi621.spl)
		  ~SPAIR3.eff~   ~override~ // Conjure Air Elemental (spwi621.spl)
		  ~SPANDEAD.eff~ ~override~ // Animate Dead (sppr301.spl,spwi501.spl)
		  ~SPANDL15.eff~ ~override~ // Animate Dead (sppr301.spl,spwi501.spl)
		  ~SPANIM1.eff~  ~override~ // Animal Summoning I (sppr402.spl,spra304.spl)
		  ~SPANIM2.eff~  ~override~ // Animal Summoning II (sppr501.spl,spra305.spl)
		  ~SPANIM3.eff~  ~override~ // Animal Summoning III (sppr602.spl,spra306.spl)
		  ~SPANIM4.eff~  ~override~ // Conjure Animals (sppr604.spl)
		  ~SPCACO.eff~   ~override~ // Cacofiend (spwi707.spl,spwm154.spl)
		  ~SPCARR.eff~   ~override~ // Carrion Summons (spwi623.spl)
		  ~SPDEATH.eff~  ~override~ // SUMMON_DEATH_KNIGHT (spin856.spl)
		  ~SPDECK01.eff~ ~override~ // Triumph (spin638.spl)
		  ~SPDECK02.eff~ ~override~ // Guile (spin637.spl)
		  ~SPDECK03.eff~ ~override~ // Construct (spin631.spl)
		  ~SPDEVA.eff~   ~override~ // Summon Deva (spcl923.spl,sppr726.spl)
		  ~SPDEVA2.eff~  ~override~ // Summon Fallen Deva (sppr727.spl)
		  ~SPDJ.eff~	 ~override~ // Summon Djinni (spwi718.spl)
		  ~SPDJINN.eff~  ~override~ // SUMMON_DJINN_TRAP (spin855.spl)
		  ~SPEART1.eff~  ~override~ // Conjure Earth Elemental (spwi622.spl)
		  ~SPEART1P.eff~ ~override~ // Conjure Earth Elemental (sppr702.spl)
		  ~SPEART2.eff~  ~override~ // Conjure Earth Elemental (spwi622.spl)
		  ~SPEART2P.eff~ ~override~ // Conjure Earth Elemental (sppr702.spl)
		  ~SPEART3.eff~  ~override~ // Conjure Earth Elemental (spwi622.spl)
		  ~SPEART3P.eff~ ~override~ // Conjure Earth Elemental (sppr702.spl)
		  ~SPFIEND.eff~  ~override~ // Summon Fiend (spwi807.spl)
		  ~SPFIR1.eff~   ~override~ // Conjure Fire Elemental (spwi620.spl)
		  ~SPFIR1P.eff~  ~override~ // Conjure Fire Elemental (sppr605.spl)
		  ~SPFIR2.eff~   ~override~ // Conjure Fire Elemental (spwi620.spl)
		  ~SPFIR2P.eff~  ~override~ // Conjure Fire Elemental (sppr605.spl)
		  ~SPFIR3.eff~   ~override~ // Conjure Fire Elemental (spwi620.spl)
		  ~SPFIR3P.eff~  ~override~ // Conjure Fire Elemental (sppr605.spl)
		  ~SPFREET.eff~  ~override~ // Summon Efreeti (spwi717.spl)
		  ~SPGATE.eff~   ~override~ // Gate (sppr703.spl,spwi905.spl)
		  ~SPHACK.eff~   ~override~ // Summon Hakeashar (spwi719.spl)
		  ~SPIDGISU.eff~ ~override~ // Spider Spawn (spwi423.spl)
		  ~SPIDPHSU.eff~ ~override~ // Spider Spawn (spwi423.spl)
		  ~SPIDSW01.eff~ ~override~ // BOOK_SPIDER (spin844.spl)
		  ~SPIDSWSU.eff~ ~override~ // Spider Spawn (spwi423.spl)
		  ~SPIRSUMM.eff~ ~override~ // Summon Spirit Animal (spcl621.spl)
		  ~SPLESAIR.eff~ ~override~ // Conjure Lesser Air Elemental (spwi520.spl)
		  ~SPLESEAR.eff~ ~override~ // Conjure Lesser Earth Elemental (spwi521.spl)
		  ~SPLESFIR.eff~ ~override~ // Conjure Lesser Fire Elemental (spwi516.spl)
		  ~SPMON1.eff~   ~override~ // Monster Summoning I (spwi309.spl)
		  ~SPMON1A.eff~  ~override~ // Unused (8 hd)
		  ~SPMON2.eff~   ~override~ // Monster Summoning II (spwi407.spl)
		  ~SPMON2A.eff~  ~override~ // Unused (10 hd)
		  ~SPMON3.eff~   ~override~ // Monster Summoning III (spwi504.spl)
		  ~SPMON3A.eff~  ~override~ // Unused (18 hd)
		  ~SPMORSW.eff~  ~override~ // Mordenkainen's Sword (spwi716.spl)
		  ~SPNISH.eff~   ~override~ // Summon Nishruu (spwi624.spl)
		  ~SPPIT.eff~	~override~ // SUMMON_PIT_FIEND (spin857.spl)
		  ~SPPLAN.eff~   ~override~ // Summon Planetar (spwi923.spl)
		  ~SPPLAN2.eff~  ~override~ // Summon Dark Planetar (spwi924.spl)
		  ~SPPOIS.eff~   ~override~ // SUMMON_POISON (spin677.spl)
		  ~SPSERV.eff~   ~override~ // Aerial Servant (sppr601.spl)
		  ~SPSHAD.eff~   ~override~ // SUMMON_SHADOW (spin880.spl)
		  ~SPSHADW.eff~  ~override~ // SUMMON_SHADOW_WOLF (spin870.spl)
		  ~SPSHAMB.eff~  ~override~ // Green Globe (globgre4.itm)
		  ~SPSTALK.eff~  ~override~ // Invisible Stalker (spwi601.spl)
		  ~STAF15.eff~   ~override~ // Staff of Air +2 (staf15.itm)
		  ~STAF16.eff~   ~override~ // Staff of Earth +2 (staf16.itm)
		  ~STAF17.eff~   ~override~ // Staff of Fire +2 (staf17.itm)
		  ~SUFUNGUS.eff~ ~override~ // Summon Fungus (spin730.spl)
		  ~SUMCHAN.eff~  ~override~ // (Greater) Elemental Summoning (sppr723.spl,sppr724.spl)
		  ~SUMDJINN.eff~ ~override~ // Ring of Djinni Summoning (ring26.itm)
		  ~SUMEFR.eff~   ~override~ // Efreeti Bottle (misc3c.itm)
		  ~SUMSLAY.eff~  ~override~ // Summon Slayer Shadow (sumslay.spl)
		  ~SUMSUNN.eff~  ~override~ // (Greater) Elemental Summoning (sppr723.spl,sppr724.spl)
		  ~SUMZAAM.eff~  ~override~ // (Greater) Elemental Summoning (sppr723.spl,sppr724.spl)
		  ~SUTELFIR.eff~ ~override~ // Summon Fire Elemental (spin570.spl)
		  ~SUTELICE.eff~ ~override~ // Summon Ice Salamander (spin569.spl)
		  ~SWAAIRE1.eff~ ~override~ // Elemental Summoning (sppr723.spl)
		  ~SWAAIRE2.eff~ ~override~ // Unused Air Elemental
		  ~SWAEARE1.eff~ ~override~ // Elemental Summoning (sppr723.spl)
		  ~SWAEARE2.eff~ ~override~ // Unused Earth Elemental
		  ~SWAFIRE1.eff~ ~override~ // Elemental Summoning (sppr723.spl)
		  ~SWAFIRE2.eff~ ~override~ // Unused Fire Elemental
		  ~TELALU1.eff~  ~override~ // Unused (telalu1.cre Alu-Fiend)
		  ~TOME01.eff~   ~override~ // Golem Manual (tome01.itm)
		  ~TOME02.eff~   ~override~ // Clay Golem Manual (tome02.itm)
		  ~TOME03.eff~   ~override~ // Stone Golem Manual (tome03.itm)
		  ~TOME04.eff~   ~override~ // Juggernaut Golem Manual (tome04.itm)
		  ~UMBHUL01.eff~ ~override~ // BOOK_UMBER (spin843.spl)
		  ~WISH.eff~	 ~override~ // Limited Wish (spwi722.spl) Dao
		  ~WISH18.eff~   ~override~ // Summon Dark Planetar (spwish18.spl)
		  ~WISH2.eff~	~override~ // Unused
		  ~WYVERNSU.eff~ ~override~ // Wyvern Call (spwi619.spl)
 PATCH_IF (%SOURCE_SIZE% = 0x110) THEN BEGIN
WRITE_LONG 0x14 0x02 // sets target to preset
WRITE_LONG 0x18 0x00 // sets power to zero
WRITE_LONG 0x4c 0x00 // sets school to none
READ_LONG  0xd0 "st" // secondary type
WRITE_LONG 0xd0 ((("st" = 1) OR ("st" = 0)) ? "st" : 0x00)
 END
BUT_ONLY_IF_IT_CHANGES

Link to comment

Hello :)

 

These spell effects are already target self with a very few anomalies (Wizard Eye plays one .vvc on preset instead of self, which doesn't even do anything) so that bit is just standardizing. Is there one in particular that mustn't be?

 

If they're not typeless, Spell Immunity: Conjuration will block them. If summoning spells are meant to sabotaged in this way, then power can't be set to zero either (and I get to go back and interpoate power into the spells that were already power zero for effects, yay) so that Globes will stop them.

 

Explain, please, while I think of ways to damage Cespenar without CamDawg noticing :)

Link to comment

I don't like bypassing the immunity spells. Yes, they horribly break everything in the game. But I'll almost never be in favor of zeroing out values in the SPL header simply to workaround the idiocy of these spells. It's only important to have Cam give the OK, though, and I can't think of anything immediate that would break.

 

The Wizard Eye animation was a special case. The other summoning spells should mostly be target: self, but I don't know that we should change all the effects en masse. It shouldn't make any difference in the end, so it doesn't really bother me.

 

Unless the spell features effects that are designed to be cast on an actual external target (I'm pretty sure none of them are), the power should be 0.

 

The EFF changes are unnecessary, as you note.

Link to comment

This is a WeiDU generated list of spells that:

1) Have area in the extended header targeting

2) Have self as effect targets

3) Use one of the two summon opcodes or an .eff with one of the two summon opcodes

4) Aren't already using power zero for effects

5) Aren't Earthquake, on purpose.

 

The targeting changes alter the following:

spwi425.spl Lighting effects moved from preset to self

spwi014.spl Lighting effects moved from preset to self

sppr723.spl Specific spell protection moved from party to self

sppr724.spl Specific spell protection moved from party to self

spin549.spl Two sound effects moved from preset to self

melis03.spl Sound effect moved from preset to self

 

So it's no big deal to remove them, but all seven were included on purpose as part of my stealth tweak plan, long live Bladderdash! If they do bother someone else. please say so :)

Link to comment

SPWI723 and SPWI724 need to be party (you can only have one elemental summoning elemental at a time, lest you get two of the same prince!).

 

Don't bother with SPWI014 and SPWI019. These are trap spells (and the lighting effect is just as invalid for trigger points as it is for ground targets).

 

SPWI425 is a bit wonky. I know I change it to self, but I think they wanted the effects to run over the eye, but it doesn't work (and it doesn't look quite right when they run on the PC). But it doesn't bother me.

 

I'm sure SPIN549 and MELIS03 are OK. I remember they had problems, but I don't think it's something changing the power would affect.

Link to comment

I consider the small chance of having duplicate elemental princes (which you can already have when you fight Ogremoch, ar6105.bcs doesn't forbid these spells) an acceptible trade off for removing the completely undocumented feature where anyone in the area summoning a greater fire elemental blocks your party and only your party from summoning a greater earth elemental.

 

Sounds lazy in retrospect, yep.

 

Without an immunity to .eff opcode, they'll just have to be recoded as spells and offered as an alternative. Not tonight though ;)

 

If I could think of a way to get the lighting effects to work on the eye (short of scripting a special effect spell to run on creation) I would, but I'm dumb...don't know of one.

 

Thanks for comments :)

 

//edit: which completely misses the point that Ogremoch isn't a summonable prince :) Yes, I should rewrite that.

Link to comment

meliss03.bcs :)

F
!Range(LastSeenBy(Myself),8)
!HPLT(Myself,20)
RandomNum(3,1)
!StateCheck(LastSeenBy(Myself),STATE_INVISIBLE)
!StateCheck(LastSeenBy(Myself),STATE_IMPROVEDINVISIBILITY)
!GlobalTimerNotExpired("MelissanBigSpell3","LOCALS")
THEN
RESPONSE #100
	SetGlobalTimer("MelissanBigSpell3","LOCALS",15)
	ForceSpell(LastSeenBy(Myself),CLERIC_ELEMENTAL_SWARM)

Will block the party's casting and not her own unless something is done.

Link to comment

Archived

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

×
×
  • Create New...