User:Kernelmethod/Sandbox: Difference between revisions
Kernelmethod (talk | contribs) Add proof-of-concept for creatures |
Kernelmethod (talk | contribs) Rename "Snapjaw Wizard" -> "Snapjaw Mage" |
||
Line 1: | Line 1: | ||
Modding Tutorial: ''Snapjaw | Modding Tutorial: ''Snapjaw Mages!'' | ||
Welcome! If you're looking to get started with modding Caves of Qud, this tutorial is a good place to start. | Welcome! If you're looking to get started with modding Caves of Qud, this tutorial is a good place to start. | ||
In this tutorial, we're going to add a new creature to the game -- the great and mystical '''''snapjaw | In this tutorial, we're going to add a new creature to the game -- the great and mystical '''''snapjaw mage'''''. Along the way we're going to be helped by my friends {{qud text|&MRulimispruce, legendary sprouting orb}} and {{qud text|&MPyovya, legendary mopango}}. | ||
{| style = "margin: 1em;font-family:Source Code Pro;" | {| style = "margin: 1em;font-family:Source Code Pro;" | ||
Line 19: | Line 19: | ||
By the end of this tutorial, you'll have created a new mod which | By the end of this tutorial, you'll have created a new mod which | ||
* introduces two new creatures, the {{qud text|snapjaw | * introduces two new creatures, the {{qud text|snapjaw mage of &Rfire}} and the {{qud text|snapjaw mage of &Cice}}, and | ||
* introduces two books that function as missile weapons, the {{qud text|tome of &Rfire}} and the {{qud text|tome of &Cice}}. | * introduces two books that function as missile weapons, the {{qud text|tome of &Rfire}} and the {{qud text|tome of &Cice}}. | ||
Line 49: | Line 49: | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
SnapjawMage | |||
├── manifest.json | ├── manifest.json | ||
└── preview.png | └── preview.png | ||
Line 69: | Line 69: | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
SnapjawMage | |||
├── manifest.json | ├── manifest.json | ||
├── ObjectBlueprints | ├── ObjectBlueprints | ||
│ └── Creatures.xml | |||
└── preview.png | └── preview.png | ||
</syntaxhighlight> | </syntaxhighlight> | ||
With that out of the way, let's start adding our new snapjaw | With that out of the way, let's start adding our new snapjaw mage to <code>Creatures.xml</code>: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
<objects> | <objects> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Snapjaw Mage" Inherits="Snapjaw"> | ||
</object> | </object> | ||
</objects> | </objects> | ||
Line 88: | Line 88: | ||
Let's break this down: | Let's break this down: | ||
* The <code>object</code> tag tells Qud that we want to add a new creature. | * The <code>object</code> tag tells Qud that we want to add a new creature. | ||
* The <code>Name</code> attribute is a unique identifier for our new creature (it's not the name of the creature as it appears in-game -- we'll get to that shortly). You'll use this identifier whenever you want to wish for a new snapjaw | * The <code>Name</code> attribute is a unique identifier for our new creature (it's not the name of the creature as it appears in-game -- we'll get to that shortly). You'll use this identifier whenever you want to wish for a new snapjaw mage. | ||
* The <code>Inherits</code> attribute says that our new creature should "inherit" all of the properties of the <code>Snapjaw</code> creature. | * The <code>Inherits</code> attribute says that our new creature should "inherit" all of the properties of the <code>Snapjaw</code> creature. | ||
Line 94: | Line 94: | ||
| style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | | style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | ||
| style= "color:#155352" | < | | style= "color:#155352" | < | ||
| style = "border:1px solid #155352;padding:0.5em 1em;" | Hey, why'd you add the <code> | | style = "border:1px solid #155352;padding:0.5em 1em;" | Hey, why'd you add the <code>Pyovya_SnapjawMage</code> bit to the front of the name of the creature? Why not just call it a <code>Snapjaw Mage</code>? | ||
|} | |} | ||
Line 100: | Line 100: | ||
| style = "padding:0em 1em;"| [[File:Mopango_pilgrim.png|40px]] | | style = "padding:0em 1em;"| [[File:Mopango_pilgrim.png|40px]] | ||
| style= "color:#155352" | < | | style= "color:#155352" | < | ||
| style = "border:1px solid #155352;padding:0.5em 1em;" | When writing a mod, it's common courtesy to prefix unique identifiers with your name, an underscore <code>_</code>, followed by the mod's name. This ensures that if somebody else writes their own Snapjaw | | style = "border:1px solid #155352;padding:0.5em 1em;" | When writing a mod, it's common courtesy to prefix unique identifiers with your name, an underscore <code>_</code>, followed by the mod's name. This ensures that if somebody else writes their own Snapjaw Mage mod, your mod won't conflict with theirs. | ||
|} | |} | ||
Line 122: | Line 122: | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
<objects> | <objects> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Snapjaw Mage" Inherits="Snapjaw"> | ||
<part Name="Description" Short="A great hero of the snapjaws." /> | <part Name="Description" Short="A great hero of the snapjaws." /> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage" Tile="Assets_Content_Textures_Creatures_sw_snapjaw_warrior.bmp" ColorString="&O" DetailColor="Y" /> | ||
</object> | </object> | ||
</objects> | </objects> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Before I did into the new XML we've added, save <code>Creatures.xml</code>. Reload your mods, start a new game and wish for a <code> | Before I did into the new XML we've added, save <code>Creatures.xml</code>. Reload your mods, start a new game and wish for a <code>Pyovya_SnapjawMage_Snapjaw Mage</code>. You should a new snapjaw like the one below show up: | ||
(IMAGE HERE, INCLUDING DESCRIPTION OF SNAPJAW) | (IMAGE HERE, INCLUDING DESCRIPTION OF SNAPJAW) | ||
Congrats! You've successfully added a snapjaw | Congrats! You've successfully added a snapjaw mage to your game. | ||
{| style = "margin: 1em;font-family:Source Code Pro;" | {| style = "margin: 1em;font-family:Source Code Pro;" | ||
Line 141: | Line 141: | ||
|} | |} | ||
Well, it's still a little bare-bones, but you have indeed created a new creature called a <code>snapjaw | Well, it's still a little bare-bones, but you have indeed created a new creature called a <code>snapjaw mage</code> and spawned it in your game! Give yourself a pat on the back, Rulimispruce. | ||
{| style = "margin: 1em;font-family:Source Code Pro;" | {| style = "margin: 1em;font-family:Source Code Pro;" | ||
Line 159: | Line 159: | ||
=== Using custom tiles === | === Using custom tiles === | ||
Instead of having our snapjaw | Instead of having our snapjaw mages look like off-color snapjaw warriors, let's add a snazzy new tile to the game to use for our mages! Just pop open a pixel editor, create a 16px x 24px black-and-white tile, save it as a -- | ||
{| style = "margin: 1em;font-family:Source Code Pro;" | {| style = "margin: 1em;font-family:Source Code Pro;" | ||
Line 171: | Line 171: | ||
DOWNLOAD LINK FOR NEW TILE | DOWNLOAD LINK FOR NEW TILE | ||
In your mod directory, create a new folder called <code>Textures/</code>; in that folder, create a new subfolder called <code> | In your mod directory, create a new folder called <code>Textures/</code>; in that folder, create a new subfolder called <code>Pyovya_SnapjawMage/</code>; and in there, create another subfolder called <code>Creatures/</code>. Save <code>snapjaw_mage.png</code> there, so that your mod folder now looks like this: | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
SnapjawMage | |||
├── manifest.json | ├── manifest.json | ||
├── ObjectBlueprints | ├── ObjectBlueprints | ||
│ └── Creatures.xml | |||
├── preview.png | ├── preview.png | ||
└── Textures | └── Textures | ||
└── | └── Pyovya_SnapjawMage | ||
└── | └── snapjaw_mage.png | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Now, let's change the <code>Render</code> part for our | Now, let's change the <code>Render</code> part for our mages to use this new tile: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage" Tile="Pyovya_Snapjaw/snapjaw_mage.png" ColorString="&O" DetailColor="Y" /> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 198: | Line 198: | ||
=== Adding inventory === | === Adding inventory === | ||
We'll keep adding stuff to our snapjaw | We'll keep adding stuff to our snapjaw mage to round them out a bit more. First of all, like any good mage, they need a {{favilink|walking stick}} and some [[book|books]]. Let's give them some clothes to equip while we're at it. Add the following XML to your creature: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Line 207: | Line 207: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
By setting <code>Number="1-2"</code> and <code>Chance="10"</code> in that last line, we've given our | By setting <code>Number="1-2"</code> and <code>Chance="10"</code> in that last line, we've given our mages a 10% chance of holding 1-2 books when they spawn. | ||
=== Adding skills === | === Adding skills === | ||
Let's give our | Let's give our mage the [[Cudgel]] skill as well, so that they're a little bit better at fighting with that walking stick: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Line 219: | Line 219: | ||
=== Changing stats === | === Changing stats === | ||
The base <code>Snapjaw</code> creature that we're inheriting from has really low stats, so we're going to bump up our | The base <code>Snapjaw</code> creature that we're inheriting from has really low stats, so we're going to bump up our mage's stats a little. | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Line 225: | Line 225: | ||
<stat Name="DV" Value="4" /> | <stat Name="DV" Value="4" /> | ||
<!-- Raise ego to make the | <!-- Raise ego to make the mage's mental mutations a little more powerful --> | ||
<stat Name="Ego" Value="17" /> | <stat Name="Ego" Value="17" /> | ||
Line 244: | Line 244: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<tag Name="DynamicObjectsTable:Snapjaws" /> | <tag Name="DynamicObjectsTable:Snapjaws" /> | ||
<tag Name="AggregateWith" Value=" | <tag Name="AggregateWith" Value="Pyovya_SnapjawMage_Snapjaw Mage" /> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
FINAL VERSION OF CREATURE XML BEFORE GOING TO THE NEXT SECTION | FINAL VERSION OF CREATURE XML BEFORE GOING TO THE NEXT SECTION | ||
== Using your creature as a base: Elemental | == Using your creature as a base: Elemental Mages == | ||
{| style = "margin: 1em;font-family:Source Code Pro;" | {| style = "margin: 1em;font-family:Source Code Pro;" | ||
| style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | | style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | ||
| style= "color:#155352" | < | | style= "color:#155352" | < | ||
| style = "border:1px solid #155352;padding:0.5em 1em;" | Hold up a second. How is this creature a | | style = "border:1px solid #155352;padding:0.5em 1em;" | Hold up a second. How is this creature a mage? It doesn't have any kind of magic spells! | ||
|} | |} | ||
I was just getting to that! | I was just getting to that! | ||
So far, we've sketched out most of the properties, skills, and stats that a snapjaw | So far, we've sketched out most of the properties, skills, and stats that a snapjaw mage should have. Now we're going to create two types of mages: '''''fire mages''''' and '''''ice mages'''''. Under your definition of the <code>Pyovya_SnapjawMage_Snapjaw Mage</code> creature in <code>Creatures.xml</code>, add two new creatures: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
<objects> | <objects> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Snapjaw Mage" Inherits="Snapjaw"> | ||
<!-- All of the stuff that you added in the previous section... --> | <!-- All of the stuff that you added in the previous section... --> | ||
<tag Name="BaseObject" Value="*noinherit" /> | <tag Name="BaseObject" Value="*noinherit" /> | ||
Line 277: | Line 277: | ||
<objects> | <objects> | ||
<!-- | <!-- | ||
Skipped: the XML that defines the " | Skipped: the XML that defines the "Pyovya_SnapjawMage_Snapjaw Mage" creature | ||
--> | --> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Fire Mage" Inherits="Pyovya_SnapjawMage_Snapjaw Mage"> | ||
</object> | </object> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Ice Mage" Inherits="Pyovya_SnapjawMage_Snapjaw Mage"> | ||
</object> | </object> | ||
</objects> | </objects> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Notice how we've used the <code>Inherits</code> attribute here. We're using our original snapjaw | Notice how we've used the <code>Inherits</code> attribute here. We're using our original snapjaw mage creature, <code>Pyovya_SnapjawMage_Snapjaw Mage</code>, as a base for our fire and ice mages. As a result, our new creatures will spawn with walking sticks, have the [[Cudgel]] skill, and so on. | ||
Referencing the [[Modding:Colors & Object Rendering]] page, we're going to change our fire | Referencing the [[Modding:Colors & Object Rendering]] page, we're going to change our fire mages' detail color to red. We're also going to give them the {{favilink|Pyrokinesis}} mutation: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Fire Mage" Inherits="Pyovya_SnapjawMage_Fire Mage"> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage of {{R|fire}}" Tile="Pyovya_SnapjawMage/snapjaw_mage.png" ColorString="&O" DetailColor="R" /> | ||
<mutation Name="Pyrokinesis" Level="1" /> | <mutation Name="Pyrokinesis" Level="1" /> | ||
</object> | </object> | ||
Line 303: | Line 303: | ||
TODO: explain what's going on in the <code><mutation></code> tag. | TODO: explain what's going on in the <code><mutation></code> tag. | ||
Now we'll make some similar changes to our ice | Now we'll make some similar changes to our ice mages: we'll change their detail color to cyan, and give them the {{favilink|Cryokinesis}} mutation. | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Ice Mage" Inherits="Pyovya_SnapjawMage_Ice Mage"> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage of {{C|ice}}" Tile="Pyovya_SnapjawMage/snapjaw_mage.png" ColorString="&O" DetailColor="C" /> | ||
<mutation Name="Cryokinesis" Level="1" /> | <mutation Name="Cryokinesis" Level="1" /> | ||
</object> | </object> | ||
Line 321: | Line 321: | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
<objects> | <objects> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Snapjaw Mage" Inherits="Snapjaw"> | ||
<part Name="Description" Short="Tussocks of fur dress skin stretched over taut muscle." /> | <part Name="Description" Short="Tussocks of fur dress skin stretched over taut muscle." /> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage" Tile="Pyovya_SnapjawMage/snapjaw_mage.png" ColorString="&O" DetailColor="Y" /> | ||
<inventoryobject Blueprint="Walking Stick" Number="1" /> | <inventoryobject Blueprint="Walking Stick" Number="1" /> | ||
Line 339: | Line 339: | ||
<property Name="Role" Value="Artillery" /> | <property Name="Role" Value="Artillery" /> | ||
<tag Name="DynamicObjectsTable:Snapjaws" /> | <tag Name="DynamicObjectsTable:Snapjaws" /> | ||
<tag Name="AggregateWith" Value=" | <tag Name="AggregateWith" Value="Pyovya_SnapjawMage_Snapjaw Mage" /> | ||
<tag Name="BaseObject" Value="*noinherit" /> | <tag Name="BaseObject" Value="*noinherit" /> | ||
</object> | </object> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Fire Mage" Inherits="Pyovya_SnapjawMage_Snapjaw Mage"> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage of {{R|fire}}" Tile="Pyovya_SnapjawMage/snapjaw_mage.png" ColorString="&O" DetailColor="R" /> | ||
<mutation Name="Pyrokinesis" Level="1" /> | <mutation Name="Pyrokinesis" Level="1" /> | ||
</object> | </object> | ||
<object Name=" | <object Name="Pyovya_SnapjawMage_Ice Mage" Inherits="Pyovya_SnapjawMage_Snapjaw Mage"> | ||
<part Name="Render" DisplayName="snapjaw | <part Name="Render" DisplayName="snapjaw mage of {{C|ice}}" Tile="Pyovya_SnapjawMage/snapjaw_mage.png" ColorString="&O" DetailColor="C" /> | ||
<mutation Name="Cryokinesis" Level="1" /> | <mutation Name="Cryokinesis" Level="1" /> | ||
</object> | </object> | ||
Line 365: | Line 365: | ||
<objects> | <objects> | ||
<!-- Weapons --> | <!-- Weapons --> | ||
<object Name=" | <object Name="Pvovya_SnapjawMage_Magic Tome" Inherits="BaseMissileWeapon"> | ||
<part Name="Description" Short="A magical tome." /> | <part Name="Description" Short="A magical tome." /> | ||
<part Name="Physics" Weight="1" UsesTwoSlots="true" Category="Missile Weapon" /> | <part Name="Physics" Weight="1" UsesTwoSlots="true" Category="Missile Weapon" /> | ||
Line 374: | Line 374: | ||
</object> | </object> | ||
<object Name=" | <object Name="Pvovya_SnapjawMage_Fire Tome" Inherits="Pvovya_SnapjawMage_Magic Tome"> | ||
<part Name="Render" DisplayName="tome of {{R|fire}}" Tile="Items/sw_book_1.bmp" ColorString="&R" DetailColor="Y" /> | <part Name="Render" DisplayName="tome of {{R|fire}}" Tile="Items/sw_book_1.bmp" ColorString="&R" DetailColor="Y" /> | ||
<part Name="MissileWeapon" Skill="Rifle" AmmoChar="f" ShotsPerAction="1" AmmoPerAction="1" ShotsPerAnimation="1" WeaponAccuracy="0" /> | <part Name="MissileWeapon" Skill="Rifle" AmmoChar="f" ShotsPerAction="1" AmmoPerAction="1" ShotsPerAnimation="1" WeaponAccuracy="0" /> | ||
<part Name="CooldownAmmoLoader" Cooldown="10" Readout="true" ProjectileObject=" | <part Name="CooldownAmmoLoader" Cooldown="10" Readout="true" ProjectileObject="Pvovya_SnapjawMage_FireTomeProjectile" /> | ||
<tag Name="MissileFireSound" Value="flamethrower" /> | <tag Name="MissileFireSound" Value="flamethrower" /> | ||
Line 383: | Line 383: | ||
</object> | </object> | ||
<object Name=" | <object Name="Pvovya_SnapjawMage_Ice Tome" Inherits="Pvovya_SnapjawMage_Magic Tome"> | ||
<part Name="Render" DisplayName="tome of {{C|ice}}" Tile="Items/sw_book_1.bmp" ColorString="&C" DetailColor="Y" /> | <part Name="Render" DisplayName="tome of {{C|ice}}" Tile="Items/sw_book_1.bmp" ColorString="&C" DetailColor="Y" /> | ||
<part Name="MissileWeapon" Skill="Rifle" AmmoChar="FR" ShotsPerAction="1" AmmoPerAction="1" ShotsPerAnimation="1" WeaponAccuracy="0" /> | <part Name="MissileWeapon" Skill="Rifle" AmmoChar="FR" ShotsPerAction="1" AmmoPerAction="1" ShotsPerAnimation="1" WeaponAccuracy="0" /> | ||
<part Name="CooldownAmmoLoader" Cooldown="10" Readout="true" ProjectileObject=" | <part Name="CooldownAmmoLoader" Cooldown="10" Readout="true" ProjectileObject="Pvovya_SnapjawMage_IceTomeProjectile" /> | ||
<tag Name="MissileFireSound" Value="hiss_low" /> | <tag Name="MissileFireSound" Value="hiss_low" /> | ||
Line 393: | Line 393: | ||
<!-- Projectiles --> | <!-- Projectiles --> | ||
<object Name=" | <object Name="Pvovya_SnapjawMage_FireTomeProjectile" Inherits="TemporaryProjectile"> | ||
<part Name="Render" DisplayName="{{R|stream of flame}}" ColorString="&R" /> | <part Name="Render" DisplayName="{{R|stream of flame}}" ColorString="&R" /> | ||
<part Name="Projectile" BasePenetration="8" BaseDamage="1d2" Attributes="Heat Fire" ColorString="&R" PassByVerb="whoosh" /> | <part Name="Projectile" BasePenetration="8" BaseDamage="1d2" Attributes="Heat Fire" ColorString="&R" PassByVerb="whoosh" /> | ||
Line 400: | Line 400: | ||
</object> | </object> | ||
<object Name=" | <object Name="Pvovya_SnapjawMage_IceTomeProjectile" Inherits="TemporaryProjectile"> | ||
<part Name="Render" DisplayName="{{C|streak of ice}}" ColorString="&B" /> | <part Name="Render" DisplayName="{{C|streak of ice}}" ColorString="&B" /> | ||
<part Name="Projectile" BasePenetration="4" BaseDamage="1d4" Attributes="Cold NonPenetrating" ColorString="&B" PassByVerb="crackle" /> | <part Name="Projectile" BasePenetration="4" BaseDamage="1d4" Attributes="Cold NonPenetrating" ColorString="&B" PassByVerb="crackle" /> | ||
Line 422: | Line 422: | ||
| style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | | style = "padding:0em 1em;"| [[File:Sprouting orb.png|40px]] | ||
| style= "color:#155352" | < | | style= "color:#155352" | < | ||
| style = "border:1px solid #155352;padding:0.5em 1em;" | I'm ready to go face these | | style = "border:1px solid #155352;padding:0.5em 1em;" | I'm ready to go face these mages in magical combat. | ||
|} | |} | ||
=== Extra challenge === | === Extra challenge === | ||
Before you go, here's a little challenge that you can use to test what you've learned so far. We now have | Before you go, here's a little challenge that you can use to test what you've learned so far. We now have mages of fire and ice; now, try creating a new {{qud text|snapjaw mage of &Welectricity}}, along with a {{qud text|tome of &Welectricity}} that shoots electric projectiles. You're free to go about this however you wish, but here are some general pointers: | ||
* You'll probably want to give your new | * You'll probably want to give your new mage the {{favilink|Electrical Generation}} mutation. | ||
* When you're creating your {{qud text|tome of &Welectricity}}, start by having it shoot <code>ProjectileElectroPistol</code>; this is the projectile that is shot by an {{favilink|arc winder}}. Once you're ready, create your own version of this projectile by referring to how <code>ProjectileElectroPistol</code> is implemented in the game's version of <code>ObjectBlueprints/Items.xml</code>. | * When you're creating your {{qud text|tome of &Welectricity}}, start by having it shoot <code>ProjectileElectroPistol</code>; this is the projectile that is shot by an {{favilink|arc winder}}. Once you're ready, create your own version of this projectile by referring to how <code>ProjectileElectroPistol</code> is implemented in the game's version of <code>ObjectBlueprints/Items.xml</code>. | ||
[[Category:Guides]] | [[Category:Guides]] |