> For the complete documentation index, see [llms.txt](https://mtgmodders.gitbook.io/etg-modding-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mtgmodders.gitbook.io/etg-modding-guide/making-mods-setup/creating-an-ammolet.md).

# Creating An Ammolet

### **Difficulty: 1/10** <img src="/files/-MfzUfw94jUTyreywn9u" alt="" data-size="original">&#x20;

**This tutorial will use code and terms explained in passives, so it is advised to check that out before making an Ammolet.**

First, you will need this class somewhere in your project :&#x20;

```csharp
using System;
using MonoMod.RuntimeDetour;
using System.Reflection;
using UnityEngine;

namespace YourNameSpace
{
    class SpecialBlankModificationItem : BlankModificationItem
    {
        public static void InitHooks()
        {
            Hook hook = new Hook(
                typeof(SilencerInstance).GetMethod("ProcessBlankModificationItemAdditionalEffects", BindingFlags.NonPublic | BindingFlags.Instance),
                typeof(SpecialBlankModificationItem).GetMethod("BlankModificationHook")
            );
        }

        public static void BlankModificationHook(Action<SilencerInstance, BlankModificationItem, Vector2, PlayerController> orig, SilencerInstance self, BlankModificationItem bmi, Vector2 centerPoint, PlayerController user)
        {
            orig(self, bmi, centerPoint, user);
            if (bmi is SpecialBlankModificationItem)
            {
                (bmi as SpecialBlankModificationItem).OnBlank(self, centerPoint, user);
            }
        }

        protected virtual void OnBlank(SilencerInstance silencerInstance, Vector2 centerPoint, PlayerController user)
        {

        }
    }
}
```

Put this in your ETGModule class.

```
            SpecialBlankModificationItem.InitHooks();
            
```

Then, you want to create a new item and make it inherit from SpecialBlankModificationItem. Then, you want to be using ItemAPI and UnityEngine.

```csharp
using System;
using ItemAPI;
using UnityEngine;

namespace YourNameSpace
{
    class YourClassName : SpecialBlankModificationItem
    {
        public static void Init()
        {
        
            //Same set up as passive items
            //...
            
            //you'll need this to make your ammolet give an aditionnal like vanilla ammolets
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.AdditionalBlanksPerFloor, 1, StatModifier.ModifyMethod.ADDITIVE);

        }
    }
}
```

Finally, put a method OnBlank in your item class and put your effect inside it so it's triggered when the user create a blank effect with an item or a blank :

```csharp
protected override void OnBlank(SilencerInstance silencerInstance, Vector2 centerPoint, PlayerController user)
{
    //put your effect in here
    
    //for example, make blanks deal no dmg
    silencerInstance.ForceNoDamage = true;

}
```

\[TODO]
