NWN2Wiki
(Corrected template constructor)
Tag: Source edit
m (Trialing line-breaks)
Tag: Source edit
Line 27: Line 27:
   
 
This spell destroys [[summon]]ed creatures, familiars, animal companions, and outsiders in the area of effect. You can affect up to twice your level in [[HD]] worth of creatures.
 
This spell destroys [[summon]]ed creatures, familiars, animal companions, and outsiders in the area of effect. You can affect up to twice your level in [[HD]] worth of creatures.
 
   
 
== Bug Notes ==
 
== Bug Notes ==
Line 54: Line 53:
   
 
The spent HD are only subtracted if the target actually fails both the SR and will save, this is probably an oversight, the HD should be subtracted in any case, whether the target saves themeselves or not, this is the way all other similar spells (Undeath to Death etc.) handle this and Banishment should not be an exception.
 
The spent HD are only subtracted if the target actually fails both the SR and will save, this is probably an oversight, the HD should be subtracted in any case, whether the target saves themeselves or not, this is the way all other similar spells (Undeath to Death etc.) handle this and Banishment should not be an exception.
 
   
 
== Gameplay Notes ==
 
== Gameplay Notes ==

Revision as of 11:46, 12 March 2021

Is banishment
Banishment
Spell Information
Spell level : Innate level: 6, Cleric: 6, Sorcerer/Wizard: 7
School : Abjuration
Components : Verbal and Somatic
Range : Personal
Target/Area : Colossal
Duration : Instantaneous
Save : Will negates
Spell resistance : Yes

Description

This spell destroys summoned creatures, familiars, animal companions, and outsiders in the area of effect. You can affect up to twice your level in HD worth of creatures.

Bug Notes

Line 52: nPool > 0 check should be in here moved from line 69's if check.

Line 69: There is some odd broken logic here. The nPool > 0 check should be on line 52 in the while() statement, and all the conditions in the if statement should be else only, no ands, so:

if(GetAssociate(ASSOCIATE_TYPE_SUMMONED, oMaster) == oTarget ||
   GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oMaster) == oTarget ||
   GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oMaster) == oTarget ||
   GetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER)
{

Line 83: Minor thing; nSpellDC is already defined on 45, and to get it for all targets (Before even checking they are valid) again is silly. Line 45 could be "int nSpellDC = GetSpellSaveDC();" instead.

Line 85: This if statement should have { } brackets to make it clear what it is working on.

Line 94: CanCreatureBeDestroyed() is redundant. Now the script has been made into simply doing a "unseen" EffectDeath() effect, or at least damage, the creature doesn't have to be destroyable for these to work.

Line 99: To "kill a target regardless" this EffectDamage() should use 1.04's new "ignore any damage resistances" and also, to make sure a target is dead, it should do something like GetMaxHitPoints() + 11 (incase it is a PC polymorphed).

OR: The damage could be removed (to make the spell more silent in its effects - "dismissing" them shouldn't deal damage) and EffectDeath() be made a supernatural effect, meaning it bypasses Immunity: Death (according to how it is used in the turn undead feat script). This could be a good thing - immortal things (for whatever reason) then wouldn't instantly "die" at 0 hit points from this spell (since they obviously wouldn't be "dismissed" if they cannot disappear from death!).

Note that there is a slight delay of 250 milliseconds before the death effect is applied. This can be a problem if several casters cast this spell at the same time, because the second spell may actually affect targets that are already dead, which is obviously problematic, because this spell is HD-limited, so you don't want to waste HD on creatures that are already dead. This can be fixed by removing the delay altogether, it's completely useless, or at least by setting a local Int on the affected targets so that they are ignored by any further spells. Players not acquainted with the toolset should delay the casting of the second spell by 200-300 milliseconds so that it hits AFTER the first spell does.

The spent HD are only subtracted if the target actually fails both the SR and will save, this is probably an oversight, the HD should be subtracted in any case, whether the target saves themeselves or not, this is the way all other similar spells (Undeath to Death etc.) handle this and Banishment should not be an exception.

Gameplay Notes

  • It does really just kill them, so experience is gained as normal. It only works from your location, 30 feet out. The creatures are rather arbitrarily chosen due to how the script functions work. It affects anything that would be affected by Fireball however, meaning your own creatures can be banished!
  • The creatures all get a Will-save, and spell resistance applies as normal. Against some outsiders, this would be a worthless spell. However, against many low level targets, this can be considered a simple death spell. Preparation at the right time would be worthwhile.
  • It does affect summoned creatures too, which can be useful against some non-outsiders.
  • Outsiders casting this spell are not affected by their own casting, but are affected if somebody else casts this spell. So if Zhjaeve casts this spell, she is not affected, but if Qara casts it, Zhjaeve is affected on hardcore difficulty and may actually die. There is no way to protect yourself from this spell apart from SR, because it ignores death immunity and will saving throws are unsafe, because they are failed on roll 1.
  • Planettouched races like Neeshka are never affected by this spell.