Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Magic Missile not castable at higher levels

Been having an issue with Magic Missile...when a character casts the spell, I don't get the drop down to be able to cast it at higher levels.  It's always cast at first level.  Am I missing something?  And yes, this is dragged and dropped directly from the compendium.
1620931125

Edited 1620931204
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
This is likely due to the weird and unique way that Magic Missile is used in 5th edition. According the the Rules as Written and verified by the design team and official rulings, you roll once for the damage of a missile, and then produce the appropriate number of missiles that each do that damage. This is different from every other spell in the game, and the sheet is not set up for that one exception. Many people use a custom magic missile macro for that reason. Some of them are terrifyingly complex (moreso than necessary). Basically, take the damage given and use that for each missile. If you want to run Magic Missile like every table I have ever sat at does (1d4+1 per missile), you'll need to edit the spell block. Roll20 can't take liberties with the rules, though. If you want to edit the spell block, here are some helpful instructions .
1620955559
David M.
Pro
API Scripter
If you're interested, here is a macro that uses the Scriptcards api script that is pretty handy. Credit goes to Kurt J. It queries for spell level, calculates the number of missiles, rolls each individually, and outputs both the individual and the total damage. It currently doesn't subtract the spell slot automatically, but that could be added with a call to chatsetattr. !scriptcard {{ --#title|Magic Missile --#leftsub|Slot level ?{Spell Slot Level?|1|2|3|4|5|6|7|8|9} --#rightsub|Ranged Attack (120ft) --=MissileCount|?{Spell Slot Level?} + 2 --=DisplayCount|1 --=MissileDamage|0 --:MissileLoop| -->FireMissile| call function --=DisplayCount|[$DisplayCount] + 1 --?[$DisplayCount] -le [$MissileCount]|MissileLoop --+Total|Total damage is [$MissileDamage] --X|Exit macro --:FireMissile| function --=ThisMissile|1d4 + 1 --=MissileDamage|[$MissileDamage] + [$ThisMissile] --+Missile|[$DisplayCount.Total] Hits for [$ThisMissile] [b]force[/b] damage --<| }} Example output:
1621274016

Edited 1621274073
keithcurtis said: This is likely due to the weird and unique way that Magic Missile is used in 5th edition. According the the Rules as Written and verified by the design team and official rulings, you roll once for the damage of a missile, and then produce the appropriate number of missiles that each do that damage. This is different from every other spell in the game, and the sheet is not set up for that one exception. Many people use a custom magic missile macro for that reason. Some of them are terrifyingly complex (moreso than necessary). Basically, take the damage given and use that for each missile. If you want to run Magic Missile like every table I have ever sat at does (1d4+1 per missile), you'll need to edit the spell block. Roll20 can't take liberties with the rules, though. If you want to edit the spell block, here are some helpful instructions . Yeah, that's not the issue.  The issue I have is that it doesn't deduct the spell from the spell slot like all the other spells, or allow for casting at higher levels, again, like every other spell that can be cast at a higher level. I found an API that Nick Olivo created that has fixed the problem.
1621290400
Brian C.
Pro
Marketplace Creator
Compendium Curator
Chris L. said: Been having an issue with Magic Missile...when a character casts the spell, I don't get the drop down to be able to cast it at higher levels.  It's always cast at first level.  Am I missing something?  And yes, this is dragged and dropped directly from the compendium. If I remember correctly, you can place some roll with a value of zero in the higher level damage of the spell options to trigger the spell slot selection box without adding damage. It's something like 0d0, 1d0, 0d1, etc.
I don't understand a problem i Have on a script from Nick Olivo. I can't find anywhere where to contact him directly so i take my chance on you, maybe you can help. I Want to use the Custom spell book script from nick. on("chat:message", function(msg) {     if (msg.type == "api" && msg.content.indexOf("!customSpellbook") == 0){         var args = msg.content.split(/\s+/);         var spellName = args[1].toLowerCase();         var spellLevel = Number(args[2]);         var tokenid = msg.selected[0]._id;         var token = getObj("graphic",tokenid);         var charID = token.get("represents");         var tokenName = token.get("name");         switch(spellName){             case "magicmissile":                 magicMissile(spellLevel);                 break;             case "scorchingray":                 scorchingRay(spellLevel,tokenName);                 break;         }         sendChat("API",`!modbattr --charid ${charID} --lvl${spellLevel}_slots_expended|-1`);     } }); function magicMissile(spellLevel){     var numberOfDarts = spellLevel + 2;     var dartOutput = "";     for(counter=1;counter<=numberOfDarts;counter++){         dartOutput+=`{{Dart ${counter} = [[1d4+1]]}}`;     }     var outputMessage = `&{template:default} {{name=Magic Missile}} ${dartOutput}`;     sendChat("API",outputMessage); } function scorchingRay(spellLevel,tokenName){     var numberOfRays = 3 + (spellLevel-2);     var rayOutput = "";     if(spellLevel<2){         sendChat("CustomSpellbook","Scorching Ray requires at least a level 2 spell slot");         return;     }     for (counter=1;counter<=numberOfRays;counter++){         rayOutput+=`{{Ray ${counter} Attack [[1d20+@{${tokenName}|spell_attack_bonus} ]]=[[2d6]] Fire Damage}}`;     }     var outputMessage = `&{template:default} {{name=Scorching Ray}} ${rayOutput}`;     sendChat("API",outputMessage); } I created the ability on my character sheet, i select my character, i use the token action button but i get an error message telling me that no ability was found.... I really don't get it. I have the ChatsetAttr installed as well...I control the character, it represents the character and so on.... I've checked it all... Thanks for your help if you can,or indicate a way to contact Nick directly if you don't have time to have a look at my issue.... Where do I go wrong.
Lionel V. said: I don't understand a problem i Have on a script from Nick Olivo. I can't find anywhere where to contact him directly so i take my chance on you, maybe you can help. I Want to use the Custom spell book script from nick. on("chat:message", function(msg) {     if (msg.type == "api" && msg.content.indexOf("!customSpellbook") == 0){         var args = msg.content.split(/\s+/);         var spellName = args[1].toLowerCase();         var spellLevel = Number(args[2]);         var tokenid = msg.selected[0]._id;         var token = getObj("graphic",tokenid);         var charID = token.get("represents");         var tokenName = token.get("name");         switch(spellName){             case "magicmissile":                 magicMissile(spellLevel);                 break;             case "scorchingray":                 scorchingRay(spellLevel,tokenName);                 break;         }         sendChat("API",`!modbattr --charid ${charID} --lvl${spellLevel}_slots_expended|-1`);     } }); function magicMissile(spellLevel){     var numberOfDarts = spellLevel + 2;     var dartOutput = "";     for(counter=1;counter<=numberOfDarts;counter++){         dartOutput+=`{{Dart ${counter} = [[1d4+1]]}}`;     }     var outputMessage = `&{template:default} {{name=Magic Missile}} ${dartOutput}`;     sendChat("API",outputMessage); } function scorchingRay(spellLevel,tokenName){     var numberOfRays = 3 + (spellLevel-2);     var rayOutput = "";     if(spellLevel<2){         sendChat("CustomSpellbook","Scorching Ray requires at least a level 2 spell slot");         return;     }     for (counter=1;counter<=numberOfRays;counter++){         rayOutput+=`{{Ray ${counter} Attack [[1d20+@{${tokenName}|spell_attack_bonus} ]]=[[2d6]] Fire Damage}}`;     }     var outputMessage = `&{template:default} {{name=Scorching Ray}} ${rayOutput}`;     sendChat("API",outputMessage); } I created the ability on my character sheet, i select my character, i use the token action button but i get an error message telling me that no ability was found.... I really don't get it. I have the ChatsetAttr installed as well...I control the character, it represents the character and so on.... I've checked it all... Thanks for your help if you can,or indicate a way to contact Nick directly if you don't have time to have a look at my issue.... Where do I go wrong. Now, I am no expert by any stretch of the imagination, but it could be because you created the ability in the character sheet instead of dragging and dropping from the compendium?
Actually, With the help of the Aaron, we found out that i had twice the character in my journal, and one of them didn't have the ability.... Thanks