Isaac's Missile Storm - changing damage dice

Hey guys, quick question.

Is it possible to change Isaac’s Missile Storm (both lesser and greater) and its damage dice?

By default it’s d6(1) for lesser and d6(2) for greater. I’m trying to change it to d4(1) and d4(2).

There’s a function DoMissileStorm in x0_i0_spells.nss:

void DoMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE, int nReflexSave = FALSE);

I have no idea how to change that dice to d4 there :frowning: Any tips how to handle that (nwn1 with 1.72 CPP)?

unfortunately changing damage dice size is one of the few things that CPP doesn’t allow to do dynamically

to do this you need to edit function DoMissileStorm in x0_i0_spells in this way

replace line

int nDam = MaximizeOrEmpower(6,nD6Dice,spell.Meta);

with

int nDam;
if(spell.Id == SPELL_ISAACS_LESSER_MISSILE_STORM || spell.Id == SPELL_ISAACS_GREATER_MISSILE_STORM)
{
nDam = MaximizeOrEmpower(4,nD6Dice,spell.Meta);
}
else
{
nDam = MaximizeOrEmpower(6,nD6Dice,spell.Meta);
}

Unless you wanted the 4dice also for ball of lightning and firebrand then you can just change 6 for 4 in the original line.

Then you need to open scripts x1_s0_missstorm1 and x1_s0_missstorm2 and recompile them.

changing number of missiles would be possible just with variable set on module though or the other most common nerf changing target type selection to standard hostile thus affecting allies

1 Like

Perfect, I’m gonna test is later today. Thanks once again, Shadooow :slight_smile:

I’m actually considering to bring this functionality into next CPP release… Would be nice to be able to dynamically change spells damage dice.

Totally agree. It would be nice to have as much flexibility as possible with control over those scripts.

Quick question? Are you trying to make Isaac’s Greater and Lesser Missile Storm into the original Magic Missile? If so then it should be 1d4+1 per missile. The original version was one missile for every two levels of the Caster. That would make it 15 missiles at twenty- ninth level. Maybe I’m just misunderstanding what your trying to do.

@Greenman6220 just some tiny balance tweaks, changing base damage to d4 and the number of missiles for greater version (at least for now, I might revisit these spells later on).

1 Like

So I started with this task. I can use some suggestions because I am unsure what would be the best way to do it.

For example, currently I named this feature as spell.DamageDice, but after a while I realized that the “dice” is also used in some of the non-damaging spells such as ability buffs. That could be worthwhile to do because it would allow to change ability buffs from 1d4+1 into +4 as in DnD 3.5 using overrides to damage dice = 3 and metamagic = maximized, that way it will always be 3+1 => 4 without changing spellscript.

Question is whether this should then be coded separately as spell.DamageDice for offensive spells and spell.Dice for non-offensive spells, or whether I should use same field for both spells and if so whether to name it spell.Dice or spell.DamageDice.

I have some ideas but hearing others might help me decide.

I’m not sure how many more spells/feats use more than one dice, but it definitely would be worth adding two seperate predeclared info’s about it.

Btw there are scripts that use different types of damage, spell targets or durations and you can predeclare only one. It’s not a big deal, but there’s a little inconsistency.

Well these pre-declaratioms with possibility to modify them in spellhook are powerful feature however it is not allmighty and cannot be. There will always be something someone would want to do which wouldn’t be doable with this.

Also its getting more and more abstract and there are maybe far too many spell. variables Though on the other hand, there are less and less cases when builder must open and modify the spellscript on its own so maybe it isn’t that big deal.

Right now I am only considering whether to add two new variables (spell.Dice, spell.DamageDice) or one (spell.Dice). First option gives more control and builder who wants to increase all damage spells by 1 dice (4 to 6, 6 to 8, 8 to 10 etc.) would only need to use spell.DamageDice. The second option would also require to check the spell ID and determine if it is damage spell by the builder to avoid modifying non-damage spells, but on the other hand it would be probably more transparent when making spellscript or when trying to understand the overriding/modifying variables.