> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Items and weapons

> Set up weapon actors, view components, animation, and the six Sci-Fi weapon variants.

export const Weapons = ({fireImage, shotgunImage}) => <>
    <h2 id="shooter-core-weapons">What Shooter Core adds</h2>
    <p>A firearm needs to track ammunition, space out shots, and reload. <code>BP_Shooter_Weapon</code> adds that logic to <code>BP_Gameplay_Item</code>. Its view, <code>AC_WeaponView</code>, extends <code>AC_ItemView</code> with firing, reload, and aiming animation and effects.</p>
    <p>When the player holds fire, the weapon decides whether it has ammunition and when the next shot is allowed. For each shot, its view plays the firing montage pair, recoil, sound, and muzzle flash. Releasing fire stops the firing action. This lets you change the sound or animation on the view without changing the weapon's fire-rate logic.</p>
    <p>Reload follows the same division: the weapon starts a reload, the view chooses the tactical or empty montage pair, and an animation notify updates ammunition at the insertion frame. Aiming asks the view to blend the sights into place and change camera FOV.</p>
    {fireImage}
    <h2 id="weapon-settings">Weapon settings</h2>
    <p>Open the weapon Blueprint's <strong>Class Defaults</strong> to change how it fires.</p>

    <table>
    <thead><tr><th>Property</th><th>What you change</th></tr></thead>
    <tbody><tr><td><code>FireRate</code></td><td>Shots per minute.</td></tr>
    <tr><td><code>ActiveFireMode</code></td><td>Current <code>E_FireMode</code>: semi, burst, or auto.</td></tr>
    <tr><td><code>SupportsFullAuto</code></td><td>Whether the weapon supports automatic firing.</td></tr>
    <tr><td><code>BurstNum</code></td><td>Number of shots in a burst.</td></tr>
    <tr><td><code>MaxAmmo</code></td><td>Ammunition capacity.</td></tr>
    <tr><td><code>ActiveAmmo</code></td><td>Current ammunition. The weapon updates it as you fire and reload.</td></tr></tbody>
    </table>

    <p><code>MuzzleFlash</code> is the Niagara component used for muzzle effects. <code>RecoilComponent</code> stores the recoil reference; the view also uses this reference for firing presentation.</p>

    <h2 id="weapon-view">Weapon view</h2>

    <p>Select the weapon's view component to change what plays when it fires, aims, or reloads. The view inherits equip and inspect settings from <code>AC_ItemView</code> and adds these properties:</p>

    <table>
    <thead><tr><th>Property</th><th>Use</th></tr></thead>
    <tbody><tr><td><code>ReloadTacticalMontage</code> / <code>ReloadEmptyMontage</code></td><td>Reload pairs for a weapon with ammunition remaining or an empty weapon.</td></tr>
    <tr><td><code>FireMontage</code> / <code>FireOutMontage</code></td><td>Firing and firing-end montage pairs.</td></tr>
    <tr><td><code>BaseMuzzleFlash</code></td><td>Effect data applied to the muzzle Niagara component.</td></tr>
    <tr><td><code>BaseFireSound</code></td><td>Sound Cue played when firing.</td></tr>
    <tr><td>Inherited <code>AnimationSettings</code></td><td>A shooter settings asset containing ADS, sway, and recoil tuning.</td></tr></tbody>
    </table>

    <p><code>WeaponSettings</code> is the view's shooter-settings reference. Keep per-weapon tuning in the assigned settings asset.</p>

    <h2 id="firing-aiming-and-reload">Firing, aiming, and reload</h2>

    <ol>
    <li><p>Character use input calls the weapon's <code>UseItem</code>.</p>
    </li>
    <li><p>The weapon handles fire timing and ammunition, then invokes view presentation.</p>
    </li>
    <li><p><code>OnFire</code> plays the firing presentation. <code>OnStopFiring</code> stops it.</p>
    </li>
    <li><p><code>OnAim</code> updates aiming presentation, FOV, and recoil aim state.</p>
    </li>
    <li><p><code>OnReload</code> chooses a reload montage pair. The reload notify calls <code>OnReloadAmmo</code> at the authored ammunition-transfer frame.</p>
    </li>
    </ol>

    <p><code>BPI_Shooter_Weapon</code> exposes reload, fire-mode changes, fire mode, and the aim point. <code>BPI_Shooter_Ammo</code> exposes ammunition, capacity, fire rate, muzzle flash, and the reload-ammo event. <code>BPI_Shooter_Scope</code> supplies an aim point. <code>BPI_WeaponView</code> and <code>BPI_ShotgunView</code> define the presentation calls.</p>

    <h2 id="shotguns">Shotguns</h2>

    <p>A shotgun reload inserts shells one at a time. <code>BP_Shooter_Shotgun</code> extends the weapon logic for this sequence, while <code>AC_ShotgunView</code> plays reload start, a repeating shell-insertion animation, reload end, and the pump action. Place the reload-ammo notify in the insertion animation so each loop adds ammunition at the right frame.</p>

    {shotgunImage}
  </>;

export const Items = ({itemExamples, viewExamples, equipImage, example}) => <>
    <p>Every item the character can hold derives from <code>BP_Gameplay_Item</code>. This includes {itemExamples}. The shared base gives them the same actions: equip, put away, use, aim, and inspect. The character can send an action to its equipped item without needing separate input logic for each weapon.</p>
    <h2 id="gameplay-and-visuals">Gameplay and visuals</h2>
    <p>The item Blueprint implements gameplay: it decides whether an action can start and when it finishes. Its <code>ItemMesh</code> displays the item. A view component handles the animations and effects that accompany those actions.</p>
    <p><code>AC_ItemView</code> is the base view component. It provides the draw, put-away, and inspect animations, plus the animation settings to use while holding the item. Weapon-specific views such as {viewExamples} build on this system.</p>
    <p>For example, when you switch items, the character puts away the current item and equips the next one. The new item's view receives <code>OnEquip</code>, plays the draw animation on the character and item, and gives the character animation component its <code>AnimationSettings</code>. That changes how the character holds and moves with the new item.</p>
    {equipImage}
    {example}
    <h2 id="item-animation-settings">Item animation settings</h2>
    <p>Select the view component in the item Blueprint to configure these properties.</p>
    <table>
      <thead><tr><th>View property</th><th>Use</th></tr></thead>
      <tbody>
        <tr><td><code>AnimationSettings</code></td><td>Holding pose, animation layers, and procedural motion while this item is equipped.</td></tr>
        <tr><td><code>EquipMontage</code></td><td>Character and item animations for drawing the item.</td></tr>
        <tr><td><code>UnEquipMontage</code></td><td>Character and item animations for putting it away.</td></tr>
        <tr><td><code>InspectMontage</code></td><td>Character and item animations for inspecting it.</td></tr>
      </tbody>
    </table>
    <p>Each montage entry uses <code>F_CharacterItemMontage</code>, a pair of animations for the character and item. Pairing them keeps the hands and moving weapon parts together during an action. <code>PlayCharacterItemMontage</code> returns the playback length so the gameplay logic can wait for the animation to finish.</p>
    <h2 id="connecting-custom-gameplay">Connecting custom gameplay</h2>
    <p>The built-in character initializes its equipment. If you spawn an item yourself, give it an owning character before calling <code>TryInitialize</code>. Initialization finds that character's mesh, camera, and animation component so the view can play its actions.</p>
    <p>Blueprint interfaces provide the common calls between these objects:</p>
    <ul>
      <li><code>BPI_Gameplay_Item</code> lets the character equip, unequip, use, stop using, aim, and inspect the item, and check whether it can aim.</li>
      <li><code>BPI_Gameplay_ItemView</code> lets other Blueprints get the item's mesh and view component.</li>
      <li><code>BPI_Gameplay_Character</code> lets the item get its owner's character mesh, animation component, camera, and equipped item.</li>
    </ul>
    <p>For a new visual action, extend the view's <code>OnEquip</code>, <code>OnUnEquip</code>, <code>OnInspect</code>, or <code>OnUseItem</code>. Keep gameplay decisions on the item Blueprint so replacing an animation does not require changing the character's input.</p>
  </>;

export const Example = () => <p>For example, <code>BP_Gepard</code> uses <code>AC_Gepard</code>, which assigns <code>SAS_Gepard</code>. Copy this arrangement when adding a conventional firearm.</p>;

<Items itemExamples={<><code>BP_Gepard</code>, <code>BP_M97</code>, and <code>BP_TP12</code></>} viewExamples={<><code>AC_Gepard</code>, <code>AC_M97</code>, and <code>AC_TP12</code></>} equipImage={<Frame caption="OnEquip plays the equip pair and applies the item's animation settings."><img src="https://mintcdn.com/kinemation/SNGN1MO-2cou2Sl-/images/kinemation/unreal/AC_ItemView_OnEquip_00000.png?fit=max&auto=format&n=SNGN1MO-2cou2Sl-&q=85&s=cade0c5da9761fd87a267f9120ece369" alt="Item view OnEquip graph applying AnimationSettings" /></Frame>} example={<Example />} />

<Weapons fireImage={<Frame caption="OnFire brings animation, recoil, sound, and muzzle effects together."><img src="https://mintcdn.com/kinemation/-Xb9vtQBgywM0dwu/images/shooter-core/unreal/AC_WeaponView_OnFire_00000.png?fit=max&auto=format&n=-Xb9vtQBgywM0dwu&q=85&s=82e7ec1a17bc44ed35c39d6461d2e9aa" alt="Weapon view firing presentation graph" /></Frame>} shotgunImage={<Frame caption="The shotgun view plays a separate shell-reload loop."><img src="https://mintcdn.com/kinemation/-Xb9vtQBgywM0dwu/images/shooter-core/unreal/AC_ShotgunView_OnReloadLoop_00000.png?fit=max&auto=format&n=-Xb9vtQBgywM0dwu&q=85&s=2e03fe13e2bf3ba6ab22d0bcabea2f03" alt="Shotgun view reload loop graph" /></Frame>} />

## Sci-Fi weapon Blueprints

Find these in `/Game/KINEMATION/Sci-fi_FPS_Pack/Blueprints/Weapons`. Their view components are in `Components`.

| Weapon       | View              | Settings     | Use                              |
| ------------ | ----------------- | ------------ | -------------------------------- |
| `BP_ARX_Mk2` | `AC_ARX_Mk2`      | `SAS_ARX`    | Charged energy weapon.           |
| `BP_Gepard`  | `AC_Gepard`       | `SAS_Gepard` | Conventional firearm.            |
| `BP_M97`     | `AC_M97`          | `SAS_M97`    | Grenade unpin, hold, and throw.  |
| `BP_Onyx`    | `AC_OnyxRevolver` | `SAS_Onyx`   | Revolver reloads.                |
| `BP_RPG90`   | `AC_RPG90`        | `SAS_RPG90`  | Launcher and scope presentation. |
| `BP_TP12`    | `AC_TP12`         | `SAS_TP12`   | Shotgun reload and pump.         |

<Frame caption="Each weapon has a matching presentation component.">
  <img src="https://mintcdn.com/kinemation/pVOinQJ5aT59AJJy/images/sci-fi-fps-pack/unreal/sci-fi-fps-pack_content_weapon-view-components.png?fit=max&auto=format&n=pVOinQJ5aT59AJJy&q=85&s=f5e667c93d8d304ed11c773b5caa0637" alt="Sci-Fi weapon view components in the Content Browser" width="1111" height="389" data-path="images/sci-fi-fps-pack/unreal/sci-fi-fps-pack_content_weapon-view-components.png" />
</Frame>

### ARX Mk2

The ARX adds charging before firing. `OnChargeStart` begins the animation, audio, and energy effects. `OnChargeLoop` keeps the held charge visible. `OnFire` ends the charge presentation and plays the shot.

<Frame caption="Charge presentation starts in the ARX view.">
  <img src="https://mintcdn.com/kinemation/9aZEADwMORfeQEcq/images/sci-fi-fps-pack/unreal/AC_ARX_Mk2_OnChargeStart_00000.png?fit=max&auto=format&n=9aZEADwMORfeQEcq&q=85&s=0523afe283d3213bb8ddf9170e16f783" alt="ARX OnChargeStart animation and effects" width="3146" height="1016" data-path="images/sci-fi-fps-pack/unreal/AC_ARX_Mk2_OnChargeStart_00000.png" />
</Frame>

### Gepard

Use Gepard as the starting point for a standard firearm. Its child view supplies animation settings, montage pairs, fire sound, and muzzle effects while the base weapon handles firing and ammunition.

### M97

The grenade has unpin, hold, and release stages. `UnpinTime` and `MinUnpinTime` belong to its timing logic. The view plays the draw and use animations, then repeats `OnGrenadeLoop` until release.

<Frame caption="The grenade view keeps the hold animation playing until release.">
  <img src="https://mintcdn.com/kinemation/9aZEADwMORfeQEcq/images/sci-fi-fps-pack/unreal/AC_M97_OnGrenadeLoop_00000.png?fit=max&auto=format&n=9aZEADwMORfeQEcq&q=85&s=c309e084e27f510f4f906b4ef310407a" alt="M97 grenade hold loop graph" width="1294" height="566" data-path="images/sci-fi-fps-pack/unreal/AC_M97_OnGrenadeLoop_00000.png" />
</Frame>

### Onyx

The revolver view chooses the reload animation from the number of missing rounds. When replacing its reloads, keep the weapon and character pairs together and preserve the ammunition notify.

<Frame caption="Onyx selects a reload from ammunition state.">
  <img src="https://mintcdn.com/kinemation/9aZEADwMORfeQEcq/images/sci-fi-fps-pack/unreal/AC_OnyxRevolver_OnReload_00000.png?fit=max&auto=format&n=9aZEADwMORfeQEcq&q=85&s=3f8f023fbe8d1d013498e5e7405ed52e" alt="Onyx revolver reload selection graph" width="3594" height="1190" data-path="images/sci-fi-fps-pack/unreal/AC_OnyxRevolver_OnReload_00000.png" />
</Frame>

### RPG90

The launcher includes scene capture for its scope and backblast presentation. Its aim-point accessor supplies the transform used for sight alignment. Check the scope and rear effect as well as the hands when replacing the launcher mesh.

### TP12

TP12 derives from `BP_Shooter_Shotgun`. Its view plays reload start, shell insertion, reload end, and pump animations. `A_W_TP12_Reload_Loop` uses the reload-ammo notify; `A_W_TP12_Pump` uses the casing notify.

<Frame caption="TP12 extends the firing presentation with its own effects.">
  <img src="https://mintcdn.com/kinemation/9aZEADwMORfeQEcq/images/sci-fi-fps-pack/unreal/AC_TP12_OnFire_00000.png?fit=max&auto=format&n=9aZEADwMORfeQEcq&q=85&s=af9e26c42d198d8a15f37c7b4439c028" alt="TP12 firing presentation graph" width="3846" height="972" data-path="images/sci-fi-fps-pack/unreal/AC_TP12_OnFire_00000.png" />
</Frame>

See [Create a weapon](/sci-fi-fps-pack/unreal/tutorials/create-a-weapon), [Animation settings](/sci-fi-fps-pack/unreal/general/animation-settings), and [Recoil](/sci-fi-fps-pack/unreal/general/recoil).
