********New version of this Mod HERE! ************ Hi All, Keeping in line with my recently posted Summon Beast and Find Familiar macros, here is another summoning like spell that I've made. This is for the D&D 5e OGL by Roll20 character sheet. It requires three scripts in total; Scriptcards, SpawnDefaultTokens and SelectManager. There is a bit of setup to do before the Macro is usable. Here are the steps: 1. Create a new NPC Character and name it AnimateDead (no spaces). Probably a good idea to give it player permissions at this point. I would recommend giving control permission, but not adding it to a player's journal as this isn't a character you want to drag and drop. 2. Run the Macro for the first time and it will create a Multi-sided token (rollable table) which you can find under the collection tab, the one where all your macros are. 3. Next open the AnimateDead Table under the Collection tab and add your tokens to the Zombie and Skeleton. Tokens must be from your library as scripts can't access images from the marketplace. 4. Set this token as the AnimateDead NPC's token, setting how you want your bars and make sure to turn vision on. Vision is set automatically by the macro for each familiar. Now any time you run the macro it will just cast the spell. What does this Macro Do? This macro will ask you at what level you're casting the spell and automatically deduct it from your character sheet. Then it will ask you what type of dead you are casting it on; corpse or bones, as per the spell. The appropriate number and type of tokens will be summoned based on level of spell and type. IMPORTANT: There is one important limitation with this Macro. It creates "Dummy" Actions and Traits on the NPC character sheet. This is necessary as the Zomie and Skeleton have a different number of Actions and Traits. I could have deleted these "dummy" sections instead of emptying them, but it would have required the addition of another script and I was trying to minimize the number of scripts needed. It is important that you DO NOT DELETE THE EMPTY ACTIONS AND TRAITS. Doing so will cause ScriptCards to crash your sandbox. !scriptcards {{
--#title|Summon Beast
--#sourceToken|@{selected|token_id}
--#emoteText|[*S:character_name] Casts Animate Dead.
--#bodyfontface|Helvetica
--#oddrowfontcolor|#290000
--#evenrowfontcolor|#290000
--#bodyfontsize|[&bodyFontSize]px
--#titlecardbackgroundcolor|#930c10
--#titlecardbackgroundcolor|#672223
--#titlefontcolor|#fffebd
--#titlefontsize|1.5em
--#titlefontshadow|0
--#oddrowbackground|#f7ce65
--#evenrowbackground|#f7ce65
--#oddrowbackground|#b3ab96
--#evenrowbackground|#b3ab96
--#subtitlefontcolor|#fffebd
--#tablebgcolor|#fffebd
--#lineheight|10pt
--#buttonfontsize|10px
--#buttonbackground|#930c10
--#buttonbackground|#672223
--#buttonbackground|rgba(103,34,35,1); display:inline-block;
--#buttonfontface|Tahoma
--#buttonpadding|8px
--#bodyfontface|Helvetica
--#bodyfontsize|14px
--#Debug|0
--&AnimateDead|@{AnimateDead|character_id}
--&Description|This spell creates an undead servant. Choose a pile of bones or a corpse of a Medium or Small humanoid within range. Your spell imbues the target with a foul mimicry of life, raising it as an undead creature. The target becomes a skeleton if you chose bones or a zombie if you chose a corpse (the DM has the creature’s game statistics). On each of your turns, you can use a bonus action to mentally command any creature you made with this spell if the creature is within 60 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete. The creature is under your control for 24 hours, after which it stops obeying any command you’ve given it. To maintain control of the creature for another 24 hours, you must cast this spell on the creature again before the current 24-hour period ends. This use of the spell reasserts your control over up to four creatures you have animated with this spell, rather than animating a new one.[br]At Higher Levels: When you cast this spell using a spell slot of 4th level or higher, you animate or reassert control over two additional Undead creatures for each slot level above 3rd. Each of the creatures must come from a different corpse or pile of bones.
-->IsFirstRun|
-->OutputText|
--X|
--:IsFirstRun|
--=DoesExist|[T#AnimateDead]
--&FFText|[$DoesExist.tableEntryText]
--?"[&FFText]" -eq "0"|MakeTable|WhatSpellSlot
--X|
--:MakeTable|
--+|[b]Creating Rollable Token Table for First Run for Animate Dead[/b]
--!o#:tableid|AnimateDead
--+New Table ID|[&tableid]
--!oe:entryid|[&tableid];Zombie
--+New Entry ID|[&entryid]
--!oe:entryid|[&tableid];Skeleton
--+|[br][b]The Multi-sided token (rollable table) AnimateDead has been created. Please add your tokens to the table before proceding. Then link your token to your character sheet, setting bar information and turning on vision.[/b]
--!or:[&AnimateDead]:npcaction|
name:Shortsword|
attack_flag:on|
attack_type:Melee|
attack_target:one target|
attack_range:5 ft.|
attack_tohit:4|
attack_damage:1d6 + 2|
attack_damagetype:piercing|
attack_tohitrange:+4, Reach 5ft., one target|
attack_onhit:7 (1d6 + 2) piercing damage|
attack_crit:1d6
--!or:[&AnimateDead]:npcaction|
name:Shortbow|
attack_flag:on|
attack_type:Melee|
attack_target:one target|
attack_range:80/320 ft.|
attack_tohit:4|
attack_damage:1d6 + 2|
attack_damagetype:piercing|
attack_tohitrange:+4, Reach 80/320 ft., one target|
attack_onhit:7 (1d6 + 2) piercing damage|
attack_crit:1d6
--!or:[&AnimateDead]:npctrait|name:Undead Fortitude|description:If damage reduces the zombie to 0 hit points, it must make a Constitution saving throw with a DC of 5 + the damage taken, unless the damage is radiant or from a critical hit. On a success, the zombie drops to 1 hit point instead.
--X|
--X|
--:WhatSpellSlot|
--+At what level is the spell being cast?|
--+|[rbutton]3::WhatLVL;3[/rbutton][rbutton]4::WhatLVL;4[/rbutton][rbutton]5::WhatLVL;5[/rbutton][rbutton]6::WhatLVL;6[/rbutton][rbutton]7::WhatLVL;7[/rbutton][rbutton]8::WhatLVL;8[/rbutton][rbutton]9::WhatLVL;9[/rbutton]
--<|
--:WhatLVL|
--=SlotLevel|[&reentryval]
--=SlotsTotal|0
--=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended]
--?[$SlotLevel] -eq 3|[
--=HowManyDead|1
--]|[
--=HowManyDead|[$SlotLevel] - 1
--]|
--?[$SlotsExpended.Raw] -eq [$SlotsTotal.Raw]|[
-->NoSlotsLeft|
--]|[
--?[$SlotLevel] -eq 0|NoSlot
--=SlotsLeft|[$SlotsExpended] - 1
--!a:[*S:character_id]|lvl[$SlotLevel]_slots_expended:[$SlotsLeft]
--]|
-->GetDead|
--X|
--:NoSlot|
--X|
--:GetDead|
--+What are you casting this spell on?|[br][rbutton]Corpse::Zombie[/rbutton][rbutton]Bones::Skeleton[/rbutton]
--X|
--:Zombie|
--!a:[&AnimateDead]|!npc_name:Zombie|!npc_type:Medium Undead, neutral evil|!npc_ac:8|!npc_actype:|!hp:22|!hp^:22|!npc_hpformula:3d8+9|!strength_base:13|!dexterity_base:6|!constitution_base:16|!intelligence_base:3|!wisdom_base:6|!charisma_base:5|!npc_speed:20 ft.|!initiative_bonus:|!npc_challenge:1/4|!npc_xp:50|!npc_senses:Darkvision 60 ft., Passive Perception 8|!npc_languages:understands all languages it spoke in life but can't speak|!npc_immunities:poisoned|!npc_wis_save:0
--Rfirst|[&AnimateDead];repeating_npcaction
--!a:[&AnimateDead]|[*R>name]:Slam|[*R>attack_flag]:on|[*R>attack_type]:Melee|[*R>attack_target]:one target|[R>attack_range]:5 ft.|[*R>attack_tohit]:+3|[*R>attack_damage]:1d6+1|[*R>attack_damagetype]:bludgeoning|[*R>attack_tohitrange]:|[*R>attack_onhit]:1d6+1
--Rnext|
--!a:[&AnimateDead]|[*R>name]:|[*R>attack_flag]:off|[*R>attack_type]:|[*R>attack_target]:|[R>attack_range]:|[*R>attack_tohit]:|[*R>attack_damage]:|[*R>attack_damagetype]:|[*R>attack_tohitrange]:|[*R>attack_onhit]:
--Rfirst|[&AnimateDead];repeating_npctrait
--!a:[&AnimateDead]|[*R>name]:Undead Fortitude|[*R>description]:If damage reduces the zombie to 0 hit points, it must make a Constitution saving throw with a DC of 5 + the damage taken, unless the damage is radiant or from a critical hit. On a success, the zombie drops to 1 hit point instead.
--@forselected|Spawn _name|AnimateDead _offset|1,0 _side|1 _qty|[$HowManyDead] _placement|surround _size|1 _expand|20,20 _tokenProps|has_night_vision:1,night_vision_distance:60,night_vision_effect:Nocturnal
--<|
--:Skeleton|
--!a:[&AnimateDead]|!npc_name:Skeleton|!npc_type:Medium Undead, lawful evil|!npc_ac:13|!npc_actype:armor scraps|!hp:13|!hp^:13|!npc_hpformula:2d8+9|!strength_base:10|!dexterity_base:14|!constitution_base:15|!intelligence_base:6|!wisdom_base:8|!charisma_base:5|!npc_speed:30 ft.|!initiative_bonus:|!npc_challenge:1/4|!npc_xp:50|!npc_senses:Darkvision 60 ft., Passive Perception 9|!npc_languages:understands all languages it spoke in life but can't speak|!npc_immunities:poisoned|npc_vulnerabilities:bludgeoning
--Rfirst|[&AnimateDead];repeating_npcaction
--!a:[&AnimateDead]|[*R>name]:Shortsword|[*R>attack_flag]:on|[*R>attack_type]:Melee|[*R>attack_target]:one target|[R>attack_range]:5 ft.|[*R>attack_tohit]:+4|[*R>attack_damage]:1d6+2|[*R>attack_damagetype]:piercing|[*R>attack_tohitrange]:|[*R>attack_onhit]:1d6+2
--Rnext|
--!a:[&AnimateDead]|[*R>name]:Shortbow|[*R>attack_flag]:on|[*R>attack_type]:Ranged|[*R>attack_target]:one target|[R>attack_range]:80/320 ft.|[*R>attack_tohit]:|[*R>attack_damage]:1d6+2|[*R>attack_damagetype]:piercing|[*R>attack_tohitrange]:|[*R>attack_onhit]:1d6+2
--Rfirst|[&AnimateDead];repeating_npctrait
--!a:[&AnimateDead]|[*R>name]:|[*R>description]:
--@forselected|Spawn _name|AnimateDead _offset|1,0 _side|2 _qty|[$HowManyDead] _placement|surround _size|1 _expand|20,20 _tokenProps|has_night_vision:1,night_vision_distance:60,night_vision_effect:Nocturnal
--<|
--:OutputText|
--+|[rbutton]Show Description::OutputDescription[/rbutton]
--X|
--:OutputDescription|
--+|[f11][&Description][/f]
--X|
--:NoSlotsLeft|
--+|[*S:character_name] has no level [$SlotLevel.Total] spell slots available.
--X|NoSlotsLeftStop
}}