Skip to main content
Duck Shot wiki

Wiki

Duck Shot Wiki

Public setup, weapon authoring, combat systems, particles, admin help, and troubleshooting for Duck Shot.

Getting Started

Start here for installation, first boot, and your first working Duck Shot weapon.

Example Library and Pack Planning

Separate the public starter pack, the deeper example library, and your own server-only content so the docs stay honest and useful.

Server Operations

Handle permissions, runtime tools, integrations, and real troubleshooting on live servers.

Weapon Authoring

Input Binds, Consumables, and Alt Actions

Build med kits, tactical utilities, alternate action flows, and player-readable special items without fighting the input system.

Duck Shot does not just support "right click to shoot." It also has a real input layer for utility items, alternate actions, and support tools.

This is the page to read when you want an item to:

  • toggle a flashlight
  • cycle fire mode
  • open a Sky Select flow
  • plant a device
  • consume itself like a med kit or injector

Start with the global input rules

Before you tune one special item, make sure the plugin-wide input rules already make sense in config.yml.

The most important global knobs are:

  • reload_trigger
  • input.pick_block.*
  • input.extra_methods.swap_hands.*
  • input.extra_methods.drop.*
  • input.interactable_guard.*
  • input.semi_policy
  • input.hold_group_millis
  • input.aim_toggle_debounce_millis

Why this matters:

  • if middle mouse is disabled globally, a middle-mouse alt action will feel dead
  • if the interactable guard is too aggressive, utility items can feel like they randomly fail
  • if reload and alternate-input lanes are fighting over the same key, the item will feel confusing even when the YAML is valid

The weapon-side alt action block

Duck Shot supports a per-item alternate action block under input.bindings.alt_action.

Real example file from G17_FLASHLIGHT.yml:

YAML
input:
  bindings:
    alt_action:
      bind: PICK_BLOCK_MMB
      action: TOGGLE_FLASHLIGHT
      cooldown_ticks: 4

Interpretation:

  • pressing middle mouse while holding the weapon does not just do a generic click
  • it calls a specific alternate behavior
  • the short cooldown prevents spam or accidental double toggles

Supported alternate binds

From the current Duck Shot source, the supported alternate bind values are:

  • PICK_BLOCK_MMB
  • PICK_BLOCK_DATA_CTRL_MMB
  • SWAP_HANDS_F
  • DROP_Q

Good rule of thumb:

  • use PICK_BLOCK_MMB for premium alternate actions like flashlights or fire-mode cycling
  • use SWAP_HANDS_F or DROP_Q only when that control lane is not already busy on your server

Supported alternate actions

The built-in alternate action values are:

  • TOGGLE_FLASHLIGHT
  • CYCLE_FIRE_MODE
  • OPEN_SKY_SELECT
  • PLACE_PLANTABLE

That is why the alt-action system is useful across multiple item families:

  • firearms can cycle modes or toggle tactical modules
  • support tools can open target selection
  • stations and devices can plant cleanly without turning into awkward fake guns

When to use an alt action vs a separate item

Use an alt action when the player should feel like they are still using one item with multiple functions.

Good examples:

  • a pistol with an attached flashlight
  • a rifle that cycles between SEMI, BURST, and AUTO
  • a target designator that opens a call-in interface

Use a separate item when the behavior is really a different tool.

Good examples:

  • med kit vs firearm
  • airstrike marker vs sidearm
  • deployable station vs rifle

If the player would describe it as "one tool with a secondary function," alt action is usually the right fit.

If the player would describe it as "a different piece of equipment," make it a separate item.

Consumables are first-class Duck Shot items

Duck Shot includes a real consumable system. It is not just a fake gun with show_ammo: false.

Example example:

YAML
consumable:
  enabled: true
  warmup_ticks: 20
  cooldown_ticks: 20
  consume_item: true
  allow_self: true
  allow_others: true
  target_range: 3.0
  heal_hearts: 4.0
  effects:
    - type: REGENERATION
      duration_ticks: 60
      amplifier: 0

This gives you a proper support-item workflow:

  • begin use
  • wait through a warmup
  • heal or apply effects
  • consume the item if appropriate
  • enforce a cooldown

The consumable knobs that matter most

warmup_ticks

This is the commitment window before the item resolves.

  • lower values feel snappy and arcade-like
  • higher values make the player commit and create punish windows in combat

cooldown_ticks

This controls how quickly the same item can be used again.

  • low cooldowns feel like spam tools
  • higher cooldowns make the item feel more tactical

consume_item

If true, the stack or item is actually spent.

Use this for:

  • single-use injectors
  • one-time emergency kits
  • disposable battlefield support items

Turn it off for:

  • reusable tools with cooldown-based balance

allow_self and allow_others

These decide whether the item is self-use only or can help teammates too.

That matters a lot for role design:

  • med injector for yourself
  • bandage usable on an ally
  • support tool for both

target_range

This is one of the clearest "feel" knobs in the whole consumable stack.

  • shorter range makes the item feel deliberate and intimate
  • longer range turns it into more of a battlefield support tool

heal_hearts, full_heal, and absorption

These decide what kind of sustain item you are really building.

Use:

  • heal_hearts for predictable direct healing
  • full_heal for rare or admin-heavy rescue tools
  • absorption for temporary buffer instead of raw permanent healing

Potion-style follow-up effects

Duck Shot consumables can also add potion effects after the heal resolves.

That is where support items stop being "just health" and start becoming class tools.

Good examples:

  • a med kit that heals and adds a short regeneration tail
  • a combat stim that sacrifices raw healing for speed or resistance
  • a revive-style injector that grants brief absorption

A clean support-item recipe

Bandage

Use when:

  • the player should stabilize quickly
  • healing is modest
  • the item is common

Recommended feel:

  • short warmup
  • short cooldown
  • small heal
  • maybe one gentle regeneration effect

Med kit

Use when:

  • the player should stop and commit
  • the reward is stronger
  • the item should feel more valuable

Recommended feel:

  • longer warmup
  • larger direct heal
  • stronger cooldown

Team injector

Use when:

  • the player is supporting another person
  • range and ally-permission matter
  • self-use is optional, not mandatory

Recommended feel:

  • allow_others: true
  • real target_range
  • action-bar text that clearly says what the item does

Action-bar readability for utility items

Do not let consumables pretend to be rifles.

The example file gets this right:

YAML
action_bar:
  enabled: true
  show_ammo: false
  template: '<gray>{weapon}</gray> <dark_gray>|</dark_gray> {aux}'
  aux_text: '<gray>RMB consume</gray>'

That is a good pattern because it tells the player what the item is for immediately.

Good aux_text examples:

  • RMB consume
  • RMB heal ally
  • MMB toggle light
  • MMB cycle fire
  • RMB place / MMB confirm

A user-friendly alt-action recipe

If you are building a tactical pistol with a flashlight:

  1. keep the core firearm setup normal
  2. bind input.bindings.alt_action
  3. point it to TOGGLE_FLASHLIGHT
  4. expose clear action-bar or lore guidance
  5. keep the cooldown short so it feels responsive

If you are building a support designator:

  1. do not overload the base fire loop unless you really need to
  2. use a clear alternate action or dedicated flow
  3. make the action-bar text explain the next step
  4. keep confirm and cancel behavior obvious

Common mistakes

Making an alt action do too much

If middle mouse changes fire mode, toggles optics, and opens another flow depending on state, the item stops feeling readable.

Using the wrong bind lane for your server

If your server already trains players to use Q for reload, do not reuse it for a second critical action on a different item family unless that design is extremely deliberate.

Forgetting the player-side hint

Even a perfect config feels broken if the player never learns the control.

Building consumables like fake firearms

If a support item still looks like a gun HUD, players have to mentally translate what the item is doing instead of understanding it instantly.