789 lines
40 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<!-- Documentation generated by LuaDox: https://github.com/jtackaberry/luadox -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Gun - Guns4d</title>
<link href="../prism.css?7653a2d" rel="stylesheet" />
<link rel="stylesheet" href="../luadox.css?7653a2d" type="text/css">
</head>
<body class="class-gun">
<div class="topbar">
<div class="group one">
<div class="description"><span>Guns4d | The ultimate 3d gun mod.</span></div>
</div>
<div class="group two">
</div>
<div class="group three">
<div class="button iconright"><a href="../class/player_model_handler.html" title="player_model_handler"><span>Next</span><img src="../img/i-right.svg?7653a2d" alt=""/></a></div>
</div>
</div>
<div class="sidebar">
<form action="../search.html">
<input class="search" name="q" type="search" placeholder="Search" />
</form>
<div class="sections">
<div class="heading">Contents</div>
<ul>
<li><a href="#Gun">Class <code>Gun</code></a></li>
<li><a href="#gun"><p>gun fields</p>
</a></li>
<li><a href="#lvl1_fields.properties"><p>properties</p>
</a></li>
<li><a href="#gun.properties.hip"><p>properties.hip</p>
</a></li>
<li><a href="#gun.properties.ads"><p>properties.ads</p>
</a></li>
<li><a href="#gun.properties.firemodes"><p>properties.firemodes</p>
</a></li>
<li><a href="#gun.properties.firemode_inventory_overlays"><p>properties.firemode_inventory_overlays</p>
</a></li>
<li><a href="#gun.properties.recoil"><p>properties.recoil</p>
</a></li>
<li><a href="#gun.properties.sway"><p>properties.sway</p>
</a></li>
<li><a href="#gun.properties.wag"><p>properties.wag</p>
</a></li>
<li><a href="#gun.properties.charging"><p>properties.charging</p>
</a></li>
<li><a href="#gun.properties.ammo"><p>properties.ammo</p>
</a></li>
<li><a href="#gun.properties.visuals"><p>properties.visuals</p>
</a></li>
<li><a href="#lvl1_fields.offsets"><p>offsets</p>
</a></li>
<li><a href="#lvl1_fields.consts"><p>consts</p>
</a></li>
</ul>
</div>
<div class="classes">
<div class="heading">Classes</div>
<ul>
<li class="selected"><a href="../class/Gun.html">Gun.Gun</a></li>
<li><a href="../class/player_model_handler.html">Player_model_handler.player_model_handler</a></li>
</ul>
</div>
<div class="modules">
<div class="heading">Modules</div>
<ul>
<li><a href="../module/misc_helpers.html">misc_helpers</a></li>
<li><a href="../module/play_sound.html">play_sound</a></li>
<li><a href="../module/Bullet_hole.html">Bullet_hole</a></li>
<li><a href="../module/Control_handler.html">Control_handler</a></li>
</ul>
</div>
</div>
<div class="body">
<div class="section">
<h2 class="class" id="Gun">Class <code>Gun</code>
<a class="permalink" href="#Gun" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>Gun class</p>
<h2>Defining a gun:</h2>
<p><strong>method documentation coming soon</strong> (or never...)</p>
<p>guns are defined by two table fields: their <a href="../class/Gun.html#lvl1_fields.consts">consts</a> and their <a href="../class/Gun.html#lvl1_fields.properties">properties</a>.
<a href="../class/Gun.html#lvl1_fields.properties">properties</a> define nearly everything, from how a gun handles to how it looks, what model it uses,
while <a href="../class/Gun.html#lvl1_fields.consts">consts</a> define attributes that should never change, like bones within the gun, framerates,
wether the gun is allowed to have certain attributes at all. The rest is mainly for internal workings of the mod.</p>
<p>Guns4d uses a class system for most moving parts- including the gun. New guns therefore are created with the :inherit(def) method,
where def is the definition of your new gun- or rather the changed parts of it. So to make a new gun you can run Guns4d.gun:inherit()
or you can do the same thing with a seperate class of weapons. Set name to &quot;__template&quot; for template classes of guns.</p>
</div>
</div>
<div class="section">
<h2 class="table" id="gun">gun fields
<a class="permalink" href="#gun" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties">properties</var><a class="permalink" href="#gun.properties" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../class/Gun.html#lvl1_fields.properties">properties</a> which define the vast majority of gun attributes and may change accross instances</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.consts">consts</var><a class="permalink" href="#gun.consts" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../class/Gun.html#lvl1_fields.consts">constants</a> which define gun attributes and should not be changed in an instance of the gun</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.offsets">offsets</var><a class="permalink" href="#gun.offsets" title="Permalink to this definition"></a></td>
<td class="doc"><p>runtime storage of <a href="../class/Gun.html#lvl1_fields.offsets">offsets</a> generated by recoil sway wag or any other element.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.name">name</var><a class="permalink" href="#gun.name" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> the name of the gun. Set to __template for guns which have no instances.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.itemstack">itemstack</var><a class="permalink" href="#gun.itemstack" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>ItemStack</code> itemstack held by the player</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.gun_entity">gun_entity</var><a class="permalink" href="#gun.gun_entity" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>ObjRef</code> the gun entity</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.itemstring">itemstring</var><a class="permalink" href="#gun.itemstring" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> the itemstring of the gun- i.e. &quot;guns4d_pack_1:m4&quot;. Set to &quot;&quot; for __template guns.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun._registered">_registered</var><a class="permalink" href="#gun._registered" title="Permalink to this definition"></a></td>
<td class="doc"><p>list of registered guns, <strong>DO NOT MODIFY</strong> I really need a metatable for this class...</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.bolt_charged">bolt_charged</var><a class="permalink" href="#gun.bolt_charged" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code> is the bolt charged</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.particle_spawners">particle_spawners</var><a class="permalink" href="#gun.particle_spawners" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> list of particle spawner handles (generated by firing)</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.current_firemode">current_firemode</var><a class="permalink" href="#gun.current_firemode" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>int</code> the active index of the firemode from <a href="../class/Gun.html#lvl1_fields.properties.firemodes">lvl1_fields.properties.firemodes</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.walking_tick">walking_tick</var><a class="permalink" href="#gun.walking_tick" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> walking time used to generate the figure 8 for wag</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.time_since_last_fire">time_since_last_fire</var><a class="permalink" href="#gun.time_since_last_fire" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.time_since_creation">time_since_creation</var><a class="permalink" href="#gun.time_since_creation" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.rechamber_time">rechamber_time</var><a class="permalink" href="#gun.rechamber_time" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> time left for the chamber to cycle (for firerates)</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.burst_queue">burst_queue</var><a class="permalink" href="#gun.burst_queue" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>int</code> number of rounds left that need to be fired after a burst fire</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.muzzle_flash">muzzle_flash</var><a class="permalink" href="#gun.muzzle_flash" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>function</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.gun_translation">gun_translation</var><a class="permalink" href="#gun.gun_translation" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vec3</code> translation of the gun relative to the &quot;gun&quot; bone or the player axial rotation.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.animation_rotation">animation_rotation</var><a class="permalink" href="#gun.animation_rotation" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> containing the offset from animations, this will be generated if {@consts.ANIMATIONS_OFFSET_AIM}=true</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.gun_axial">gun_axial</var><a class="permalink" href="#gun.gun_axial" title="Permalink to this definition"></a></td>
<td class="doc"><p>total offsets of the gun in the same format as a <a href="../class/Gun.html#gun.offsets">an offset</a>
[[total_offsets = {</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="lvl1_fields.properties">properties
<a class="permalink" href="#lvl1_fields.properties" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>the table containing every attribute of the gun.</p>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="lvl1_fields.properties.hip">hip</var><a class="permalink" href="#lvl1_fields.properties.hip" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.hip">hipfire properties</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.ads">ads</var><a class="permalink" href="#lvl1_fields.properties.ads" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.ads">aiming (&quot;aiming down sights&quot;) properties</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.firemodes">firemodes</var><a class="permalink" href="#lvl1_fields.properties.firemodes" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.firemodes">list of firemodes</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.firemode_inventory_overlays">firemode_inventory_overlays</var><a class="permalink" href="#lvl1_fields.properties.firemode_inventory_overlays" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.firemode_inventory_overlays">list of corresponding images for firemodes</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.recoil">recoil</var><a class="permalink" href="#lvl1_fields.properties.recoil" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.recoil">defines the guns recoil</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.sway">sway</var><a class="permalink" href="#lvl1_fields.properties.sway" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.sway">defines the guns idle sway</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.wag">wag</var><a class="permalink" href="#lvl1_fields.properties.wag" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.wag">defines the movement of the gun while walking</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.charging">charging</var><a class="permalink" href="#lvl1_fields.properties.charging" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> <a href="../class/Gun.html#gun.properties.charging">defines how rounds are chambered into the gun</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.ammo">ammo</var><a class="permalink" href="#lvl1_fields.properties.ammo" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../class/Gun.html#gun.properties.ammo">defines what ammo the gun uses</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.visuals">visuals</var><a class="permalink" href="#lvl1_fields.properties.visuals" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../class/Gun.html#gun.properties.visuals">defines visual attributes of the gun</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.breathing_scale">breathing_scale</var><a class="permalink" href="#lvl1_fields.properties.breathing_scale" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code>=.5 max angular deviation (vertical) from breathing</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.flash_offset">flash_offset</var><a class="permalink" href="#lvl1_fields.properties.flash_offset" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> the offset from the center of the muzzle flash. Used by fire()</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.firerateRPM">firerateRPM</var><a class="permalink" href="#lvl1_fields.properties.firerateRPM" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>int</code>=600 The number of rounds (cartidges) this gun can throw per minute. Used by update(), fire() and default controls</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.item">item</var><a class="permalink" href="#lvl1_fields.properties.item" title="Permalink to this definition"></a></td>
<td class="doc"><p>the item entity's attributes. This will later include held item definition...</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.burst">burst</var><a class="permalink" href="#lvl1_fields.properties.burst" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>int</code>=3 how many rounds in burst using when firemode is at &quot;burst&quot;</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.infinite_inventory_overlay">infinite_inventory_overlay</var><a class="permalink" href="#lvl1_fields.properties.infinite_inventory_overlay" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> overlay on the item to use when infinite ammo is on</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.pc_control_actions">pc_control_actions</var><a class="permalink" href="#lvl1_fields.properties.pc_control_actions" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> containing a list of actions for PC users passed to <a href="../module/Control_handler.html">Control_handler</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.touch_control_actions">touch_control_actions</var><a class="permalink" href="#lvl1_fields.properties.touch_control_actions" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> containing a list of actions for touch screen users passed to <a href="../module/Control_handler.html">Control_handler</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.reload">reload</var><a class="permalink" href="#lvl1_fields.properties.reload" title="Permalink to this definition"></a></td>
<td class="doc"><p>and ordered list of reloading states used by default_controls.</p>
<p>the default reload states for a magazine operated weapon, copied from the m4.</p>
<h5>Example</h5>
<pre><code class="language-lua">{action=&quot;charge&quot;, time=.5, anim=&quot;charge&quot;, sounds={sound=&quot;ar_charge&quot;, delay = .2}},
{action=&quot;unload_mag&quot;, time=.25, anim=&quot;unload&quot;, sounds = {sound=&quot;ar_mag_unload&quot;}},
{action=&quot;store&quot;, time=.5, anim=&quot;store&quot;, sounds = {sound=&quot;ar_mag_store&quot;}},
{action=&quot;load&quot;, time=.5, anim=&quot;load&quot;, sounds = {sound=&quot;ar_mag_load&quot;, delay = .25}},
{action=&quot;charge&quot;, time=.5, anim=&quot;charge&quot;, sounds={sound=&quot;ar_charge&quot;, delay = .2}}
</code></pre>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.properties.sounds">sounds</var><a class="permalink" href="#lvl1_fields.properties.sounds" title="Permalink to this definition"></a></td>
<td class="doc"><p>a table of <a href="../module/play_sound.html#guns4d_soundspec">soundspecs</a> to be referenced by other functions</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.hip">properties.hip
<a class="permalink" href="#gun.properties.hip" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.hip.offset">offset</var><a class="permalink" href="#gun.properties.hip.offset" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> the offset of the gun (relative to the right arm's default position) at hip.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.hip.axis_rotation_ratio">axis_rotation_ratio</var><a class="permalink" href="#gun.properties.hip.axis_rotation_ratio" title="Permalink to this definition"></a></td>
<td class="doc"><p>the ratio that the look rotation is expressed through player_axial (rotated around the viewport) rotation as opposed to gun_axial (rotating the entity).</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.hip.sway_vel_mul">sway_vel_mul</var><a class="permalink" href="#gun.properties.hip.sway_vel_mul" title="Permalink to this definition"></a></td>
<td class="doc"><p>sway speed multiplier while at hip</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.hip.sway_angle_mul">sway_angle_mul</var><a class="permalink" href="#gun.properties.hip.sway_angle_mul" title="Permalink to this definition"></a></td>
<td class="doc"><p>sway angle multiplier while at hip+</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.ads">properties.ads
<a class="permalink" href="#gun.properties.ads" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.ads.offset">offset</var><a class="permalink" href="#gun.properties.ads.offset" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> the offset of the gun relative to the eye's position at hip.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.ads.horizontal_offset">horizontal_offset</var><a class="permalink" href="#gun.properties.ads.horizontal_offset" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> the horizontal offset of the eye when aiming</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.ads.aim_time">aim_time</var><a class="permalink" href="#gun.properties.ads.aim_time" title="Permalink to this definition"></a></td>
<td class="doc"><p>the time it takes to go into full aim</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.firemodes">properties.firemodes
<a class="permalink" href="#gun.properties.firemodes" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>list containing the firemodes of the gun. Default only contains &quot;single&quot;. Strings allowed by default:</p>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.firemodes."single"">"single"</var><a class="permalink" href="#gun.properties.firemodes."single"" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="gun.properties.firemodes."burst"">"burst"</var><a class="permalink" href="#gun.properties.firemodes."burst"" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="gun.properties.firemodes."auto"">"auto"</var><a class="permalink" href="#gun.properties.firemodes."auto"" title="Permalink to this definition"></a></td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.firemode_inventory_overlays">properties.firemode_inventory_overlays
<a class="permalink" href="#gun.properties.firemode_inventory_overlays" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>defines the overlay on the gun item for each firemode. These are selected automatically by firemode string. Defaults are as follows:</p>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.firemode_inventory_overlays.single">single</var><a class="permalink" href="#gun.properties.firemode_inventory_overlays.single" title="Permalink to this definition"></a></td>
<td class="doc"><p>&quot;inventory_overlay_single.png&quot;</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.firemode_inventory_overlays.auto">auto</var><a class="permalink" href="#gun.properties.firemode_inventory_overlays.auto" title="Permalink to this definition"></a></td>
<td class="doc"><p>&quot;inventory_overlay_auto.png&quot;</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.firemode_inventory_overlays.burst">burst</var><a class="permalink" href="#gun.properties.firemode_inventory_overlays.burst" title="Permalink to this definition"></a></td>
<td class="doc"><p>&quot;inventory_overlay_burst.png&quot;</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.firemode_inventory_overlays.safe">safe</var><a class="permalink" href="#gun.properties.firemode_inventory_overlays.safe" title="Permalink to this definition"></a></td>
<td class="doc"><p>&quot;inventory_overlay_safe.png&quot; (unimplemented firemode)</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.recoil">properties.recoil
<a class="permalink" href="#gun.properties.recoil" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p><strong>IMPORTANT</strong>: expects fields to be tables containing a &quot;gun_axial&quot; and &quot;player_axial&quot; field.</p>
<h5>Example</h5>
<pre><code class="language-lua">property = {
gun_axial = type
player_axial = type
}
--using a vector...
property = {
gun_axial={x=float, y=float},
player_axial={x=float, y=float}
}`
</code></pre>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.recoil.velocity_correction_factor">velocity_correction_factor</var><a class="permalink" href="#gun.properties.recoil.velocity_correction_factor" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> TL:DR higher decreases recoil at expense of smoothness. 1/value is the deviation of a normalized bell curve, where x is the time since firing.
this means that increasing it decreases the time it takes for the angular velocity to fully &quot;decay&quot;.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.target_correction_factor">target_correction_factor</var><a class="permalink" href="#gun.properties.recoil.target_correction_factor" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> Correction of recoil offset per second is calculated as such: <code>target_correction_factor[axis]*time_since_fire*recoil[axis]</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.target_correction_max_rate">target_correction_max_rate</var><a class="permalink" href="#gun.properties.recoil.target_correction_max_rate" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> The maximum rate per second of recoil offset as determined with <a href="../class/Gun.html#gun.properties.recoil.target_correction_factor">gun.properties.recoil.target_correction_factor</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.angular_velocity_max">angular_velocity_max</var><a class="permalink" href="#gun.properties.recoil.angular_velocity_max" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> caps the recoil velocity that can stack up from shots.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.angular_velocity">angular_velocity</var><a class="permalink" href="#gun.properties.recoil.angular_velocity" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> {x=<code>float</code>, y=<code>float</code>}, defines the initial angular velocity produced by firing the gun</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.bias">bias</var><a class="permalink" href="#gun.properties.recoil.bias" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>vector</code> {x=<code>float</code>, y=<code>float</code>}, ranges -1 to 1. Defines the probability of the recoil being positive or negative for any given axis.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.recoil.hipfire_multiplier">hipfire_multiplier</var><a class="permalink" href="#gun.properties.recoil.hipfire_multiplier" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> angular velocity multiplier when firing from the hip</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.sway">properties.sway
<a class="permalink" href="#gun.properties.sway" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p><strong>IMPORTANT</strong>: expects fields to be tables containing a &quot;gun_axial&quot; and &quot;player_axial&quot; field. In the same format as <a href="../class/Gun.html#gun.properties.recoil">gun.properties.recoil</a></p>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.sway.max_angle">max_angle</var><a class="permalink" href="#gun.properties.sway.max_angle" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> maximum angle of the sway</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.sway.angular_velocity">angular_velocity</var><a class="permalink" href="#gun.properties.sway.angular_velocity" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> angular velocity the sway</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.sway.hipfire_angle_multiplier">hipfire_angle_multiplier</var><a class="permalink" href="#gun.properties.sway.hipfire_angle_multiplier" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> maximum angle multiplier while the gun is at the hip</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.sway.hipfire_velocity_multiplier">hipfire_velocity_multiplier</var><a class="permalink" href="#gun.properties.sway.hipfire_velocity_multiplier" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> velocity multiplier while the gun is at the hip</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.wag">properties.wag
<a class="permalink" href="#gun.properties.wag" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.wag.cycle_speed">cycle_speed</var><a class="permalink" href="#gun.properties.wag.cycle_speed" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code>=1.6 the cycle speed multiplier</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.wag.decay_speed">decay_speed</var><a class="permalink" href="#gun.properties.wag.decay_speed" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code>=1 decay factor when walking has stopped and offset remains.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.wag.offset">offset</var><a class="permalink" href="#gun.properties.wag.offset" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> containing angular deviation while walking in the same format as <a href="../class/Gun.html#gun.properties.recoil">an offset vector</a>. Acts as a multiplier on the figure-8 generated while walking.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.charging">properties.charging
<a class="permalink" href="#gun.properties.charging" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.charging.require_draw_on_swap">require_draw_on_swap</var><a class="permalink" href="#gun.properties.charging.require_draw_on_swap" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code> defines wether the draw animation is played on swap (when loaded). Used in the instance construction method</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.charging.bolt_charge_mode">bolt_charge_mode</var><a class="permalink" href="#gun.properties.charging.bolt_charge_mode" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> &quot;none&quot; bolt will never need to be charged after reload, &quot;catch&quot; when fired to empty bolt will not need to be charged after reload, &quot;no_catch&quot; bolt will always need to be charged after reload.</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.charging.draw_time">draw_time</var><a class="permalink" href="#gun.properties.charging.draw_time" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>float</code> the time it takes to swap to the gun</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.charging.draw_animation">draw_animation</var><a class="permalink" href="#gun.properties.charging.draw_animation" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> name of the animation to play from <a href="../class/Gun.html#gun.properties.visuals.animations">visuals.animations</a></p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.charging.draw_sound">draw_sound</var><a class="permalink" href="#gun.properties.charging.draw_sound" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> name of the sound to play from sounds</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.ammo">properties.ammo
<a class="permalink" href="#gun.properties.ammo" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.ammo.accepted_bullets">accepted_bullets</var><a class="permalink" href="#gun.properties.ammo.accepted_bullets" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> a list of accepted bullet itemstrings</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.ammo.accepted_magazines">accepted_magazines</var><a class="permalink" href="#gun.properties.ammo.accepted_magazines" title="Permalink to this definition"></a></td>
<td class="doc"><p><a href="../module/misc_helpers.html#table"><code>table</code></a> a list of accepted magazine itemstrings</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.ammo.initial_mag">initial_mag</var><a class="permalink" href="#gun.properties.ammo.initial_mag" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code> the mag the gun starts with. Set to &quot;empty&quot; for no mag, otherwise it defaults to accepted_magazines[1] (if present)</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="gun.properties.visuals">properties.visuals
<a class="permalink" href="#gun.properties.visuals" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="gun.properties.visuals.backface_culling">backface_culling</var><a class="permalink" href="#gun.properties.visuals.backface_culling" title="Permalink to this definition"></a></td>
<td class="doc"><p>toggles backface culling</p>
</td>
</tr>
<tr>
<td class="name"><var id="gun.properties.visuals.animations">animations</var><a class="permalink" href="#gun.properties.visuals.animations" title="Permalink to this definition"></a></td>
<td class="doc"><p>a table of animations in the format {x=int, y=float}. Indexes define the name of the animation to be refrenced by other functions of the gun.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="lvl1_fields.offsets">offsets
<a class="permalink" href="#lvl1_fields.offsets" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>a list of tables each containing offset vectors These are required for automatic initialization of offsets.</p>
<h5>Example</h5>
<pre><code class="language-lua">recoil = {
gun_axial = {x=0, y=0}, --rotation of the gun around it's origin
player_axial = {x=0, y=0}, --rotation of the gun around the bone it's attached to
--translations of gun
player_trans = {x=0, y=0, z=0}, --translation of the bone the gun is attached to
eye_trans = {x=0, y=0, z=0}, --trnaslation of the player's look
gun_tran = {x=0, y=0, z=0}s --translation of the gun relative to the bone it's attachted to.
}
</code></pre>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="lvl1_fields.offsets.recoil">recoil</var><a class="permalink" href="#lvl1_fields.offsets.recoil" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.offsets.sway">sway</var><a class="permalink" href="#lvl1_fields.offsets.sway" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.offsets.walking">walking</var><a class="permalink" href="#lvl1_fields.offsets.walking" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.offsets.breathing">breathing</var><a class="permalink" href="#lvl1_fields.offsets.breathing" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.offsets.look">look</var><a class="permalink" href="#lvl1_fields.offsets.look" title="Permalink to this definition"></a></td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<h2 class="table" id="lvl1_fields.consts">consts
<a class="permalink" href="#lvl1_fields.consts" title="Permalink to this definition"></a>
</h2>
<div class="inner">
<p>These are variables that are constant across the class and should usually not ever be changed by instnaces</p>
<div class="synopsis">
<table class="fields compact">
<tr>
<td class="name"><var id="lvl1_fields.consts.AIM_OUT_AIM_IN_SPEED_RATIO">AIM_OUT_AIM_IN_SPEED_RATIO</var><a class="permalink" href="#lvl1_fields.consts.AIM_OUT_AIM_IN_SPEED_RATIO" title="Permalink to this definition"></a></td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.KEYFRAME_SAMPLE_PRECISION">KEYFRAME_SAMPLE_PRECISION</var><a class="permalink" href="#lvl1_fields.consts.KEYFRAME_SAMPLE_PRECISION" title="Permalink to this definition"></a></td>
<td class="doc"><p>frequency of keyframe samples for animation offsets and</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.DEFAULT_MAX_HEAR_DISTANCE">DEFAULT_MAX_HEAR_DISTANCE</var><a class="permalink" href="#lvl1_fields.consts.DEFAULT_MAX_HEAR_DISTANCE" title="Permalink to this definition"></a></td>
<td class="doc"><p>default max hear distance when not specified</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.DEFAULT_FPS">DEFAULT_FPS</var><a class="permalink" href="#lvl1_fields.consts.DEFAULT_FPS" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>fps</code>=60 animation fps i.e. during firing when no length is specified</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.HAS_RECOIL">HAS_RECOIL</var><a class="permalink" href="#lvl1_fields.consts.HAS_RECOIL" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.HAS_BREATHING">HAS_BREATHING</var><a class="permalink" href="#lvl1_fields.consts.HAS_BREATHING" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.HAS_SWAY">HAS_SWAY</var><a class="permalink" href="#lvl1_fields.consts.HAS_SWAY" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.HAS_WAG">HAS_WAG</var><a class="permalink" href="#lvl1_fields.consts.HAS_WAG" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code></p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.HAS_GUN_AXIAL_OFFSETS">HAS_GUN_AXIAL_OFFSETS</var><a class="permalink" href="#lvl1_fields.consts.HAS_GUN_AXIAL_OFFSETS" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>bool</code> wether the gun rotates on it's own axis instead of the player's view (i.e. ironsight misalignments)</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.ANIMATIONS_OFFSET_AIM">ANIMATIONS_OFFSET_AIM</var><a class="permalink" href="#lvl1_fields.consts.ANIMATIONS_OFFSET_AIM" title="Permalink to this definition"></a></td>
<td class="doc"><p>wether animations create an offset</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.LOOP_IDLE_ANIM">LOOP_IDLE_ANIM</var><a class="permalink" href="#lvl1_fields.consts.LOOP_IDLE_ANIM" title="Permalink to this definition"></a></td>
<td class="doc"><p>whether the idle animation changes or not</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.THIRD_PERSON_GAIN_MULTIPLIER">THIRD_PERSON_GAIN_MULTIPLIER</var><a class="permalink" href="#lvl1_fields.consts.THIRD_PERSON_GAIN_MULTIPLIER" title="Permalink to this definition"></a></td>
<td class="doc"><p>general gain multiplier for third persons when hearing sounds</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.ROOT_BONE">ROOT_BONE</var><a class="permalink" href="#lvl1_fields.consts.ROOT_BONE" title="Permalink to this definition"></a></td>
<td class="doc"><p>the root bone of the gun (for animation offsets)</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.MAG_BONE">MAG_BONE</var><a class="permalink" href="#lvl1_fields.consts.MAG_BONE" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code>=&quot;magazine&quot;,the bone of the magazine in the gun (for dropping mags)</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.ARM_RIGHT_BONE">ARM_RIGHT_BONE</var><a class="permalink" href="#lvl1_fields.consts.ARM_RIGHT_BONE" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code>=&quot;right_aimpoint&quot;, the bone which the right arm aims at to</p>
</td>
</tr>
<tr>
<td class="name"><var id="lvl1_fields.consts.ARM_LEFT_BONE">ARM_LEFT_BONE</var><a class="permalink" href="#lvl1_fields.consts.ARM_LEFT_BONE" title="Permalink to this definition"></a></td>
<td class="doc"><p><code>string</code>=&quot;left_aimpoint&quot;, the bone which the left arm aims at to</p>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<script src="../prism.js?7653a2d"></script>
</body>
</html>