FuJiCuRa
The all-in-one airdrop toolset

Supported Games

Fancy Drop is the all-in-one solution to change anything related to Supply Drops in Rust.

Features

  • Lag-free crate spawning
  • Spawning of a number of crates as you want
  • Lag free mass dropping by unlimited number of planes
  • Define any flight height for planes
  • Define any flight distance for planes
  • Define custom Loot for SupplyDrops
  • Add static items to any SupplyDrop
  • Adding a light-indicator system for dropping at night
  • Timer system
  • Removal of inbuilt event-based drop

It supports many default drop types and custom added event based drop types. Each drop type has its own settings to give a most possible unique configuration.

Drop Type Options

  • Additional height for the plane
  • Air resistance of the crates to define the fallspeed
  • Distance between dropped crates
  • Despawn time for dropped crates
  • Optional usage of static item lists
  • Define the number of crates
  • Define the number of items in the crates
  • The speed of the plane
  • Optional usage of THE custom loot table
  • Extra announcement text to be informed about the drop content/type

Better Loot Support

Fancy Drop detects any active usage of populating Supply Drops by Better Loot and does then deactivate ALL actions on changing the loot content.

Chat Commands

  • /droprandom > Initiates a random drop on the map; The random dropposition is calculated by serverdefault function by the plane itself => /droprandom

  • /droptopos > /droptopos X Z' => droptopos 12 34' | takes NO Y(Height) and needs only numbers

  • /droptoplayer > Initates a drop to a given player => /droptoplayer johndoe | names will be autocompleted, so you'll need only parts of the full name

  • /dropdirect > Initates a (direct)drop to a given player; this means, a drop'only' without a plane will be created above the players position with a distance(up) of 100 meters => /dropdirect johndoe | names will be autocompleted, so you'll need only parts of the full name

  • /dropmass > Initiates a random massdrop on map; with no number given, it will drop the default amount (default: 5), or specify the amount with /dropmass 10 to drop 10 crates random on the map

  • /droptomass > Initiates a massdrop on a given area specified by X and Z (full numbers), and optional the amount of crates to drop (default:5), and optional another radius (in meters) then default (default: 100) => /droptomass 100 200 20 50 will drop around the position x:100 z:200 an amount of 20 drops within a radius of 50 meters

Note: By providing '0 0' for the coords, it wil choose a random position_

Console Commands

  • ad.random > Initiates a random drop on the map; the random drop position is calculated by server default function by the plane itself.

This command can be extended by choosing the drop type AND optional static item list by this format: ad.random <droptype> <optional:itemlist>

Example 1:ad.random custom_event
Example 2:ad.random custom_event regular
Example 3:ad.random regular massdrop
Example 4:ad.random regular custom_event

  • ad.topos > Initiates a drop on the map to the given x and z coordinates > 'ad.topos ' => ad.topos. 12 34

This command can be extended by choosing the drop type AND optional static item list by this format: ad.topos <x> <z> <droptype> <optional:itemlist>

Example 1:ad.topos 12 34 custom_event
Example 2:ad.topos 56 78 massdrop dropdirect
Example 3:ad.topos 46 58 massdrop custom_event

  • ad.massdrop > Initiates a random massdrop on map; with no number given, it will drop the default amount (default: 5), or specify the amount with ad.massdrop 10 to drop 10 crates random on the map.

This command can be extended by choosing the drop type AND optional static item list by this format: ad.massdrop <planes> <droptype> <optional:itemlist>

Example 1:ad.massdrop 10 custom_event
Example 2:ad.massdrop 20 supplysignal regular
Example 3:ad.massdrop 15 supplysignal custom_event

  • ad.massdropto > Initiates a massdrop on a given area specified by X and Z (full numbers), and optional the amount of crates to drop (default:5), and optional another radius (in meters) then default (default: 100) => ad.massdropto 100 200 20 50 will drop around the position x:100 z:200 an amount of 20 drops within a radius of 50 meters

Note: By providing '0 0' for coords, it will choose a random position.

This command can be extended by choosing the drop type AND optional static item list by this format: ad.massdropto <x> <z> <planes> <radius> <droptype> <optional:itemlist>

Example 1:ad.massdropto 12 34 20 50 custom_event
**Example 2: **ad.massdropto 56 78 50 100 supplysignal regular
Example 3:ad.massdropto 46 58 25 100 supplysignal custom_event

  • ad.toplayer > Initates a drop to a given player => ad.toplayer johndoe'| names will be autocompleted, so you'll need only parts of the full name

  • ad.dropplayer > Initates a (direct)drop to a given player; this means, a drop'only' without a plane will be created above the players position with a distance(up) of 100 meters => ad.dropplayer johndoe | names will be autocompleted, so you'll need only parts of the full name

  • ad.timer > Does reset the current timer and sets random a new depending on the config-file => ad.timer 5 will for example define exactly the time for the next timed airdrop; the timer will be calculated as normal again after this timer is run.

  • ad.cleanup > The cleanup is a little helper for testing purposes or accidently to high initated massdrop; It stops the massdrop-routine, removes ALL planes and ALL airdrops.

Broadcasts

The usage of the default droptypes regular, massdrop and supplysignal will always force such information type. So its recommended to use only custom types with the supported commands, which gives back the correct information to be broadcasted.

Example:ad.massdrop 10 supplysignal would announce that someone has used a supply signal, so better to use custom types instead.

Configuration

  "Airdrop": {
    "Default radius for location based massdrop": 100, // plane drop radius setting for Massdrop to location
    "Delay between Massdrop plane spawns": 0.33, // this does prevent massdrop server laggs by delaying the spawn of planes
    "Disable SupplySignal randomization": false, // lets drops by signal exactly land on position or randomize the drop location ( /-20)
    "Massdrop default plane amount": 5, // default amount for massdrop when no number was provided
    "Multiplier for (plane height * highest point on Map); Default 1.0": 1.0, // sets the plane flight height based on the maps highest point.
    "Multiplier for overall flight distance; lower means faster at map": 1.25, // lets planes fly in short from map border, lowering lets them fly in earlier; reduces also the general flight distance of planes
    "Players can shoot down the drop": false, // weither players can shoot drop "crate" down > would kill the parachute amd lets it fall down faster
    "Players can shoot down the drop - needed hits": 5, // number of bullets for ths function above
    "Prefab effect to use": "assets/bundled/prefabs/fx/survey_explosion.prefab", // creates an effect on crates hitting the ground
    "Prefab effect to use at spawn by night": "assets/bundled/prefabs/fx/player/onfire.prefab", // creates an effect when the crate got dropped in the air
    "signal rocket explosion timer": 15, // timer when signal rockets do explode
    "signal rocket speed": 15, // speed of signal rockets
    "Use special effect at reaching ground position": true, // using effect when hitting ground
    "Use special effect at spawning by night": true // using bright light effect when crates are dropped by night
  },
  "DropLight": {
    "Frequency for blinking": 0.25, // blinking frequency in seconds
    "remove Light once landed": false, // do remove the lantern once the crate does hit the ground
    "Time for pause between blinking": 3.0, // pause interval between blinking
    "use SupplyDrop Light": true // enable/disable the droplight
  },
  "Generic": {
    "Admin messages color": "silver", // color of messages to online admins (like incoming drop locations)
    "AuthLevel needed for console commands": 1, // needed authLevel for airdrop commands
    "Broadcast messages color": "white", // color of broadcast texts
    "Chat/Message prefix": "Air Drop", // plugin prefix for broadcasts
    "GUI Announce command": "announce.announce",
    "Lock DirectDrop to be looted only by target player": true, // locks drops of type directdrop for the player it was sent to, to prevent stealing of content
    "Lock SignalDrop to be looted only by target player": false, / locks drops of type supplysignal for the player it was sent to, to prevent stealing of content
    "Prefix color": "cyan", // color of the plugin prefix
    "Prefix format": "<color={0}>{1}: ", // prefix formatting
    "Show message to admin after command usage": true, // gives specific feedback when a airdrop comand was run.
    "Time for active smoke of SupplySignal": 210.0, // can shorten the time how long the supplysignal smoke will be active.
    "Unlock crates only after player stopped looting": false, // extra protection to the crae locking functions; Can unlock the crate only when the owner-player did stop the first loot
    "version": "2.6.19"
  },
  "Timer": {
    "Cleanup old Drops at serverstart": true, // Does remove any crates on map when server starts
    "Maximum minutes for random timer delay ": 50, // default timer maximum in minutes
    "Minimum minutes for random timer delay ": 30, // default timer minimum in minutes
    "Minimum players for timed Drop": 2, // defines the needed player count for timed random airdrops
    "Remove builtIn Airdrop": true, // this does remove the inbuilt airdrop event
    "Reset Timer after manual random drop": false, // would restart the airdrop timer when someone did call a manual random drop.
    "Use Airdrop timer": true // enable/disable the timed airdrop functions
  },
  "Timers": {
    "log to console": true, // log any ran command to console
    "Minimum players for running Timers": 0, // minimum players to let these timers run
    "RealTime": { // local server-time (means the host where Rust runs; is also timezone depending
      "16:00": "massdrop 3", // example command would run a massdrop with 3 planes at 4pm
      "18:00": "toplayer *" // example command would call a plane/drop to each online player at 6pm
    },
    "ServerTime": { // in-game time
      "18": "massdropto 0 0 5 100",
      "6": "massdrop 3"
    },
    "use RealTime": false, // enable/disable usage of realtime
    "use ServerTime": false // enable/disable usage of servertime
  }

Localization

{
  "msgDropSignal": "Someone ordered an Airdrop",
  "msgDropSignalCoords": "Someone ordered an Airdrop to position <color=yellow>X:{0} Z:{1}",
  "msgDropSignalAdmin": "Signal thrown by '{0}' at: {1}",
  "msgDropSignalByPlayer": "Signal thrown by <color=yellow>{0}",
  "msgDropSignalByPlayerCoords": "Signal thrown by <color=yellow>{0} at position <color=yellow>X:{1} Z:{2}",
  "msgDropRegular": "Cargoplane will deliver the daily AirDrop in a few moments",
  "msgDropRegularCoords": "Cargoplane will deliver the daily AirDrop at <color=yellow>X:{0} | Z:{1} in a few moments",
  "msgDropMass": "Massdrop incoming",
  "msgDropCustom": "Eventdrop <color=orange>{0} is on his way",
  "msgDropCustomCoords": "Eventdrop <color=orange>{0} is on his way to <color=yellow>X:{1} | Z:{2}",
  "msgDropPlayer": "<color=yellow>Incoming Drop to your current location",
  "msgDropDirect": "<color=yellow>Drop spawned above your <color=yellow>current location",
  "msgDropLanded": "Supplydrop has landed <color=yellow>{0:F0}m away from you at direction <color=yellow>{1}",
  "msgDropLootet": "<color=yellow>{0} was looting the AirDrop",
  "msgDropLootetCoords": "<color=yellow>{0} was looting the AirDrop at (<color=yellow>X:{1} | Z:{2})",
  "msgNoAccess": "You are not allowed to use this command",
  "msgConsoleDropSpawn": "SupplyDrop spawned at (X:{0} Y:{1} Z:{2})",
  "msgConsoleDropLanded": "SupplyDrop landed at (X:{0} Y:{1} Z:{2})",
  "msgCrateLocked": "This crate is locked until being looted by the owner",
  "msgNorth": "North",
  "msgNorthEast": "NorthEast",
  "msgEast": "East",
  "msgSouthEast": "SouthEast",
  "msgSouth": "South",
  "msgSouthWest": "SouthWest",
  "msgWest": "West",
  "msgNorthWest": "NorthWest"
}

FAQ

Description of DropTypes

The config includes by default all common droptypes. These are:

  • regular (timed/random drops)
  • dropdirect ( planes to player or direct crate drop)
  • massdrop
  • supplysignal
  • AND a predefined custom one called custom_event

Each of those types will look by default like this:

      "regular": {
        "additionalheight": 0, // additional height for the plane to normal flight height
        "crateAirResistance": 2.0, // air resistance of crates, lower=faster (lowest min=0.6)
        "cratesGap": 50, // distance between dropped crates (min = 5)
        "despawnMinutes": 15, // despawn (in minutes) of the crates
        "fireSignalRocket": false, // could create a signal rocket straight up in the air on hitting ground
        "includeStaticItemList": false, // include static items true/false
        "includeStaticItemListName": "regular", // name of the list for static items
        "includeStaticItemListOnly": false, // spawn nothing but the static items
        "itemDivider": 2, // can randomize items amounts by dividing the itemlimit with this number. This is only valid when using customloottable
        "maxCrates": 1, // maximal crates to drop
        "maxItems": 6, // maximal items to create (max = 30)
        "minCrates": 1, // minimal crates to drop
        "minItems": 6, // minimal items to create
        "planeSpeed": 75, // speed of the plane (20<>200)
        "useCustomLootTable": false // use (true/false) the custom loot table
      },

Custom types can have an additional field:

        "notificationInfo": "Custom Stuff",

This will be used for announcement of those custom drop types by combination with the language file entry "msgDropCustom".

The default configuration file has also this entry, which is used as default(fallback) in case of you delete some of the lines of any droptype:

  "DropSettings": {
    "DropDefault": {
    ...
    }

You should leave it untouched, or if you are familiar wtih editing json files, you could take this as default for all types and delete not needed entrys from the "DropTypes" entries. It depends all on your experience level.

Furthermore you can ADD unlimited custom entries by your own and use such types by the supported console commands. These are:

  • ad.random
  • ad.topos
  • ad.massdrop
  • ad.massdropto

Description of StaticItems

Each drop type has a predefined static item list. These are found under:

  "StaticItems": {
    "DropTypes": {
   ...

By default those are filled wtih some default to give you an explanation how it works. This looks by default for regular like this:

      "regular": {
        "itemDivider": 2,
        "itemList": {
          "cctv.camera": 2,
          "targeting.computer": 2
        }
      },

As the name already describes, those lists are static. This means, it will always create the items which are included by the list. The only part of randomization is the amount between min and max.

You can define an infinite of those list entrys and use them by the available commands with each drop type.

You can change for every drop type, default or custom, the default static item list by adding a new "itemlist" entry and by changing the droptype-field "includeStaticItemListName"

You can use every of those unlimited item lists with every unlinmited custom drop type be the supported console commands:

  • ad.random
  • ad.topos
  • ad.massdrop
  • ad.massdropto

Description of Custom Loot Table

On first start the plugin will create a file called FancyDrop.json in your oxide data folder.

This file is a simplified version of the built-in LootSpawn entries, already known by plugins like Loot Config.

Those Lootspawn tables are splitted into several sections, the plugin does export it in a more readable way.

The plugin will mark each level by a prefix number, to give you a hint how deep the tree the category is set.

Note: If you already have set up your drops by Loot Config, the export will exactly mirror your custom setting and you could use then this for further customization, which will resist any protocol change/update .

The following is a shortened snippet from the default export:

{
  "Categories": {
    "1": {
      "LootSpawn.SupplyDrop": {
        "Items.VeryRare": 100,
        "Items.Rare": 200,
        "Items.Uncommon": 300,
        "Collection.Rifles": 100,
        "Mining Ore": 20,
        "Traps": 40,
        "HQMetal_Large": 30,
        "targeting_computer": 40,
        "cctv_camera": 10
      }
    },
    "2": {
      "Items.VeryRare": {
        "Items.VeryRare.Ammunition": 100,
        ...
      },
      "Items.Rare": {
        "Items.Rare.Attire": 100,
        ...
      },
      "Items.Uncommon": {
        "Items.Uncommon.Ammunition": 100,
        ...
      },
      "Collection.Rifles": {
        "AK47 With Ammo": 25,
        ...
      }
    },
    "3": {
      "Items.VeryRare.Ammunition": {
        "ammo.pistol.fire": 100,
        ...
      },
      "Items.VeryRare.Construction": {
        "door.hinged.toptier": 100,
        ...
      },
      "Items.VeryRare.Attire": {
        "metal.facemask": 100,
        ...
      },
    }
  },
  "Items": {
    "ammo.pistol.fire": {
      "ammo.pistol.fire": 1
    },
    "ammo.pistol.hv": {
      "ammo.pistol.hv": 1
    },
    "Bolt Rifle With Ammo": {
      "rifle.bolt": 1,
      "ammo.rifle": 8
    },
    "Mining Ore": {
      "mining.quarry": 1,
      "surveycharge": 10
    }
  }
}

An example of "ammo.pistol.fire": 1, the tree for this would be:

  • "Items.VeryRare": 100,
  • "Items.VeryRare.Ammunition": 100,
  • "ammo.pistol.fire": 100,
  • "ammo.pistol.fire": {"ammo.pistol.fire": 1

The numbers behind EVERY entry in "Categories" are so called weights. The numbers behind EVERY entry in "Items" are the maximal amount.

This system gives back the maximal possible weighting, as the game does by default for every other loot on the map.

All weights of a category array are summed as 100%, first array entry has the lowest possiblity and the last has the highest.

By randomization is only one entry taken, until it reaches a category with a set of items.

Starting help:

You could begin to change the numbers in the section "Items", which would raise or lower the maximal amount of created items of each type.

You could equally delete complete entries from the "Items" list, like to delete this one:

    "ammo.pistol.hv": {
      "ammo.pistol.hv": 1
    }

This would be the fastest and easiest way to only include such stuff you want to be created. The system does'nt care if on the end of a tree an item does'nt exist. The container will be always filled until its full, limited by your settings for the item amount.

    Download

    7.4K downloads
    285 watchers

    lootmechanicsairdrops