Creating Custom Spells with the Spellbook Injector
Creating Custom Spells
with the Spellbook Injector
A Custom Content guide byr3m
Last update: October 5th, 2019
This guide is meant for V1 of the Spellbook Injector. The Spellbook Injector’s
documentation and the mod itself are distributed under aCreative Commons
BY-NC-SA 4.0license.
Contents
- 1 Introduction
- 1.1 Requirements
- 1.2 Prior Test
- 2 The Custom Spells Snippet
- 3 Tuning the Essentials
- 3.1 Spell Tuning
- 3.2 Unlock Loot Tuning
- 3.3 Magic Tome
- 3.3.1 Setting the object tuning
- 3.3.2 Creating the magic tome object.
- 4 Advanced Tuning
- 4.1 Wild Magic
- 4.2 Witch Interactions.
- 5 Last Remarks
- 5.1 Distributing your Mod.
- 5.2 Troubleshooting
- 6 Acknowledgements
1 Introduction
Hello, fellow creators and Simmers! In this tutorial, I will explain how to create
a custom spell that Spellcasters (as introduced in The Sims 4 Realm of Magic)
can learn and cast. To accomplish this we will use my Spellbook Injector, a mod
that allows CC creators to load custom spells into the game. With this utility mod
we avoid directly overriding EAxian tuning, thus making sure that custom spells
made by different modders are compatible.
Moreover, the Spellbook Injector takes care of all the scripting, so you as a
modder don’t have to worry about any Python coding. Instead you can focus on
the more creative aspects of creating a custom spell.
If you are already experienced with XML tuning and have previously worked
with Sims 4 Studio, skip toThe Custom Spells Snippet. If you’re starting out, you
can follow this tutorial. But be aware that this presupposes some familiarity with
modding and it’s not a step-by-step guide for beginners. You should know how
to read tuning descriptions, edit tuning files, create string tables, and understand
some modding lingo.
Before we start, I will summarize what the Spellbook Injector (V1) actually
does:
- injects custom spells to the spellbook
- allows these spells to be learned randomly through one of the following in- teractions: - ”Ask to Teach Spell” - ”Duel for Knowledge” - ”Practice Magic”
- makes custom magic tomes purchaseable in Caster’s Alley’s market stall
- allows custom magic tomes to be found through the ”Search for Tomes” in- teraction
- adds custom spells to the list of spells sages know by default
- allows injection of potential outcomes that result from the Curse of Scram- bled Spells
- allows injection of interactions that are exclusive to spellcasters
Suggestions for new features are always welcome. If you want to discuss a
new feature, feel free to contact me atMTS.
Requirements
To follow through this tutorial the following tools are essential:
- The Sims 4 & The Sims 4 Realm of Magic
- Spellbook Injector
- Sims 4 Studio*
Prior Test
Now, before anything else, make sure the Spellbook Injector is working in your
game! Placer3m_spells_test.package(included in the main Spellbook Injector
download) in your ”Mods” folder and make sure the spell is properly loaded. It
shouldshowupinthePracticalMagicsectionofthespellbook, haveacorrespond-
ing tome available at the market stall, and be able to be learnt randomly through
a duel, asking a sage, or self-practice.
Figure 1. The test spell properly being displayed in the spellbook
*Note: In this tutorial I will use Sims 4 Studio, but the same results can be accomplished com- bining other tools, likes4peandscumbumbo’s XML extractor. Feel free to use the tools you are most comfortable with.
2 The Custom Spells Snippet
The Custom Spells Snippet is an XML resource (type0x7DF2169C) that indicates which spells are injected. It allows modders certain configuration. For instance, you can choose to which school of magic the spells belong to, whether they can be learnt randomly, or where to place their entries in the spellbook. Code 1is an example of the snippet used to load the test spell that comes with the main Spellbook Injector download.
1 2 <Ic=“CustomSpells"i=“snippet"m=“spellbook_injector.spells"n=“r3m: injector_Spells_Test"s=” 16105992914124029764 “> 3 <Ln=“spells”> 4 5 <Tn=“spell”>10744959535505960091 6 <Un=“injection_data”> 7 <En=“spellbook_category”>WITCH_PRACTICAL_SPELL 8 <Un=“learning”> 9 <Tn=“allow_from_cheat”>False 10 <Tn=“allow_from_duel”>True 11 <Tn=“allow_from_practice”>True 12 <Tn=“allow_from_sage”>True 13 <Vn=“magic_tome"t=“enabled”> 14 <Un=“enabled”> 15 <Tn=“definition”>15930086131719699027 16 <Tn=“can_be_bought”>True 17 <Tn=“can_be_found”>True 18 19 20 <Tn=“min_rank_to_learn”>1 21 <Tn=“unlock_loot”>3129225024296920805</ T> 22 23 <Tn=“sort_index”>-1 24 25 26 27
Code 1. Custom Spells Snippet of a test spell
Let’s start analyzing what each line of that code means. Keep in mind that this is also detailed in the TDESC that I have provided with this tutorial. The TDESC can be viewed withscumbumbo’s tuning description browseror opened in any text editor software; however, the former is highly recommended.
The first two important fields that need tuning are shown highlighted in ma- genta in the second line ofCode 2. These specify the name of your snippet and its instance ID in decimal format. The recommended format for the name is your modderaliasfollowedbyacolonfollowedbythenameofyourcustomresource. In this example, the name I set (r3m:injector_Spells_Test) has the following FNV hash0xDF83FB38E1523F44, whichcorrespondsto 16105992914124029764 inthedec- imal system and is used as the instance ID.
1 2 <Ic=“CustomSpells"i=“snippet"m=“spellbook_injector.spells"n=“r3m: injector_Spells_Test"s=” 16105992914124029764 “>
27
Code 2. The instance element of a Custom Spells Snippet
Let’s continue. Now we start a list ofspellsas shown inCode 3. Note that one injector resource can handle multiple spells. Each entry specifies aspelltuning andinjection_datadata. TheSpell Tuningresource has information about the spell’s display name, description, and interactions it unlocks to the Spellcaster. Creating such resource will be covered later on. For now, let’s say that our tuning alreadyexistsandthatitsinstanceIDis 10744959535505960091 (i.e.,0x951DC3C4AFC76C9B in hex format orr3m:spells_Test, unhashed). Note that the text in violet is a com- ment, which is optional but serves as a useful pointer in case we forget where the big number came from.
3 <Ln=“spells”> 4 5 <Tn=“spell”> 10744959535505960091 6 <Un=“injection_data”>
24 25 26
Code 3. An entry in the list ofspells
Inside theinjection_datatuple, we can specify thespellbook_categoryand sort_index(seeCode 4). The former places the spell in the appropriate section ofthespellbook, whilethelatterisusedasanindextosortthespells. Theavailable spell categories are:
- WITCH_PRACTICAL_SPELL
- WITCH_MISCHIEF_SPELL
- WITCH_UNTAMED_SPELL
Spells are sorted by required rank level from 0 to 5, so it is recommended to match the sort index with your spell’s minimum required rank. However, you are free to specify any number. For instance, in this example the value of-1is used
to place the spell before all other entries. In a similar fashion, a value of 6 or more would result in the spell being the last entry of its corresponding section.
6 <Un=“injection_data”> 7 <En=“spellbook_category”>WITCH_PRACTICAL_SPELL
23 <Tn=“sort_index”>- 1 24
Code 4. Setting thespellbook_categoryandsort_indexfields
Thelearningtuple contains all the information regarding how a custom spell is learnt through the existing game methods. The names here are pretty self- explanatory. For instance, ifallow_from_duelis set toTrue, Sims will be able to learn the spell as a result of winning a Magic Duel.
A magic tome is optional (since I assume modders will want to create certain spells that are learned by other means). If themagic_tometunable isenabled, then you should specify the instance ID of the object, so it can be properly bought in Caster’s Alley or found randomly in the bookshelves of the Magic HQ. More de- tails about creating a custom tome can be found in theMagic Tomesection of chapter 3.
Finally, for all of these injections to work you need to create a custom loot. This tuning, which in the injector is set asunlock_loot, contains a list of actions that are applied to a Sim when they unlock the spell. It can include a notification, the reaction of your familiar, XP gain, and so on. But most importantly it should actually unlock the spell! Creating this loot is explained in theUnlock Loot Tuning section.
8 <Un=“learning”> 9 <Tn=“allow_from_cheat”>False 10 <Tn=“allow_from_duel”>True 11 <Tn=“allow_from_practice”>True 12 <Tn=“allow_from_sage”>True 13 <Vn=“magic_tome"t=“enabled”> 14 <Un=“enabled”> 15 <Tn=“definition”> 15930086131719699027 16 <Tn=“can_be_found”>True 17 18 19 <Tn=“min_rank_to_learn”> 1 20 <Tn=“unlock_loot”> 3129225024296920805 </ T> 21
Code 5. Tuning thelearningtuple
That’s mostly it for the injector snippet. There’s more options, which will be discussed inchapter 4, but what’s in here is already enough to inject a custom spell.
3 Tuning the Essentials
Besides the Custom Spells Snippet, there are four essential resources needed for
a custom spell: the spell tuning, the unlock loot tuning, the magic tome, and the
casting interactions. The first three will be covered here. I won’t be discussing in-
teractions because the creation of these depends entirely on what you want your
spell to actually do. You can follow EA’s spell interactions as a base or completely
stray away from them and do something different! It’s up to you as a modder.
Spell Tuning
First resource we need to create is a Spell Tuning (type0x1F3413D9). The easiest
way to do this is to open Sims 4 Studio and select theExtract Tuning…option un-
der theToolsmenu. You will be prompted with a new window (Figure 2) where
you are able to look for an existing tuning resource by name. Type ”spells_” and
scroll down until you see the spell entries. Select any one of them, but preferably
one that matches what your spell is going to target. For instance, if your spell tar-
gets Sims, then pick Strangeify (namedspells_Mischief_5_ChangeAppearance); if
your spell targets terrain, go for Herbio (spells_Practical_4_GrowPlant); and so
forth. Once you’ve made your choice, add the selected tuning to your package.
Two resources will be added: the actual Spell Tuning and a Sim Data resource.
First thing to do with these resources is to give them new instance IDs, so they
don’t override EA’s tuning. Open theHash Generatorunder theToolsmenu. A
new window (Figure 3) will pop up. Go to the Text input box and type the name of
your resource. The recommended format is:
modder_name:resource_name_with_no_spaces
The resource’s name can be anything, but being descriptive is always a good
idea. For instance, EA’s spells state the school of magic and rank required for
the spell. Once you’re done typing, copy the FNV64 hash, a 16-digit hexadeci-
mal number, and use it as instance ID for both the SimData and the Spell Tuning
resource.
The Sim Data resource will be left mostly untouched, we only need to change
its name and instance ID. Note that the group ID (0x003413C6) of this resource
should not be changed! For other custom tuning resources group0x80000000is
recommended.
Figure 2. Sims 4 Studio’sExport Tuning…window
Figure 3. Sims 4 Studio’sHash Generatorwindow
In the Spell Tuning resource we need to specify display data for our spell (de-
scription, name, tooltip*, icon) and references to the interactions it adds to Sims,
objects, or terrain. Check an example inCode 6. I have highlighted in magenta the
things that need tuning. Highlighted in violet are optional things like comments,
which can be useful guides when you come back to the project and want to know
what is what.
Unlock Loot Tuning
Nextup, wehavetocreateanActionTuningresource(type0x0C772E27). Theseare
also known as loots and they indicate a series of actions that usually take place
during or after an interaction. Such actions can include the addition or removal
of moodlets, traits, perks, skills, etc. Loots are how the game handles effects and
*Note: currently, I don’t know where the tooltip is actually displayed, so for now I’m reusing the
description’s key.
1 2 <Ic=“Spell"i=“spell"m=“spells.spells"n=“r3m:spells_Test"s=” 10744959535505960091 “> 3 <Vn="_display_data"t=“enabled”> 4 <Un=“enabled”> 5 <Vn=“instance_display_description"t=“enabled”> 6 <Tn=“enabled”> 0 x6A541506 7 8 <Vn=“instance_display_icon"t=“enabled”> 9 <Tn=“enabled"p=“InGame\UI\Icons\Debug\missing_image.png”>2f7d0004:00000000: 30 f0846c783606f9 10 11 <Vn=“instance_display_name"t=“enabled”> 12 <Tn=“enabled”> 0 xF3740099 13 14 <Vn=“instance_display_tooltip"t=“enabled”> 15 <Tn=“enabled”> 0 x6A541506 16 17 18 19 <Vn=“locked_description"t=“enabled”> 20 <Tn=“enabled”>0x475B13B6 21 22 <Ln=“tags”> 23 Spell_Magic 24 25 <Ln=“target_super_affordances”> 26 27 <Tn=“affordance”> 7073122034773905024 28 <Tn=“allow_self”>True 29 30 31
Code 6. Spell Tuning of a test spell
it is no different for spells. When Sims finish reading a magic tome, ask the sages, win duels, or practice magic, they receive a loot so they unlock (i.e., learn) a spell. This loot also makes them receive a notification, some XP, and a buff. Such loot is required by the Spellbook Injector script, so we must create one. As before, the easiest way to do so is to copy an existing one and modify it.
Once again open theExtract Tuning…window. This time we’ll be looking for resources named ”loot_Spells_LearnSpell”. Once you find one, add it to your package and change its name and instance ID. Now go to theXMLtab and look for the reference to the unlocked spell and change it to yours. Don’t forget to change the icon too! InCode 7, I’ve highlighted the relevant bits that need tuning.
Magic Tome
Note that, although this section resides in theTuning the Essentialschapter, a magic tome is not strictly required. You can have your spell be unlocked by other means, such as using an existing or custom object, interacting with a sage, or whatever your imagination conceives! If you’re interested in an example, jump to theWitch Interactionssection of chapter 4.
1 2 <Ic=“LootActions"i=“action"m=“interactions.utils.loot"n=“r3m: loot_Spells_LearnSpell_Test"s=” 3129225024296920805 “> 3 <Ln=“loot_actions”> 4 <Vt=“unlock_item”> 5 <Un=“unlock_item”> 6 <Vn=“notification"t=“enabled”> 7 <Un=“enabled”>
13 <Vn=“icon"t=“enabled”> 14 <Vn=“enabled"t=“resource_key”> 15 <Un=“resource_key”> 16 <Tn=“key"p=“InGame\UI\Icons\Debug\missing_image.png”>2f7d :00000000: 30 f0846c783606f9 17 18 19
54 55 56 <Vn=“unlock_item"t=“unlock_spell”> 57 <Tn=“unlock_spell”> 10744959535505960091 58 59 60
77 78
Code 7. Unlock loot tuning of a test spell (condensed)
SETTING THE OBJECT TUNING
First things first, let’s clone an Object Tuning. You know the drill by now,Extract Tuning…, lookfor”book_Spells_MagicTome,”addtothecurrentpackage, andchange the name and instance ID. One thing to note though, make sure to clone a tome of the same rank as your spell’s.
The Object Tuning stores information about the object, such as the interac- tions it provides. All magic tomes share the same reading interactions, but their Object Tuning resources have overrides that change the outcomes so the appro- priate spell is learned when the book is finished. We have to look for these refer- ences and change them to our own spell and unlock loot tuning. InCode 8, you can see an example of the things we should be changing. Keep in mind that— for the sake of space—I’ve only highlighted a couple of references. but there are several ones that need to be edited.
CREATING THE MAGIC TOME OBJECT
Once you’re done with magic tome’s Object Tuning, we have to create our spell’s magic tome object. For this, we will clone one of EA’s tomes. Open a new Sims 4 Studio window, and select ”Selective Clone” under the ”Object” button in the main menu. Now click that ”Object” button and you will be taken to a new window where all the EAxian objects are displayed.
1 2 <Ic=“GameObject"i=“object"m=“objects.game_object"n=“r3m:book_Spells_MagicTome_Test” s=” 6544584380148954400 “>
21 <Un="_components”> 22 <Vn=“affordance_tuning"t=“enabled”> 23 <Un=“enabled”> 24 <Ln=“affordance_map”> 25 26 <Tn=“key”>213494 27 <Un=“value”>
48 <Vn=“outcome"t=“single”> 49 <Un=“single”> 50 <Un=“actions”> 51 <Ln=“loot_list”> 52 3129225024296920805 53 54 55 56 57 <Ln=“tests”> 58 59 <Vt=“unlock_tracker”> 60 <Un=“unlock_tracker”> 61 <Tn=“invert”>True 62 <Vn=“tooltip"t=“enabled”> 63 <Tn=“enabled”>0x7A9DA38 64 65 <Vn=“unlock_item"t=“unlock_spell”> 66 <Tn=“unlock_spell”> 10744959535505960091 </T
67 68 69 70 71 72 73
Code 8. Object Tuning of a custom magic tome (condensed)
Tick the ”Show Debug Items” box and search for the word ”tome,” as shown in Figure 4. Pick the one you’d like to clone and proceed to the next step by clicking ”Next.” You will be prompted with a new window (as depicted inFigure 5) where you can choose which components to clone. The ”Selective Clone” option lets us clone only the relevant components we need, which saves space if we don’t want to edit the book’s textures.
For this tutorial, I want to re-use the original textures, so I will only keep the ”Models,” ”Definitions,” and ”Catalogs” boxes ticked. If you also want to have Sims 4 Studio create the string table for you, then tick ”Strings.” When you’re ready, click ”Ok,” name your file, and go to the ”Warehouse” tab. Find the Object Definition resource. Here we will add the name of our Object Tuning resource and its instance ID (seeFigure 6).
Figure 4. Looking for an existing magic tome to clone
Save the changes and that’s it! Now you can merge your packages. With a
properly tuned Custom Spells Snippet, your spell can now be found in the spell-
book and the tome should be purchasable at Caster’s Alley. Test it and if it seems
to be working move on to create the spell interactions! Start by looking at the
ones EA has provided.
Figure 5. Components of a selective clone
Figure 6. Changing the Tuning andTuningIdof an Object Definition resource
4 Advanced Tuning
Wild Magic
From time to time, Spellcasters will get random curses. These affect your Sim in
various ways, but one of special interest is the Curse of Scrambled Spells. Sims
afflicted with this curse will sometimes cast a different spell than the one they
were directed to. For instance, you click on a dirty spot on the floor, command
your Sim to cast Scruberoo, and then unexpectedly food appears!
How does that work? Each spell’s Interaction Tuning specifies a list of tested
outcomes. Usually there’s four outcomes: failure, regular success, charged suc-
cess, and wild magic. Which outcome is played depends on different tests, in-
cluding your Spellcaster’s charge and perks. However, the last outcome will only
play if your Sim has the Curse of Scrambled Spells. If this outcome is selected,
then the Sim is forced to run a new interaction that has more outcomes to choose
from. Each one of these corresponds to the existing spells. With the Spell Injec-
tor, you can inject your own tested outcome to this list, thereby allowing cursed
Sims to inadvertently cast your custom spell.
For my weather changing spell I included a new wild magic outcome, let’s see
how it is injected (go toCode 9). So first I open awild_magic_outcomeslist inside
theinjectiontuple. This list can have up to four entries, each one corresponding
to one magictarget. There are four of these:
- SELF
- SIM
- OBJECT
- TERRAIN
Choosetheonethatmakesthemostsense. Ifyourinteractionisusuallycasted
on objects, then go forOBJECT. If your interaction can have multiple kinds of tar-
gets, then don’t forget that you can specify one tested outcome for each type of
target! For the weather changing spell, the most sensible option is to pickTERRAIN.
But I could have gone forSIMand then instead of casting Strangeify, my cursed
Sim would start a blizzard.
1 2 <Ic=“CustomSpells"i=“snippet"m=“spellbook_injector.spells"n=“r3m: injector_Spells_WeatherControl"s=” 1765726968530848803 “> 3 <Ln=“spells”> 4 5 <Tn=“spell”>7848844030009302832 6 <Un=“injection_data”>
18 <Ln=“wild_magic_outcomes”> 19 20 <En=“target”>TERRAIN 21 <Un=“tested_outcome”> 22 <Ln=“potential_outcomes”>
121 122 <Ln=“tests”>
158 159 160 161 162 163 164 165
Code 9. Custom Spells Snippet of a weather changing spell (condensed)
Next, wedefineatested_outcometuplethatwillhavealistofpotential_outcomes and a list oftests. If the Sim passes all the tests, then one of the outcomes listed in the former list will be selected. What types of test you say? Well, EA has this system whereby most spells give a hidden buff to your Sim. This is a short-lived buff tagged internally as a casting buff. It basically acts as a marker to record which spell your Sim is currently casting. So the tests usually blacklist the rel- evant buff, that way your Sim will actually have a random outcome and not the correct one. In the case of the weather changing spell, I included 27 interactions (one for each weather, season, and forecast) and each one had a buff associated to it. This meant that my wild magic outcome test should blacklist all these buffs. See a snippet below:
122 <Ln=“tests”> 123 124 <Vt=“buff”> 125 <Un=“buff”> 126 <Ln=“blacklist”> 127 16001462242011192410 128 7934363374955374061
154 155 156 157 158
Code 10. List oftestsfor a spell’s wild magic outcome (condensed)
The outcomes in the list ofpotential_outcomesoffer complete freedom. What goes in here is completely up to the modder. Most of the wild magic outcomes defined by EA include an animation, a broadcaster to induce a reaction to nearby Sims, some loot actions, sometimes a visual effect, etc. This part is completely up to you, so I recommend checking the TDESC to see how to properly format your outcome.
Check out the exampleCode 11. I included an animation, a loot list, along with some basic extras and a response (not shown).
22 <Ln=“potential_outcomes”> 23 24 <Un=“outcome”> 25 <Vt=“enabled"n=“animation_ref”> 26 <Un=“enabled”> 27 <Tn=“factory”>221913 28 29
75 <Ln=“loot_list”> 76 17253107515801545331 77 12541968560462589371 78 16775301027292946378 79 216187 80
119 120 121
Code 11. List ofpotential_outcomesfor a spell’s wild magic outcome (condensed)
Witch Interactions
An additional feature of the Spellbook Injector is the ability to inject interactions that are exclusive to Spellcasters. This feature, named ”witch_interactions,” al- lows you to inject:
- super_affordances, self interactions exclusive to the Spellcaster life state;
- target_super_affordances, interactions that Spellcasters can use on a list of filtered objects;
- actor_mixers, social interactions available exclusively to Spellcasters, e.g., ”Offer Rite of Ascension”; and
- provided_actor_mixers, social interactions available to any Sim targeting a Spellcaster, e.g., ”Ask For Rite of Ascension”.
Here’s an example. Suppose we have a special spell that we don’t want Sims to be randomly learning from sages or duels. Instead, we set a specific object to allow Sims to learn it. This is possible with some configuration of the injector. In Code 12a new vampire spell is loaded. You should notice that this spell cannot be learned randomly and doesn’t even have a tome associated with it. However, I use thewitch_interactionsto inject a custom learning interaction to ”The Ultimate Vampire Compendium,” an object that has theFunc_VampireTome_Ultimatetag. This interaction will only be available to witches, so we don’t have to worry about human Sims having the option to pick up the book and learn a spell.
1 2 <Ic=“SpellInjector"i=“snippet"m=“spell_injector"n=“r3m:injector_Spells_Vampire"s=” 15747652439790158722 “> 3 <Ln=“spells”> 4 5 <Tn=“spell”>3446185963808978939 6 <Un=“injection_data”> 7 <En=“spell_category”>WITCH_UNTAMED_SPELL 8 <Un=“learning”> 9 <Tn=“allow_from_duel”>False 10 <Tn=“allow_from_practice”>False 11 <Tn=“allow_from_sage”>False 12 <Tn=“unlock_loot”>17947254246011745321 13 14 <Tn=“sort_index”>4 15 16 17 18 <Vn=“witch_interactions"t=“enabled”> 19 <Un=“enabled”> 20 <Ln=“target_super_affordances”> 21 22 <Tn=“affordance”>15431937082800123009 23 <Vn=“object_filter"t=“filter_by_tags”> 24 <Un=“filter_by_tags”> 25 <Ln=“tags”> 26 Func_VampireTome_Ultimate 27 28 29 30 31 32 33 34
Code 12. Spell Injector snippet of a vampire spell
The possibilities here are countless! Read the Spellbook Injector TDESC to see what object filtering options are available and let your imagination (and Spell- casters) run wild.
5 Last Remarks
Distributing your Mod
The main purpose of the Spellbook Injector is to serve as a utility to load custom
spells into the game and remove the burden of scripting from other creators. For
this reason, youDO NOThave to include the Spellbook Injector package or script
in your release. Instead, direct your users to download the latest version. I will
make sure to keep it updated for recent patches.
Troubleshooting
Here’s a checklist of things to be on the lookout for if your spell is not being loaded
correctly to the spellbook.
- Make sure your game is up-to-date and the Spellbook Injector is compatible with that game version.
- Make sure the Spellbook Injector is properly installed! Does the test spell work?
- Check if there was aLastException.txtorspellbook_injector.loggener- ated by the game. These are found in your ”The Sims 4” folder.
- Check if your Custom Spells snippet is well-formed. Some tuning errors can be caught by scumbumbo’s Tuning Error Notifier (now maintained by Nisa). You can find the latest version at the#mod_newschannel inDeaderpool’s Dis- cord server.
Ifyou’restillstuck, headtotheModdingDiscussionforumofModTheSimsand
start a new thread. Feel free to link it to me (via PM), so I can offer help if possible.
6 Acknowledgements
The Spellbook Injector would not have been possible without the support and in-
valuable help of some members of the modding community. I would like to thank:
- scumbumbo, for developing so many useful tools for modders and for all the precious resources he has shared and spread all over the ModTheSims forums;
- fetusdip, for the reload script;
- Kutto, for thoroughly testing my Vampirify spell;
- fellow creators at Deaderpool’s Discord, for their continuous support and sharing of modding knowledge; and
- the team behind Sims 4 Studio.