Full Code of NebulousCloud/helix for AI

master 7303003d2c92 cached
197 files
1.5 MB
470.8k tokens
8 symbols
1 requests
Download .txt
Showing preview only (1,657K chars total). Download the full file or copy to clipboard to get everything.
Repository: NebulousCloud/helix
Branch: master
Commit: 7303003d2c92
Files: 197
Total size: 1.5 MB

Directory structure:
gitextract_omsmarjc/

├── .editorconfig
├── .github/
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .luacheckrc
├── LICENSE.txt
├── README.md
├── config.ld
├── docs/
│   ├── css/
│   │   ├── highlight.css
│   │   └── ldoc.css
│   ├── hooks/
│   │   ├── class.lua
│   │   ├── faction.lua
│   │   └── plugin.lua
│   ├── js/
│   │   └── app.js
│   ├── manual/
│   │   ├── converting-from-clockwork.md
│   │   └── getting-started.md
│   └── templates/
│       ├── landing.ltp
│       ├── ldoc.ltp
│       ├── module.ltp
│       └── sidebar.ltp
├── entities/
│   ├── entities/
│   │   ├── ix_item.lua
│   │   ├── ix_money.lua
│   │   └── ix_shipment.lua
│   └── weapons/
│       └── ix_hands.lua
├── gamemode/
│   ├── cl_init.lua
│   ├── config/
│   │   ├── sh_config.lua
│   │   └── sh_options.lua
│   ├── core/
│   │   ├── cl_skin.lua
│   │   ├── derma/
│   │   │   ├── cl_attribute.lua
│   │   │   ├── cl_bar.lua
│   │   │   ├── cl_business.lua
│   │   │   ├── cl_character.lua
│   │   │   ├── cl_charcreate.lua
│   │   │   ├── cl_charload.lua
│   │   │   ├── cl_classes.lua
│   │   │   ├── cl_config.lua
│   │   │   ├── cl_credits.lua
│   │   │   ├── cl_deathscreen.lua
│   │   │   ├── cl_dev_icon.lua
│   │   │   ├── cl_entitymenu.lua
│   │   │   ├── cl_generic.lua
│   │   │   ├── cl_help.lua
│   │   │   ├── cl_information.lua
│   │   │   ├── cl_intro.lua
│   │   │   ├── cl_inventory.lua
│   │   │   ├── cl_menu.lua
│   │   │   ├── cl_menubutton.lua
│   │   │   ├── cl_modelpanel.lua
│   │   │   ├── cl_notice.lua
│   │   │   ├── cl_noticebar.lua
│   │   │   ├── cl_overrides.lua
│   │   │   ├── cl_scoreboard.lua
│   │   │   ├── cl_settings.lua
│   │   │   ├── cl_shipment.lua
│   │   │   ├── cl_spawnicon.lua
│   │   │   ├── cl_storage.lua
│   │   │   ├── cl_subpanel.lua
│   │   │   └── cl_tooltip.lua
│   │   ├── hooks/
│   │   │   ├── cl_hooks.lua
│   │   │   ├── sh_hooks.lua
│   │   │   └── sv_hooks.lua
│   │   ├── libs/
│   │   │   ├── cl_bar.lua
│   │   │   ├── cl_hud.lua
│   │   │   ├── cl_markup.lua
│   │   │   ├── cl_networking.lua
│   │   │   ├── sh_animation.lua
│   │   │   ├── sh_anims.lua
│   │   │   ├── sh_attribs.lua
│   │   │   ├── sh_business.lua
│   │   │   ├── sh_character.lua
│   │   │   ├── sh_chatbox.lua
│   │   │   ├── sh_class.lua
│   │   │   ├── sh_command.lua
│   │   │   ├── sh_currency.lua
│   │   │   ├── sh_date.lua
│   │   │   ├── sh_faction.lua
│   │   │   ├── sh_flag.lua
│   │   │   ├── sh_inventory.lua
│   │   │   ├── sh_item.lua
│   │   │   ├── sh_language.lua
│   │   │   ├── sh_log.lua
│   │   │   ├── sh_menu.lua
│   │   │   ├── sh_notice.lua
│   │   │   ├── sh_option.lua
│   │   │   ├── sh_player.lua
│   │   │   ├── sh_plugin.lua
│   │   │   ├── sh_storage.lua
│   │   │   ├── sv_database.lua
│   │   │   ├── sv_networking.lua
│   │   │   ├── sv_player.lua
│   │   │   └── thirdparty/
│   │   │       ├── cl_ikon.lua
│   │   │       ├── data/
│   │   │       │   └── sh_utf8_casemap.lua
│   │   │       ├── sh_cami.lua
│   │   │       ├── sh_date.lua
│   │   │       ├── sh_middleclass.lua
│   │   │       ├── sh_pon.lua
│   │   │       ├── sh_tween.lua
│   │   │       ├── sh_utf8.lua
│   │   │       ├── sh_yaml.lua
│   │   │       └── sv_mysql.lua
│   │   ├── meta/
│   │   │   ├── sh_character.lua
│   │   │   ├── sh_entity.lua
│   │   │   ├── sh_inventory.lua
│   │   │   ├── sh_item.lua
│   │   │   ├── sh_player.lua
│   │   │   └── sh_tool.lua
│   │   ├── sh_commands.lua
│   │   ├── sh_config.lua
│   │   ├── sh_data.lua
│   │   └── sh_util.lua
│   ├── init.lua
│   ├── items/
│   │   ├── ammo/
│   │   │   ├── sh_357ammo.txt
│   │   │   ├── sh_ar2ammo.txt
│   │   │   ├── sh_crossbowammo.txt
│   │   │   ├── sh_pistolammo.txt
│   │   │   ├── sh_rocketammo.txt
│   │   │   ├── sh_shotgunammo.txt
│   │   │   └── sh_smg1ammo.txt
│   │   ├── bags/
│   │   │   ├── sh_large.txt
│   │   │   └── sh_small.txt
│   │   ├── base/
│   │   │   ├── sh_ammo.lua
│   │   │   ├── sh_bags.lua
│   │   │   ├── sh_outfit.lua
│   │   │   ├── sh_pacoutfit.lua
│   │   │   └── sh_weapons.lua
│   │   ├── pacoutfit/
│   │   │   └── sh_skullmask.txt
│   │   ├── sh_defaultitem.txt
│   │   └── weapons/
│   │       ├── sh_357.txt
│   │       ├── sh_ar2.txt
│   │       ├── sh_crowbar.txt
│   │       ├── sh_pistol.txt
│   │       └── sh_smg1.txt
│   ├── languages/
│   │   ├── sh_dutch.lua
│   │   ├── sh_english.lua
│   │   ├── sh_french.lua
│   │   ├── sh_german.lua
│   │   ├── sh_korean.lua
│   │   ├── sh_norwegian.lua
│   │   ├── sh_polish.lua
│   │   ├── sh_portuguese.lua
│   │   ├── sh_russian.lua
│   │   └── sh_spanish.lua
│   └── shared.lua
├── helix.example.yml
├── helix.txt
└── plugins/
    ├── 3dpanel.lua
    ├── 3dtext.lua
    ├── act/
    │   ├── cl_hooks.lua
    │   ├── sh_definitions.lua
    │   ├── sh_plugin.lua
    │   └── sv_hooks.lua
    ├── ammosave.lua
    ├── area/
    │   ├── cl_hooks.lua
    │   ├── cl_plugin.lua
    │   ├── derma/
    │   │   ├── cl_area.lua
    │   │   └── cl_areaedit.lua
    │   ├── languages/
    │   │   ├── sh_english.lua
    │   │   └── sh_russian.lua
    │   ├── sh_plugin.lua
    │   ├── sv_hooks.lua
    │   └── sv_plugin.lua
    ├── chatbox/
    │   ├── derma/
    │   │   ├── cl_chatbox.lua
    │   │   └── cl_chatboxcustomize.lua
    │   └── sh_plugin.lua
    ├── containers/
    │   ├── entities/
    │   │   └── entities/
    │   │       └── ix_container.lua
    │   ├── sh_definitions.lua
    │   └── sh_plugin.lua
    ├── crosshair.lua
    ├── doors/
    │   ├── cl_plugin.lua
    │   ├── derma/
    │   │   └── cl_door.lua
    │   ├── entities/
    │   │   └── weapons/
    │   │       └── ix_keys.lua
    │   ├── sh_commands.lua
    │   ├── sh_plugin.lua
    │   └── sv_plugin.lua
    ├── logging.lua
    ├── mapscene.lua
    ├── observer.lua
    ├── pac.lua
    ├── permakill.lua
    ├── persistence.lua
    ├── propprotect.lua
    ├── recognition.lua
    ├── saveitems.lua
    ├── spawns.lua
    ├── spawnsaver.lua
    ├── stamina/
    │   ├── attributes/
    │   │   ├── sh_end.lua
    │   │   └── sh_stm.lua
    │   └── sh_plugin.lua
    ├── strength/
    │   ├── attributes/
    │   │   └── sh_str.lua
    │   └── sh_plugin.lua
    ├── thirdperson.lua
    ├── typing.lua
    ├── vendor/
    │   ├── derma/
    │   │   ├── cl_vendor.lua
    │   │   ├── cl_vendoreditor.lua
    │   │   └── cl_vendorfaction.lua
    │   ├── entities/
    │   │   └── entities/
    │   │       └── ix_vendor.lua
    │   └── sh_plugin.lua
    └── wepselect.lua

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================

root = true

[*]
end_of_line = crlf
insert_final_newline = true
charset = utf-8
indent_style = tab
indent_size = 4

[.travis.yml]
indent_style = space
indent_size = 2


================================================
FILE: .github/workflows/ci.yml
================================================

name: CI
on: [push, pull_request]

jobs:
  linter:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
      with:
        path: helix

    - uses: leafo/gh-actions-lua@v8.0.0
      with:
        luaVersion: "5.2"

    - uses: leafo/gh-actions-luarocks@v4.0.0

    - name: Pull gluacheck
      uses: actions/checkout@v2
      with:
        repository: impulsh/gluacheck
        path: luacheck

    - name: Build gluacheck
      working-directory: luacheck
      run: luarocks make

    - name: Lint
      working-directory: helix
      run: luacheck .

  docs:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          path: helix

      - uses: leafo/gh-actions-lua@v8.0.0
        with:
          luaVersion: "5.2"

      - uses: leafo/gh-actions-luarocks@v4.0.0

      - name: Pull LDoc
        uses: actions/checkout@v2
        with:
          repository: impulsh/LDoc
          path: ldoc

      - name: Build LDoc
        working-directory: ldoc
        run: luarocks make

      - name: Build docs
        working-directory: helix
        run: ldoc . --fatalwarnings

      - name: Copy assets
        working-directory: helix
        run: |
          cp -v docs/css/* docs/html
          cp -v docs/js/* docs/html

      - name: Deploy
        if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'NebulousCloud/helix' && success()
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: helix/docs/html
          cname: docs.gethelix.co


================================================
FILE: .gitignore
================================================

*.sublime-*
gamemode/config/sv_database.lua
docs/html
.vscode/*
.DS_Store
helix.yml


================================================
FILE: .luacheckrc
================================================

max_line_length = 128
std = "luajit+gmod+helix"
ignore = {
	"212", -- unused argument
}

-- helix
stds.helix = {}
stds.helix.globals = {
	"ix",
	"Schema",

	"ITEM",
	"PLUGIN",
	"ATTRIBUTE",
	"NAME",
	"LANGUAGE",
	"FACTION",
	"CLASS",
	"CHAT_RECOGNIZED",
	"ALWAYS_RAISED",
	"ICON_RENDER_QUEUE",
	"USABLE_FUNCS",
}
stds.helix.read_globals = {
	"L",
	"L2",
	"IX_RELOADED",
	"CHAT_CLASS",
	"HOOKS_CACHE",
	"BAR_HEIGHT",
	"ACCESS_LABELS",
	"CAMI",

	"netstream",
	"mysql",
	"pon",
	"ikon",
	"BaseClass",

	"SetNetVar",
	"GetNetVar",
	"ixSoundDuration",

	"HOLDTYPE_TRANSLATOR",
	"PLAYER_HOLDTYPE_TRANSLATOR",

	"ACT_VM_FISTS_DRAW",
	"ACT_VM_FISTS_HOLSTER",

	"TOOLTIP_GENERIC",
	"TOOLTIP_ITEM",

	"FLAG_NORMAL",
	"FLAG_SUCCESS",
	"FLAG_WARNING",
	"FLAG_DANGER",
	"FLAG_SERVER",
	"FLAG_DEV",

	"DOOR_OWNER",
	"DOOR_TENANT",
	"DOOR_GUEST",
	"DOOR_NONE",

	"VENDOR_BUY",
	"VENDOR_SELL",
	"VENDOR_BOTH",
	"VENDOR_WELCOME",
	"VENDOR_LEAVE",
	"VENDOR_NOTRADE",
	"VENDOR_PRICE",
	"VENDOR_STOCK",
	"VENDOR_MODE",
	"VENDOR_MAXSTOCK",
	"VENDOR_SELLANDBUY",
	"VENDOR_SELLONLY",
	"VENDOR_BUYONLY",
	"VENDOR_TEXT",

	"FCAP_IMPULSE_USE",
	"FCAP_CONTINUOUS_USE",
	"FCAP_ONOFF_USE",
	"FCAP_DIRECTIONAL_USE",
	"FCAP_USE_ONGROUND",
	"FCAP_USE_IN_RADIUS",
}

files = {
	-- some phrases are unavoidably long, so we'll ignore the max line length for language files
	["gamemode/languages/**/*.lua"] = {
		ignore = {
			"631"
		}
	},

	["plugins/**/languages/*.lua"] = {
		ignore = {
			"631"
		}
	}
}

-- ignore third party files
exclude_files = {
	"gamemode/core/libs/thirdparty/**/*.lua"
}

-- gmod
stds.gmod = {}
stds.gmod.globals = {
	"GM",
	"ENT",
	"TOOL",
	"SWEP"
}
stds.gmod.read_globals = {
	"VERSION",
	"CLIENT",
	"SERVER",
	"GAMEMODE",
	"NULL",

	"vector_origin",
	"vector_up",
	"angle_zero",
	"color_white",
	"color_black",
	"color_transparent",

	"PLAYERANIMEVENT_CANCEL_RELOAD",
	"ACT_COMBINE_THROW_GRENADE",

	-- Generated on Wed Jan 17 02:56:57 2018
	"ACT_MP_GESTURE_VC_NODYES",
	"ACT_MELEE_ATTACK_SWING_GESTURE",
	"SCHED_TAKE_COVER_FROM_ORIGIN",
	"ACT_BUSY_SIT_GROUND_ENTRY",
	"ACT_DOD_CROUCH_IDLE_C96",
	"ACT_IDLE_STEALTH",
	"ACT_DOD_PRIMARYATTACK_DEPLOYED",
	"ACT_MP_STAND_PRIMARY",
	"ACT_DOD_CROUCHWALK_AIM",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED_BAR",
	"ACT_GLOCK_SHOOT_RELOAD",
	"TEXT_ALIGN_CENTER",
	"DMG_CRUSH",
	"ScrH",
	"ACT_DOD_RELOAD_CROUCH_BAR",
	"ACT_HL2MP_JUMP_PASSIVE",
	"ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY",
	"ACT_MP_JUMP_START_MELEE",
	"ACT_GET_UP_CROUCH",
	"ACT_DOD_CROUCHWALK_IDLE_GREASE",
	"ACT_DOD_CROUCHWALK_IDLE_PISTOL",
	"ACT_HL2MP_WALK_CROUCH_SUITCASE",
	"ACT_HL2MP_GESTURE_RELOAD_SLAM",
	"SIMPLE_USE",
	"ACT_DOD_WALK_AIM_GREN_STICK",
	"ACT_DOD_PRONEWALK_IDLE_MG",
	"FL_FLY",
	"ACT_HL2MP_IDLE_CROUCH_REVOLVER",
	"presets",
	"ACT_MP_RUN_MELEE",
	"halo",
	"HULL_WIDE_SHORT",
	"video",
	"SND_SPAWNING",
	"ACT_MP_GRENADE2_DRAW",
	"ACT_OVERLAY_PRIMARYATTACK",
	"COND_SEE_NEMESIS",
	"KEY_O",
	"ACT_OVERLAY_GRENADEREADY",
	"ACT_COVER_MED",
	"AddConsoleCommand",
	"ACT_VM_IIDLE_M203",
	"ACT_HL2MP_JUMP_RPG",
	"ACT_DOD_STAND_AIM_MG",
	"MAT_VENT",
	"ACT_VM_HITRIGHT2",
	"ACT_VM_RELOAD_EMPTY",
	"DSprite",
	"BONE_CALCULATE_MASK",
	"GetGlobalVector",
	"ACT_HL2MP_IDLE_PISTOL",
	"SetGlobalVector",
	"HTTP",
	"WorldToLocal",
	"ACT_MP_CROUCH_IDLE",
	"COLLISION_GROUP_VEHICLE",
	"KEY_XBUTTON_B",
	"ACT_PICKUP_RACK",
	"CAP_MOVE_CRAWL",
	"ACT_DOD_CROUCHWALK_AIM_BOLT",
	"ACT_MP_MELEE_GRENADE2_DRAW",
	"ACT_DIE_BARNACLE_SWALLOW",
	"ACT_WALK_STEALTH_PISTOL",
	"ACT_DOD_PRONE_AIM_MP44",
	"ACT_PRONE_FORWARD",
	"COND_ENEMY_OCCLUDED",
	"ACT_DOD_RUN_IDLE_BOLT",
	"GetConVarNumber",
	"ACT_DOD_CROUCHWALK_AIM_RIFLE",
	"ACT_DOD_RELOAD_RIFLEGRENADE",
	"ACT_VM_IIN_M203",
	"ACT_MP_ATTACK_AIRWALK_BUILDING",
	"FVPHYSICS_DMG_DISSOLVE",
	"ACT_INVALID",
	"ACT_DOD_RELOAD_PRONE_MP44",
	"ACT_SLAM_TRIPMINE_DRAW",
	"ACT_MP_GESTURE_VC_NODNO",
	"SetGlobalAngle",
	"ACT_DOD_SPRINT_IDLE_BOLT",
	"ACT_MP_PRIMARY_GRENADE1_IDLE",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_1",
	"ClientsideScene",
	"MASK_SHOT",
	"DTree_Node_Button",
	"GetGlobalAngle",
	"MOVETYPE_ISOMETRIC",
	"ACT_GESTURE_RANGE_ATTACK_SMG1_LOW",
	"NAV_MESH_STOP",
	"COND_NONE",
	"ACT_SHIELD_ATTACK",
	"ACT_GESTURE_RANGE_ATTACK_SMG2",
	"CNavArea",
	"ACT_HL2MP_WALK",
	"include",
	"ACT_WALK_ANGRY",
	"ACT_DOD_PRIMARYATTACK_PRONE_PISTOL",
	"ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING",
	"DDrawer",
	"ACT_VM_IRECOIL1",
	"BOX_TOP",
	"ACT_MP_RUN_PDA",
	"ACT_DOD_RELOAD_BOLT",
	"SaveLastMap",
	"ACT_DOD_RUN_ZOOM_BOLT",
	"ACT_MP_RELOAD_AIRWALK_LOOP",
	"ACT_DEEPIDLE1",
	"COND_SEE_ENEMY",
	"DColorPalette",
	"DMG_DIRECT",
	"Derma_Message",
	"DPanelSelect",
	"ACT_HL2MP_ZOMBIE_SLUMP_RISE",
	"FVPHYSICS_NO_IMPACT_DMG",
	"CLASS_CONSCRIPT",
	"CONTINUOUS_USE",
	"STUDIO_TRANSPARENCY",
	"NOTIFY_UNDO",
	"ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY",
	"ACT_SMG2_FIRE2",
	"ACT_RANGE_ATTACK_AR1",
	"ACT_MP_DEPLOYED_IDLE",
	"ACT_MP_ATTACK_SWIM_PRIMARYFIRE",
	"kRenderFxEnvSnow",
	"COND_WAY_CLEAR",
	"MATERIAL_LINE_STRIP",
	"SetGlobalString",
	"ACT_IDLE_RELAXED",
	"ACT_VM_PRIMARYATTACK",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_DUEL",
	"ACT_VM_DEPLOY_EMPTY",
	"ACT_VM_IDLE_EMPTY",
	"Matrix",
	"ACT_DOD_SECONDARYATTACK_PRONE_TOMMY",
	"COND_WEAPON_SIGHT_OCCLUDED",
	"ACT_DOD_PRIMARYATTACK_KNIFE",
	"ACT_VM_RELOAD_END_EMPTY",
	"menu",
	"CLASS_SCANNER",
	"ACT_MP_CROUCHWALK_SECONDARY",
	"ACT_DOD_SECONDARYATTACK_BOLT",
	"SF_NPC_ALWAYSTHINK",
	"ACT_DOD_WALK_IDLE_TNT",
	"ACT_HL2MP_WALK_ZOMBIE",
	"ACT_IDLE_SMG1_RELAXED",
	"TextEntry",
	"ACT_DOD_STAND_ZOOM_RIFLE",
	"COND_HEAR_BUGBAIT",
	"COND_WEAPON_PLAYER_NEAR_TARGET",
	"LoadPresets",
	"IN_ALT2",
	"ACT_MP_SWIM_DEPLOYED",
	"SetGlobalInt",
	"DrawSunbeams",
	"ACT_MP_ATTACK_SWIM_SECONDARY",
	"KEY_4",
	"ACT_MP_GESTURE_VC_FISTPUMP_MELEE",
	"ACT_DOD_RUN_IDLE_PSCHRECK",
	"ACT_PICKUP_GROUND",
	"ACT_WALK_RPG",
	"ACT_BUSY_SIT_CHAIR",
	"ACT_DOD_CROUCHWALK_AIM_KNIFE",
	"TYPE_COLOR",
	"ACT_DOD_CROUCH_IDLE_30CAL",
	"ACT_DOD_PRONEWALK_AIM_SPADE",
	"properties",
	"ACT_HL2MP_IDLE_RPG",
	"achievements",
	"CAP_WEAPON_MELEE_ATTACK2",
	"ACT_VM_UNLOAD",
	"ACT_VM_DRAW_EMPTY",
	"LocalPlayer",
	"ACT_ZOMBIE_CLIMB_UP",
	"SURF_WARP",
	"MAT_SLOSH",
	"ACT_DOD_WALK_ZOOM_PSCHRECK",
	"FSOLID_TRIGGER_TOUCH_DEBRIS",
	"ACT_MP_JUMP_LAND_MELEE",
	"PLAYERANIMEVENT_SWIM",
	"ACT_DOD_RELOAD_PSCHRECK",
	"ACT_DOD_RELOAD_CROUCH",
	"PLAYER",
	"ACT_DOD_RELOAD_CROUCH_MP44",
	"table",
	"ACT_HL2MP_FIST_BLOCK",
	"ACT_VM_PRIMARYATTACK_EMPTY",
	"ACT_RANGE_AIM_PISTOL_LOW",
	"Panel",
	"BONE_USED_BY_VERTEX_MASK",
	"ACT_MP_ATTACK_CROUCH_PRIMARY",
	"KEY_PAD_8",
	"ACT_CROUCHING_SHIELD_UP",
	"ipairs",
	"KEY_LALT",
	"ACT_DIEVIOLENT",
	"ACT_DOD_PRIMARYATTACK_MP40",
	"KEY_PAD_PLUS",
	"KEY_LBRACKET",
	"MsgAll",
	"ACT_DOD_CROUCHWALK_IDLE_MP44",
	"GetGlobalInt",
	"ACT_CROUCHING_SHIELD_DOWN",
	"NUM_BEAMS",
	"COND_CAN_MELEE_ATTACK1",
	"COND_LOST_ENEMY",
	"ACT_RUN_AIM_RIFLE",
	"ACT_VM_PULLBACK_HIGH",
	"DrawBackground",
	"TEXT_ALIGN_BOTTOM",
	"ACT_HL2MP_WALK_AR2",
	"ACT_RUN_PROTECTED",
	"CreateParticleSystem",
	"ACT_HL2MP_JUMP_DUEL",
	"ACT_DOD_CROUCHWALK_AIM_BAR",
	"ACT_VM_HOLSTERFULL_M203",
	"ACT_DOD_PRONEWALK_IDLE_PSCHRECK",
	"ACT_DOD_PRIMARYATTACK_PRONE_MP44",
	"ACT_STARTDYING",
	"TYPE_BOOL",
	"MOVETYPE_NOCLIP",
	"FVPHYSICS_PENETRATING",
	"NPC_STATE_INVALID",
	"STUDIO_TWOPASS",
	"ACT_VM_MISSRIGHT2",
	"KEY_E",
	"FORCE_STRING",
	"HITGROUP_LEFTLEG",
	"ACT_GET_DOWN_STAND",
	"ACT_HL2MP_SWIM_REVOLVER",
	"ACT_DOD_PRONE_ZOOM_FORWARD_RIFLE",
	"ACT_DOD_PRONEWALK_IDLE_MP40",
	"ACT_MP_GESTURE_VC_NODNO_SECONDARY",
	"BLEND_ZERO",
	"spawnmenu",
	"D_NU",
	"KEY_PAD_0",
	"ACT_MP_RUN_SECONDARY",
	"ACT_DIE_BACKSHOT",
	"ACT_WALK_CROUCH_RIFLE",
	"ACT_MP_ATTACK_STAND_GRENADE_PRIMARY",
	"ACT_HL2MP_GESTURE_RELOAD_REVOLVER",
	"ACT_CROSSBOW_IDLE_UNLOADED",
	"IMAGE_FORMAT_RGBA16161616",
	"ACT_DOD_CROUCHWALK_ZOOM_BOLT",
	"STENCILCOMPARISONFUNCTION_LESS",
	"ACT_DOD_SPRINT_AIM_KNIFE",
	"ACT_BARNACLE_PULL",
	"CONTENTS_TESTFOGVOLUME",
	"SNDLVL_45dB",
	"ACT_DIE_LEFTSIDE",
	"kRenderFxEnvRain",
	"ACT_GMOD_GESTURE_DISAGREE",
	"ACT_MP_JUMP_LAND_PRIMARY",
	"SQLStr",
	"ACT_OVERLAY_SHIELD_ATTACK",
	"SCHED_ALERT_WALK",
	"ACT_SIGNAL_ADVANCE",
	"DImageButton",
	"search",
	"ACT_DOD_RELOAD_CROUCH_RIFLEGRENADE",
	"KEY_XSTICK1_DOWN",
	"FVPHYSICS_NO_NPC_IMPACT_DMG",
	"RENDERGROUP_TRANSLUCENT",
	"DrawTexturize",
	"ACT_HANDGRENADE_THROW3",
	"ACT_OVERLAY_SHIELD_UP",
	"HITGROUP_CHEST",
	"BONE_ALWAYS_PROCEDURAL",
	"ACT_DOD_PRIMARYATTACK_PRONE_SPADE",
	"ACT_HL2MP_JUMP_SMG1",
	"ACT_DOD_STAND_AIM_MP40",
	"CreateMaterial",
	"COND_TARGET_OCCLUDED",
	"kRenderFxHologram",
	"KEY_APOSTROPHE",
	"RENDERGROUP_STATIC",
	"ENT_BRUSH",
	"ACT_VM_DETACH_SILENCER",
	"KEY_ENTER",
	"ACT_VM_DEPLOYED_LIFTED_IDLE",
	"SCHED_MOVE_TO_WEAPON_RANGE",
	"ACT_MP_RELOAD_AIRWALK_SECONDARY",
	"ACT_GMOD_GESTURE_RANGE_ZOMBIE_SPECIAL",
	"KEY_F7",
	"SetClipboardText",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2",
	"ACT_MP_WALK_MELEE",
	"DMG_ACID",
	"ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP",
	"DProperty_Generic",
	"PANEL",
	"ProjectedTexture",
	"ACT_MP_RELOAD_SWIM_SECONDARY_END",
	"ACT_VM_IDLE_DEPLOYED_4",
	"ACT_IDLE_MANNEDGUN",
	"ACT_DOD_RELOAD_K43",
	"ACT_DOD_HS_CROUCH_PSCHRECK",
	"Add_NPC_Class",
	"TEXTUREFLAGS_UNUSED_00080000",
	"COND_HEAR_WORLD",
	"ACT_VM_PRIMARYATTACK_8",
	"MOVECOLLIDE_DEFAULT",
	"ACT_DOD_WALK_IDLE_GREASE",
	"ACT_WALK_SUITCASE",
	"FCVAR_GAMEDLL",
	"ACT_PLAYER_CROUCH_FIRE",
	"ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING",
	"ACT_HL2MP_GESTURE_RELOAD_PISTOL",
	"ACT_RANGE_ATTACK_SMG1_LOW",
	"ACT_RELOAD_SMG1_LOW",
	"ACT_FLINCH_RIGHTLEG",
	"ACT_MP_PRIMARY_GRENADE1_ATTACK",
	"ACT_COVER_SMG1_LOW",
	"ONOFF_USE",
	"ACT_HL2MP_JUMP_SLAM",
	"CheckButton",
	"kRenderFxStrobeSlow",
	"TYPE_EFFECTDATA",
	"FSOLID_VOLUME_CONTENTS",
	"TimedCos",
	"ACT_DEEPIDLE3",
	"ACT_HL2MP_WALK_CROUCH_PASSIVE",
	"ACT_DUCK_DODGE",
	"ACT_HL2MP_RUN_ZOMBIE_FAST",
	"PrintMessage",
	"usermessage",
	"ACT_DOD_RUN_AIM",
	"JoinServer",
	"ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY",
	"TYPE_FILE",
	"RunGameUICommand",
	"ACT_HL2MP_JUMP_KNIFE",
	"ACT_HL2MP_WALK_FIST",
	"MOVECOLLIDE_FLY_BOUNCE",
	"EFL_NO_WATER_VELOCITY_CHANGE",
	"SURF_HITBOX",
	"STENCILOPERATION_REPLACE",
	"ACT_MP_ATTACK_AIRWALK_MELEE",
	"ColorToHSV",
	"ACT_MP_WALK_PDA",
	"IMAGE_FORMAT_ABGR8888",
	"BuildNetworkedVarsTable",
	"KEY_XBUTTON_A",
	"hook",
	"SF_CITIZEN_RANDOM_HEAD",
	"CreateSprite",
	"DListView_ColumnPlain",
	"IsTableOfEntitiesValid",
	"ACT_HL2MP_IDLE_CROUCH_MELEE",
	"ACT_TURN_RIGHT",
	"CompileFile",
	"ACT_DOD_SPRINT_IDLE_RIFLE",
	"DKillIcon",
	"SNDLVL_180dB",
	"ACT_DOD_WALK_IDLE_PSCHRECK",
	"DMG_DROWN",
	"DMG_BURN",
	"ACT_MP_SWIM_BUILDING",
	"CONTENTS_SOLID",
	"ACT_MP_STAND_IDLE",
	"SCHED_SCENE_GENERIC",
	"PLAYERANIMEVENT_FLINCH_RIGHTLEG",
	"CreateClientConVar",
	"DListLayout",
	"ACT_MP_RELOAD_AIRWALK_SECONDARY_END",
	"ACT_CROUCH",
	"ACT_VM_PULLBACK_LOW",
	"NPC_STATE_IDLE",
	"ACT_MP_RELOAD_SWIM_END",
	"ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY",
	"COND_HEAR_BULLET_IMPACT",
	"ACT_OPEN_DOOR",
	"ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_MG",
	"ACT_IDLE_ANGRY_PISTOL",
	"ACT_DOD_STAND_ZOOM_PSCHRECK",
	"COND_CAN_MELEE_ATTACK2",
	"ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED",
	"engine",
	"SF_PHYSBOX_NEVER_PICK_UP",
	"ACT_GESTURE_RANGE_ATTACK_ML",
	"ACT_DOD_DEPLOY_30CAL",
	"CLASS_ZOMBIE",
	"ACT_RPG_IDLE_UNLOADED",
	"DProperty_Int",
	"ACT_IDLE_SHOTGUN_RELAXED",
	"RunStringEx",
	"ACT_MP_JUMP",
	"MOVETYPE_FLYGRAVITY",
	"matproxy",
	"ACT_VM_MISSRIGHT",
	"physenv",
	"DColorMixer",
	"RenderStereoscopy",
	"Schedule",
	"ACT_MP_GESTURE_VC_FISTPUMP",
	"ACT_RELOAD_PISTOL_LOW",
	"SF_NPC_NO_WEAPON_DROP",
	"ACT_SLAM_STICKWALL_DRAW",
	"ACT_HL2MP_WALK_CROUCH_GRENADE",
	"MsgN",
	"ACT_DOD_CROUCHWALK_IDLE_PSCHRECK",
	"CAP_SQUAD",
	"ACT_MP_AIRWALK_SECONDARY",
	"ALL_VISIBLE_CONTENTS",
	"ColorAlpha",
	"ACT_DOD_SPRINT_IDLE_GREASE",
	"SNDLVL_STATIC",
	"killicon",
	"ACT_SIGNAL2",
	"DProperty_VectorColor",
	"DCollapsibleCategory",
	"FCVAR_ARCHIVE_XBOX",
	"KEY_PAD_MULTIPLY",
	"fingerposer",
	"RENDERGROUP_OPAQUE",
	"require",
	"GetGlobalBool",
	"SCHED_COMBAT_WALK",
	"ACT_DEEPIDLE2",
	"ACT_HL2MP_SWIM_IDLE_PASSIVE",
	"SNDLVL_50dB",
	"NAV_MESH_FUNC_COST",
	"rawequal",
	"ACT_MP_GESTURE_VC_THUMBSUP",
	"ACT_DOD_RUN_IDLE_30CAL",
	"ACT_DRIVE_AIRBOAT",
	"ACT_GMOD_SIT_ROLLERCOASTER",
	"PrecacheScene",
	"SetGlobalBool",
	"IsInGame",
	"HUD_PRINTNOTIFY",
	"ACT_DOD_SPRINT_IDLE_MP40",
	"TYPE_SAVE",
	"ParticleEffect",
	"ACT_RUN_AIM_STEALTH",
	"ACT_DOD_RELOAD_PRONE_C96",
	"KEY_LEFT",
	"EFL_DONTWALKON",
	"PATTACH_ABSORIGIN",
	"ACT_HL2MP_GESTURE_RELOAD_PHYSGUN",
	"ACT_HL2MP_SWIM",
	"CHAN_VOICE_BASE",
	"ACT_DOD_PRIMARYATTACK_PRONE_GREN_FRAG",
	"ACT_HL2MP_WALK_CROUCH_ANGRY",
	"ACT_DOD_RUN_ZOOM_PSCHRECK",
	"ACT_DOD_PRONEWALK_IDLE_TNT",
	"TextEntryLoseFocus",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1",
	"IsColor",
	"ACT_RANGE_ATTACK2",
	"ACT_DOD_WALK_AIM_GREN_FRAG",
	"BONE_USED_BY_VERTEX_LOD4",
	"CONTENTS_TEAM3",
	"ACT_DOD_WALK_AIM_SPADE",
	"ACT_DOD_PRIMARYATTACK_PRONE_GREASE",
	"PresetEditor",
	"FVPHYSICS_PLAYER_HELD",
	"SetGlobalEntity",
	"ACT_HL2MP_SWIM_KNIFE",
	"ACT_GMOD_GESTURE_MELEE_SHOVE_1HAND",
	"ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE",
	"GetSaveFileDetails",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED_MG",
	"ACT_RUN_STEALTH",
	"coroutine",
	"GetGlobalEntity",
	"ACT_VM_IDLE_DEPLOYED_EMPTY",
	"HITGROUP_LEFTARM",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED_MG34",
	"TEXFILTER",
	"SF_PHYSPROP_PREVENT_PICKUP",
	"ACT_HL2MP_WALK_CROUCH",
	"DrawToyTown",
	"DBubbleContainer",
	"EndTooltip",
	"MsgC",
	"SCHED_FLEE_FROM_BEST_SOUND",
	"ACT_MP_CROUCH_SECONDARY",
	"ACT_OBJ_UPGRADING",
	"ACT_DOD_CROUCH_AIM",
	"SF_NPC_ALTCOLLISION",
	"ACT_MP_AIRWALK_PRIMARY",
	"ACT_DOD_STAND_IDLE_TNT",
	"ACT_MP_GRENADE1_DRAW",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED_FG42",
	"ACT_VM_PULLBACK_HIGH_BAKE",
	"ACT_RANGE_ATTACK_AR2",
	"SF_NPC_GAG",
	"UpdateLoadPanel",
	"CHAN_REPLACE",
	"ACT_VM_ISHOOT_M203",
	"ACT_DOD_RELOAD_PRONE_RIFLEGRENADE",
	"FCVAR_SPONLY",
	"TRACER_NONE",
	"DTooltip",
	"KEY_HOME",
	"ACT_IDLE_STEALTH_PISTOL",
	"CAP_MOVE_SHOOT",
	"Task",
	"ACT_VM_DRAW_DEPLOYED",
	"TYPE_CONVAR",
	"ACT_GMOD_TAUNT_DANCE",
	"ACT_FLINCH_CHEST",
	"ACT_DOD_HS_CROUCH_KNIFE",
	"ACT_DOD_PRIMARYATTACK_DEPLOYED_MG",
	"JOYSTICK_FIRST",
	"ACT_MP_SECONDARY_GRENADE2_IDLE",
	"SCHED_SCRIPTED_FACE",
	"ACT_DOD_RUN_IDLE_RIFLE",
	"ACT_MP_ATTACK_STAND_GRENADE_SECONDARY",
	"ACT_IDLE_RIFLE",
	"ACT_HL2MP_SWIM_AR2",
	"KEY_M",
	"ACT_SLAM_TRIPMINE_IDLE",
	"ContentIcon",
	"ACT_VM_PRIMARYATTACK_DEPLOYED",
	"DrawBloom",
	"ACT_DOD_CROUCHWALK_ZOOM_RIFLE",
	"DAlphaBar",
	"MAT_SNOW",
	"ACT_VM_IDLE",
	"ACT_MP_RELOAD_AIRWALK",
	"ACT_DOD_WALK_ZOOM_RIFLE",
	"IMAGE_FORMAT_RGB565",
	"ACT_DOD_PRONE_ZOOMED",
	"ACT_VM_DRYFIRE",
	"TEXTUREFLAGS_SINGLECOPY",
	"ACT_HL2MP_IDLE_CROUCH_MAGIC",
	"ACT_MP_RELOAD_CROUCH_PRIMARY",
	"STUDIO_STATIC_LIGHTING",
	"ACT_DOD_CROUCH_ZOOM_BOLT",
	"ACT_LOOKBACK_LEFT",
	"SNDLVL_130dB",
	"EFL_KEEP_ON_RECREATE_ENTITIES",
	"ACT_MP_ATTACK_CROUCH_GRENADE",
	"IN_MOVERIGHT",
	"EFL_DIRTY_ABSANGVELOCITY",
	"TRACER_RAIL",
	"COND_PROVOKED",
	"PLAYER_WALK",
	"ACT_MP_ATTACK_STAND_GRENADE_MELEE",
	"ACT_DOD_HS_CROUCH_BAZOOKA",
	"ACT_HL2MP_IDLE_CROUCH_FIST",
	"ACT_DOD_STAND_IDLE",
	"ACT_DOD_PRIMARYATTACK_GREASE",
	"ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_RIFLE",
	"ACT_DIEFORWARD",
	"FFT_2048",
	"ACT_DOD_CROUCHWALK_IDLE_BAZOOKA",
	"SNDLVL_90dB",
	"DrawMotionBlur",
	"DPanel",
	"MAT_METAL",
	"EF_NOSHADOW",
	"ACT_MP_SECONDARY_GRENADE1_IDLE",
	"ACT_HL2MP_JUMP_ZOMBIE",
	"ACT_VM_UNDEPLOY_8",
	"COLLISION_GROUP_NONE",
	"ACT_VM_DEPLOYED_IRON_IN",
	"ACT_MP_ATTACK_STAND_GRENADE",
	"RENDERMODE_TRANSALPHADD",
	"ACT_MP_JUMP_MELEE",
	"ACT_MP_JUMP_SECONDARY",
	"Either",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_CAMERA",
	"KEY_W",
	"SCHED_COMBAT_PATROL",
	"ACT_FLINCH_HEAD",
	"ACT_DROP_WEAPON",
	"NOTIFY_CLEANUP",
	"DCategoryList",
	"ACT_SPECIAL_ATTACK1",
	"ACT_DOD_PRONEWALK_IDLE_BAZOOKA",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE_01",
	"ACT_GAUSS_SPINCYCLE",
	"D_HT",
	"FL_CONVEYOR",
	"ACT_GMOD_TAUNT_MUSCLE",
	"TYPE_TEXTURE",
	"DLabelURL",
	"list",
	"DMG_NEVERGIB",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW",
	"ACT_DOD_STAND_ZOOM_BAZOOKA",
	"ACT_DOD_PRONE_DEPLOY_TOMMY",
	"ACT_DOD_RUN_AIM_30CAL",
	"ACT_DOD_PRONEWALK_IDLE_BOLT",
	"ACT_DOD_RELOAD_PRONE_TOMMY",
	"FL_UNBLOCKABLE_BY_PLAYER",
	"ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED",
	"ACT_SLAM_STICKWALL_ATTACH2",
	"ACT_HL2MP_WALK_ZOMBIE_05",
	"ACT_DOD_CROUCH_IDLE",
	"ACT_MP_MELEE_GRENADE2_IDLE",
	"isfunction",
	"SetPhysConstraintSystem",
	"STENCIL_DECR",
	"ACT_VM_DEPLOY",
	"KEY_XSTICK2_RIGHT",
	"ACT_DOD_RUN_IDLE_MP44",
	"CREATERENDERTARGETFLAGS_HDR",
	"ACT_BUSY_LEAN_BACK_ENTRY",
	"MATERIAL_LINES",
	"Particle",
	"ACT_DOD_STAND_IDLE_RIFLE",
	"SCHED_RUN_FROM_ENEMY",
	"TranslateDownloadableName",
	"ACT_DOD_RELOAD_DEPLOYED_30CAL",
	"ACT_DOD_DEFUSE_TNT",
	"kRenderFxPulseFastWider",
	"FindMetaTable",
	"RENDERGROUP_BOTH",
	"ACT_DOD_WALK_AIM_PSCHRECK",
	"RandomPairs",
	"SNDLVL_NORM",
	"ACT_VM_ISHOOT",
	"BONE_SCREEN_ALIGN_CYLINDER",
	"PLAYERANIMEVENT_FLINCH_LEFTARM",
	"player_manager",
	"ACT_MP_ATTACK_CROUCH_GRENADE_MELEE",
	"ACT_VM_IDLE_4",
	"SF_NPC_FADE_CORPSE",
	"ACT_DO_NOT_DISTURB",
	"ACT_VM_DEPLOYED_IRON_OUT",
	"ACT_RANGE_ATTACK_PISTOL_LOW",
	"ACT_DOD_HS_IDLE_BAZOOKA",
	"NPC",
	"ACT_DOD_STAND_IDLE_MG",
	"ACT_WALK_CROUCH",
	"Weapon",
	"FL_OBJECT",
	"ACT_MP_AIRWALK_PDA",
	"ACT_IDLE_AIM_RELAXED",
	"DHorizontalScroller",
	"isvector",
	"ACT_DOD_WALK_AIM_BAZOOKA",
	"KEY_SLASH",
	"ACT_RANGE_ATTACK_SMG2",
	"COND_REPEATED_DAMAGE",
	"ACT_TRANSITION",
	"DTab",
	"MATERIAL_TRIANGLES",
	"ACT_DOD_CROUCH_IDLE_TNT",
	"FVPHYSICS_WAS_THROWN",
	"DNotify",
	"ACT_MP_ATTACK_STAND_PRIMARY",
	"ACT_MP_MELEE_GRENADE1_DRAW",
	"SCHED_ALERT_FACE",
	"ACT_HL2MP_WALK_CROUCH_SLAM",
	"KEY_XBUTTON_RIGHT",
	"ACT_VM_HITCENTER2",
	"ACT_DOD_CROUCHWALK_IDLE_C96",
	"ACT_MP_RELOAD_SWIM_LOOP",
	"KEY_XBUTTON_X",
	"SNDLVL_75dB",
	"ACT_DOD_PRIMARYATTACK_PRONE_BOLT",
	"ACT_MP_RELOAD_STAND_SECONDARY_LOOP",
	"COND_NO_CUSTOM_INTERRUPTS",
	"ACT_DOD_IDLE_ZOOMED",
	"CUserCmd",
	"BOX_BACK",
	"ACT_DOD_RUN_IDLE_PISTOL",
	"ACT_DOD_PRONE_DEPLOYED",
	"FCVAR_NOTIFY",
	"KEY_COMMA",
	"ACT_DOD_WALK_ZOOMED",
	"ACT_RELOAD_PISTOL",
	"TYPE_DLIGHT",
	"CLASS_MILITARY",
	"ACT_MP_DEPLOYED",
	"ACT_VM_DEPLOYED_IN",
	"OBS_MODE_DEATHCAM",
	"Format",
	"ACT_DOD_SPRINT_AIM_GREN_STICK",
	"CAP_WEAPON_RANGE_ATTACK1",
	"ACT_MP_JUMP_LAND_SECONDARY",
	"CONTENTS_WATER",
	"ACT_OBJ_DISMANTLING",
	"EyePos",
	"FingerVar",
	"PathFollower",
	"ACT_DOD_RELOAD_C96",
	"IN_BULLRUSH",
	"DLabelEditable",
	"ACT_HL2MP_GESTURE_RELOAD_SUITCASE",
	"CONTENTS_MONSTERCLIP",
	"MAT_WARPSHIELD",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_ANGRY",
	"ACT_DOD_HS_IDLE_K98",
	"KEY_PERIOD",
	"ACT_DOD_SPRINT_IDLE_BAR",
	"ACT_DOD_CROUCH_AIM_MP44",
	"ACT_STEP_RIGHT",
	"ACT_RUNTOIDLE",
	"TYPE_STRING",
	"SCHED_BACK_AWAY_FROM_SAVE_POSITION",
	"ACT_VM_MISSLEFT",
	"FFT_512",
	"ACT_DYINGLOOP",
	"ACT_DOD_CROUCH_AIM_BAR",
	"frame_blend",
	"IMAGE_FORMAT_RGBA16161616F",
	"ValidPanel",
	"NAV_MESH_WALK",
	"RememberCursorPosition",
	"ACT_HL2MP_JUMP_AR2",
	"MAT_SAND",
	"KEY_PAD_7",
	"ACT_DOD_CROUCH_IDLE_MP40",
	"ACT_IDLE_ON_FIRE",
	"KEY_J",
	"ACT_DOD_RUN_AIM_RIFLE",
	"CLASS_PROTOSNIPER",
	"RenderSuperDoF",
	"kRenderFxRagdoll",
	"CAP_USE_SHOT_REGULATOR",
	"ACT_SLAM_TRIPMINE_TO_STICKWALL_ND",
	"ACT_HL2MP_GESTURE_RELOAD_MELEE",
	"ACT_PLAYER_WALK_FIRE",
	"SortedPairsByValue",
	"ACT_GESTURE_MELEE_ATTACK1",
	"SCHED_VICTORY_DANCE",
	"ACT_MP_SWIM_SECONDARY",
	"DScrollBarGrip",
	"ClearBackgroundImages",
	"ACT_GESTURE_TURN_RIGHT90",
	"KEY_SEMICOLON",
	"CAP_SIMPLE_RADIUS_DAMAGE",
	"ACT_DOD_STAND_IDLE_C96",
	"ACT_SHIELD_KNOCKBACK",
	"ACT_HL2MP_SWIM_IDLE",
	"ACT_RUN_RPG_RELAXED",
	"ACT_HL2MP_SWIM_IDLE_MELEE",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_SLAM",
	"ACT_GMOD_GESTURE_POINT",
	"ACT_DOD_PRONE_DEPLOY_MG",
	"ACT_RELOAD_SHOTGUN_LOW",
	"ACT_IDLE_SHOTGUN_AGITATED",
	"DModelSelectMulti",
	"ACT_VM_IOUT",
	"STENCILCOMPARISONFUNCTION_GREATEREQUAL",
	"ACT_DOD_RELOAD_GARAND",
	"DMenu",
	"ACT_WALK_HURT",
	"ACT_DI_ALYX_ANTLION",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_3",
	"SCHED_TAKE_COVER_FROM_ENEMY",
	"ACT_MP_ATTACK_SWIM_PREFIRE",
	"ACT_DOD_RUN_AIM_GREN_STICK",
	"ACT_VM_SPRINT_IDLE",
	"ACT_DOD_CROUCHWALK_AIM_GREN_STICK",
	"ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP",
	"saverestore",
	"MASK_OPAQUE_AND_NPCS",
	"ACT_VM_DEPLOY_5",
	"ai",
	"surface",
	"ACT_GESTURE_FLINCH_RIGHTARM",
	"ACT_SCRIPT_CUSTOM_MOVE",
	"ACT_DOD_PRONE_ZOOM_PSCHRECK",
	"ACT_VM_PULLPIN",
	"ACT_DOD_RELOAD_PRONE_K43",
	"HULL_HUMAN",
	"ACT_IDLE_ANGRY_SMG1",
	"CAP_NO_HIT_PLAYER",
	"ACT_DOD_PRONE_AIM_BAZOOKA",
	"ACT_HL2MP_RUN_SCARED",
	"ACT_GET_DOWN_CROUCH",
	"ACT_RUN_PISTOL",
	"ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY",
	"DProperties",
	"ACT_DOD_WALK_AIM_MG",
	"ACT_SLAM_THROW_THROW_ND",
	"ACT_STRAFE_RIGHT",
	"COLLISION_GROUP_WORLD",
	"ACT_DOD_PRIMARYATTACK_PISTOL",
	"NAV_MESH_HAS_ELEVATOR",
	"DGrid",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE",
	"ACT_DOD_CROUCH_ZOOMED",
	"DMG_FALL",
	"DImage",
	"COND_FLOATING_OFF_GROUND",
	"OBS_MODE_FREEZECAM",
	"ChangeBackground",
	"cookie",
	"GetOverlayPanel",
	"MAT_GRASS",
	"ACT_HL2MP_GESTURE_RELOAD_GRENADE",
	"ACT_MP_JUMP_START_PRIMARY",
	"constraint",
	"DListView_Line",
	"ACT_IDLE_PISTOL",
	"ACT_DOD_PRIMARYATTACK_PSCHRECK",
	"MOUSE_LEFT",
	"kRenderFxPulseSlowWide",
	"ACT_HL2MP_WALK_CROUCH_REVOLVER",
	"ACT_ZOMBIE_LEAP_START",
	"ACT_VM_IDLE_TO_LOWERED",
	"KEY_B",
	"MOVETYPE_WALK",
	"ACT_RIDE_MANNED_GUN",
	"ACT_MP_JUMP_PRIMARY",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN",
	"ACT_DOD_STAND_AIM_SPADE",
	"SortedPairs",
	"ACT_CROUCHIDLE_AGITATED",
	"ACT_SMG2_RELOAD2",
	"KEY_XBUTTON_LEFT",
	"NAV_MESH_NO_MERGE",
	"NORTH_EAST",
	"ACT_CROUCHING_GRENADEIDLE",
	"ACT_VM_PRIMARYATTACK_3",
	"ACT_HANDGRENADE_THROW2",
	"ACT_DOD_RELOAD_PRONE_M1CARBINE",
	"ACT_GESTURE_RANGE_ATTACK_AR2",
	"ACT_MP_ATTACK_STAND_GRENADE_BUILDING",
	"COND_SEE_HATE",
	"ACT_MP_ATTACK_SWIM_BUILDING",
	"ACT_DOD_STAND_AIM_30CAL",
	"BLEND_ONE_MINUS_SRC_COLOR",
	"ACT_IDLE_AIM_RIFLE_STIMULATED",
	"COND_CAN_RANGE_ATTACK2",
	"ACT_DOD_RELOAD_CROUCH_BOLT",
	"DeriveGamemode",
	"ACT_HL2MP_JUMP_MELEE2",
	"ACT_MP_GESTURE_VC_FISTPUMP_PDA",
	"FVPHYSICS_DMG_SLICE",
	"ACT_SIGNAL3",
	"ACT_SHIELD_UP",
	"ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE",
	"ACT_HL2MP_SWIM_IDLE_PHYSGUN",
	"ACT_DOD_STAND_IDLE_GREASE",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE",
	"TYPE_LIGHTUSERDATA",
	"ACT_DOD_CROUCH_IDLE_MP44",
	"ACT_VM_DFIREMODE",
	"setmetatable",
	"SNDLVL_35dB",
	"ACT_ZOMBIE_LEAPING",
	"ACT_DOD_RELOAD_PRONE",
	"ACT_SHIELD_UP_IDLE",
	"ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED",
	"KEY_I",
	"ACT_HL2MP_SIT_RPG",
	"ACT_DOD_RELOAD_TOMMY",
	"getmetatable",
	"KEY_N",
	"ACT_SLAM_THROW_ND_DRAW",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE",
	"ACT_HL2MP_IDLE_ZOMBIE",
	"rawset",
	"CNewParticleEffect",
	"ACT_MP_GESTURE_VC_FINGERPOINT_MELEE",
	"ACT_HL2MP_RUN_FAST",
	"EFL_NO_GAME_PHYSICS_SIMULATION",
	"ACT_SHIELD_DOWN",
	"JOYSTICK_LAST_POV_BUTTON",
	"ACT_DOD_RUN_AIM_MP44",
	"SNDLVL_85dB",
	"SURF_NOLIGHT",
	"GetDefaultLoadingHTML",
	"ACT_VM_SPRINT_LEAVE",
	"ACT_DOD_PRIMARYATTACK_PRONE_BAR",
	"SCHED_DISARM_WEAPON",
	"KEY_XBUTTON_STICK2",
	"os",
	"ACT_DOD_PRONE_AIM_GREN_STICK",
	"ACT_VM_RELEASE",
	"ACT_HL2MP_WALK_SLAM",
	"Derma_Anim",
	"ACT_HL2MP_SWIM_IDLE_GRENADE",
	"ACT_VM_IDLE_3",
	"ENT_ANIM",
	"ACT_MP_RELOAD_CROUCH",
	"construct",
	"ACT_DOD_RUN_IDLE_MG",
	"KEY_V",
	"ACT_DOD_SPRINT_IDLE_TNT",
	"EFL_KILLME",
	"ACT_VM_LOWERED_TO_IDLE",
	"COND_HEAR_DANGER",
	"ACT_MP_GESTURE_VC_THUMBSUP_PDA",
	"ACT_MP_STAND_MELEE",
	"COND_NPC_UNFREEZE",
	"CLuaParticle",
	"ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY",
	"ACT_HL2MP_IDLE_CROUCH_SUITCASE",
	"ACT_SMALL_FLINCH",
	"TEXTUREFLAGS_ALL_MIPS",
	"EyeVector",
	"ACT_ROLL_RIGHT",
	"ACT_PHYSCANNON_UPGRADE",
	"ACT_MP_MELEE_GRENADE1_ATTACK",
	"ACT_DI_ALYX_ZOMBIE_MELEE",
	"SendUserMessage",
	"ACT_SHOTGUN_PUMP",
	"FL_SWIM",
	"Tool",
	"PrecacheSentenceFile",
	"ACT_DOD_CROUCHWALK_IDLE_TOMMY",
	"ACT_DIE_GUTSHOT",
	"ACT_RPG_HOLSTER_UNLOADED",
	"ACT_RUN_AIM_SHOTGUN",
	"ACT_RANGE_ATTACK2_LOW",
	"DListBoxItem",
	"ACT_DOD_STAND_AIM",
	"ACT_DOD_RUN_ZOOM_BAZOOKA",
	"CNavLadder",
	"ACT_READINESS_AGITATED_TO_STIMULATED",
	"ACT_READINESS_STIMULATED_TO_RELAXED",
	"ACT_DOD_HS_CROUCH",
	"ACT_BUSY_SIT_GROUND_EXIT",
	"ACT_HL2MP_WALK_CROUCH_MELEE2",
	"ACT_VM_UNDEPLOY_5",
	"EFL_NO_DAMAGE_FORCES",
	"ACT_MP_RELOAD_STAND_PRIMARY",
	"KEY_PAD_3",
	"ACT_DOD_WALK_IDLE_TOMMY",
	"COLLISION_GROUP_NPC",
	"ispanel",
	"ACT_RELOAD_LOW",
	"KEY_PAD_DECIMAL",
	"ACT_DOD_RELOAD_CROUCH_BAZOOKA",
	"DTree_Node",
	"ACT_RPG_FIDGET_UNLOADED",
	"AchievementIcon",
	"ACT_BARNACLE_HIT",
	"ACT_DOD_RUN_AIM_MP40",
	"ACT_HL2MP_GESTURE_RELOAD_CAMERA",
	"gmod",
	"IconEditor",
	"MatSelect",
	"ACT_VM_IDLE_DEPLOYED_2",
	"SNDLVL_105dB",
	"ACT_DOD_CROUCH_AIM_MP40",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_PHYSGUN",
	"DLabel",
	"ACT_HL2MP_IDLE_CROUCH_SMG1",
	"ACT_RUN",
	"ACT_VM_PULLBACK",
	"FCVAR_PRINTABLEONLY",
	"ACT_SIGNAL1",
	"KEY_DELETE",
	"EmitSound",
	"CHAN_VOICE",
	"DListView",
	"STUDIO_GENERATE_STATS",
	"ACT_SWIM",
	"ACT_DOD_RELOAD_PISTOL",
	"COND_ENEMY_FACING_ME",
	"TYPE_FUNCTION",
	"ACT_DOD_PRIMARYATTACK_DEPLOYED_30CAL",
	"SCHED_PATROL_RUN",
	"ACT_MP_ATTACK_STAND_SECONDARY",
	"ACT_VM_UNDEPLOY_6",
	"ACT_VM_UNDEPLOY_3",
	"COND_HAVE_TARGET_LOS",
	"EFL_TOUCHING_FLUID",
	"ACT_DOD_RUN_AIM_C96",
	"ACT_GESTURE_RANGE_ATTACK_TRIPWIRE",
	"ACT_HL2MP_SWIM_IDLE_REVOLVER",
	"ACT_HL2MP_IDLE_CROSSBOW",
	"ACT_DOD_PRONE_DEPLOY_30CAL",
	"ACT_DOD_PRONEWALK_IDLE_PISTOL",
	"ACT_OVERLAY_SHIELD_KNOCKBACK",
	"util",
	"ACT_DOD_CROUCH_IDLE_BAR",
	"ACT_HL2MP_SWIM_SUITCASE",
	"ACT_PHYSCANNON_ANIMATE_PRE",
	"IncludeCS",
	"package",
	"ACT_COVER_LOW",
	"NumDownloadables",
	"BOX_RIGHT",
	"ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY",
	"ACT_MP_RELOAD_CROUCH_PRIMARY_END",
	"ACT_OBJ_STARTUP",
	"FVPHYSICS_HEAVY_OBJECT",
	"ACT_HL2MP_JUMP_PHYSGUN",
	"CurTime",
	"WEAPON_PROFICIENCY_VERY_GOOD",
	"COND_HEALTH_ITEM_AVAILABLE",
	"ACT_IDLE_AGITATED",
	"OBS_MODE_NONE",
	"GetRenderTargetEx",
	"RENDERGROUP_OPAQUE_HUGE",
	"WEAPON_PROFICIENCY_AVERAGE",
	"ACT_HL2MP_WALK_ANGRY",
	"COLLISION_GROUP_DEBRIS_TRIGGER",
	"USE_TOGGLE",
	"TEXT_ALIGN_RIGHT",
	"USE_SET",
	"ACT_MP_GRENADE1_IDLE",
	"TYPE_MATERIAL",
	"DOF_Start",
	"OBS_MODE_CHASE",
	"CLASS_VORTIGAUNT",
	"TYPE_VIDEO",
	"TYPE_VECTOR",
	"TYPE_USERMSG",
	"FCVAR_ARCHIVE",
	"ACT_VM_RECOIL3",
	"KEY_H",
	"TYPE_USERCMD",
	"TYPE_THREAD",
	"ChangeTooltip",
	"ACT_DOD_SPRINT_IDLE_MP44",
	"ACT_HL2MP_WALK_MELEE",
	"SlideBar",
	"ACT_VM_MISSCENTER",
	"NextBot",
	"ACT_MP_DOUBLEJUMP",
	"DTextEntry",
	"JS_Utility",
	"TYPE_SOUNDHANDLE",
	"DScrollPanel",
	"ACT_VM_DEPLOY_3",
	"ACT_MP_JUMP_START_SECONDARY",
	"TEXTUREFLAGS_UNUSED_80000000",
	"ACT_GESTURE_RELOAD",
	"ACT_MP_GESTURE_VC_NODNO_PDA",
	"MOVECOLLIDE_FLY_CUSTOM",
	"ACT_HL2MP_IDLE_AR2",
	"TYPE_SOUND",
	"TYPE_SCRIPTEDVEHICLE",
	"TYPE_RESTORE",
	"ACT_MP_GESTURE_VC_HANDMOUTH",
	"TYPE_RECIPIENTFILTER",
	"TYPE_PROJECTEDTEXTURE",
	"ACT_MP_JUMP_LAND",
	"ACT_MELEE_ATTACK2",
	"ACT_VM_DRYFIRE_LEFT",
	"IRestore",
	"ACT_DOD_CROUCHWALK_ZOOMED",
	"ACT_VM_IDLE_7",
	"CONTENTS_DETAIL",
	"TYPE_PIXELVISHANDLE",
	"TYPE_PHYSOBJ",
	"SCHED_COMBAT_STAND",
	"IMesh",
	"ACT_DOD_CROUCH_AIM_MG",
	"MAT_TILE",
	"ACT_STEP_FORE",
	"JOYSTICK_LAST_BUTTON",
	"TYPE_PATH",
	"ACT_DOD_CROUCH_AIM_GREN_STICK",
	"TYPE_PARTICLEEMITTER",
	"ACT_FIRE_LOOP",
	"ACT_GET_UP_STAND",
	"TYPE_PARTICLE",
	"TYPE_PANEL",
	"TYPE_NUMBER",
	"TYPE_NIL",
	"EFL_SERVER_ONLY",
	"gameevent",
	"ACT_SIGNAL_RIGHT",
	"ACT_SLAM_THROW_TO_STICKWALL_ND",
	"ACT_DOD_RELOAD_CROUCH_C96",
	"ACT_DOD_RELOAD_BAZOOKA",
	"TYPE_NAVAREA",
	"ACT_FLINCH_LEFTLEG",
	"TYPE_MOVEDATA",
	"ACT_RUN_CROUCH",
	"ACT_SWIM_IDLE",
	"TYPE_MATRIX",
	"USE_ON",
	"ACT_MP_PRIMARY_GRENADE1_DRAW",
	"ACT_VM_IDLE_SILENCED",
	"ACT_RPG_DRAW_UNLOADED",
	"ACT_VM_DEPLOY_2",
	"ACT_CLIMB_DOWN",
	"TYPE_LOCOMOTION",
	"ModelImage",
	"FSOLID_FORCE_WORLD_ALIGNED",
	"IN_WALK",
	"ACT_DOD_CROUCHWALK_AIM_GREN_FRAG",
	"ACT_BUSY_SIT_GROUND",
	"TYPE_IMESH",
	"ACT_GESTURE_FLINCH_STOMACH",
	"ACT_CROUCHIDLE_AIM_STIMULATED",
	"ACT_DOD_RELOAD_PRONE_PSCHRECK",
	"TYPE_ENTITY",
	"Model",
	"TEXTUREFLAGS_POINTSAMPLE",
	"IMAGE_FORMAT_BGRA8888",
	"TYPE_DAMAGEINFO",
	"ACT_HL2MP_SWIM_IDLE_KNIFE",
	"ACT_DOD_CROUCH_AIM_SPADE",
	"ACT_DOD_STAND_AIM_GREN_FRAG",
	"ClientsideModel",
	"TYPE_COUNT",
	"RemoveTooltip",
	"COND_BEHIND_ENEMY",
	"TYPE_ANGLE",
	"NAV_MESH_RUN",
	"KEY_F9",
	"CEffectData",
	"TRANSMIT_NEVER",
	"TRANSMIT_ALWAYS",
	"ACT_MP_ATTACK_SWIM_GRENADE_BUILDING",
	"SCHED_AMBUSH",
	"MATERIAL_TRIANGLE_STRIP",
	"ai_task",
	"STUDIO_WIREFRAME_VCOLLIDE",
	"EF_NORECEIVESHADOW",
	"ACT_HL2MP_RUN_MELEE",
	"TRACER_LINE",
	"net",
	"AngleRand",
	"COND_TOO_FAR_TO_ATTACK",
	"ACT_GMOD_TAUNT_ROBOT",
	"ACT_SLAM_DETONATOR_THROW_DRAW",
	"ACT_RANGE_ATTACK_SHOTGUN",
	"ACT_SLAM_DETONATOR_DRAW",
	"ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY",
	"TEXTUREFLAGS_UNUSED_10000000",
	"TEXTUREFLAGS_SSBUMP",
	"TEXTUREFLAGS_VERTEXTEXTURE",
	"ACT_READINESS_RELAXED_TO_STIMULATED_WALK",
	"TEXTUREFLAGS_CLAMPU",
	"TEXTUREFLAGS_UNUSED_01000000",
	"TEXTUREFLAGS_NODEPTHBUFFER",
	"CONTENTS_CURRENT_0",
	"ACT_HL2MP_WALK_CROUCH_RPG",
	"DSlider",
	"util.worldpicker",
	"ACT_HL2MP_SWIM_IDLE_SMG1",
	"ACT_HL2MP_WALK_GRENADE",
	"ContextBase",
	"ACT_MP_RELOAD_STAND_SECONDARY",
	"ACT_IDLETORUN",
	"NORTH",
	"IN_ATTACK",
	"ACT_OVERLAY_GRENADEIDLE",
	"COND_BETTER_WEAPON_AVAILABLE",
	"TEXTUREFLAGS_IMMEDIATE_CLEANUP",
	"TEXTUREFLAGS_NODEBUGOVERRIDE",
	"KEY_F11",
	"TEXTUREFLAGS_RENDERTARGET",
	"ACT_IDLE_ANGRY_MELEE",
	"TEXTUREFLAGS_EIGHTBITALPHA",
	"TEXTUREFLAGS_ONEBITALPHA",
	"SuppressHostEvents",
	"IN_USE",
	"ACT_DOD_RELOAD_BAR",
	"NAV_MESH_NO_JUMP",
	"ACT_HL2MP_IDLE_CROUCH_MELEE2",
	"BLEND_DST_COLOR",
	"CONTENTS_MOVEABLE",
	"TEXTUREFLAGS_NOMIP",
	"ACT_VM_RELOAD_INSERT_PULL",
	"render",
	"ACT_MP_ATTACK_CROUCH_MELEE",
	"ACT_HL2MP_SWIM_IDLE_FIST",
	"ACT_DOD_PRONEWALK_IDLE_30CAL",
	"TEXTUREFLAGS_PWL_CORRECTED",
	"TEXTUREFLAGS_HINT_DXT5",
	"ACT_DOD_CROUCHWALK_AIM_PISTOL",
	"TEXTUREFLAGS_ANISOTROPIC",
	"TEXTUREFLAGS_CLAMPT",
	"TEXTUREFLAGS_CLAMPS",
	"navmesh",
	"TEXT_ALIGN_TOP",
	"TEXTUREFLAGS_TRILINEAR",
	"TEXT_ALIGN_LEFT",
	"ACT_GESTURE_RELOAD_PISTOL",
	"SCHED_RUN_FROM_ENEMY_MOB",
	"ACT_90_LEFT",
	"TEAM_SPECTATOR",
	"ENT_AI",
	"TEAM_UNASSIGNED",
	"TEAM_CONNECTING",
	"IsUselessModel",
	"BLEND_SRC_ALPHA",
	"COND_ENEMY_DEAD",
	"ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP",
	"MATERIAL_CULLMODE_CCW",
	"COND_NO_WEAPON",
	"SURF_NOSHADOWS",
	"COND_HAVE_ENEMY_LOS",
	"SURF_BUMPLIGHT",
	"FCVAR_NONE",
	"SURF_SKIP",
	"SURF_HINT",
	"HULL_TINY",
	"ACT_SLAM_TRIPMINE_ATTACH",
	"ControlPanel",
	"ACT_STAND",
	"SURF_TRIGGER",
	"LocalToWorld",
	"drive",
	"ACT_DOD_STAND_AIM_BAR",
	"GetMapList",
	"ACT_MP_ATTACK_STAND_STARTFIRE",
	"SURF_NOPORTAL",
	"ACT_MP_SWIM",
	"ACT_MP_GESTURE_VC_FINGERPOINT_PDA",
	"SURF_TRANS",
	"ACT_GESTURE_RANGE_ATTACK_HMG1",
	"GESTURE_SLOT_ATTACK_AND_RELOAD",
	"SURF_SKY",
	"ACT_ARM",
	"SURF_LIGHT",
	"DMG_VEHICLE",
	"ACT_DOD_SPRINT_IDLE_C96",
	"FL_WATERJUMP",
	"STUDIO_SSAODEPTHTEXTURE",
	"ACT_MP_SPRINT",
	"STUDIO_NOSHADOWS",
	"ACT_RELOAD_FINISH",
	"STUDIO_ITEM_BLINK",
	"ACT_DOD_RUN_IDLE_TNT",
	"ACT_VM_RECOIL2",
	"CLASS_PLAYER",
	"SCHED_WAKE_ANGRY",
	"STUDIO_VIEWXFORMATTACHMENTS",
	"ACT_CROSSBOW_DRAW_UNLOADED",
	"ACT_MP_GESTURE_VC_FISTPUMP_BUILDING",
	"STUDIO_RENDER",
	"ACT_MP_CROUCHWALK",
	"bit",
	"ACT_LOOKBACK_RIGHT",
	"STEPSOUNDTIME_WATER_FOOT",
	"CAP_INNATE_MELEE_ATTACK1",
	"KEY_F",
	"STEPSOUNDTIME_WATER_KNEE",
	"KEY_1",
	"ACT_MP_GESTURE_VC_NODYES_PDA",
	"STEPSOUNDTIME_ON_LADDER",
	"STEPSOUNDTIME_NORMAL",
	"STENCILOPERATION_DECR",
	"STENCILOPERATION_INCR",
	"STENCILOPERATION_INVERT",
	"STENCILOPERATION_DECRSAT",
	"ACT_SLAM_DETONATOR_DETONATE",
	"ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE",
	"STENCILOPERATION_INCRSAT",
	"MOVETYPE_OBSERVER",
	"ACT_WALK_AIM_RIFLE",
	"ACT_DOD_SECONDARYATTACK_PRONE_RIFLE",
	"STENCILOPERATION_ZERO",
	"ACT_MP_ATTACK_SWIM_PRIMARY",
	"STENCILOPERATION_KEEP",
	"ACT_DOD_STAND_IDLE_PSCHRECK",
	"jit",
	"FSOLID_NOT_STANDABLE",
	"ACT_MP_RELOAD_SWIM_PRIMARY_LOOP",
	"CLASS_PLAYER_ALLY",
	"ACT_VM_IDLE_EMPTY_LEFT",
	"STENCILCOMPARISONFUNCTION_NOTEQUAL",
	"STENCILCOMPARISONFUNCTION_GREATER",
	"STENCILCOMPARISONFUNCTION_LESSEQUAL",
	"ACT_DOD_CROUCH_AIM_BAZOOKA",
	"Derma_Query",
	"STENCILCOMPARISONFUNCTION_EQUAL",
	"ACT_DOD_CROUCHWALK_IDLE_BOLT",
	"EF_DIMLIGHT",
	"STENCILCOMPARISONFUNCTION_NEVER",
	"STENCIL_INCR",
	"STENCIL_INVERT",
	"ACT_HL2MP_SWIM_IDLE_ANGRY",
	"NODOCK",
	"STENCIL_DECRSAT",
	"ControlPresets",
	"STENCIL_INCRSAT",
	"STENCIL_REPLACE",
	"KEY_XSTICK2_DOWN",
	"PLAYERANIMEVENT_ATTACK_SECONDARY",
	"STENCIL_ZERO",
	"ACT_GESTURE_RANGE_ATTACK1",
	"ACT_GESTURE_FLINCH_CHEST",
	"STENCIL_ALWAYS",
	"STENCIL_GREATEREQUAL",
	"STENCIL_NOTEQUAL",
	"GetConVar_Internal",
	"DColorButton",
	"ACT_IDLE_CARRY",
	"FCVAR_CLIENTCMD_CAN_EXECUTE",
	"MAT_GRATE",
	"ACT_MP_WALK_PRIMARY",
	"STENCIL_LESSEQUAL",
	"STENCIL_EQUAL",
	"ACT_MP_JUMP_BUILDING",
	"HULL_WIDE_HUMAN",
	"STENCIL_NEVER",
	"ISave",
	"CLASS_COMBINE",
	"SOLID_CUSTOM",
	"ACT_DOD_RUN_IDLE",
	"ACT_GESTURE_RELOAD_SHOTGUN",
	"ACT_SLAM_STICKWALL_ND_DRAW",
	"ACT_SHOTGUN_RELOAD_START",
	"ACT_HL2MP_IDLE_CROUCH_GRENADE",
	"Mesh",
	"ACT_MP_RELOAD_SWIM_SECONDARY",
	"ACT_MP_JUMP_LAND_PDA",
	"ACT_DOD_SECONDARYATTACK_MP40",
	"SOLID_BSP",
	"ACT_DOD_SPRINT_IDLE_BAZOOKA",
	"ACT_DOD_PRONEWALK_IDLE_RIFLE",
	"SF_NPC_LONG_RANGE",
	"ACT_VM_UNDEPLOY_7",
	"ACT_VM_RELOAD_INSERT",
	"PLAYER_JUMP",
	"SNDLVL_150dB",
	"NAV_MESH_STAIRS",
	"SNDLVL_GUNFIRE",
	"SCHED_WAIT_FOR_SCRIPT",
	"ACT_BUSY_QUEUE",
	"ACT_RANGE_ATTACK1_LOW",
	"HSVToColor",
	"EF_ITEM_BLINK",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_7",
	"SNDLVL_120dB",
	"PrintTable",
	"ACT_HL2MP_GESTURE_RELOAD_KNIFE",
	"ACT_HL2MP_SWIM_IDLE_AR2",
	"DNumberScratch",
	"SNDLVL_110dB",
	"ACT_MP_STAND_SECONDARY",
	"SNDLVL_100dB",
	"DMG_SONIC",
	"ACT_SLAM_THROW_DRAW",
	"ACT_MP_SWIM_MELEE",
	"ACT_DOD_ZOOMLOAD_PSCHRECK",
	"mesh",
	"SCHED_RANGE_ATTACK2",
	"ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY",
	"SNDLVL_TALKING",
	"KEY_D",
	"ACT_OBJ_IDLE",
	"SNDLVL_80dB",
	"EFL_DORMANT",
	"ACT_DOD_SECONDARYATTACK_PRONE_BOLT",
	"CLASS_BULLSEYE",
	"DMG_RADIATION",
	"SNDLVL_65dB",
	"ACT_MP_RELOAD_CROUCH_SECONDARY",
	"Entity",
	"ACT_MP_PRIMARY_GRENADE2_DRAW",
	"TEXTUREFLAGS_NOLOD",
	"SNDLVL_55dB",
	"ACT_BUSY_SIT_CHAIR_EXIT",
	"KEY_RBRACKET",
	"SNDLVL_40dB",
	"MASK_BLOCKLOS_AND_NPCS",
	"SNDLVL_30dB",
	"ACT_HL2MP_WALK_CROUCH_SCARED",
	"ACT_DOD_RUN_IDLE_BAR",
	"ACT_DOD_PRONE_AIM_BOLT",
	"DShape",
	"FCVAR_USERINFO",
	"ACT_MP_RELOAD_AIRWALK_END",
	"CONTENTS_AREAPORTAL",
	"SNDLVL_25dB",
	"team",
	"ACT_DOD_HS_CROUCH_K98",
	"ACT_GMOD_TAUNT_PERSISTENCE",
	"DExpandButton",
	"COND_LOW_PRIMARY_AMMO",
	"RealTime",
	"ACT_VM_IDLE_M203",
	"ACT_RELOAD_SHOTGUN",
	"SND_DO_NOT_OVERWRITE_EXISTING_ON_CHANNEL",
	"ACT_DOD_WALK_AIM_TOMMY",
	"ACT_HL2MP_WALK_CAMERA",
	"MOVETYPE_FLY",
	"SND_SHOULDPAUSE",
	"ACT_SHOTGUN_RELOAD_FINISH",
	"ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED",
	"ACT_SHIPLADDER_DOWN",
	"ACT_MP_GESTURE_FLINCH_PRIMARY",
	"SND_DELAY",
	"SOUTH",
	"ACT_DOD_CROUCH_AIM_GREASE",
	"SND_STOP",
	"ACT_CROSSBOW_HOLSTER_UNLOADED",
	"ACT_VM_IDLE_DEPLOYED_7",
	"ACT_DOD_SPRINT_AIM_GREN_FRAG",
	"ACT_DOD_HS_IDLE_TOMMY",
	"SND_CHANGE_PITCH",
	"ACT_GESTURE_RANGE_ATTACK_PISTOL",
	"SND_CHANGE_VOL",
	"SND_NOFLAGS",
	"SIM_GLOBAL_FORCE",
	"CAP_INNATE_RANGE_ATTACK2",
	"ACT_DOD_PRIMARYATTACK_PRONE_30CAL",
	"ACT_HL2MP_WALK_PHYSGUN",
	"ACT_HL2MP_WALK_CROUCH_PHYSGUN",
	"ACT_DOD_STAND_ZOOM_BOLT",
	"ACT_MP_GESTURE_VC_NODNO_PRIMARY",
	"ACT_DOD_RUN_AIM_BOLT",
	"SIM_LOCAL_ACCELERATION",
	"SIM_NOTHING",
	"ACT_DOD_SECONDARYATTACK_CROUCH_MP40",
	"ACT_DOD_PRONE_ZOOM_RIFLE",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL",
	"KEY_XBUTTON_LEFT_SHOULDER",
	"effects",
	"UnPredictedCurTime",
	"ACT_HL2MP_IDLE_CROUCH_ZOMBIE",
	"SCHED_FLINCH_PHYSICS",
	"SF_PHYSBOX_MOTIONDISABLED",
	"ACT_DOD_WALK_AIM_MP44",
	"PLAYERANIMEVENT_FLINCH_RIGHTARM",
	"EyeAngles",
	"SF_NPC_WAIT_TILL_SEEN",
	"ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN",
	"SF_NPC_WAIT_FOR_SCRIPT",
	"SF_NPC_TEMPLATE",
	"SF_NPC_START_EFFICIENT",
	"BLOOD_COLOR_MECH",
	"SOLID_NONE",
	"gcinfo",
	"SF_NPC_FALL_TO_GROUND",
	"concommand",
	"SF_NPC_DROP_HEALTHKIT",
	"BLOOD_COLOR_ZOMBIE",
	"PLAYER_IN_VEHICLE",
	"SF_FLOOR_TURRET_CITIZEN",
	"Derma_Hook",
	"SF_CITIZEN_USE_RENDER_BOUNDS",
	"SF_CITIZEN_RANDOM_HEAD_MALE",
	"DNumPad",
	"ACT_RUN_AIM_RIFLE_STIMULATED",
	"ACT_DOD_PRONE_AIM_PSCHRECK",
	"FL_DONTTOUCH",
	"HULL_MEDIUM_TALL",
	"DMG_PARALYZE",
	"ACT_MP_RELOAD_STAND_END",
	"system",
	"SF_CITIZEN_IGNORE_SEMAPHORE",
	"SF_CITIZEN_FOLLOW",
	"KEY_SPACE",
	"SF_CITIZEN_AMMORESUPPLIER",
	"FL_INRAIN",
	"KEY_XBUTTON_UP",
	"URLLabel",
	"ACT_WALK_PISTOL",
	"KEY_PAGEDOWN",
	"STUDIO_DRAWTRANSLUCENTSUBMODELS",
	"SCHED_WAIT_FOR_SPEAK_FINISH",
	"ACT_IDLE_RPG",
	"SNDLVL_140dB",
	"SCHED_TARGET_FACE",
	"MAT_ANTLION",
	"IMAGE_FORMAT_RGBA8888",
	"ACT_VM_IDLE_2",
	"ACT_VM_THROW",
	"SCHED_TARGET_CHASE",
	"SCHED_TAKE_COVER_FROM_BEST_SOUND",
	"ACT_DOD_SPRINT_IDLE_PISTOL",
	"ACT_SHIPLADDER_UP",
	"SCHED_SWITCH_TO_PENDING_WEAPON",
	"SCHED_STANDOFF",
	"SCHED_SPECIAL_ATTACK2",
	"SCHED_SPECIAL_ATTACK1",
	"SCHED_SMALL_FLINCH",
	"SCHED_SLEEP",
	"SCHED_SHOOT_ENEMY_COVER",
	"ACT_DOD_PRIMARYATTACK_BAZOOKA",
	"SCHED_SCRIPTED_WALK",
	"SCHED_SCRIPTED_WAIT",
	"SCHED_SCRIPTED_RUN",
	"SCHED_SCRIPTED_CUSTOM_MOVE",
	"COND_NO_HEAR_DANGER",
	"SCHED_RUN_RANDOM",
	"SCHED_RUN_FROM_ENEMY_FALLBACK",
	"ACT_DOD_PRONE_AIM_C96",
	"KEY_LCONTROL",
	"MATERIAL_FOG_LINEAR_BELOW_FOG_Z",
	"ACT_DOD_PRIMARYATTACK_CROUCH_KNIFE",
	"SCHED_RANGE_ATTACK1",
	"GESTURE_SLOT_CUSTOM",
	"MAT_FOLIAGE",
	"ACT_DOD_RELOAD_PRONE_RIFLE",
	"DListView_DraggerBar",
	"SURF_NODECALS",
	"SCHED_NONE",
	"kRenderFxSpotlight",
	"ACT_DOD_RELOAD_MP40",
	"RENDERMODE_TRANSTEXTURE",
	"ACT_VM_UNUSABLE",
	"ACT_WALK_RPG_RELAXED",
	"SCHED_NEW_WEAPON",
	"ACT_GESTURE_TURN_LEFT45",
	"ACT_SMG2_IDLE2",
	"SCHED_MOVE_AWAY_FROM_ENEMY",
	"SCHED_MOVE_AWAY_FAIL",
	"ACT_DEPLOY",
	"next",
	"ACT_OBJ_DETERIORATING",
	"SCHED_MOVE_AWAY_END",
	"IN_WEAPON1",
	"ACT_DOD_CROUCHWALK_AIM_BAZOOKA",
	"ACT_SMG2_DRAW2",
	"VectorRand",
	"cvars",
	"SCHED_MOVE_AWAY",
	"DMenuOptionCVar",
	"SCHED_MELEE_ATTACK2",
	"KEY_T",
	"COND_WEAPON_PLAYER_IN_SPREAD",
	"SCHED_INVESTIGATE_SOUND",
	"ACT_MP_RELOAD_STAND",
	"utf8",
	"CONTENTS_GRATE",
	"MATERIAL_QUADS",
	"SCHED_INTERACTION_MOVE_TO_PARTNER",
	"IMaterial",
	"ACT_DOD_CROUCHWALK_AIM_PSCHRECK",
	"ACT_SLAM_STICKWALL_TO_THROW_ND",
	"SCHED_IDLE_WANDER",
	"SCHED_IDLE_WALK",
	"SCHED_IDLE_STAND",
	"ACT_MP_JUMP_FLOAT_PRIMARY",
	"ACT_DOD_CROUCH_AIM_C96",
	"ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW",
	"IsFriendEntityName",
	"EFFECT",
	"DProperty_Combo",
	"KEY_CAPSLOCKTOGGLE",
	"SCHED_FORCED_GO_RUN",
	"select",
	"SCHED_FORCED_GO",
	"ACT_DOD_SECONDARYATTACK_TOMMY",
	"RestoreCursorPosition",
	"SF_PHYSPROP_MOTIONDISABLED",
	"SCHED_FEAR_FACE",
	"ACT_SLAM_DETONATOR_HOLSTER",
	"ACT_DOD_RELOAD_RIFLE",
	"FVPHYSICS_CONSTRAINT_STATIC",
	"SCHED_FALL_TO_GROUND",
	"ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY",
	"DMG_NERVEGAS",
	"SCHED_FAIL_NOSTOP",
	"SCHED_FAIL_ESTABLISH_LINE_OF_FIRE",
	"SCHED_FAIL",
	"SCHED_ESTABLISH_LINE_OF_FIRE_FALLBACK",
	"ACT_HL2MP_WALK_CROUCH_SHOTGUN",
	"ACT_VM_IOUT_M203",
	"ACT_RUN_RIFLE",
	"ACT_HL2MP_RUN_PROTECTED",
	"ACT_PLAYER_CROUCH_WALK_FIRE",
	"SCHED_DROPSHIP_DUSTOFF",
	"SCHED_DIE_RAGDOLL",
	"IN_RIGHT",
	"SCHED_DIE",
	"ACT_MP_ATTACK_CROUCH_SECONDARY",
	"SCHED_COWER",
	"MASK_PLAYERSOLID",
	"ACT_SLAM_THROW_TO_STICKWALL",
	"SCHED_COMBAT_FACE",
	"COLLISION_GROUP_PUSHAWAY",
	"DEntityProperties",
	"SCHED_CHASE_ENEMY",
	"ToggleFavourite",
	"SCHED_BACK_AWAY_FROM_ENEMY",
	"HUD_PRINTCENTER",
	"ACT_MP_STAND_PDA",
	"ACT_DOD_RELOAD_DEPLOYED_FG42",
	"SCHED_ARM_WEAPON",
	"DMenuBar",
	"ACT_HL2MP_IDLE_SHOTGUN",
	"SF_CITIZEN_RANDOM_HEAD_FEMALE",
	"ACT_MP_GESTURE_VC_THUMBSUP_BUILDING",
	"FSOLID_ROOT_PARENT_ALIGNED",
	"SCHED_ALERT_SCAN",
	"SCHED_ALERT_REACT_TO_COMBAT_SOUND",
	"SCHED_ALERT_FACE_BESTSOUND",
	"SCHED_AISCRIPT",
	"ACT_HL2MP_WALK_SUITCASE",
	"ACT_VM_UNDEPLOY_1",
	"ACT_VM_ISHOOTDRY",
	"ACT_DOD_PRONE_ZOOM_FORWARD_BOLT",
	"ACT_RANGE_ATTACK1",
	"ACT_VM_UNUSABLE_TO_USABLE",
	"LAST_SHARED_SCHEDULE",
	"IMAGE_FORMAT_RGB888",
	"RT_SIZE_OFFSCREEN",
	"FrameTime",
	"RT_SIZE_FULL_FRAME_BUFFER",
	"COND_HEAR_COMBAT",
	"RT_SIZE_HDR",
	"ACT_DOD_CROUCHWALK_AIM_C96",
	"RT_SIZE_PICMIP",
	"ACT_MP_GESTURE_FLINCH_RIGHTLEG",
	"RT_SIZE_DEFAULT",
	"PLAYER_RELOAD",
	"DIconLayout",
	"RT_SIZE_NO_CHANGE",
	"COND_HEAR_PLAYER",
	"ACT_VM_CRAWL_M203",
	"RENDERMODE_WORLDGLOW",
	"RENDERMODE_TRANSADDFRAMEBLEND",
	"MATERIAL_RT_DEPTH_SHARED",
	"COND_HEAR_THUMPER",
	"CT_DEFAULT",
	"RENDERMODE_TRANSADD",
	"ACT_RANGE_AIM_AR2_LOW",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_4",
	"RENDERMODE_TRANSALPHA",
	"RENDERMODE_GLOW",
	"ACT_HL2MP_IDLE_CROUCH_PASSIVE",
	"SCHED_NEW_WEAPON_CHEAT",
	"CAP_MOVE_SWIM",
	"DListViewHeaderLabel",
	"KEY_UP",
	"ACT_CLIMB_UP",
	"RENDERMODE_NORMAL",
	"ACT_HL2MP_RUN_ANGRY",
	"RENDERGROUP_OTHER",
	"COND_NEW_ENEMY",
	"RENDERGROUP_OPAQUE_BRUSH",
	"ACT_DOD_SPRINT_AIM_SPADE",
	"ACT_DOD_CROUCH_ZOOM_BAZOOKA",
	"KEY_BACKQUOTE",
	"RENDERGROUP_VIEWMODEL_TRANSLUCENT",
	"ACT_WALK_SCARED",
	"ACT_VM_MISSCENTER2",
	"ACT_MELEE_ATTACK1",
	"RENDERGROUP_STATIC_HUGE",
	"KEY_L",
	"PLAYERANIMEVENT_SPAWN",
	"PLAYERANIMEVENT_SNAP_YAW",
	"ACT_DOD_RELOAD_CROUCH_RIFLE",
	"PLAYERANIMEVENT_RELOAD_LOOP",
	"PLAYERANIMEVENT_RELOAD_END",
	"ACT_IDLE_HURT",
	"PLAYERANIMEVENT_RELOAD",
	"ACT_HL2MP_GESTURE_RELOAD_SMG1",
	"KEY_U",
	"ACT_DOD_CROUCH_IDLE_TOMMY",
	"PLAYERANIMEVENT_FLINCH_LEFTLEG",
	"PLAYERANIMEVENT_FLINCH_HEAD",
	"GESTURE_SLOT_SWIM",
	"PLAYERANIMEVENT_FLINCH_CHEST",
	"CHAN_VOICE2",
	"ACT_MP_ATTACK_STAND_MELEE",
	"PLAYERANIMEVENT_DOUBLEJUMP",
	"PLAYERANIMEVENT_DIE",
	"PLAYERANIMEVENT_CUSTOM_SEQUENCE",
	"ACT_VM_DRAWFULL_M203",
	"ACT_DOD_PRIMARYATTACK_GREN_FRAG",
	"IN_WEAPON2",
	"PLAYERANIMEVENT_CUSTOM_GESTURE_SEQUENCE",
	"ACT_HL2MP_SWIM_IDLE_SCARED",
	"PLAYERANIMEVENT_CUSTOM_GESTURE",
	"PLAYERANIMEVENT_CUSTOM",
	"ServerLog",
	"PLAYERANIMEVENT_CANCEL",
	"ACT_HL2MP_WALK_CROUCH_SMG1",
	"DOF_OFFSET",
	"PLAYERANIMEVENT_ATTACK_PRIMARY",
	"ParticleEffectAttach",
	"PLAYERANIMEVENT_ATTACK_GRENADE",
	"SafeRemoveEntity",
	"ACT_DOD_CROUCH_AIM_PISTOL",
	"RadioButton",
	"ACT_DOD_CROUCHWALK_IDLE_BAR",
	"CLuaEmitter",
	"ACT_MP_RELOAD_CROUCH_SECONDARY_END",
	"FL_STATICPROP",
	"ACT_RANGE_AIM_LOW",
	"FL_GRENADE",
	"EF_BONEMERGE_FASTCULL",
	"ACT_HL2MP_RUN_PHYSGUN",
	"ACT_DOD_PRIMARYATTACK_BAR",
	"PLAYER_ATTACK1",
	"ACT_MP_DEPLOYED_PRIMARY",
	"PLAYER_DIE",
	"PLAYER_SUPERJUMP",
	"setfenv",
	"COND_ENEMY_UNREACHABLE",
	"PATTACH_POINT_FOLLOW",
	"PATTACH_POINT",
	"CAP_FRIENDLY_DMG_IMMUNE",
	"ACT_MP_CROUCHWALK_PDA",
	"ACT_DOD_CROUCHWALK_AIM_GREASE",
	"ACT_VM_SECONDARYATTACK",
	"PATTACH_ABSORIGIN_FOLLOW",
	"ACT_DOD_PRIMARYATTACK_CROUCH_GREN_FRAG",
	"ACT_GESTURE_RELOAD_SMG1",
	"ACT_IDLE_ANGRY_RPG",
	"ACT_HL2MP_SWIM_PASSIVE",
	"CHAN_USER_BASE",
	"ACT_HL2MP_WALK_KNIFE",
	"ACT_RANGE_ATTACK_AR2_GRENADE",
	"ACT_DROP_WEAPON_SHOTGUN",
	"DMG_DROWNRECOVER",
	"OBS_MODE_IN_EYE",
	"ACT_DOD_PRIMARYATTACK_PRONE_MG",
	"EF_NODRAW",
	"ACT_DOD_WALK_IDLE_MP44",
	"MOUSE_FIRST",
	"OBS_MODE_FIXED",
	"ACT_HL2MP_WALK_ZOMBIE_01",
	"ACT_VM_PRIMARYATTACK_2",
	"WEAPON_PROFICIENCY_GOOD",
	"NUM_SPRITES",
	"scripted_ents",
	"KEY_BACKSPACE",
	"NUM_HULLS",
	"KEY_PAD_ENTER",
	"ACT_HL2MP_WALK_ZOMBIE_04",
	"serverlist",
	"NUM_AI_CLASSES",
	"ACT_TRIPMINE_WORLD",
	"DDragBase",
	"NPC_STATE_DEAD",
	"DCategoryHeader",
	"NPC_STATE_PRONE",
	"NPC_STATE_PLAYDEAD",
	"KEY_CAPSLOCK",
	"NPC_STATE_SCRIPT",
	"NPC_STATE_COMBAT",
	"ACT_HL2MP_WALK_RPG",
	"ACT_HL2MP_WALK_ZOMBIE_06",
	"NPC_STATE_ALERT",
	"ACT_IDLE_ANGRY_SHOTGUN",
	"NPC_STATE_NONE",
	"DMG_BLAST_SURFACE",
	"NOTIFY_HINT",
	"DPanelOverlay",
	"ACT_DYINGTODEAD",
	"NOTIFY_ERROR",
	"ACT_HL2MP_WALK_CROUCH_PISTOL",
	"NOTIFY_GENERIC",
	"ACT_HL2MP_IDLE_CROUCH_ZOMBIE_02",
	"GO_ELEVATOR_DOWN",
	"ACT_MP_CROUCH_BUILDING",
	"ACT_DOD_PRONEWALK_AIM_KNIFE",
	"ACT_HL2MP_JUMP_SCARED",
	"ACT_DOD_STAND_IDLE_MP40",
	"GO_ELEVATOR_UP",
	"PLAYERANIMEVENT_JUMP",
	"GO_LADDER_DOWN",
	"ACT_DOD_DEPLOY_RIFLE",
	"unpack",
	"ACT_VM_RELOAD_DEPLOYED",
	"GO_SOUTH",
	"ACT_COVER_LOW_RPG",
	"GO_EAST",
	"MATERIAL_LIGHT_POINT",
	"WEST",
	"ACT_GMOD_TAUNT_LAUGH",
	"EAST",
	"NUM_CORNERS",
	"SOUTH_WEST",
	"SOUTH_EAST",
	"MATERIAL_FOG_LINEAR",
	"BONE_SCREEN_ALIGN_SPHERE",
	"IN_ATTACK2",
	"NAV_MESH_AVOID",
	"NORTH_WEST",
	"ACT_DOD_RELOAD_PRONE_BOLT",
	"ACT_MP_WALK",
	"CAP_INNATE_RANGE_ATTACK1",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED_30CAL",
	"NAV_MESH_NAV_BLOCKER",
	"ACT_DOD_PRIMARYATTACK_CROUCH",
	"NAV_MESH_CLIFF",
	"NAV_MESH_OBSTACLE_TOP",
	"NAV_MESH_NO_HOSTAGES",
	"NAV_MESH_STAND",
	"NAV_MESH_DONT_HIDE",
	"ACT_DOD_CROUCHWALK_IDLE",
	"DListView_Column",
	"NAV_MESH_TRANSIENT",
	"TRANSMIT_PVS",
	"TEXTUREFLAGS_PROCEDURAL",
	"NAV_MESH_PRECISE",
	"KEY_PAD_9",
	"ACT_SLAM_STICKWALL_ND_ATTACH2",
	"ACT_HOP",
	"NAV_MESH_CROUCH",
	"NAV_MESH_INVALID",
	"EF_BRIGHTLIGHT",
	"PLAYER_IDLE",
	"ACT_DOD_CROUCHWALK_AIM_MG",
	"ACT_HL2MP_IDLE_CROUCH_KNIFE",
	"rawget",
	"ACT_HL2MP_GESTURE_RELOAD_CROSSBOW",
	"ACT_SLAM_THROW_ND_IDLE",
	"MOVETYPE_LADDER",
	"CTakeDamageInfo",
	"input",
	"DForm",
	"ENTITY",
	"ACT_DOD_CROUCH_AIM_PSCHRECK",
	"Derma_StringRequest",
	"ACT_HL2MP_SWIM_CAMERA",
	"ACT_GMOD_GESTURE_TAUNT_ZOMBIE",
	"MOVETYPE_VPHYSICS",
	"SND_IGNORE_PHONEMES",
	"ACT_GESTURE_RANGE_ATTACK_SHOTGUN",
	"ACT_MP_RUN",
	"ACT_DOD_CROUCH_IDLE_BAZOOKA",
	"ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING",
	"GMOD_CHANNEL_PLAYING",
	"DRGBPicker",
	"MOVETYPE_NONE",
	"CreateSound",
	"ACT_MP_CROUCHWALK_PRIMARY",
	"ACT_DOD_RUN_AIM_BAR",
	"MOVECOLLIDE_COUNT",
	"COLLISION_GROUP_IN_VEHICLE",
	"collectgarbage",
	"ACT_DI_ALYX_ZOMBIE_SHOTGUN64",
	"DBinder",
	"MATERIAL_RT_DEPTH_NONE",
	"ACT_GRENADE_TOSS",
	"ACT_VM_IDLE_DEPLOYED",
	"ACT_VM_DOWN",
	"ACT_SHOTGUN_IDLE4",
	"DOF_SPACING",
	"ACT_DOD_STAND_IDLE_30CAL",
	"steamworks",
	"MATERIAL_RT_DEPTH_SEPARATE",
	"MATERIAL_LIGHT_SPOT",
	"EFL_CHECK_UNTOUCH",
	"GO_NORTH",
	"DProperty_Float",
	"IN_ALT1",
	"MATERIAL_LIGHT_DISABLE",
	"SCHED_RELOAD",
	"isangle",
	"ACT_DI_ALYX_ZOMBIE_TORSO_MELEE",
	"ACT_HL2MP_SIT_SMG1",
	"MATERIAL_FOG_NONE",
	"HULL_SMALL_CENTERED",
	"ACT_DOD_DEPLOY_TOMMY",
	"MATERIAL_CULLMODE_CW",
	"SURF_NOCHOP",
	"TRACER_LINE_AND_WHIZ",
	"SCHED_INTERACTION_WAIT_FOR_PARTNER",
	"sql",
	"MATERIAL_POLYGON",
	"MATERIAL_POINTS",
	"IsValid",
	"ACT_VM_HAULBACK",
	"ACT_MP_WALK_SECONDARY",
	"ACT_WALK_AIM_SHOTGUN",
	"FCVAR_SERVER_CAN_EXECUTE",
	"MAT_DEFAULT",
	"MAT_WOOD",
	"ACT_MP_PRIMARY_GRENADE2_IDLE",
	"ACT_SIGNAL_HALT",
	"ACT_HL2MP_SWIM_IDLE_MAGIC",
	"ACT_MP_ATTACK_SWIM_SECONDARYFIRE",
	"ACT_MP_GESTURE_VC_NODNO_BUILDING",
	"ACT_COVER",
	"SCHED_PATROL_WALK",
	"ACT_HL2MP_SWIM_IDLE_SLAM",
	"MAT_FLESH",
	"MAT_EGGSHELL",
	"KEY_NUMLOCK",
	"CLuaLocomotion",
	"ACT_DOD_PRIMARYATTACK_TOMMY",
	"ACT_DOD_CROUCH_AIM_RIFLE",
	"MAT_CONCRETE",
	"ACT_VM_DOWN_EMPTY",
	"ACT_WALK_AIM",
	"ACT_DOD_WALK_AIM_MP40",
	"MAT_CLIP",
	"CT_REFUGEE",
	"MAT_ALIENFLESH",
	"MASK_WATER",
	"MASK_VISIBLE_AND_NPCS",
	"MASK_VISIBLE",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE_03",
	"MASK_SPLITAREAPORTAL",
	"ACT_IDLE_SUITCASE",
	"MASK_SOLID_BRUSHONLY",
	"MASK_SOLID",
	"ACT_DOD_ZOOMLOAD_PRONE_BAZOOKA",
	"GMOD_CHANNEL_STALLED",
	"ACT_DOD_PRONE_FORWARD_ZOOMED",
	"MASK_SHOT_PORTAL",
	"ACT_DOD_DEPLOYED",
	"MASK_SHOT_HULL",
	"MASK_PLAYERSOLID_BRUSHONLY",
	"ACT_HL2MP_IDLE_CROUCH_RPG",
	"game",
	"SCHED_COMBAT_SWEEP",
	"EffectData",
	"MASK_OPAQUE",
	"ACT_LAND",
	"KEY_NUMLOCKTOGGLE",
	"COND_HEAR_MOVE_AWAY",
	"MASK_NPCSOLID",
	"ACT_COMBAT_IDLE",
	"MASK_DEADSOLID",
	"MASK_CURRENT",
	"OrderVectors",
	"DMG_BULLET",
	"COND_SEE_PLAYER",
	"ACT_HL2MP_SIT_AR2",
	"ACT_HL2MP_IDLE_MELEE_ANGRY",
	"KEY_P",
	"MASK_ALL",
	"ACT_GESTURE_TURN_LEFT90",
	"kRenderFxGlowShell",
	"kRenderFxExplode",
	"kRenderFxDistort",
	"kRenderFxNoDissipation",
	"ACT_VM_DRAW_SILENCED",
	"kRenderFxFlickerFast",
	"kRenderFxFlickerSlow",
	"EFL_BOT_FROZEN",
	"COND_PLAYER_ADDED_TO_SQUAD",
	"DColorCombo",
	"kRenderFxStrobeFast",
	"kRenderFxSolidFast",
	"kRenderFxSolidSlow",
	"kRenderFxFadeFast",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_2",
	"kRenderFxFadeSlow",
	"OnModelLoaded",
	"kRenderFxPulseFastWide",
	"kRenderFxPulseFast",
	"KEY_TAB",
	"kRenderFxNone",
	"ACT_MP_ATTACK_STAND_MELEE_SECONDARY",
	"ACT_MP_ATTACK_SWIM_MELEE",
	"IN_GRENADE1",
	"ACT_MP_GESTURE_VC_NODNO_MELEE",
	"ACT_GESTURE_FLINCH_HEAD",
	"ACT_DOD_CROUCHWALK_IDLE_TNT",
	"ClientsideRagdoll",
	"debugoverlay",
	"IN_SPEED",
	"IN_SCORE",
	"CHAN_BODY",
	"ACT_DOD_SPRINT_IDLE_MG",
	"IN_RELOAD",
	"ACT_MP_ATTACK_CROUCH_SECONDARYFIRE",
	"ACT_DOD_RUN_AIM_BAZOOKA",
	"IN_RUN",
	"IN_MOVELEFT",
	"IsEnemyEntityName",
	"IN_LEFT",
	"ACT_WALK_RELAXED",
	"ACT_DOD_RELOAD_FG42",
	"IN_CANCEL",
	"ACT_HL2MP_SWIM_SLAM",
	"ACT_RUN_ON_FIRE",
	"ACT_SMG2_TOAUTO",
	"COND_NOT_FACING_ATTACK",
	"numpad",
	"ACT_SLAM_STICKWALL_ND_ATTACH",
	"ACT_MP_RUN_PRIMARY",
	"ismatrix",
	"IN_FORWARD",
	"IN_DUCK",
	"ACT_DOD_SPRINT_IDLE_PSCHRECK",
	"DamageInfo",
	"ACT_WALK_CROUCH_RPG",
	"JOYSTICK_FIRST_AXIS_BUTTON",
	"DListViewLine",
	"ACT_VM_RELOAD_M203",
	"ACT_DOD_PRIMARYATTACK_SPADE",
	"ACT_TURNRIGHT45",
	"FL_STEPMOVEMENT",
	"IMAGE_FORMAT_BGR888",
	"RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP",
	"IMAGE_FORMAT_DEFAULT",
	"SF_CITIZEN_MEDIC",
	"HULL_LARGE_CENTERED",
	"ACT_DOD_ZOOMLOAD_PRONE_PSCHRECK",
	"HULL_LARGE",
	"HULL_TINY_CENTERED",
	"HULL_MEDIUM",
	"STENCIL_LESS",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_ZOMBIE",
	"ACT_MP_GESTURE_VC_NODYES_MELEE",
	"ACT_MP_ATTACK_AIRWALK_GRENADE",
	"HUD_PRINTTALK",
	"ACT_IDLE_SMG1_STIMULATED",
	"HUD_PRINTCONSOLE",
	"CONTENTS_MONSTER",
	"ACT_VM_UNDEPLOY",
	"ACT_MP_JUMP_START_BUILDING",
	"FORCE_NUMBER",
	"ACT_MP_RELOAD_SWIM_PRIMARY",
	"ACT_VM_DRAW",
	"ACT_VM_IIN",
	"ACT_VM_HITLEFT2",
	"ACT_HL2MP_IDLE_CROUCH",
	"HITGROUP_RIGHTARM",
	"ACT_WALK_RIFLE_RELAXED",
	"DMG_DISSOLVE",
	"HITGROUP_GENERIC",
	"SF_NPC_NO_PLAYER_PUSHAWAY",
	"ACT_RANGE_ATTACK_HMG1",
	"GMOD_CHANNEL_STOPPED",
	"GLOBAL_DEAD",
	"DrawSobel",
	"GLOBAL_ON",
	"PLAYER_LEAVE_AIMING",
	"KEY_Z",
	"DCheckBox",
	"SCHED_PRE_FAIL_ESTABLISH_LINE_OF_FIRE",
	"GESTURE_SLOT_VCD",
	"ACT_HL2MP_RUN_PASSIVE",
	"GESTURE_SLOT_FLINCH",
	"ACT_HL2MP_WALK_CROSSBOW",
	"ACT_DOD_RELOAD_DEPLOYED_BAR",
	"MOUSE_RIGHT",
	"ACT_MP_STAND_BUILDING",
	"timer",
	"ACT_RAPPEL_LOOP",
	"newproxy",
	"GESTURE_SLOT_GRENADE",
	"ACT_DOD_CROUCH_AIM_BOLT",
	"FVPHYSICS_PART_OF_RAGDOLL",
	"ACT_HL2MP_IDLE_CROUCH_SLAM",
	"ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED",
	"ACT_GESTURE_TURN_LEFT45_FLAT",
	"ACT_DOD_CROUCH_AIM_KNIFE",
	"COND_SCHEDULE_DONE",
	"ACT_BUSY_LEAN_LEFT_EXIT",
	"FVPHYSICS_NO_SELF_COLLISIONS",
	"FVPHYSICS_NO_PLAYER_PICKUP",
	"FVPHYSICS_MULTIOBJECT_ENTITY",
	"FSOLID_MAX_BITS",
	"istable",
	"ACT_VM_RELOAD_IDLE",
	"COLLISION_GROUP_INTERACTIVE_DEBRIS",
	"STENCILCOMPARISONFUNCTION_ALWAYS",
	"ACT_RUN_CROUCH_AIM",
	"FSOLID_TRIGGER",
	"FSOLID_NOT_SOLID",
	"DOF_Kill",
	"ACT_VM_ATTACH_SILENCER",
	"EFL_NO_THINK_FUNCTION",
	"ACT_180_LEFT",
	"FSOLID_CUSTOMBOXTEST",
	"FSOLID_CUSTOMRAYTEST",
	"FORCE_BOOL",
	"FCVAR_DONTRECORD",
	"ACT_MP_GESTURE_FLINCH_LEFTLEG",
	"FL_TRANSRAGDOLL",
	"ACT_RUN_RELAXED",
	"kRenderFxClampMinScale",
	"FL_FROZEN",
	"FL_KILLME",
	"FL_WORLDBRUSH",
	"ACT_CROUCHING_SHIELD_ATTACK",
	"PrecacheParticleSystem",
	"ACT_RUN_STIMULATED",
	"FL_BASEVELOCITY",
	"FL_GRAPHED",
	"ACT_GESTURE_BIG_FLINCH",
	"FL_PARTIALGROUND",
	"FL_AIMTARGET",
	"ACT_DOD_CROUCHWALK_ZOOM_BAZOOKA",
	"FL_NOTARGET",
	"ACT_DOD_HS_IDLE_STICKGRENADE",
	"ACT_RANGE_ATTACK_SNIPER_RIFLE",
	"ACT_HL2MP_JUMP",
	"ACT_DOD_WALK_IDLE_PISTOL",
	"Localize",
	"BOTTOM",
	"pairs",
	"FL_INWATER",
	"FL_FAKECLIENT",
	"FL_CLIENT",
	"ACT_VM_DEPLOY_6",
	"ACT_HL2MP_WALK_PISTOL",
	"ACT_DIE_CHESTSHOT",
	"FL_ATCONTROLS",
	"FL_ONFIRE",
	"ACT_DOD_RELOAD_MP44",
	"ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE",
	"ACT_GESTURE_FLINCH_RIGHTLEG",
	"FL_ONTRAIN",
	"http",
	"ACT_HL2MP_SWIM_DUEL",
	"FL_ANIMDUCKING",
	"FL_DUCKING",
	"MarkupObject",
	"FFT_32768",
	"CompileString",
	"COLLISION_GROUP_PROJECTILE",
	"MOUSE_WHEEL_DOWN",
	"ENT_NEXTBOT",
	"COLLISION_GROUP_PLAYER",
	"FFT_16384",
	"FFT_8192",
	"KEY_PAD_6",
	"FFT_4096",
	"ACT_DOD_RELOAD_PRONE_PISTOL",
	"SENSORBONE",
	"ACT_DOD_WALK_AIM_GREASE",
	"FFT_256",
	"KEY_FIRST",
	"FCVAR_UNREGISTERED",
	"ACT_DOD_PRONEWALK_IDLE_BAR",
	"ACT_DOD_WALK_AIM_PISTOL",
	"ACT_SMG2_TOBURST",
	"FCVAR_UNLOGGED",
	"FCVAR_SERVER_CANNOT_QUERY",
	"FCVAR_REPLICATED",
	"FCVAR_PROTECTED",
	"COND_NO_PRIMARY_AMMO",
	"FCVAR_NOT_CONNECTED",
	"ACT_HANDGRENADE_THROW1",
	"ACT_SLAM_STICKWALL_ND_IDLE",
	"ACT_MP_ATTACK_STAND_PREFIRE",
	"FCVAR_NEVER_AS_STRING",
	"string",
	"ACT_WALK_RIFLE_STIMULATED",
	"FCVAR_LUA_SERVER",
	"FCVAR_LUA_CLIENT",
	"FCVAR_DEMO",
	"FCVAR_CLIENTDLL",
	"STENCIL_GREATER",
	"FCVAR_CHEAT",
	"TYPE_USERDATA",
	"Vector",
	"EFL_USE_PARTITION_WHEN_NOT_SOLID",
	"EFL_SETTING_UP_BONES",
	"ACT_BUSY_LEAN_BACK",
	"sound",
	"ACT_DOD_PRONE_DEPLOY_RIFLE",
	"DListViewLabel",
	"KEY_XBUTTON_DOWN",
	"ACT_HL2MP_IDLE_ANGRY",
	"ACT_IDLE_MELEE",
	"CONTENTS_CURRENT_180",
	"CLASS_COMBINE_HUNTER",
	"ACT_DOD_PRIMARYATTACK_PRONE_RIFLE",
	"DrawMaterialOverlay",
	"ACT_DOD_PRIMARYATTACK_RIFLE",
	"EFL_NO_PHYSCANNON_INTERACTION",
	"EFL_NO_MEGAPHYSCANNON_RAGDOLL",
	"EFL_NO_DISSOLVE",
	"EFL_NO_AUTO_EDICT_ATTACH",
	"COND_SMELL",
	"EFL_NOTIFY",
	"KEY_K",
	"EFL_IS_BEING_LIFTED_BY_BARNACLE",
	"duplicator",
	"EFL_IN_SKYBOX",
	"motionsensor",
	"KEY_PAD_MINUS",
	"ACT_HL2MP_SWIM_IDLE_RPG",
	"EFL_DONTBLOCKLOS",
	"ACT_VM_PICKUP",
	"TypeID",
	"EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS",
	"EFL_DIRTY_SPATIAL_PARTITION",
	"EFL_DIRTY_SHADOWUPDATE",
	"ACT_HL2MP_JUMP_SUITCASE",
	"EFL_DIRTY_ABSTRANSFORM",
	"Sound",
	"ACT_MP_ATTACK_AIRWALK_SECONDARY",
	"AddWorldTip",
	"MATERIAL_LIGHT_DIRECTIONAL",
	"DynamicLight",
	"kRenderFxStrobeFaster",
	"EF_FOLLOWBONE",
	"VisualizeLayout",
	"ACT_HL2MP_SWIM_IDLE_DUEL",
	"ACT_DOD_PRONE_AIM_KNIFE",
	"MOVETYPE_PUSH",
	"ACT_DOD_RELOAD_CROUCH_M1CARBINE",
	"WEAPON_PROFICIENCY_POOR",
	"BONE_USED_BY_HITBOX",
	"PLAYER_START_AIMING",
	"ACT_TURN",
	"ACT_MP_ATTACK_SWIM_POSTFIRE",
	"Slider",
	"KEY_0",
	"ACT_HL2MP_WALK_CROUCH_CAMERA",
	"FL_NPC",
	"TOP",
	"ACT_GMOD_GESTURE_AGREE",
	"RIGHT",
	"DFrame",
	"LEFT",
	"FILL",
	"DMG_SLOWBURN",
	"BLOOD_COLOR_ANTLION",
	"KEY_F3",
	"ACT_DOD_RUN_IDLE_TOMMY",
	"SNDLVL_70dB",
	"PATTACH_WORLDORIGIN",
	"ACT_STEP_BACK",
	"DMG_PLASMA",
	"ACT_GMOD_GESTURE_RANGE_ZOMBIE",
	"DMG_PHYSGUN",
	"ACT_RUN_AIM_AGITATED",
	"OBS_MODE_ROAMING",
	"AddCSLuaFile",
	"HITGROUP_HEAD",
	"DMG_BUCKSHOT",
	"DMG_AIRBOAT",
	"ACT_VM_RECOIL1",
	"SCHED_FAIL_TAKE_COVER",
	"ACT_DOD_CROUCH_IDLE_PSCHRECK",
	"DMG_ALWAYSGIB",
	"Frame",
	"DMG_ENERGYBEAM",
	"ACT_HL2MP_GESTURE_RELOAD_DUEL",
	"SNDLVL_95dB",
	"SetGlobalFloat",
	"ACT_WALK_CARRY",
	"ACT_GESTURE_MELEE_ATTACK2",
	"JS_Language",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_5",
	"ACT_DOD_PRONE_AIM_GREN_FRAG",
	"SCHED_ESTABLISH_LINE_OF_FIRE",
	"ACT_DOD_WALK_AIM_BAR",
	"ACT_SLAM_TRIPMINE_TO_THROW_ND",
	"STUDIO_SHADOWDEPTHTEXTURE",
	"ACT_HL2MP_GESTURE_RELOAD_FIST",
	"DMG_SLASH",
	"ACT_DOD_HS_IDLE",
	"ACT_MP_ATTACK_STAND_POSTFIRE",
	"DMG_GENERIC",
	"ACT_HL2MP_SWIM_SHOTGUN",
	"ACT_VM_DEPLOY_1",
	"D_LI",
	"CAP_DUCK",
	"ACT_GESTURE_TURN_LEFT90_FLAT",
	"FindTooltip",
	"D_FR",
	"ACT_DOD_RELOAD_PRONE_FG42",
	"KEY_EQUAL",
	"RealFrameTime",
	"WorkshopFileBase",
	"D_ER",
	"ACT_DOD_WALK_AIM_30CAL",
	"ACT_HL2MP_SWIM_IDLE_ZOMBIE",
	"ACT_DOD_PRIMARYATTACK_CROUCH_GREN_STICK",
	"CT_REBEL",
	"MAT_BLOODYFLESH",
	"ACT_HL2MP_IDLE_REVOLVER",
	"DCheckBoxLabel",
	"KEY_9",
	"CREATERENDERTARGETFLAGS_UNFILTERABLE_OK",
	"ACT_MP_SECONDARY_GRENADE1_ATTACK",
	"EFL_NOCLIP_ACTIVE",
	"ACT_HL2MP_RUN_CAMERA",
	"FL_GODMODE",
	"EmitSentence",
	"CONTENTS_TRANSLUCENT",
	"ACT_DOD_HS_CROUCH_30CAL",
	"ACT_DOD_PRONE_AIM_RIFLE",
	"ACT_GMOD_GESTURE_ITEM_GIVE",
	"CONTENTS_ORIGIN",
	"HITGROUP_GEAR",
	"CONTENTS_LADDER",
	"ACT_DOD_WALK_AIM_RIFLE",
	"CONTENTS_HITBOX",
	"CONTENTS_DEBRIS",
	"ACT_DOD_PRONE_AIM_MG",
	"CONTENTS_CURRENT_UP",
	"ACT_PHYSCANNON_ANIMATE_POST",
	"ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE",
	"ACT_DISARM",
	"CONTENTS_CURRENT_90",
	"ACT_MP_RELOAD_STAND_PRIMARY_LOOP",
	"CONTENTS_CURRENT_270",
	"TEXTUREFLAGS_UNUSED_00400000",
	"CONTENTS_PLAYERCLIP",
	"Error",
	"ACT_MP_SECONDARY_GRENADE1_DRAW",
	"SNDLVL_60dB",
	"ACT_VM_RELOAD",
	"CAP_AUTO_DOORS",
	"ACT_DI_ALYX_ZOMBIE_SHOTGUN26",
	"CONTENTS_TEAM2",
	"CONTENTS_TEAM1",
	"COLLISION_GROUP_NPC_SCRIPTED",
	"CONTENTS_OPAQUE",
	"CONTENTS_BLOCKLOS",
	"ACT_VM_DIFIREMODE",
	"ACT_DOD_CROUCH_AIM_GREN_FRAG",
	"ACT_HL2MP_WALK_CROUCH_FIST",
	"CONTENTS_AUX",
	"ACT_DOD_DEPLOY_MG",
	"ACT_MP_CROUCH_DEPLOYED",
	"ACT_DOD_WALK_IDLE_30CAL",
	"CONTENTS_EMPTY",
	"SCHED_MELEE_ATTACK1",
	"ACT_90_RIGHT",
	"ACT_GESTURE_RANGE_ATTACK_SMG1",
	"COND_WEAPON_BLOCKED_BY_FRIEND",
	"TEXTUREFLAGS_UNUSED_40000000",
	"ACT_HL2MP_SWIM_SCARED",
	"ACT_DOD_PRONE_ZOOM_FORWARD_BAZOOKA",
	"COND_TOO_CLOSE_TO_ATTACK",
	"COND_TASK_FAILED",
	"ACT_POLICE_HARASS1",
	"ACT_STRAFE_LEFT",
	"DPanelList",
	"VGUIFrameTime",
	"error",
	"COND_TALKER_RESPOND_TO_QUESTION",
	"ACT_DOD_RELOAD_DEPLOYED",
	"ACT_DOD_SECONDARYATTACK_PRONE_MP40",
	"MASK_BLOCKLOS",
	"ACT_MP_SECONDARY_GRENADE2_DRAW",
	"ACT_GESTURE_TURN_RIGHT45_FLAT",
	"ACT_CROUCHING_GRENADEREADY",
	"COND_SEE_DISLIKE",
	"COND_RECEIVED_ORDERS",
	"ITexture",
	"COND_PLAYER_REMOVED_FROM_SQUAD",
	"COND_PLAYER_PUSHING",
	"ACT_DOD_PRIMARYATTACK_DEPLOYED_RIFLE",
	"ACT_VM_DEPLOYED_IDLE",
	"COND_NPC_FREEZE",
	"SCHED_NPC_FREEZE",
	"COND_NO_SECONDARY_AMMO",
	"COND_MOBBED_BY_ENEMIES",
	"COND_LOST_PLAYER",
	"COLLISION_GROUP_INTERACTIVE",
	"EF_BONEMERGE",
	"ACT_MP_SWIM_PDA",
	"DAdjustableModelPanel",
	"ACT_VM_FIRE_TO_EMPTY",
	"tonumber",
	"ACT_UNDEPLOY",
	"ACT_VM_SWINGMISS",
	"COND_IN_PVS",
	"BLEND_ONE_MINUS_DST_COLOR",
	"COND_IDLE_INTERRUPT",
	"JOYSTICK_FIRST_BUTTON",
	"COND_HEAVY_DAMAGE",
	"RENDERMODE_ENVIROMENTAL",
	"RunString",
	"COND_HEAR_SPOOKY",
	"ACT_MP_ATTACK_SWIM_GRENADE_MELEE",
	"CSoundPatch",
	"COND_HEAR_PHYSICS_DANGER",
	"ACT_WALK_STIMULATED",
	"COLLISION_GROUP_BREAKABLE_GLASS",
	"MASK_NPCSOLID_BRUSHONLY",
	"COND_GIVE_WAY",
	"ACT_GMOD_IN_CHAT",
	"BONE_USED_BY_BONE_MERGE",
	"RunConsoleCommand",
	"ACT_HL2MP_IDLE_CROUCH_PHYSGUN",
	"COND_ENEMY_WENT_NULL",
	"DMG_PREVENT_PHYSICS_FORCE",
	"ACT_DEEPIDLE4",
	"COND_ENEMY_TOO_FAR",
	"COND_CAN_RANGE_ATTACK1",
	"KEY_RSHIFT",
	"CONTENTS_TEAM4",
	"ACT_DOD_HS_IDLE_KNIFE",
	"EditablePanel",
	"ACT_HL2MP_SWIM_MAGIC",
	"GetHUDPanel",
	"ACT_COVER_PISTOL_LOW",
	"IsEntity",
	"COLLISION_GROUP_NPC_ACTOR",
	"SCHED_CHASE_ENEMY_FAILED",
	"COLLISION_GROUP_DISSOLVING",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_SUITCASE",
	"ACT_FLY",
	"COLLISION_GROUP_DOOR_BLOCKER",
	"ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED",
	"ACT_HL2MP_RUN_SUITCASE",
	"ACT_HL2MP_GESTURE_RELOAD_ZOMBIE",
	"CLASS_BARNACLE",
	"DSizeToContents",
	"ACT_DOD_HS_IDLE_MG42",
	"ACT_VM_RELOAD2",
	"ACT_HL2MP_RUN_ZOMBIE",
	"ACT_DOD_CROUCHWALK_IDLE_30CAL",
	"ACT_DOD_PRONE_AIM_BAR",
	"COLLISION_GROUP_PLAYER_MOVEMENT",
	"FSOLID_USE_TRIGGER_BOUNDS",
	"ACT_CROUCHING_SHIELD_KNOCKBACK",
	"EF_NOINTERP",
	"COLLISION_GROUP_DEBRIS",
	"ACT_VM_SWINGHIT",
	"ACT_DOD_WALK_IDLE_MG",
	"ColorRand",
	"ACT_DOD_RELOAD_CROUCH_PSCHRECK",
	"CLASS_EARTH_FAUNA",
	"CLASS_FLARE",
	"CLASS_MISSILE",
	"CLASS_STALKER",
	"ACT_DOD_RUN_AIM_SPADE",
	"ACT_VM_HOLSTER_EMPTY",
	"ACT_BIG_FLINCH",
	"CLASS_MANHACK",
	"CLASS_HEADCRAB",
	"ACT_RANGE_AIM_SMG1_LOW",
	"CLASS_COMBINE_GUNSHIP",
	"SOLID_VPHYSICS",
	"CLASS_CITIZEN_REBEL",
	"CLASS_CITIZEN_PASSIVE",
	"ACT_DOD_PRIMARYATTACK_PRONE_KNIFE",
	"CAP_USE_WEAPONS",
	"MOVECOLLIDE_FLY_SLIDE",
	"DermaMenu",
	"STUDIO_WIREFRAME",
	"MOUSE_5",
	"ACT_VM_FIDGET",
	"draw",
	"CHAN_STATIC",
	"ACT_DOD_STAND_IDLE_BAR",
	"CHAN_STREAM",
	"ACT_DOD_PRIMARYATTACK_30CAL",
	"CHAN_ITEM",
	"KEY_XBUTTON_LTRIGGER",
	"GetLoadPanel",
	"ACT_MP_RELOAD_SWIM_SECONDARY_LOOP",
	"ACT_DOD_HS_IDLE_PSCHRECK",
	"ACT_HL2MP_IDLE_CROUCH_PISTOL",
	"ACT_RELOAD_SMG1",
	"BUTTON_CODE_COUNT",
	"ACT_TURN_LEFT",
	"ACT_DOD_RELOAD_M1CARBINE",
	"CAP_NO_HIT_SQUADMATES",
	"CAP_AIM_GUN",
	"PATTACH_CUSTOMORIGIN",
	"CAP_ANIMATEDFACE",
	"CAP_INNATE_MELEE_ATTACK2",
	"STENCIL_KEEP",
	"ACT_DOD_STAND_AIM_KNIFE",
	"CancelLoading",
	"ACT_VM_SPRINT_ENTER",
	"ACT_HL2MP_IDLE_CAMERA",
	"Path",
	"CAP_WEAPON_RANGE_ATTACK2",
	"ACT_HL2MP_GESTURE_RELOAD",
	"CAP_TURN_HEAD",
	"ACT_MP_JUMP_START",
	"CONTENTS_IGNORE_NODRAW_OPAQUE",
	"ACT_RANGE_ATTACK_SHOTGUN_LOW",
	"CAP_SKIP_NAV_GROUND_CHECK",
	"ACT_MP_GESTURE_VC_NODYES_SECONDARY",
	"RENDERMODE_TRANSCOLOR",
	"CAP_MOVE_CLIMB",
	"CAP_MOVE_FLY",
	"CAP_MOVE_JUMP",
	"IVideoWriter",
	"JOYSTICK_LAST",
	"KEY_XBUTTON_RTRIGGER",
	"cleanup",
	"IN_JUMP",
	"LanguageChanged",
	"ACT_DOD_HS_CROUCH_PISTOL",
	"DTree",
	"RegisterDermaMenuForClose",
	"JOYSTICK_FIRST_POV_BUTTON",
	"MOUSE_COUNT",
	"MOUSE_LAST",
	"MOUSE_WHEEL_UP",
	"MOUSE_4",
	"MOUSE_MIDDLE",
	"KEY_XSTICK2_UP",
	"KEY_XSTICK2_LEFT",
	"JOYSTICK_LAST_AXIS_BUTTON",
	"module",
	"ACT_OBJ_PLACING",
	"ACT_MP_JUMP_PDA",
	"KEY_XSTICK1_UP",
	"Color",
	"ACT_DIE_RIGHTSIDE",
	"ACT_MP_AIRWALK",
	"KEY_XSTICK1_LEFT",
	"CloseDermaMenus",
	"KEY_XSTICK1_RIGHT",
	"ACT_HL2MP_WALK_SMG1",
	"FFT_1024",
	"ACT_DOD_SECONDARYATTACK_PRONE",
	"ACT_VM_HOLSTER_M203",
	"KEY_XBUTTON_STICK1",
	"KEY_XBUTTON_START",
	"KEY_XBUTTON_BACK",
	"ACT_DOD_STAND_AIM_C96",
	"KEY_XBUTTON_RIGHT_SHOULDER",
	"KEY_7",
	"KEY_COUNT",
	"ACT_GMOD_GESTURE_BOW",
	"ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_30CAL",
	"DVScrollBar",
	"GetDownloadables",
	"KEY_LAST",
	"ACT_HL2MP_SWIM_IDLE_MELEE2",
	"MASK_NPCWORLDSTATIC",
	"ACT_DOD_RELOAD_GREASEGUN",
	"TEXTUREFLAGS_DEPTHRENDERTARGET",
	"KEY_F10",
	"ACT_DOD_WALK_IDLE",
	"KEY_F8",
	"KEY_F6",
	"xpcall",
	"ACT_MP_AIRWALK_MELEE",
	"KEY_F5",
	"KEY_F4",
	"KEY_APP",
	"ACT_RANGE_ATTACK_SMG1",
	"BONE_USED_BY_VERTEX_LOD2",
	"DMG_REMOVENORAGDOLL",
	"ACT_MP_MELEE_GRENADE1_IDLE",
	"ACT_DOD_STAND_AIM_PSCHRECK",
	"KEY_F1",
	"KEY_RIGHT",
	"KEY_DOWN",
	"KEY_RWIN",
	"ACT_VM_DRYFIRE_SILENCED",
	"RichText",
	"ACT_HL2MP_SWIM_PHYSGUN",
	"ACT_CROUCHING_PRIMARYATTACK",
	"ACT_DOD_PRONE_AIM_MP40",
	"BONE_PHYSICS_PROCEDURAL",
	"ProtectedCall",
	"KEY_RCONTROL",
	"ACT_VM_IDLE_DEPLOYED_3",
	"KEY_RALT",
	"LAST_SHARED_COLLISION_GROUP",
	"KEY_LSHIFT",
	"ACT_HL2MP_SWIM_MELEE2",
	"KEY_PAGEUP",
	"ACT_DOD_CROUCH_AIM_TOMMY",
	"KEY_INSERT",
	"KEY_SCROLLLOCK",
	"KEY_ESCAPE",
	"ACT_HL2MP_IDLE_CROUCH_ANGRY",
	"kRenderFxPulseSlow",
	"KEY_MINUS",
	"KEY_BACKSLASH",
	"ACT_LEAP",
	"ACT_RUN_AIM",
	"DrawColorModify",
	"UTIL_IsUselessModel",
	"EFL_HAS_PLAYER_CHILD",
	"GetRenderTarget",
	"KEY_PAD_DIVIDE",
	"ACT_RUN_RIFLE_STIMULATED",
	"ACT_BUSY_STAND",
	"KEY_PAD_5",
	"KEY_PAD_4",
	"TauntCamera",
	"SND_STOP_LOOPING",
	"ACT_SMG2_DRYFIRE2",
	"ACT_HL2MP_RUN_GRENADE",
	"debug",
	"KEY_X",
	"GO_JUMP",
	"KEY_S",
	"KEY_R",
	"ACT_SIGNAL_GROUP",
	"CREATERENDERTARGETFLAGS_AUTOMIPMAP",
	"KEY_G",
	"CAP_WEAPON_MELEE_ATTACK1",
	"KEY_A",
	"ACT_DRIVE_JEEP",
	"ACT_DOD_PRIMARYATTACK_PRONE_TOMMY",
	"KEY_8",
	"KEY_XBUTTON_Y",
	"BONE_USED_MASK",
	"KEY_6",
	"KEY_5",
	"KEY_3",
	"COND_LIGHT_DAMAGE",
	"ACT_HL2MP_IDLE_SCARED",
	"BUTTON_CODE_LAST",
	"BUTTON_CODE_NONE",
	"BUTTON_CODE_INVALID",
	"BOX_BOTTOM",
	"ACT_MP_SWIM_DEPLOYED_PRIMARY",
	"ACT_DOD_PRIMARYATTACK_C96",
	"LerpVector",
	"ACT_DOD_RELOAD_CROUCH_TOMMY",
	"BOX_FRONT",
	"BONE_USED_BY_ANYTHING",
	"BONE_USED_BY_VERTEX_LOD7",
	"ACT_VM_DEPLOY_4",
	"assert",
	"ACT_DOD_PRIMARYATTACK_PRONE_BAZOOKA",
	"ACT_DOD_PRIMARYATTACK_MP44",
	"BONE_USED_BY_VERTEX_LOD6",
	"BONE_USED_BY_VERTEX_LOD5",
	"BONE_USED_BY_VERTEX_LOD3",
	"BONE_USED_BY_VERTEX_LOD1",
	"ACT_DIESIMPLE",
	"BONE_USED_BY_VERTEX_LOD0",
	"ACT_MP_RELOAD_CROUCH_END",
	"BONE_USED_BY_ATTACHMENT",
	"SysTime",
	"KEY_LWIN",
	"ACT_CROUCHIDLE_STIMULATED",
	"ACT_MP_CROUCHWALK_MELEE",
	"menubar",
	"BLOOD_COLOR_ANTLION_WORKER",
	"GMOD_CHANNEL_PAUSED",
	"ACT_HL2MP_IDLE_CROUCH_SCARED",
	"BLOOD_COLOR_YELLOW",
	"DONT_BLEED",
	"ents",
	"ACT_DOD_CROUCH_ZOOM_PSCHRECK",
	"ACT_DOD_WALK_AIM_BOLT",
	"BLOOD_COLOR_RED",
	"GetConVar",
	"BLEND_SRC_COLOR",
	"BLEND_SRC_ALPHA_SATURATE",
	"BLEND_ONE_MINUS_DST_ALPHA",
	"BLEND_DST_ALPHA",
	"ACT_VM_IDLE_5",
	"ACT_FLINCH_RIGHTARM",
	"ACT_FIRE_END",
	"BLEND_ONE",
	"LAST_SHARED_ACTIVITY",
	"ACT_GMOD_GESTURE_MELEE_SHOVE_2HAND",
	"ACT_MP_GESTURE_FLINCH",
	"DNumberWang",
	"ACT_HL2MP_RUN_CROSSBOW",
	"ACT_GMOD_GESTURE_ITEM_DROP",
	"ACT_HL2MP_ZOMBIE_SLUMP_IDLE",
	"BLEND_ONE_MINUS_SRC_ALPHA",
	"MATERIAL_RT_DEPTH_ONLY",
	"ACT_DOD_PRIMARYATTACK_CROUCH_SPADE",
	"ACT_HL2MP_SIT_MELEE",
	"ACT_SLAM_THROW_IDLE",
	"ACT_HL2MP_WALK_MAGIC",
	"GetLoadStatus",
	"ACT_DOD_CROUCHWALK_AIM_MP44",
	"ACT_HL2MP_SIT_GRENADE",
	"ACT_HL2MP_RUN_REVOLVER",
	"ACT_DOD_STAND_AIM_GREN_STICK",
	"RenderDoF",
	"ACT_HL2MP_SIT_SHOTGUN",
	"ACT_HL2MP_SIT_PISTOL",
	"KEY_BREAK",
	"ACT_HL2MP_GESTURE_RELOAD_MELEE2",
	"ACT_FIRE_START",
	"ACT_HL2MP_WALK_MELEE2",
	"ACT_HL2MP_IDLE_MELEE2",
	"DHTMLControls",
	"ACT_HL2MP_GESTURE_RELOAD_PASSIVE",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_PASSIVE",
	"COLLISION_GROUP_PASSABLE_DOOR",
	"PanelList",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE",
	"ACT_DOD_PRIMARYATTACK_MG",
	"ACT_HL2MP_RUN_KNIFE",
	"ACT_HL2MP_IDLE_KNIFE",
	"ACT_HL2MP_WALK_DUEL",
	"ACT_DOD_PRONE_AIM_30CAL",
	"ACT_HL2MP_SIT",
	"ACT_HL2MP_SWIM_FIST",
	"gui",
	"Lerp",
	"ACT_SLAM_STICKWALL_TO_TRIPMINE_ND",
	"ACT_HL2MP_JUMP_FIST",
	"ACT_DIERAGDOLL",
	"umsg",
	"DropEntityIfHeld",
	"ACT_DOD_STAND_IDLE_BAZOOKA",
	"ACT_HL2MP_JUMP_GRENADE",
	"ACT_GESTURE_TURN_RIGHT",
	"ACT_MP_GESTURE_FLINCH_RIGHTARM",
	"notification",
	"ACT_HL2MP_RUN",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_FIST",
	"CONTENTS_SLIME",
	"STNDRD",
	"ACT_HL2MP_RUN_FIST",
	"DColumnSheet",
	"ACT_DOD_CROUCH_IDLE_RIFLE",
	"ACT_HL2MP_WALK_PASSIVE",
	"ACT_DOD_STAND_AIM_BAZOOKA",
	"SCHED_BIG_FLINCH",
	"ACT_VM_HITCENTER",
	"ACT_DOD_STAND_IDLE_BOLT",
	"ACT_DOD_WALK_IDLE_C96",
	"ACT_DOD_WALK_IDLE_BOLT",
	"DIconBrowser",
	"ACT_HL2MP_RUN_AR2",
	"ACT_MP_VCD",
	"ACT_HL2MP_IDLE_FIST",
	"ACT_DOD_WALK_AIM_C96",
	"ACT_VM_MISSLEFT2",
	"ACT_GMOD_NOCLIP_LAYER",
	"Angle",
	"GO_LADDER_UP",
	"ACT_HL2MP_IDLE_CROUCH_CROSSBOW",
	"ACT_READINESS_RELAXED_TO_STIMULATED",
	"ACT_MP_RELOAD_STAND_PRIMARY_END",
	"ACT_180_RIGHT",
	"ACT_DOD_CROUCH_ZOOM_RIFLE",
	"ACT_IDLE_AIM_STIMULATED",
	"ACT_VM_RELOAD_INSERT_EMPTY",
	"ACT_DOD_RUN_AIM_PSCHRECK",
	"Msg",
	"TEXTUREFLAGS_NORMAL",
	"ACT_PRONE_IDLE",
	"ACT_HL2MP_SIT_PHYSGUN",
	"ACT_RUN_AGITATED",
	"DModelPanel",
	"OpenFolder",
	"RENDERMODE_NONE",
	"ACT_VM_IFIREMODE",
	"ACT_POLICE_HARASS2",
	"gamemode",
	"ACT_WALK_AIM_RELAXED",
	"CLASS_ANTLION",
	"ACT_DOD_RELOAD_PRONE_DEPLOYED",
	"ACT_MP_JUMP_FLOAT_MELEE",
	"ACT_MP_GESTURE_FLINCH_MELEE",
	"SNDLVL_20dB",
	"ACT_VM_READY_M203",
	"ACT_HL2MP_SWIM_RPG",
	"ACT_GMOD_GESTURE_ITEM_PLACE",
	"weapons",
	"ACT_IDLE_AIM_AGITATED",
	"TEXTUREFLAGS_ENVMAP",
	"ACT_VM_SHOOTLAST",
	"ACT_DOD_CROUCH_IDLE_GREASE",
	"GLOBAL_OFF",
	"ParticleEmitter",
	"VGUIRect",
	"ACT_OVERLAY_SHIELD_DOWN",
	"ACT_VM_ISHOOT_LAST",
	"DComboBox",
	"ACT_VM_FIREMODE",
	"ACT_VM_IRECOIL2",
	"ACT_VM_IIDLE_EMPTY",
	"ACT_DOD_STAND_AIM_TOMMY",
	"KEY_Y",
	"ACT_VM_IDLE_LOWERED",
	"ACT_HL2MP_SWIM_IDLE_CAMERA",
	"DMenuOption",
	"ACT_VM_DEPLOYED_LIFTED_OUT",
	"ACT_VM_DEPLOYED_LIFTED_IN",
	"ACT_DOD_CROUCHWALK_IDLE_MP40",
	"ACT_DOD_STAND_AIM_PISTOL",
	"ACT_PLAYER_IDLE_FIRE",
	"ACT_VM_DEPLOYED_IRON_DRYFIRE",
	"ACT_VM_DEPLOYED_IRON_FIRE",
	"ACT_VM_DEPLOYED_IRON_IDLE",
	"PhysObj",
	"isnumber",
	"ACT_VM_DEPLOYED_RELOAD_EMPTY",
	"ACT_RUN_AIM_STEALTH_PISTOL",
	"ACT_HL2MP_RUN_PANICKED",
	"ACT_VM_DEPLOYED_RELOAD",
	"ACT_VM_DEPLOYED_DRYFIRE",
	"ACT_VM_DEPLOYED_FIRE",
	"ACT_VM_HOLSTER",
	"COND_PHYSICS_DAMAGE",
	"ACT_TURNLEFT45",
	"ACT_DOD_HS_CROUCH_STICKGRENADE",
	"ACT_VM_HITKILL",
	"TGAImage",
	"RenderAngles",
	"ACT_RUN_HURT",
	"ACT_RESET",
	"ACT_SLAM_THROW_THROW_ND2",
	"ACT_MP_RUN_BUILDING",
	"ACT_FLINCH_STOMACH",
	"ACT_VM_SWINGHARD",
	"ACT_VM_PRIMARYATTACK_4",
	"ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY",
	"ACT_DOD_PRIMARYATTACK_GREN_STICK",
	"ACT_DOD_HS_CROUCH_MP44",
	"ACT_VM_IIDLE",
	"ACT_HL2MP_JUMP_SHOTGUN",
	"ACT_VM_IIN_EMPTY",
	"Stack",
	"HITGROUP_RIGHTLEG",
	"ACT_VM_PRIMARYATTACK_SILENCED",
	"dragndrop",
	"ACT_HL2MP_IDLE_CROUCH_ZOMBIE_01",
	"ACT_SIGNAL_LEFT",
	"ACT_MP_GESTURE_VC_FINGERPOINT",
	"SavePresets",
	"PropSelect",
	"ACT_WALK_ON_FIRE",
	"ACT_VM_READY",
	"ENT_FILTER",
	"ACT_SLAM_DETONATOR_IDLE",
	"ACT_HOVER",
	"SNDLVL_NONE",
	"ACT_MP_RELOAD_STAND_LOOP",
	"ACT_VM_CRAWL_EMPTY",
	"ACT_DOD_PRONEWALK_IDLE_TOMMY",
	"cam",
	"ACT_VM_CRAWL",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_MAGIC",
	"ACT_SPECIAL_ATTACK2",
	"JS_Workshop",
	"ACT_DOD_PRONEWALK_IDLE_MP44",
	"COLLISION_GROUP_VEHICLE_CLIP",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_SCARED",
	"COND_WEAPON_HAS_LOS",
	"DNumSlider",
	"ACT_MP_JUMP_FLOAT",
	"ACT_HL2MP_RUN_SLAM",
	"KEY_END",
	"ConVarExists",
	"ACT_DOD_RUN_IDLE_GREASE",
	"ACT_IDLE_PACKAGE",
	"GetGlobalString",
	"DHTML",
	"ACT_SIGNAL_FORWARD",
	"ACT_DOD_WALK_AIM",
	"ACT_GESTURE_FLINCH_LEFTLEG",
	"ACT_DOD_CROUCHWALK_ZOOM_PSCHRECK",
	"ACT_GLOCK_SHOOTEMPTY",
	"ACT_DOD_WALK_IDLE_BAR",
	"ACT_DOD_SECONDARYATTACK_CROUCH_TOMMY",
	"SafeRemoveEntityDelayed",
	"ACT_HL2MP_IDLE_CROUCH_SHOTGUN",
	"ACT_GAUSS_SPINUP",
	"ACT_IDLE_AIM_STEALTH",
	"CRecipientFilter",
	"ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK",
	"ACT_HL2MP_JUMP_MELEE",
	"ACT_DOD_CROUCHWALK_AIM_MP40",
	"tostring",
	"ACT_DOD_PRIMARYATTACK_PRONE_GREN_STICK",
	"ACT_DOD_PRONE_ZOOM_BAZOOKA",
	"ACT_CLIMB_DISMOUNT",
	"SCHED_HIDE_AND_RELOAD",
	"TRACER_BEAM",
	"TYPE_TABLE",
	"ACT_DOD_PRIMARYATTACK_PRONE_MP40",
	"ACT_HL2MP_IDLE_PASSIVE",
	"ACT_HL2MP_IDLE_MELEE",
	"ACT_HL2MP_SWIM_CROSSBOW",
	"ACT_HL2MP_SWIM_IDLE_CROSSBOW",
	"ACT_DOD_PRONE_ZOOM_BOLT",
	"ACT_HL2MP_JUMP_CROSSBOW",
	"ACT_BUSY_LEAN_BACK_EXIT",
	"ACT_RANGE_ATTACK_ML",
	"player",
	"SF_CITIZEN_NOT_COMMANDABLE",
	"ACT_GESTURE_MELEE_ATTACK_SWING",
	"ACT_GESTURE_RANGE_ATTACK_SLAM",
	"ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP",
	"DOFModeHack",
	"ACT_HL2MP_WALK_CROUCH_CROSSBOW",
	"WEAPON_PROFICIENCY_PERFECT",
	"ACT_VM_IDLE_8",
	"ACT_HL2MP_SWIM_ANGRY",
	"ACT_VM_PRIMARYATTACK_7",
	"ACT_GESTURE_SMALL_FLINCH",
	"ACT_RUN_SCARED",
	"ACT_VM_DEPLOY_7",
	"ACT_HL2MP_RUN_RPG",
	"ACT_WALK_AIM_STIMULATED",
	"ACT_HL2MP_IDLE_PHYSGUN",
	"LerpAngle",
	"ACT_MP_MELEE_GRENADE2_ATTACK",
	"ACT_MP_GRENADE2_IDLE",
	"isentity",
	"BroadcastLua",
	"ACT_DOD_CROUCHWALK_IDLE_MG",
	"ACT_HL2MP_WALK_CROUCH_DUEL",
	"ACT_HL2MP_IDLE_CROUCH_DUEL",
	"ACT_RUN_AIM_PISTOL",
	"ACT_CROSSBOW_FIDGET_UNLOADED",
	"ai_schedule",
	"CreateConVar",
	"ACT_WALK_AGITATED",
	"ACT_MP_RELOAD_AIRWALK_PRIMARY_END",
	"derma",
	"ACT_HL2MP_IDLE_DUEL",
	"SCHED_DUCK_DODGE",
	"ACT_IDLE_ANGRY",
	"ACT_VM_PRIMARYATTACK_6",
	"ACT_DOD_CROUCH_IDLE_BOLT",
	"ACT_DOD_STAND_AIM_MP44",
	"TYPE_PARTICLESYSTEM",
	"SURF_NODRAW",
	"ACT_VM_DEPLOYED_OUT",
	"KEY_PAD_1",
	"ACT_DIE_BACKSIDE",
	"ACT_DOD_RUN_AIM_KNIFE",
	"ACT_DOD_WALK_IDLE_RIFLE",
	"GWEN",
	"print",
	"ACT_HL2MP_IDLE_GRENADE",
	"ACT_DOD_SPRINT_IDLE_TOMMY",
	"EFL_FORCE_CHECK_TRANSMIT",
	"KEY_C",
	"ACT_RELOAD_START",
	"ACT_HL2MP_GESTURE_RELOAD_RPG",
	"CONTENTS_WINDOW",
	"language",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_RPG",
	"ACT_HL2MP_GESTURE_RELOAD_SHOTGUN",
	"ACT_STEP_LEFT",
	"ACT_SIGNAL_TAKECOVER",
	"CLASS_METROPOLICE",
	"DMG_SHOCK",
	"baseclass",
	"ACT_HL2MP_WALK_CROUCH_MELEE",
	"ACT_MP_ATTACK_SWIM_PDA",
	"ACT_DOD_RUN_ZOOM_RIFLE",
	"ACT_MP_GESTURE_FLINCH_CHEST",
	"ACT_VM_PRIMARYATTACK_1",
	"ACT_VM_HITRIGHT",
	"ACT_DIEBACKWARD",
	"ACT_HL2MP_SWIM_IDLE_SHOTGUN",
	"ACT_VM_IDLE_6",
	"ConsoleAutoComplete",
	"ACT_MP_ATTACK_STAND_SECONDARYFIRE",
	"ACT_GESTURE_RANGE_ATTACK2_LOW",
	"ACT_RANGE_ATTACK_THROW",
	"ACT_DOD_CROUCHWALK_AIM_SPADE",
	"DMG_BLAST",
	"ACT_ROLL_LEFT",
	"ACT_HL2MP_RUN_SHOTGUN",
	"ACT_DOD_PRIMARYATTACK_BOLT",
	"ACT_HL2MP_WALK_SHOTGUN",
	"TimedSin",
	"ACT_HL2MP_GESTURE_RELOAD_AR2",
	"Button",
	"ACT_SLAM_THROW_THROW",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2",
	"ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED",
	"ACT_DOD_STAND_AIM_GREASE",
	"ACT_HL2MP_WALK_CROUCH_AR2",
	"ACT_HL2MP_IDLE_CROUCH_AR2",
	"ACT_WALK_AIM_RIFLE_STIMULATED",
	"ACT_GRENADE_ROLL",
	"ACT_BUSY_LEAN_LEFT_ENTRY",
	"ACT_HL2MP_SWIM_SMG1",
	"TYPE_INVALID",
	"TEXTUREFLAGS_UNUSED_00200000",
	"ACT_IDLE_SMG1",
	"RENDERGROUP_VIEWMODEL",
	"ACT_DOD_RELOAD_PRONE_GREASEGUN",
	"AddBackgroundImage",
	"SoundDuration",
	"ACT_MP_GESTURE_VC_THUMBSUP_MELEE",
	"ACT_VM_UNDEPLOY_2",
	"ACT_HL2MP_RUN_SMG1",
	"ACT_DOD_HS_CROUCH_MG42",
	"ACT_WALK_RIFLE",
	"ACT_HL2MP_IDLE_SMG1",
	"ACT_HL2MP_SWIM_PISTOL",
	"DModelSelect",
	"ACT_HL2MP_SWIM_IDLE_PISTOL",
	"ACT_HL2MP_JUMP_PISTOL",
	"ACT_RANGE_ATTACK_AR2_LOW",
	"ACT_DOD_PRONEWALK_AIM_GREN_FRAG",
	"ACT_DOD_PRONE_AIM_TOMMY",
	"ACT_VM_IDLE_1",
	"ACT_SLAM_THROW_DETONATOR_HOLSTER",
	"ACT_PLAYER_RUN_FIRE",
	"ACT_USE",
	"ACT_VM_UNDEPLOY_EMPTY",
	"ACT_MELEE_ATTACK_SWING",
	"ACT_HL2MP_RUN_PISTOL",
	"ACT_BARNACLE_CHEW",
	"ACT_MP_GESTURE_VC_NODYES_BUILDING",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK",
	"ACT_DOD_RUN_AIM_MG",
	"ACT_HL2MP_IDLE",
	"chat",
	"ACT_GLIDE",
	"GetViewEntity",
	"ACT_WALK_CROUCH_AIM",
	"vgui",
	"ACT_SLAM_TRIPMINE_ATTACH2",
	"ACT_MP_GESTURE_FLINCH_STOMACH",
	"ACT_HL2MP_SWIM_IDLE_SUITCASE",
	"HTML",
	"ACT_RUN_STEALTH_PISTOL",
	"ACT_VM_PRIMARYATTACK_5",
	"RecipientFilter",
	"EFL_DIRTY_ABSVELOCITY",
	"IN_BACK",
	"CHAN_AUTO",
	"ACT_RUN_AIM_RELAXED",
	"PositionSpawnIcon",
	"ACT_DOD_RUN_IDLE_MP40",
	"ACT_MP_CROUCH_PRIMARY",
	"ACT_VM_RELOADEMPTY",
	"ACT_HL2MP_SWIM_ZOMBIE",
	"CT_UNIQUE",
	"ACT_MP_ATTACK_CROUCH_PREFIRE",
	"GetHostName",
	"ACT_HL2MP_SIT_FIST",
	"ACT_DOD_STAND_IDLE_MP44",
	"ACT_WALK_AIM_AGITATED",
	"AvatarImage",
	"COLLISION_GROUP_WEAPON",
	"DProgress",
	"KEY_F12",
	"ACT_RANGE_ATTACK_SLAM",
	"ACT_DOD_PRONEWALK_AIM_GREN_STICK",
	"ACT_VM_DRAW_M203",
	"ACT_HL2MP_GESTURE_RELOAD_SCARED",
	"ACT_HL2MP_IDLE_SUITCASE",
	"BLOOD_COLOR_GREEN",
	"ACT_HL2MP_WALK_SCARED",
	"undo",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_8",
	"KEY_NONE",
	"ACT_HL2MP_JUMP_ANGRY",
	"IGModAudioChannel",
	"ACT_HL2MP_GESTURE_RELOAD_ANGRY",
	"hammer",
	"Label",
	"IsMounted",
	"ACT_MP_GESTURE_FLINCH_SECONDARY",
	"ENT_POINT",
	"ACT_HL2MP_SWIM_GRENADE",
	"ACT_WALK_AIM_STEALTH",
	"KEY_2",
	"pcall",
	"ACT_HL2MP_IDLE_CROUCH_CAMERA",
	"SND_IGNORE_NAME",
	"isbool",
	"ACT_DI_ALYX_HEADCRAB_MELEE",
	"ACT_MP_SWIM_IDLE",
	"AddonMaterial",
	"ACT_DOD_RUN_AIM_GREASE",
	"ACT_HL2MP_JUMP_REVOLVER",
	"ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER",
	"Derma_DrawBackgroundBlur",
	"ACT_VICTORY_DANCE",
	"markup",
	"NAV_MESH_JUMP",
	"ACT_HL2MP_WALK_REVOLVER",
	"CT_DOWNTRODDEN",
	"getfenv",
	"PrecacheSentenceGroup",
	"MAT_GLASS",
	"file",
	"ACT_WALK_PACKAGE",
	"ConVar",
	"DisableClipping",
	"ACT_GESTURE_TURN_RIGHT45",
	"ACT_HL2MP_JUMP_MAGIC",
	"ACT_FLINCH_PHYSICS",
	"ACT_BARNACLE_CHOMP",
	"Derma_Install_Convar_Functions",
	"AddOriginToPVS",
	"ACT_RANGE_ATTACK_PISTOL",
	"ACT_HL2MP_WALK_CROUCH_MAGIC",
	"ACT_HL2MP_RUN_MAGIC",
	"ACT_HL2MP_IDLE_MAGIC",
	"ACT_HL2MP_SIT_SLAM",
	"ACT_ZOMBIE_CLIMB_START",
	"ACT_DOD_PRONEWALK_IDLE_C96",
	"ACT_BUSY_SIT_CHAIR_ENTRY",
	"ACT_DOD_ZOOMLOAD_BAZOOKA",
	"ACT_DOD_RUN_IDLE_BAZOOKA",
	"ACT_RUN_CROUCH_AIM_RIFLE",
	"ACT_OBJ_ASSEMBLING",
	"ACT_GMOD_GESTURE_RANGE_FRENZY",
	"TEXTUREFLAGS_BORDER",
	"ACT_MP_PRIMARY_GRENADE2_ATTACK",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE_05",
	"widgets",
	"ACT_DOD_PRONE_AIM_GREASE",
	"Player",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE_04",
	"ACT_HL2MP_WALK_CROUCH_ZOMBIE_02",
	"SNDLVL_IDLE",
	"File",
	"ACT_RUN_AIM_STIMULATED",
	"ACT_HL2MP_WALK_ZOMBIE_03",
	"ACT_HL2MP_WALK_ZOMBIE_02",
	"ACT_HL2MP_RUN_CHARGING",
	"DColorCube",
	"LAST_VISIBLE_CONTENTS",
	"ACT_DOD_STAND_IDLE_TOMMY",
	"ACT_GMOD_TAUNT_CHEER",
	"ACT_DOD_PRIMARYATTACK_PRONE_PSCHRECK",
	"ACT_OVERLAY_SHIELD_UP_IDLE",
	"ACT_GESTURE_RANGE_ATTACK1_LOW",
	"ACT_CROUCHING_SHIELD_UP_IDLE",
	"ACT_VM_IOUT_EMPTY",
	"ACT_GMOD_GESTURE_WAVE",
	"ACT_GMOD_TAUNT_SALUTE",
	"CAP_MOVE_GROUND",
	"ACT_RUN_RPG",
	"NamedColor",
	"ACT_GMOD_GESTURE_BECON",
	"MOVETYPE_CUSTOM",
	"ACT_DOD_RELOAD_PRONE_BAZOOKA",
	"COND_SEE_FEAR",
	"ACT_GESTURE_FLINCH_BLAST",
	"ScrW",
	"ACT_RANGE_ATTACK_TRIPWIRE",
	"ACT_MP_GESTURE_VC_HANDMOUTH_PDA",
	"ACT_GESTURE_FLINCH_LEFTARM",
	"CAP_USE",
	"ACT_TRIPMINE_GROUND",
	"ACT_IDLE_STIMULATED",
	"ACT_IDLE",
	"ACT_VM_IDLE_DEPLOYED_6",
	"SCHED_ALERT_STAND",
	"ACT_RUN_CROUCH_RIFLE",
	"IN_ZOOM",
	"FL_ONGROUND",
	"ACT_MP_GESTURE_VC_HANDMOUTH_MELEE",
	"ACT_VM_RELOAD_END",
	"ACT_DOD_HS_IDLE_PISTOL",
	"ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY",
	"MAT_DIRT",
	"SIM_LOCAL_FORCE",
	"ACT_GESTURE_RANGE_ATTACK2",
	"ACT_MP_GESTURE_VC_NODYES_PRIMARY",
	"ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY",
	"resource",
	"ACT_MP_ATTACK_STAND_PDA",
	"Material",
	"ACT_MP_JUMP_FLOAT_PDA",
	"ACT_MP_JUMP_START_PDA",
	"ACT_SLAM_STICKWALL_DETONATOR_HOLSTER",
	"ACT_GESTURE_FLINCH_BLAST_DAMAGED",
	"DIRECTIONAL_USE",
	"HITGROUP_STOMACH",
	"CMoveData",
	"DTileLayout",
	"ACT_MP_CROUCH_PDA",
	"ACT_ZOMBIE_CLIMB_END",
	"KEY_Q",
	"ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING",
	"GetDemoFileDetails",
	"ACT_DIE_FRONTSIDE",
	"ACT_MP_SWIM_PRIMARY",
	"ACT_MP_ATTACK_CROUCH_BUILDING",
	"DEFINE_BASECLASS",
	"ACT_SLAM_STICKWALL_DETONATE",
	"ACT_MP_ATTACK_STAND_BUILDING",
	"DHorizontalDivider",
	"ACT_HL2MP_GESTURE_RELOAD_MAGIC",
	"ACT_WALK_CROUCH_AIM_RIFLE",
	"Awesomium",
	"ACT_MP_CROUCHWALK_BUILDING",
	"ACT_MP_AIRWALK_BUILDING",
	"ACT_MP_WALK_BUILDING",
	"ACT_DOD_PRONEWALK_IDLE_GREASE",
	"MATERIAL_LINE_LOOP",
	"KEY_F2",
	"ACT_MP_SECONDARY_GRENADE2_ATTACK",
	"ACT_MP_ATTACK_CROUCH_POSTFIRE",
	"ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY",
	"DPropertySheet",
	"ACT_DOD_SPRINT_IDLE_30CAL",
	"GameDetails",
	"USE_OFF",
	"MAT_PLASTIC",
	"ACT_VM_IDLE_DEPLOYED_8",
	"ACT_MP_GRENADE2_ATTACK",
	"ACT_MP_GRENADE1_ATTACK",
	"ACT_DOD_CROUCHWALK_AIM_TOMMY",
	"ACT_MP_RELOAD_STAND_SECONDARY_END",
	"ACT_VM_FIZZLE",
	"GetGlobalFloat",
	"ACT_SPRINT",
	"ACT_WALK",
	"SCREENFADE",
	"tobool",
	"ACT_DOD_PRONE_AIM_SPADE",
	"ACT_DOD_RUN_AIM_GREN_FRAG",
	"KEY_PAD_2",
	"DMG_CLUB",
	"ACT_WALK_AIM_STEALTH_PISTOL",
	"GO_WEST",
	"IN_GRENADE2",
	"SOLID_OBB",
	"EF_PARENT_ANIMATES",
	"ACT_CROUCHIDLE",
	"BONE_PHYSICALLY_SIMULATED",
	"ACT_HL2MP_SIT_CROSSBOW",
	"ACT_MP_CROUCH_MELEE",
	"DFileBrowser",
	"SOLID_BBOX",
	"CHAN_WEAPON",
	"ErrorNoHalt",
	"ErrorNoHaltWithStack",
	"ACT_HL2MP_RUN_DUEL",
	"ACT_DOD_WALK_ZOOM_BAZOOKA",
	"type",
	"MOVETYPE_STEP",
	"ACT_MP_GESTURE_FLINCH_HEAD",
	"ACT_SLAM_THROW_TO_TRIPMINE_ND",
	"ACT_DOD_HS_IDLE_MP44",
	"ACT_DOD_STAND_IDLE_PISTOL",
	"ACT_GESTURE_RANGE_ATTACK_AR1",
	"ACT_DOD_RUN_AIM_PISTOL",
	"ACT_DIE_HEADSHOT",
	"ACT_MP_JUMP_FLOAT_SECONDARY",
	"ACT_FLINCH_LEFTARM",
	"NumModelSkins",
	"ACT_MP_RELOAD_SWIM_PRIMARY_END",
	"DrawSharpen",
	"ACT_VM_USABLE_TO_UNUSABLE",
	"ACT_DOD_WALK_IDLE_BAZOOKA",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_EMPTY",
	"ACT_MP_ATTACK_AIRWALK_PRIMARY",
	"ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED",
	"ACT_RUN_CROUCH_RPG",
	"TYPE_NAVLADDER",
	"DebugInfo",
	"ACT_HL2MP_RUN_MELEE2",
	"ACT_SLAM_THROW_THROW2",
	"BOX_LEFT",
	"ACT_DOD_CROUCHWALK_AIM_30CAL",
	"ACT_MP_RELOAD_SWIM",
	"ACT_GESTURE_BARNACLE_STRANGLE",
	"ACT_MP_RELOAD_CROUCH_LOOP",
	"CONTENTS_CURRENT_DOWN",
	"DProperty_Boolean",
	"ACT_MP_ATTACK_SWIM_GRENADE",
	"math",
	"ImageCheckBox",
	"ACT_MP_ATTACK_CROUCH_PRIMARYFIRE",
	"ACT_DOD_PRIMARYATTACK_PRONE",
	"ACT_MP_ATTACK_STAND_PRIMARYFIRE",
	"ACT_SHOTGUN_IDLE_DEEP",
	"CAP_OPEN_DOORS",
	"RecordDemoFrame",
	"MAT_COMPUTER",
	"Vehicle",
	"ACT_HL2MP_IDLE_SLAM",
	"ACT_MP_CROUCH_DEPLOYED_IDLE",
	"FrameNumber",
	"ACT_DOD_PLANT_TNT",
	"ACT_DOD_HS_CROUCH_TOMMY",
	"CLASS_NONE",
	"ACT_DOD_HS_IDLE_30CAL",
	"ACT_MP_GESTURE_FLINCH_LEFTARM",
	"ACT_DOD_PRIMARYATTACK_PRONE_C96",
	"ACT_DOD_SECONDARYATTACK_CROUCH",
	"ACT_DOD_PRONE_ZOOM_FORWARD_PSCHRECK",
	"ACT_DOD_CROUCH_IDLE_PISTOL",
	"ACT_GESTURE_RANGE_ATTACK_THROW",
	"ACT_DEPLOY_IDLE",
	"ACT_DOD_RELOAD_PRONE_BAR",
	"ACT_DOD_RELOAD_PRONE_MP40",
	"ACT_COWER",
	"GESTURE_SLOT_JUMP",
	"ACT_DOD_RELOAD_DEPLOYED_MG34",
	"ACT_DOD_RELOAD_DEPLOYED_MG",
	"ACT_IDLE_RPG_RELAXED",
	"AccessorFunc",
	"ACT_DOD_RELOAD_CROUCH_PISTOL",
	"GetConVarString",
	"ScreenScale",
	"ACT_DOD_RELOAD_CROUCH_MP40",
	"ACT_SLAM_THROW_DETONATE",
	"ACT_GESTURE_FLINCH_BLAST_SHOTGUN",
	"ACT_DOD_WALK_IDLE_MP40",
	"CtrlListBox",
	"SIM_GLOBAL_ACCELERATION",
	"ACT_HL2MP_WALK_CROUCH_KNIFE",
	"ACT_DOD_RUN_AIM_TOMMY",
	"SANDBOX",
	"ACT_PHYSCANNON_ANIMATE",
	"ACT_SLAM_DETONATOR_STICKWALL_DRAW",
	"ACT_SLAM_STICKWALL_ATTACH",
	"ACT_GESTURE_TURN_LEFT",
	"ACT_VM_IDLE_DEPLOYED_1",
	"ACT_BUSY_LEAN_LEFT",
	"EFL_NO_ROTORWASH_PUSH",
	"ACT_DOD_SECONDARYATTACK_RIFLE",
	"IMAGE_FORMAT_ARGB8888",
	"DMG_POISON",
	"SortedPairsByMemberValue",
	"ACT_DOD_WALK_ZOOM_BOLT",
	"SF_ROLLERMINE_FRIENDLY",
	"ACT_MP_JUMP_FLOAT_BUILDING",
	"LoadLastMap",
	"ACT_HL2MP_SWIM_MELEE",
	"CLASS_PLAYER_ALLY_VITAL",
	"ACT_DOD_PRONE_AIM_PISTOL",
	"ACT_DOD_WALK_AIM_KNIFE",
	"ACT_VM_DEPLOY_8",
	"ACT_GMOD_GESTURE_ITEM_THROW",
	"SpawnIcon",
	"ACT_DOD_CROUCH_IDLE_MG",
	"gmsave",
	"CSEnt",
	"SOLID_OBB_YAW",
	"ACT_GESTURE_TURN_RIGHT90_FLAT",
	"bf_read",
	"ACT_DOD_STAND_AIM_BOLT",
	"ACT_DOD_STAND_AIM_RIFLE",
	"ACT_DOD_RUN_IDLE_C96",
	"ACT_SLAM_STICKWALL_TO_THROW",
	"ACT_HL2MP_JUMP_CAMERA",
	"ACT_SLAM_STICKWALL_IDLE",
	"ACT_WALK_AIM_PISTOL",
	"ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY",
	"FL_DISSOLVING",
	"ACT_RANGE_ATTACK_RPG",
	"ACT_DOD_CROUCH_AIM_30CAL",
	"ACT_VM_UNDEPLOY_4",
	"ACT_DOD_CROUCHWALK_IDLE_RIFLE",
	"ACT_VM_IDLE_DEPLOYED_5",
	"KEY_SCROLLLOCKTOGGLE",
	"isstring",
	"ACT_IDLE_SHOTGUN_STIMULATED",
	"VMatrix",
	"ACT_DOD_RELOAD_PRONE_GARAND",
	"controlpanel",
	"ACT_MP_RELOAD_AIRWALK_PRIMARY",
	"DVerticalDivider",
	"ACT_VM_RELOAD_SILENCED",
	"SScale",
	"CLASS_HACKED_ROLLERMINE",
	"ACT_VM_DOWN_M203",
	"DListBox",
	"ACT_RUN_RIFLE_RELAXED",
	"ACT_OBJ_RUNNING",
	"ACT_WALK_STEALTH",
	"IsFirstTimePredicted",
	"ACT_VM_PRIMARYATTACK_DEPLOYED_6",
	"ACT_MP_JUMP_LAND_BUILDING",
	"ACT_PHYSCANNON_DETACH",
	"DButton",
	"ACT_VM_HITLEFT",
	"ACT_JUMP",
	"SCHED_GET_HEALTHKIT",
	"ACT_RELOAD"
	-- End generated code
}


================================================
FILE: LICENSE.txt
================================================

The MIT License (MIT)

Copyright (c) 2015 Brian Hang, Kyu Yeon Lee
Copyright (c) 2018-2021 Alexander Grist-Hucker, Igor Radovanovic

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
	<img src="https://raw.githubusercontent.com/NebulousCloud/helix/master/docs/banner.gif" alt="Helix" />
</p>

<p align="center">
	<a href="https://discord.gg/2AutUcF">
		<img src="https://img.shields.io/discord/505957257125691423.svg" alt="Discord" />
	</a>
	<a href="https://github.com/NebulousCloud/helix/actions">
		<img src="https://img.shields.io/github/workflow/status/NebulousCloud/helix/CI" alt="Build Status" />
	</a>
</p>

Helix is a framework for roleplay gamemodes in [Garry's Mod](https://gmod.facepunch.com/), based off of [NutScript 1.1](https://github.com/rebel1324/NutScript). Helix provides a stable, feature-filled, open-source, and DRM-free base so you can focus more on the things you want: making gameplay.

## Getting Started
Visit the getting started guide in the [documentation](https://docs.gethelix.co/manual/getting-started/) for an in-depth guide.

If you know what you're doing, a quick start for bootstrapping your own schema is forking/copying the skeleton schema at https://github.com/nebulouscloud/helix-skeleton. The skeleton contains all the important elements you need to have a functioning schema so you can get to coding right away.

You can also use our HL2 RP schema at https://github.com/nebulouscloud/helix-hl2rp as a base to work off of if you need something more fleshed out.

## Plugins
If you'd like to enhance your gamemode, you can use any of the freely provided plugins available at the [Helix Plugin Center](https://plugins.gethelix.co). It is also encouraged to submit your own plugins for others to find and use at https://github.com/nebulouscloud/helix-plugins

## Documentation
Up-to-date documentation can be found at https://docs.gethelix.co. This is automatically updated when commits are pushed to the master branch.

If you'd like to ask some questions or integrate with the community, you can always join our [Discord](https://discord.gg/2AutUcF) server. We highly encourage you to search through the documentation before posting a question - the docs contain a good deal of information about how the various systems in Helix work, and it might explain what you're looking for.

### Building documentation
If you're planning on contributing to the documentation, you'll probably want to preview your changes before you commit. The documentation can be built using [LDoc](https://github.com/impulsh/ldoc) - note that we use a forked version to add some functionality. You'll need [LuaRocks](https://luarocks.org/) installed in order to get started.

```shell
# installing ldoc
git clone https://github.com/impulsh/ldoc
cd ldoc
luarocks make

# navigate to the helix repo folder and run
ldoc .
```

You may not see the syntax highlighting work on your local copy - you'll need to copy the files in `docs/js` and `docs/css` over into the `docs/html` folder after it's done building.

## Contributing
Feel free to submit a pull request with any fixes/changes that you might find beneficial. Currently, there are no solid contributing guidelines other than keeping your code consistent with the rest of the framework.

## Acknowledgements
Helix is a fork of NutScript 1.1 by [Chessnut](https://github.com/brianhang) and [rebel1324](https://github.com/rebel1324).


================================================
FILE: config.ld
================================================

file = {
	"gamemode",
	"plugins",
	"docs/hooks",
	exclude = {"gamemode/core/libs/thirdparty"}
}

module_file = {
	Character = "gamemode/core/meta/sh_character.lua",
	Entity = "gamemode/core/meta/sh_entity.lua",
	Inventory = "gamemode/core/meta/sh_inventory.lua",
	Item = "gamemode/core/meta/sh_item.lua",
	Player = "gamemode/core/meta/sh_player.lua"
}

dir = "docs/html"
project = "Helix"
title = "Helix Documentation"

no_space_before_args = true
style = "docs/css"
template = "docs/templates"
format = "markdown"
ignore = true
topics = "docs/manual"
use_markdown_titles = true
kind_names = {module = "Libraries", topic = "Manual"}
merge = true
sort = true
sort_modules = true

simple_args_string = true -- we show optionals/defaults outside of the display name
strip_metamethod_prefix = true -- remove the name of the table when displaying metamethod names
no_viewed_topic_at_top = true -- don't put the currently viewed topic at the top
use_new_templates = true -- new templating system
pretty_urls = true -- avoid showing .html in urls
pretty_topic_names = true -- strips extension from manual filenames, this does not check filename collisions

custom_tags = {
	{"realm", hidden = true},
	{"internal", hidden = true}
}

custom_display_name_handler = function(item, default_handler)
	if (item.type == "function" and item.module) then
		if (item.module.type == "classmod" or item.module.type == "panel") then
			return item.module.mod_name .. ":" .. default_handler(item)
		elseif (item.module.type == "hooks") then
			return item.module.mod_name:upper() .. ":" .. default_handler(item)
		end
	end

	return default_handler(item)
end

new_type("hooks", "Hooks", true)
new_type("panel", "Panels", true)

-- helix types
tparam_alias("char", "Character")
tparam_alias("inventory", "Inventory")
tparam_alias("item", "Item")
tparam_alias("ixtype", "ix.type")
tparam_alias("date", "date")

-- standard types
tparam_alias("string", "string")
tparam_alias("bool", "boolean")
tparam_alias("func", "function")
tparam_alias("player", "Player")
tparam_alias("entity", "Entity")
tparam_alias("color", "color")
tparam_alias("tab", "table")
tparam_alias("material", "material")
tparam_alias("vector", "vector")
tparam_alias("angle", "angle")


================================================
FILE: docs/css/highlight.css
================================================
/*

github.com style (c) Vasily Polovnyov <vast@whiteants.net>

*/

.hljs {
  display: block;
  color: #333;
}

.hljs-comment,
.hljs-quote {
  color: #535346;
  font-style: italic;
}

.hljs-keyword,
.hljs-selector-tag,
.hljs-subst {
  color: #333;
  font-weight: bold;
}

.hljs-number,
.hljs-literal,
.hljs-variable,
.hljs-template-variable,
.hljs-tag .hljs-attr {
  color: #008080;
}

.hljs-string,
.hljs-doctag {
  color: #d14;
}

.hljs-title,
.hljs-section,
.hljs-selector-id {
  color: #900;
  font-weight: bold;
}

.hljs-subst {
  font-weight: normal;
}

.hljs-type,
.hljs-class .hljs-title {
  color: #458;
  font-weight: bold;
}

.hljs-tag,
.hljs-name,
.hljs-attribute {
  color: #000080;
  font-weight: normal;
}

.hljs-regexp,
.hljs-link {
  color: #009926;
}

.hljs-symbol,
.hljs-bullet {
  color: #990073;
}

.hljs-built_in,
.hljs-builtin-name {
  color: #0086b3;
}

.hljs-meta {
  color: #999;
  font-weight: bold;
}

.hljs-deletion {
  background: #fdd;
}

.hljs-addition {
  background: #dfd;
}

.hljs-emphasis {
  font-style: italic;
}

.hljs-strong {
  font-weight: bold;
}


================================================
FILE: docs/css/ldoc.css
================================================

:root {
	--content-width: 1200px;
	--sidebar-width: 330px;

	--padding-big: 48px;
	--padding-normal: 24px;
	--padding-small: 16px;
	--padding-tiny: 10px;

	--font-massive: 32px;
	--font-huge: 24px;
	--font-big: 18px;
	--font-normal: 16px;
	--font-tiny: 12px;

	--font-style-normal: Segoe UI, Helvetica, Arial, sans-serif;
	--font-style-code: Consolas, monospace;

	--color-accent: rgb(115, 53, 142);
	--color-accent-dark: rgb(85, 39, 105);
	--color-white: rgb(255, 255, 255);
	--color-offwhite: rgb(200, 200, 200);
	--color-white-accent: rgb(203, 190, 209);
	--color-black: rgb(0, 0, 0);
	--color-lightgrey: rgb(160, 160, 160);
	--color-background-light: rgb(240, 240, 240);
	--color-background-dark: rgb(33, 33, 33);
}

* {
	padding: 0;
	margin: 0;
	box-sizing: border-box;
}

body {
	background-color: var(--color-background-light);
	font-family: var(--font-style-normal);

	display: flex;
	flex-direction: column;
}

a {
	color: inherit;
	text-decoration: inherit;
}

h1, h2, h3, h4 {
	font-weight: 400;
}

ul li {
	margin-left: var(--padding-small);
}

/* landing */
.landing {
	background-color: var(--color-accent);
	color: var(--color-white);

	padding: 128px 0 128px 0;
}

.landing h1 {
	margin: 0;
	padding: 0;
	border: none;

	font-weight: 100;
	font-size: var(--font-massive);
	text-align: center;
}

.wrapper {
	padding: var(--padding-small);
}

details {
	user-select: none;
}

details summary {
	outline: none;
}

code {
	font-family: "Source Code Pro", monospace;
	font-size: 85%;
	white-space: pre;
	tab-size: 4;
	-moz-tab-size: 4;
	padding: 2px 4px;
	background-color: rgb(33, 33, 33, 0.1);
}

pre {
	background-color: rgb(33, 33, 33, 0.1);
	margin-top: var(--padding-small);
	padding: var(--padding-tiny);
	overflow: auto;
}

pre code {
	background-color: transparent;
}

span.realm {
	width: 14px;
	height: 14px;
	border-radius: 3px;
	display: inline-block;
	margin-right: 6px;
}

span.realm.shared {
	background: linear-gradient(45deg, #f80 0%, #f80 50%, #08f 51%, #08f 100%);
}

span.realm.client {
	background-color: #f80;
}

span.realm.server {
	background-color: #08f;
}

/* wrapper element for sidebar/content */
main {
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	align-items: flex-start;

	width: var(--content-width);
	margin: auto;
}

/* sidebar */
nav {
	color: var(--color-offwhite);
	background-color: var(--color-background-dark);

	position: fixed;
	display: flex;
	flex-direction: column;

	width: var(--sidebar-width);
	height: 100%;
}

/* sidebar header */
nav header {
	color: var(--color-white);
	background-color: var(--color-accent);

	padding: var(--padding-small);
}

nav header h1 {
	font-size: var(--font-huge);
	font-weight: 100;
	text-align: center;

	margin-bottom: var(--padding-small);
}

#search {
	background-color: var(--color-accent-dark);
	color: var(--color-white);

	border: none;
	font-size: var(--font-normal);
	outline: none;

	width: 100%;
	padding: 6px;
}

#search::placeholder {
	color: var(--color-white-accent);
}

#search::-webkit-search-cancel-button {
	display: none;
}

/* sidebar contents */
nav section {
	padding: var(--padding-small);
	overflow: auto;
}

nav section ul {
	list-style-type: none;
}

nav section::-webkit-scrollbar,
pre::-webkit-scrollbar {
	width: 8px;
	height: 8px;
}

nav section::-webkit-scrollbar-track,
pre::-webkit-scrollbar-track {
	background: transparent;
}

nav section::-webkit-scrollbar-thumb {
	background-color: var(--color-lightgrey);
}

pre::-webkit-scrollbar-thumb {
	background-color: var(--color-lightgrey);
}

/* sidebar contents category */
nav section details.category {
	padding-top: var(--padding-tiny);
}

nav section details.category > ul > li {
	margin: 0;
	line-height: 1.5;
}

nav section details.category > ul > li a {
	display: inline-block;
	width: 90%;
}

nav section details.category:first-of-type {
	padding-top: calc(var(--padding-tiny) * -1);
}

nav section details.category summary::-webkit-details-marker {
	opacity: 0.5;
	cursor: pointer;
}

nav section details.category summary h2 {
	color: var(--color-accent);

	font-size: var(--font-big);
	letter-spacing: 2px;
	text-transform: uppercase;
	cursor: pointer;

	padding-bottom: var(--padding-tiny);
}

/* content */
article {
	background-color: rgb(255, 255, 255);

	width: calc(100% - var(--sidebar-width));
	min-height: 100vh;
	margin-left: var(--sidebar-width);
}

article .wrapper > *:first-child {
	margin-top: 0;
}

/* header */
article header {
	color: rgb(255, 255, 255);
	background-color: rgb(115, 53, 142);
	padding: var(--padding-tiny);
}

article header h1 {
	border-bottom: 1px solid rgba(255, 255, 255, 0.25);
	padding-bottom: 8px;
	font-family: var(--font-style-code);
	margin: 0;
}

article header h2 {
	padding-top: var(--padding-tiny);
	margin: 0;
	font-size: var(--font-normal);
	font-weight: normal;
}

article header.module a {
	color: white !important;
	text-decoration: underline;
}

details.category > summary {
	list-style: none;
}

details.category > summary::-webkit-details-marker {
	display: none;
}

article h1 {
	font-size: 28px;
	font-weight: 600;
	border-bottom: 1px solid rgba(0, 0, 0, 0.25);
	margin-top: 24px;
	margin-bottom: 16px;
	padding-bottom: 8px;
}

article h2 {
	font-size: 20px;
	font-weight: 600;
	margin-top: 12px;
}

article h3 {
	color: rgb(115, 53, 142);
	margin-top: var(--padding-tiny);
	text-transform: uppercase;
}

article p {
	margin-top: var(--padding-small);
}

article p a,
article ul li a,
article h1 a,
article h2 a {
	color: rgb(115, 53, 142);
	font-weight: 600;
}

article h1.title {
	color: rgb(255, 255, 255);
	background-color: rgb(115, 53, 142);
	margin-top: var(--padding-small);
	margin-bottom: 0;
	padding: var(--padding-tiny);

	font-size: var(--font-big);
	font-weight: 100;
	letter-spacing: 2px;
	text-transform: uppercase;
}

a.reference {
	color: rgb(115, 53, 142);
	float: right;
	margin-top: 8px;
	padding-left: 8px;
	font-size: 14px;
	font-weight: 600;
}

.notice {
	--color-notice-background: var(--color-accent);
	--color-notice-text: var(--color-notice-background);

	margin-top: var(--padding-tiny);
	border: 2px solid var(--color-notice-background);
}

.notice.error {
	--color-notice-background: rgb(194, 52, 130);
}

.notice.warning {
	--color-notice-background: rgb(224, 169, 112);
	--color-notice-text: rgb(167, 104, 37);
}

.notice .title {
	color: var(--color-white);
	background-color: var(--color-notice-background);

	padding: var(--padding-tiny);
	font-size: var(--font-normal);

	text-transform: uppercase;
	letter-spacing: 2px;
}

.notice p {
	color: var(--color-notice-text);

	margin: 0 !important;
	padding: var(--padding-tiny);
}

/* function/table */
.method {
	display: flex;
	flex-flow: column;
	background-color: rgb(230, 230, 230);
	padding: var(--padding-tiny);
	margin-top: var(--padding-small);
}

.method header {
	color: rgb(0, 0, 0);
	background-color: inherit;
	padding: 0;
	order: -1;
}

.method header .anchor {
	color: inherit;
	text-decoration: inherit;
}

.method header .anchor:target h1 {
	background-color: rgba(115, 53, 142, 0.2);
	background-clip: content-box;
}

.method header h1 {
	font-family: "Source Code Pro", monospace;
	padding-bottom: var(--padding-tiny);
	border-bottom: 1px solid rgba(0, 0, 0, 0.25);
	font-size: 20px;
}

.method header p:first-of-type {
	margin-top: var(--padding-tiny);
}

.method h3 {
	color: rgb(115, 53, 142);
	font-size: var(--font-normal);
	letter-spacing: 2px;
	text-transform: uppercase;
}

.method pre {
	margin-top: var(--padding-tiny);
}

@media only screen and (max-width: 1100px) {
	main nav {
		position: inherit;
	}

	main article {
		margin-left: 0;
	}
}

.method ul {
	margin-top: var(--padding-tiny);
	background-color: inherit;
}

.method ul li {
	list-style: none;
	margin: 4px 0 0 var(--padding-normal);
}

.method ul li:first-of-type {
	margin-top: 0;
}

.method ul li p {
	margin: 4px 0 0 var(--padding-normal);
}

.method ul li pre {
	margin: 4px 0 0 var(--padding-normal);
}

.method ul li a {
	color: rgb(115, 53, 142);
	font-weight: 600;
}

/* we have to manually specify these instead of making a shared class since you cannot customize the parameter class in ldoc */
.parameter, .type, .default {
	display: inline-block;
	color: rgb(255, 255, 255) !important;

	padding: 4px;
	font-size: 14px;
	font-family: "Source Code Pro", monospace;
}

.parameter {
	background-color: rgb(115, 53, 142);
}

.type {
	background-color: rgb(31, 141, 155);
}

a.type {
	font-weight: 300 !important;
	text-decoration: underline;
}

.default {
	background-color: rgb(193, 114, 11);
}

.type a {
	padding: 0;
}

.or {
	color: rgba(115, 53, 142, 0.5);
	background-color: inherit;

	width: calc(100% - 32px);
	height: 8px;
	margin: 0 0 8px 32px;

	text-align: center;
	font-weight: 600;
	border-bottom: 1px solid rgba(115, 53, 142, 0.5);
}

.or span {
	background-color: inherit;
	padding: 0 8px 0 8px;
}


================================================
FILE: docs/hooks/class.lua
================================================

-- luacheck: ignore 111

--[[--
Class setup hooks.

As with `Faction`s, `Class`es get their own hooks for when players leave/join a class, etc. These hooks are only
valid in class tables that are created in `schema/classes/sh_classname.lua`, and cannot be used like regular gamemode hooks.
]]
-- @hooks Class

--- Whether or not a player can switch to this class.
-- @realm shared
-- @player client Client that wants to switch to this class
-- @treturn bool True if the player is allowed to switch to this class
-- @usage function CLASS:CanSwitchTo(client)
-- 	return client:IsAdmin() -- only admins allowed in this class!
-- end
function CanSwitchTo(client)
end

--- Called when a character has left this class and has joined a different one. You can get the class the character has
-- has joined by calling `character:GetClass()`.
-- @realm server
-- @player client Player who left this class
function OnLeave(client)
end

--- Called when a character has joined this class.
-- @realm server
-- @player client Player who has joined this class
-- @usage function CLASS:OnSet(client)
-- 	client:SetModel("models/police.mdl")
-- end
function OnSet(client)
end

--- Called when a character in this class has spawned in the world.
-- @realm server
-- @player client Player that has just spawned
function OnSpawn(client)
end


================================================
FILE: docs/hooks/faction.lua
================================================

-- luacheck: ignore 111

--[[--
Faction setup hooks.

Factions get their own hooks that are called for various reasons, but the most common one is to set up a character
once it's created and assigned to a certain faction. For example, giving a police faction character a weapon on creation.
These hooks are used in faction tables that are created in `schema/factions/sh_factionname.lua` and cannot be used like
regular gamemode hooks.
]]
-- @hooks Faction

--- Called when the default name for a character needs to be retrieved (i.e upon initial creation).
-- @realm shared
-- @player client Client to get the default name for
-- @treturn string Default name for the newly created character
-- @usage function FACTION:GetDefaultName(client)
-- 	return "MPF-RCT." .. tostring(math.random(1, 99999))
-- end
function GetDefaultName(client)
end

--- Called when a character has been initally created and assigned to this faction.
-- @realm server
-- @player client Client that owns the character
-- @char character Character that has been created
-- @usage function FACTION:OnCharacterCreated(client, character)
-- 	local inventory = character:GetInventory()
-- 	inventory:Add("pistol")
-- end
function OnCharacterCreated(client, character)
end

--- Called when a character in this faction has spawned in the world.
-- @realm server
-- @player client Player that has just spawned
function OnSpawn(client)
end

--- Called when a player's character has been transferred to this faction.
-- @realm server
-- @char character Character that was transferred
-- @usage function FACTION:OnTransferred(character)
-- 	character:SetModel(self.models[1])
-- end
function OnTransferred(character)
end


================================================
FILE: docs/hooks/plugin.lua
================================================

-- luacheck: ignore 111

--[[--
Global hooks for general use.

Plugin hooks are regular hooks that can be used in your schema with `Schema:HookName(args)`, in your plugin with
`PLUGIN:HookName(args)`, or in your addon with `hook.Add("HookName", function(args) end)`.
]]
-- @hooks Plugin

--- Adjusts the data used just before creating a new character.
-- @realm server
-- @player client Player that is creating the character
-- @tab payload Table of data to be used for character creation
-- @tab newPayload Table of data be merged with the current payload
-- @usage function PLUGIN:AdjustCreationPayload(client, payload, newPayload)
-- 	newPayload.money = payload.attributes["stm"] -- Sets the characters initial money to the stamina attribute value.
-- end
function AdjustCreationPayload(client, payload, newPayload)
end

--- Adjusts a player's current stamina offset amount. This is called when the player's stamina is about to be changed; every
-- `0.25` seconds on the server, and every frame on the client.
-- @realm shared
-- @player client Player whose stamina is changing
-- @number baseOffset Amount the stamina is changing by. This can be a positive or negative number depending if they are
-- exhausting or regaining stamina
-- @treturn number New offset to use
-- @usage function PLUGIN:AdjustStaminaOffset(client, baseOffset)
-- 	return baseOffset * 2 -- Drain/Regain stamina twice as fast.
-- end
function AdjustStaminaOffset(client, baseOffset)
end

--- Creates the business panel in the tab menu.
-- @realm client
-- @treturn bool Whether or not to create the business menu
-- @usage function PLUGIN:BuildBusinessMenu()
-- 	return LocalPlayer():IsAdmin() -- Only builds the business menu for admins.
-- end
function BuildBusinessMenu()
end

--- Whether or not a message can be auto formatted with punctuation and capitalization.
-- @realm server
-- @player speaker Player that sent the message
-- @string chatType Chat type of the message. This will be something registered with `ix.chat.Register` - like `ic`, `ooc`, etc.
-- @string text Unformatted text of the message
-- @treturn bool Whether or not to allow auto formatting on the message
-- @usage function PLUGIN:CanAutoFormatMessage(speaker, chatType, text)
-- 	return false -- Disable auto formatting outright.
-- end
function CanAutoFormatMessage(speaker, chatType, text)
end

--- Whether or not certain information can be displayed in the character info panel in the tab menu.
-- @realm client
-- @tab suppress Information to **NOT** display in the UI - modify this to change the behaviour. This is a table of the names of
-- some panels to avoid displaying. Valid names include:
--
-- - `time` - current in-game time
-- - `name` - name of the character
-- - `description` - description of the character
-- - `characterInfo` - entire panel showing a list of additional character info
-- - `faction` - faction name of the character
-- - `class` - name of the character's class if they're in one
-- - `money` - current money the character has
-- - `attributes` - attributes list for the character
--
-- Note that schemas/plugins can add additional character info panels.
-- @usage function PLUGIN:CanCreateCharacterInfo(suppress)
-- 	suppress.attributes = true -- Hides the attributes panel from the character info tab
-- end
function CanCreateCharacterInfo(suppress)
end

--- Whether or not the ammo HUD should be drawn.
-- @realm client
-- @entity weapon Weapon the player currently is holding
-- @treturn bool Whether or not to draw the ammo hud
-- @usage function PLUGIN:CanDrawAmmoHUD(weapon)
-- 	if (weapon:GetClass() == "weapon_frag") then -- Hides the ammo hud when holding grenades.
-- 		return false
-- 	end
-- end
function CanDrawAmmoHUD(weapon)
end

--- Called when a player tries to use abilities on the door, such as locking.
-- @realm shared
-- @player client The client trying something on the door.
-- @entity door The door entity itself.
-- @number access The access level used when called.
-- @treturn bool Whether or not to allow the client access.
-- @usage function PLUGIN:CanPlayerAccessDoor(client, door, access)
-- 	return true -- Always allow access.
-- end
function CanPlayerAccessDoor(client, door, access)
end

--- Whether or not a player is allowed to combine an item `other` into the given `item`.
-- @realm server
-- @player client Player attempting to combine an item into another
-- @number item instance ID of the item being dropped onto
-- @number other instance ID of the item being combined into the first item, this can be invalid due to it being from clientside
-- @treturn bool Whether or not to allow the player to combine the items
-- @usage function PLUGIN:CanPlayerCombineItem(client, item, other)
--		local otherItem = ix.item.instances[other]
--
--		if (otherItem and otherItem.uniqueID == "soda") then
--			return false -- disallow combining any item that has a uniqueID equal to `soda`
--		end
--	end
function CanPlayerCombineItem(client, item, other)
end

--- Whether or not a player is allowed to create a new character with the given payload.
-- @realm server
-- @player client Player attempting to create a new character
-- @tab payload Data that is going to be used for creating the character
-- @treturn bool Whether or not the player is allowed to create the character. This function defaults to `true`, so you
-- should only ever return `false` if you're disallowing creation. Otherwise, don't return anything as you'll prevent any other
-- calls to this hook from running.
-- @treturn string Language phrase to use for the error message
-- @treturn ... Arguments to use for the language phrase
-- @usage function PLUGIN:CanPlayerCreateCharacter(client, payload)
-- 	if (!client:IsAdmin()) then
-- 		return false, "notNow" -- only allow admins to create a character
-- 	end
-- end
-- -- non-admins will see the message "You are not allowed to do this right now!"
function CanPlayerCreateCharacter(client, payload)
end

--- Whether or not a player is allowed to drop the given `item`.
-- @realm server
-- @player client Player attempting to drop an item
-- @number item instance ID of the item being dropped
-- @treturn bool Whether or not to allow the player to drop the item
-- @usage function PLUGIN:CanPlayerDropItem(client, item)
-- 	return false -- Never allow dropping items.
-- end
function CanPlayerDropItem(client, item)
end

--- Whether or not a player can earn money at regular intervals. This hook runs only if the player's character faction has
-- a salary set - i.e `FACTION.pay` is set to something other than `0` for their faction.
-- @realm server
-- @player client Player to give money to
-- @tab faction Faction of the player's character
-- @treturn bool Whether or not to allow the player to earn salary
-- @usage function PLUGIN:CanPlayerEarnSalary(client, faction)
-- 	return client:IsAdmin() -- Restricts earning salary to admins only.
-- end
function CanPlayerEarnSalary(client, faction)
end

--- Whether or not the player is allowed to enter observer mode. This is allowed only for admins by default and can be
-- customized by server owners if the server is using a CAMI-compliant admin mod.
-- @realm server
-- @player client Player attempting to enter observer
-- @treturn bool Whether or not to allow the player to enter observer
-- @usage function PLUGIN:CanPlayerEnterObserver(client)
-- 	return true -- Always allow observer.
-- end
function CanPlayerEnterObserver(client)
end

--- Whether or not a player can equip the given `item`. This is called for items with `outfit`, `pacoutfit`, or `weapons` as
-- their base. Schemas/plugins can utilize this hook for their items.
-- @realm server
-- @player client Player attempting to equip the item
-- @tab item Item being equipped
-- @treturn bool Whether or not to allow the player to equip the item
-- @see CanPlayerUnequipItem
-- @usage function PLUGIN:CanPlayerEquipItem(client, item)
-- 	return client:IsAdmin() -- Restrict equipping items to admins only.
-- end
function CanPlayerEquipItem(client, item)
end

--- Whether or not a player is allowed to hold an entity with the hands SWEP.
-- @realm server
-- @player client Player attempting to hold an entity
-- @entity entity Entity being held
-- @treturn bool Whether or not to allow the player to hold the entity
-- @usage function PLUGIN:CanPlayerHoldObject(client, entity)
-- 	return !(client:GetMoveType() == MOVETYPE_NOCLIP and !client:InVehicle()) -- Disallow players in observer holding objects.
-- end
function CanPlayerHoldObject(client, entity)
end

--- Whether or not a player is allowed to interact with an entity's interaction menu if it has one.
-- @realm server
-- @player client Player attempting interaction
-- @entity entity Entity being interacted with
-- @string option Option selected by the player
-- @param data Any data passed with the interaction option
-- @treturn bool Whether or not to allow the player to interact with the entity
-- @usage function PLUGIN:CanPlayerInteractEntity(client, entity, option, data)
--  if (entity:GetClass() == "my_big_entity" and entity:GetPos():Distance(client:GetPos()) < 192) then
--    return true -- Force allow interacting if within larger than default interact range of large entity
--  end
--
-- 	if (client:GetNetVar("drunk")) then
--    return false -- Disallow interacting with an entity while drunk
-- 	end
-- end
function CanPlayerInteractEntity(client, entity, option, data)
end

--- Whether or not a player is allowed to interact with an item via an inventory action (e.g picking up, dropping, transferring
-- inventories, etc). Note that this is for an item *table*, not an item *entity*. This is called after `CanPlayerDropItem`
-- and `CanPlayerTakeItem`.
-- @realm server
-- @player client Player attempting interaction
-- @string action The action being performed
-- @param item Item's instance ID or item table
-- @param data Any data passed with the action
-- @treturn bool Whether or not to allow the player to interact with the item
-- @usage function PLUGIN:CanPlayerInteractItem(client, action, item, data)
-- 	return false -- Disallow interacting with any item.
-- end
function CanPlayerInteractItem(client, action, item, data)
end

--- Whether or not a plyer is allowed to join a class.
-- @realm shared
-- @player client Player attempting to join
-- @number class ID of the class
-- @tab info The class table
-- @treturn bool Whether or not to allow the player to join the class
-- @usage function PLUGIN:CanPlayerJoinClass(client, class, info)
-- 	return client:IsAdmin() -- Restrict joining classes to admins only.
-- end
function CanPlayerJoinClass(client, class, info)
end

--- Whether or not a player can knock on the door with the hands SWEP.
-- @realm server
-- @player client Player attempting to knock
-- @entity entity Door being knocked on
-- @treturn bool Whether or not to allow the player to knock on the door
-- @usage function PLUGIN:CanPlayerKnock(client, entity)
-- 	return false -- Disable knocking on doors outright.
-- end
function CanPlayerKnock(client, entity)
end

--- Whether or not a player can open a shipment spawned from the business menu.
-- @realm server
-- @player client Player attempting to open the shipment
-- @entity entity Shipment entity
-- @treturn bool Whether or not to allow the player to open the shipment
-- @usage function PLUGIN:CanPlayerOpenShipment(client, entity)
-- 	return client:Team() == FACTION_BMD -- Restricts opening shipments to FACTION_BMD.
-- end
function CanPlayerOpenShipment(client, entity)
end

--- Whether or not a player is allowed to spawn a container entity.
-- @realm server
-- @player client Player attempting to spawn a container
-- @string model Model of the container being spawned
-- @entity entity Container entity
-- @treturn bool Whether or not to allow the player to spawn the container
-- @usage function PLUGIN:CanPlayerSpawnContainer(client, model, entity)
-- 	return client:IsAdmin() -- Restrict spawning containers to admins.
-- end
function CanPlayerSpawnContainer(client, model, entity)
end

--- Whether or not a player is allowed to take an item and put it in their inventory.
-- @realm server
-- @player client Player attempting to take the item
-- @entity item Entity corresponding to the item
-- @treturn bool Whether or not to allow the player to take the item
-- @usage function PLUGIN:CanPlayerTakeItem(client, item)
-- 	return !(client:GetMoveType() == MOVETYPE_NOCLIP and !client:InVehicle()) -- Disallow players in observer taking items.
-- end
function CanPlayerTakeItem(client, item)
end

--- Whether or not the player is allowed to punch with the hands SWEP.
-- @realm shared
-- @player client Player attempting throw a punch
-- @treturn bool Whether or not to allow the player to punch
-- @usage function PLUGIN:CanPlayerThrowPunch(client)
-- 	return client:GetCharacter():GetAttribute("str", 0) > 0 -- Only allow players with strength to punch.
-- end
function CanPlayerThrowPunch(client)
end

--- Whether or not a player can trade with a vendor.
-- @realm server
-- @player client Player attempting to trade
-- @entity entity Vendor entity
-- @string uniqueID The uniqueID of the item being traded.
-- @bool isSellingToVendor If the client is selling to the vendor
-- @treturn bool Whether or not to allow the client to trade with the vendor
-- @usage function PLUGIN:CanPlayerTradeWithVendor(client, entity, uniqueID, isSellingToVendor)
-- 	return false -- Disallow trading with vendors outright.
-- end
function CanPlayerTradeWithVendor(client, entity, uniqueID, isSellingToVendor)
end

--- Whether or not a player can unequip an item.
-- @realm server
-- @player client Player attempting to unequip an item
-- @tab item Item being unequipped
-- @treturn bool Whether or not to allow the player to unequip the item
-- @see CanPlayerEquipItem
-- @usage function PLUGIN:CanPlayerUnequipItem(client, item)
-- 	return false -- Disallow unequipping items.
-- end
function CanPlayerUnequipItem(client, item)
end

--- Whether or not a player can buy an item from the business menu.
-- @realm shared
-- @player client Player that uses a business menu
-- @string uniqueID The uniqueID of the business menu item
-- @treturn bool Whether or not to allow the player to buy an item from the business menu
-- @usage function PLUGIN:CanPlayerUseBusiness(client, uniqueID)
--  return false -- Disallow buying from the business menu.
-- end
function CanPlayerUseBusiness(client, uniqueID)
end

--- Whether or not a player can use a character.
-- @realm shared
-- @player client Player that wants to use a character
-- @char character Character that a player wants to use
-- @treturn bool Whether or not to allow the player to load a character
-- @usage function PLUGIN:CanPlayerUseCharacter(client, character)
-- 	return false -- Disallow using any character.
-- end
function CanPlayerUseCharacter(client, character)
end

--- Whether or not a player can use a door.
-- @realm server
-- @player client Player that wants to use a door
-- @entity entity Door that a player wants to use
-- @treturn bool Whether or not to allow the player to use a door
-- @usage function PLUGIN:CanPlayerUseDoor(client, character)
-- 	return false -- Disallow using any door.
-- end
function CanPlayerUseDoor(client, entity)
end

--- Determines whether a player can use a vendor.
-- @realm server
-- @player activator The player attempting to use the vendor
-- @entity vendor The vendor entity being used
-- @treturn bool Returns false if the player can't use the vendor
function CanPlayerUseVendor(activator, vendor)
end

--- Whether or not a player can view his inventory.
-- @realm client
-- @treturn bool Whether or not to allow the player to view his inventory
-- @usage function PLUGIN:CanPlayerViewInventory()
-- 	return false -- Prevent player from viewing his inventory.
-- end
function CanPlayerViewInventory()
end

--- Whether or not to save a container.
-- @realm server
-- @entity entity Container entity to save
-- @tab inventory Container inventory
-- @treturn bool Whether or not to save a container
-- @usage function PLUGIN:CanSaveContainer(entity, inventory)
--  return false -- Disallow saving any container.
-- end
function CanSaveContainer(entity, inventory)
end

--- @realm shared
function CanTransferItem(item, currentInv, oldInv)
end

--- @realm shared
function CharacterAttributeBoosted(client, character, attribID, boostID, boostAmount)
end

--- @realm shared
function CharacterAttributeUpdated(client, self, key, value)
end

--- @realm shared
function CharacterDeleted(client, id, isCurrentChar)
end

--- @realm shared
function CharacterHasFlags(self, flags)
end

--- @realm shared
function CharacterLoaded(character)
end

--- Called when a character was saved.
-- @realm server
-- @char character that was saved
function CharacterPostSave(character)
end

--- @realm shared
function CharacterPreSave(character)
end

--- @realm shared
function CharacterRecognized()
end

--- Called when a character was restored.
-- @realm server
-- @char character that was restored
function CharacterRestored(character)
end

--- @realm shared
function CharacterVarChanged(character, key, oldVar, value)
end

--- @realm shared
function CharacterVendorTraded(client, entity, uniqueID, isSellingToVendor)
end

--- @realm client
function ChatboxCreated()
end

--- @realm client
function ChatboxPositionChanged(x, y, width, height)
end

--- @realm client
function ColorSchemeChanged(color)
end

--- Called when a container was removed.
-- @realm server
-- @entity container Container that was removed
-- @tab inventory Container inventory
function ContainerRemoved(container, inventory)
end

--- @realm client
function CreateCharacterInfo(panel)
end

--- @realm client
function CreateCharacterInfoCategory(panel)
end

--- @realm client
function CreateItemInteractionMenu(icon, menu, itemTable)
end

--- @realm client
function CreateMenuButtons(tabs)
end

--- Called when a shipment was created.
-- @realm server
-- @player client Player that ordered the shipment
-- @entity entity Shipment entity
function CreateShipment(client, entity)
end

--- Called when a server has connected to the database.
-- @realm server
function DatabaseConnected()
end

--- Called when a server failed to connect to the database.
-- @realm server
-- @string error Error that prevented server from connecting to the database
function DatabaseConnectionFailed(error)
end

--- @realm shared
function DoPluginIncludes(path, pluginTable)
end

--- @realm client
function DrawCharacterOverview()
end

--- @realm client
function DrawHelixModelView(panel, entity)
end

--- @realm client
function DrawPlayerRagdoll(entity)
end

--- @realm client
function GetCharacterDescription(client)
end

--- @realm shared
function GetCharacterName(speaker, chatType)
end

--- @realm shared
function GetChatPrefixInfo(text)
end

--- @realm client
function GetCrosshairAlpha(curAlpha)
end

--- @realm shared
function GetDefaultAttributePoints(client, count)
end

--- @realm shared
function GetDefaultCharacterName(client, faction)
end

--- @realm shared
function GetMaxPlayerCharacter(client)
end

--- Returns the sound to emit from the player upon death. If nothing is returned then it will use the default male/female death
-- sounds.
-- @realm server
-- @player client Player that died
-- @treturn[1] string Sound to play
-- @treturn[2] bool `false` if a sound shouldn't be played at all
-- @usage function PLUGIN:GetPlayerDeathSound(client)
-- 	-- play impact sound every time someone dies
-- 	return "physics/body/body_medium_impact_hard1.wav"
-- end
-- @usage function PLUGIN:GetPlayerDeathSound(client)
-- 	-- don't play a sound at all
-- 	return false
-- end
function GetPlayerDeathSound(client)
end

--- @realm client
function GetPlayerEntityMenu(client, options)
end

--- @realm client
function GetPlayerIcon(speaker)
end

--- Returns the sound to emit from the player upon getting damage.
-- @realm server
-- @player client Client that received damage
-- @treturn string Sound to emit
-- @usage function PLUGIN:GetPlayerPainSound(client)
-- 	return "NPC_MetroPolice.Pain" -- Make players emit MetroPolice pain sound.
-- end
function GetPlayerPainSound(client)
end

--- @realm shared
function GetPlayerPunchDamage(client, damage, context)
end

--- Returns the salary that character should get instead of his faction salary.
-- @realm server
-- @player client Client that is receiving salary
-- @tab faction Faction of the player's character
-- @treturn number Character salary
-- @see CanPlayerEarnSalary
-- @usage function PLUGIN:GetSalaryAmount(client, faction)
--  return 0 -- Everyone get no salary.
-- end
function GetSalaryAmount(client, faction)
end

--- @realm client
function GetTypingIndicator(character, text)
end

--- Registers chat classes after the core framework chat classes have been registered. You should usually create your chat
-- classes in this hook - especially if you want to reference the properties of a framework chat class.
-- @realm shared
-- @usage function PLUGIN:InitializedChatClasses()
-- 	-- let's say you wanted to reference an existing chat class's color
-- 	ix.chat.Register("myclass", {
-- 		format = "%s says \"%s\"",
-- 		GetColor = function(self, speaker, text)
-- 			-- make the chat class slightly brighter than the "ic" chat class
-- 			local color = ix.chat.classes.ic:GetColor(speaker, text)
--
-- 			return Color(color.r + 35, color.g + 35, color.b + 35)
-- 		end,
-- 		-- etc.
-- 	})
-- end
-- @see ix.chat.Register
-- @see ix.chat.classes
function InitializedChatClasses()
end

--- @realm shared
function InitializedConfig()
end

--- @realm shared
function InitializedPlugins()
end

--- @realm shared
function InitializedSchema()
end

--- Called when an item was added to the inventory.
-- @realm server
-- @tab oldInv Previous item inventory
-- @tab inventory New item inventory
-- @tab item Item that was added to the inventory
function InventoryItemAdded(oldInv, inventory, item)
end

--- Called when an item was removed from the inventory.
-- @realm server
-- @tab inventory Inventory from which item was removed
-- @tab item Item that was removed from the inventory
function InventoryItemRemoved(inventory, item)
end

--- @realm shared
function IsCharacterRecognized(character, id)
end

--- @realm client
function IsPlayerRecognized(client)
end

--- @realm client
function IsRecognizedChatType(chatType)
end

--- Called when server is loading data.
-- @realm server
function LoadData()
end

--- @realm client
function LoadFonts(font, genericFont)
end

--- @realm client
function LoadIntro()
end

--- @realm client
function MenuSubpanelCreated(subpanelName, panel)
end

--- @realm client
function MessageReceived(client, info)
end

--- @realm client
function OnAreaChanged(oldID, newID)
end

--- @realm shared
function OnCharacterCreated(client, character)
end

--- Called when a player who uses a character has disconnected.
-- @realm server
-- @player client The player that has disconnected
-- @char character The character that the player was using
function OnCharacterDisconnect(client, character)
end

--- Called when a character was ragdolled or unragdolled.
-- @realm server
-- @player client Player that was ragdolled or unradolled
-- @entity entity Ragdoll that represents the player
-- @bool bFallenOver Whether or not the character was ragdolled or unragdolled
function OnCharacterFallover(client, entity, bFallenOver)
end

--- Called when a character has gotten up from the ground.
-- @realm server
-- @player client Player that has gotten up
-- @entity ragdoll Ragdoll used to represent the player
function OnCharacterGetup(client, ragdoll)
end

--- @realm client
function OnCharacterMenuCreated(panel)
end

--- Called whenever an item entity has spawned in the world. You can access the entity's item table with
-- `entity:GetItemTable()`.
-- @realm server
-- @entity entity Spawned item entity
-- @usage function PLUGIN:OnItemSpawned(entity)
-- 	local item = entity:GetItemTable()
-- 	-- do something with the item here
-- end
function OnItemSpawned(entity)
end

--- @realm shared
function OnItemTransferred(item, curInv, inventory)
end

--- @realm client
function OnLocalVarSet(key, var)
end

--- @realm client
function OnPAC3PartTransferred(part)
end

--- Called when a player has picked up the money from the ground.
-- @realm server
-- @player client Player that picked up the money
-- @entity self Money entity
-- @treturn bool Whether or not to allow the player to pick up the money
-- @usage function PLUGIN:OnPickupMoney(client, self)
-- 	return false -- Disallow picking up money.
-- end
function OnPickupMoney(client, self)
end

--- @realm shared
function OnPlayerAreaChanged(client, oldID, newID)
end

--- Called when a player has entered or exited the observer mode.
-- @realm server
-- @player client Player that entered or exited the observer mode
-- @bool state Previous observer state
function OnPlayerObserve(client, state)
end

--- Called when a player has selected the entity interaction menu option while interacting with a player.
-- @realm server
-- @player client Player that other player has interacted with
-- @player callingClient Player that has interacted with with other player
-- @string option Option that was selected
function OnPlayerOptionSelected(client, callingClient, option)
end

--- Called when a player has purchased or sold a door.
-- @realm server
-- @player client Player that has purchased or sold a door
-- @entity entity Door that was purchased or sold
-- @bool bBuying Whether or not the player is bying a door
-- @func bCallOnDoorChild Function to call something on the door child
function OnPlayerPurchaseDoor(client, entity, bBuying, bCallOnDoorChild)
end

--- Called when a player was restricted.
-- @realm server
-- @player client Player that was restricted
function OnPlayerRestricted(client)
end

--- Called when a player was unrestricted.
-- @realm server
-- @player client Player that was unrestricted
function OnPlayerUnRestricted(client)
end

--- Called when a saved items were loaded.
-- @realm server
-- @tab loadedItems Table of items that were loaded
function OnSavedItemLoaded(loadedItems)
end

--- Called when server database are being wiped.
-- @realm server
function OnWipeTables()
end

--- @realm shared
function PlayerEnterSequence(client, sequence, callback, time, bNoFreeze)
end

--- Called when a player has interacted with an entity through the entity's interaction menu.
-- @realm server
-- @player client Player that performed interaction
-- @entity entity Entity being interacted with
-- @string option Option selected by the player
-- @param data Any data passed with the interaction option
function PlayerInteractEntity(client, entity, option, data)
end

--- Called when a player has interacted with an item.
-- @realm server
-- @player client Player that interacted with an item
-- @string action Action selected by the player
-- @tab item Item being interacted with
function PlayerInteractItem(client, action, item)
end

--- Called when a player has joined a class.
-- @realm server
-- @player client Player that has joined a class
-- @number class Index of the class player has joined to
-- @number oldClass Index of the player's previous class
function PlayerJoinedClass(client, class, oldClass)
end

--- @realm shared
function PlayerLeaveSequence(entity)
end

--- Called when a player has loaded a character.
-- @realm server
-- @player client Player that has loaded a character
-- @char character Character that was loaded
-- @char currentChar Character that player was using
function PlayerLoadedCharacter(client, character, currentChar)
end

--- Called when a player has locked a door.
-- @realm server
-- @player client Player that has locked a door
-- @entity door Door that was locked
-- @entity partner Door partner
function PlayerLockedDoor(client, door, partner)
end

--- Called when a player has locked a vehicle.
-- @realm server
-- @player client Player that has locked a vehicle
-- @entity vehicle Vehicle that was locked
function PlayerLockedVehicle(client, vehicle)
end

--- Called when player has said something in the text chat.
-- @realm server
-- @player speaker Player that has said something in the text chat
-- @string chatType Type of the chat that player used
-- @string text Chat message that player send
-- @bool anonymous Whether or not message was anonymous
-- @tab receivers Players who will hear that message
-- @string rawText Chat message without any formatting
-- @treturn string You can return text that will be shown instead
-- @usage function PLUGIN:PlayerMessageSend(speaker, chatType, text, anonymous, receivers, rawText)
--  return "Text" -- When a player writes something into chat, he will say "Text" instead.
-- end
function PlayerMessageSend(speaker, chatType, text, anonymous, receivers, rawText)
end

--- Called when a player model was changed.
-- @realm server
-- @player client Player whose model was changed
-- @string oldModel Old player model
function PlayerModelChanged(client, oldModel)
end

--- Called when a player has got stamina.
-- @realm server
-- @player client Player who has got stamina
function PlayerStaminaGained(client)
end

--- Called when a player has lost stamina.
-- @realm server
-- @player client Player who has lost stamina
function PlayerStaminaLost(client)
end

--- @realm shared
function PlayerThrowPunch(client, trace)
end

--- Called when a player has unlocked a door.
-- @realm server
-- @player client Player that has unlocked a door
-- @entity door Door that was unlocked
-- @entity partner Door partner
function PlayerUnlockedDoor(client, door, partner)
end

--- Called when a player has unlocked a vehicle.
-- @realm server
-- @player client Player that has unlocked a vehicle
-- @entity vehicle Vehicle that was unlocked
function PlayerUnlockedVehicle(client, vehicle)
end

--- Called when a player has used an entity.
-- @realm server
-- @player client Player who has used an entity
-- @entity entity Entity that was used by the player
function PlayerUse(client, entity)
end

--- Called when a player has used a door.
-- @realm server
-- @player client Player who has used a door
-- @entity entity Door that was used by the player
function PlayerUseDoor(client, entity)
end

--- @realm shared
function PlayerWeaponChanged(client, weapon)
end

--- @realm shared
function PluginLoaded(uniqueID, pluginTable)
end

--- @realm shared
function PluginShouldLoad(uniqueID)
end

--- @realm shared
function PluginUnloaded(uniqueID)
end

--- @realm client
function PopulateCharacterInfo(client, character, tooltip)
end

--- @realm client
function PopulateEntityInfo(entity, tooltip)
end

--- @realm client
function PopulateHelpMenu(categories)
end

--- @realm client
function PopulateImportantCharacterInfo(entity, character, tooltip)
end

--- @realm client
function PopulateItemTooltip(tooltip, item)
end

--- @realm client
function PopulatePlayerTooltip(client, tooltip)
end

--- @realm client
function PopulateScoreboardPlayerMenu(client, menu)
end

--- @realm client
function PostChatboxDraw(width, height, alpha)
end

--- @realm client
function PostDrawHelixModelView(panel, entity)
end

--- @realm client
function PostDrawInventory(panel)
end

--- Called when server data was loaded.
-- @realm server
function PostLoadData()
end

--- Called after player loadout.
-- @realm server
-- @player client
function PostPlayerLoadout(client)
end

--- Called after player has said something in the text chat.
-- @realm server
-- @player client Player that has said something in the text chat
-- @string chatType Type of the chat that player used
-- @string message Chat message that player send
-- @bool anonymous Whether or not message was anonymous
function PostPlayerSay(client, chatType, message, anonymous)
end

--- @realm shared
function PostSetupActs()
end

--- Called before character deletion.
-- @realm server
-- @player client Character owner
-- @char character Chraracter that will be deleted
function PreCharacterDeleted(client, character)
end

--- Called before character loading.
-- @realm server
-- @player client Player that loading a character
-- @char character Character that will be loaded
-- @char currentChar Character that player is using
function PrePlayerLoadedCharacter(client, character, currentChar)
end

--- Called before a message sent by a player is processed to be sent to other players - i.e this is ran as early as possible
-- and before things like the auto chat formatting. Can be used to prevent the message from being sent at all.
-- @realm server
-- @player client Player sending the message
-- @string chatType Chat class of the message
-- @string message Contents of the message
-- @bool bAnonymous Whether or not the player is sending the message anonymously
-- @treturn bool Whether or not to prevent the message from being sent
-- @usage function PLUGIN:PrePlayerMessageSend(client, chatType, message, bAnonymous)
-- 	if (!client:IsAdmin()) then
-- 		return false -- only allow admins to talk in chat
-- 	end
-- end
function PrePlayerMessageSend(client, chatType, message, bAnonymous)
end

--- Called when server is saving data.
-- @realm server
function SaveData()
end

--- @realm client
function ScreenResolutionChanged(width, height)
end

--- @realm shared
function SetupActs()
end

--- @realm shared
function SetupAreaProperties()
end

--- Called when a player has taken a shipment item.
-- @realm server
-- @player client Player that has taken a shipment item
-- @string uniqueID UniqueID of the shipment item that was taken
-- @number amount Amount of the items that were taken
function ShipmentItemTaken(client, uniqueID, amount)
end

--- @realm client
function ShouldBarDraw(bar)
end

--- Whether or not the server should delete saved items.
-- @realm server
-- @treturn bool Whether or not the server should delete saved items
-- @usage function PLUGIN:ShouldDeleteSavedItems()
--  return true -- Delete all saved items.
-- end
function ShouldDeleteSavedItems()
end

--- @realm client
function ShouldDisplayArea(newID)
end

--- @realm client
function ShouldDrawCrosshair(client, weapon)
end

--- @realm client
function ShouldDrawItemSize(item)
end

--- @realm client
function ShouldHideBars()
end

--- Whether or not a character should be permakilled upon death. This is only called if the `permakill` server config is
-- enabled.
-- @realm server
-- @player client Player to permakill
-- @char character Player's current character
-- @entity inflictor Entity that inflicted the killing blow
-- @entity attacker Other player or entity that killed the player
-- @treturn bool `false` if the player should not be permakilled
-- @usage function PLUGIN:ShouldPermakillCharacter(client, character, inflictor, attacker)
-- 		if (client:IsAdmin()) then
-- 			return false -- all non-admin players will have their character permakilled
-- 		end
-- 	end
function ShouldPermakillCharacter(client, character, inflictor, attacker)
end

--- Whether or not player should drown.
-- @realm server
-- @player client Player that is underwater
-- @treturn bool Whether or not player should drown
-- @usage function PLUGIN:ShouldPlayerDrowned(client)
--  return false -- Players will not drown.
-- end
function ShouldPlayerDrowned(client)
end

--- Whether or not remove player ragdoll on death.
-- @realm server
-- @player client Player that died
-- @treturn bool Whether or not remove player ragdoll on death
-- @usage function PLUGIN:ShouldRemoveRagdollOnDeath(client)
--  return false -- Player ragdolls will not be removed.
-- end
function ShouldRemoveRagdollOnDeath(client)
end

--- Whether or not to restore character inventory.
-- @realm server
-- @number characterID ID of the character
-- @number inventoryID ID of the inventory
-- @string inventoryType Type of the inventory
-- @treturn bool Whether or not to restore character inventory
-- @usage function PLUGIN:ShouldRestoreInventory(characterID, inventoryID, inventoryType)
--  return false -- Character inventories will not be restored.
-- end
function ShouldRestoreInventory(characterID, inventoryID, inventoryType)
end

--- @realm client
function ShouldShowPlayerOnScoreboard(client)
end

--- Whether or not spawn player ragdoll on death.
-- @realm server
-- @player client Player that died
-- @treturn bool Whether or not spawn player ragdoll on death
-- @usage function PLUGIN:ShouldSpawnClientRagdoll(client)
--  return false -- Player ragdolls will not be spawned.
-- end
function ShouldSpawnClientRagdoll(client)
end

--- @realm client
function ShowEntityMenu(entity)
end

--- @realm client
function ThirdPersonToggled(oldValue, value)
end

--- @realm client
function UpdateCharacterInfo(panel, character)
end

--- @realm client
function UpdateCharacterInfoCategory(panel, character)
end

--- Called when the distance on which the voice can be heard was changed.
-- @realm server
-- @number newValue New voice distance
function VoiceDistanceChanged(newValue)
end

--- @realm client
function WeaponCycleSound()
end

--- @realm client
function WeaponSelectSound(weapon)
end


================================================
FILE: docs/js/app.js
================================================

const skippedCategories = ["manual"];

class Node
{
	constructor(name, element, expandable, noAutoCollapse, children = [])
	{
		this.name = name;
		this.element = element;
		this.expandable = expandable;
		this.noAutoCollapse = noAutoCollapse;
		this.children = children;
	}

	AddChild(name, element, expandable, noAutoCollapse, children)
	{
		let newNode = new Node(name, element, expandable, noAutoCollapse, children);
		this.children.push(newNode);

		return newNode;
	}
}

class SearchManager
{
	constructor(input, contents)
	{
		this.input = input;
		this.input.addEventListener("input", event =>
		{
			this.OnInputUpdated(this.input.value.toLowerCase().replace(/:/g, "."));
		});

		// setup search tree
		this.tree = new Node("", document.createElement("null"), true, true);
		this.entries = {};

		const categoryElements = contents.querySelectorAll(".category");

		// iterate each kind (hooks/libraries/classes/etc)
		for (const category of categoryElements)
		{
			const nameElement = category.querySelector(":scope > summary > h2");

			if (!nameElement)
			{
				continue;
			}

			const categoryName = nameElement.textContent.trim().toLowerCase();

			if (skippedCategories.includes(categoryName))
			{
				continue;
			}

			let categoryNode = this.tree.AddChild(categoryName, category, true, true);
			const sectionElements = category.querySelectorAll(":scope > ul > li");

			for (const section of sectionElements)
			{
				const entryElements = section.querySelectorAll(":scope > details > ul > li > a");
				const sectionName = section.querySelector(":scope > details > summary > a")
					.textContent
					.trim()
					.toLowerCase();

				let sectionNode = categoryNode.AddChild(sectionName, section.querySelector(":scope > details"), true);

				for (let i = 0; i < entryElements.length; i++)
				{
					const entryElement = entryElements[i];
					const entryName = entryElement.textContent.trim().toLowerCase();

					sectionNode.AddChild(sectionName + "." + entryName, entryElement.parentElement);
				}
			}
		}
	}

	ResetVisibility(current)
	{
		current.element.style.display = "";

		if (current.noAutoCollapse)
		{
			current.element.open = true;
		}
		else if (current.expandable)
		{
			current.element.open = false;
		}

		for (let node of current.children)
		{
			this.ResetVisibility(node);
		}
	}

	Search(input, current)
	{
		let matched = false;

		if (current.name.indexOf(input) != -1)
		{
			matched = true;
		}

		for (let node of current.children)
		{
			let childMatched = this.Search(input, node);
			matched = matched || childMatched;
		}

		if (matched)
		{
			current.element.style.display = "";

			if (current.expandable)
			{
				current.element.open = true;
			}
		}
		else
		{
			current.element.style.display = "none";

			if (current.expandable)
			{
				current.element.open = false;
			}
		}

		return matched;
	}

	OnInputUpdated(input)
	{
		if (input.length <= 1)
		{
			this.ResetVisibility(this.tree);
			return;
		}

		this.Search(input, this.tree);
	}
}

window.onload = function()
{
	const openDetails = document.querySelector(".category > ul > li > details[open]");

	if (openDetails)
	{
		openDetails.scrollIntoView();
	}
}

document.addEventListener("DOMContentLoaded", function()
{
	const searchInput = document.getElementById("search");
	const contents = document.querySelector("body > main > nav > section");

	if (searchInput && contents)
	{
		new SearchManager(searchInput, contents);
	}
});


================================================
FILE: docs/manual/converting-from-clockwork.md
================================================
# Clockwork to Helix Migration

If you are here, you probably want to be converting your code from another framework to Helix. Doing so should not be a difficult task. Most of the previous functions are probably within Helix in one form or another! This means all you need to do is match *x* function found in the old framework to *y* function in Helix. Some headings will contain a link - this will bring you to the documentation for Helix's equivalent library or class.

This tutorial assumes basic to intermediate knowledge and experience with Garry's Mod Lua.

**Before you start!** You will notice that Helix uses client for the variable that represents a player. Clockwork uses player for the variable instead, but this will conflict with the player library. So if you see `_player` being used in Clockwork, it means the Garry's Mod player library. This is just a preference and does not affect anything besides appear. So keep in mind throughout the tutorial, you may see player being used for Clockwork code and client being used for Helix code. They represent the same thing, just with a different name.

If you are converting Clockwork code to Helix, keep in mind that `_player` is not defined so you will need to either define `_player` yourself or switch it to player instead and change the variable name to client for player objects.

# Basics of Conversion

## Folders
Clockwork code and file structure is not too different from Helix. In the schema, the plugins folder and schema folder stay in the same place. There are some minor differences in naming however:

- The `schema/entities` folder should be moved outside out of the schema folder.
- The `libraries` folder needs to be renamed to `libs` to load.
- The `commands` tab will not load as each command is now defined in a single shared file, does not matter which one.

## Deriving from Helix
This is pretty important. If you want to use Helix as the base, you need to set it as the base. So, go to your Clockwork schema's `gamemode` folder. Inside should be two files: `init.lua `and `cl_init.lua`. Open both, and you should see something along the lines of `DeriveGamemode("Clockwork")`. Change this to `DeriveGamemode("helix")`.

# The Schema

## Introduction
Inside of the `schema` folder of the actual schema, you should see a file named `sh_schema.lua`. This is the main schema file in both Clockwork and Helix. Most of your changes may actually be within this file.

## Including Files
Both frameworks come with a utility function to include a file without worrying about sending them to the client and stuff. In Clockwork, this function is `Clockwork.kernel:IncludePrefixed("sh_myfile.lua")`. Change this to `ix.util.Include("sh_myfile.lua") `and save.

# The Plugin

## Introduction
Plugins serve as a means to add on to a schema or framework without directly modifying either. This allows for easier modifications that can be added/removed with ease. It is recommended that you keep all custom modifications left to plugins rather than editing the framework or the schema if possible.

## Structure
All plugins in Clockwork and Helix go into the `plugins` folder. However, there are many differences with the CW plugin structure. First of all, there are two things you see when you open a plugin folder: `plugin` again and `plugin.ini`.

Helix only has one file needed: `sh_plugin.lua` which acts like `sh_schema.lua` but for plugins.

## Conversion
The first step is to move all of the contents from the `plugin` folder to the main folder of the plugin folder. The `sh_plugin.lua` file needs to be changed to provide basic information about the plugin.You need to define three things in `sh_plugin.lua` which can be found within the `plugin.ini` file:

- `PLUGIN.name = "Plugin Name"`
- `PLUGIN.author = "Plugin Author"`
- `PLUGIN.description = "Plugin Description"`

If the plugin uses a special variable (e.g. `cwPluginName`) for the plugin, change it to `PLUGIN`.

- Note that the `PLUGIN` table is removed after the plugin is loaded. So if you want to use `PLUGIN` after the plugin has loaded (such as in console commands, in entities, etc.), add `local PLUGIN = PLUGIN` at the top.
- You can see if a global variable is defined for it by looking for `PLUGIN:SetGlobalAlias("cwMyPlugin")`. So, one would change `cwMyPlugin` to `PLUGIN`.

# The `Character` Object
One main thing that is very notable is how the character is referenced using `client:GetCharacter()` which returns a character object. The way the object works is just like an entity you spawn. It has its own properties like the model, color, etc. that makes it unique. You can access all the characters in a table which stores loaded characters with `ix.char.loaded`.

The character object comes with many predefined methods. You can look at how they are defined [by clicking here](https://github.com/NebulousCloud/helix/blob/master/gamemode/core/meta/sh_character.lua). The character object makes it very simple to manager character information.

You will notice throughout the framework, the character object is used a lot. The use of the character object makes a large barrier between what belongs to the character and what belongs to the player. For example: flags, models, factions, data, and other things are stored on the character and can be accessed by the character object.

In Clockwork, there is no use of an object. Instead, the character information is intertwined with the player object. For example:

```
-- in Clockwork
player:SetCharacterData("foo", "bar")

-- in Helix
client:GetCharacter():SetData("foo", "bar")
```

The use of the character object allows you to access other characters a player might own without needing to have them be the active character, or even access them when the player is not on the server. Overall, the use of the character object may seem like a complex concept, but will simplify a lot of things once you get the hang of the idea.

# The Libraries

## Animations (`ix.anim`)
Clockwork features many functions to set up animations for a specific model. Helix too has this functionality. Helix has one function instead that pairs a model to a specific "animation class" (grouping of animation types). So, all one needs to do is find the appropriate animation class to match the model with. Looking at the Clockwork function name should tell you.

```
-- before
Clockwork.animation:AddCivilProtectionModel("models/mymodel.mdl")

-- after
ix.anim.SetModelClass("models/mymodel.mdl", "metrocop")
```

## Attributes (`ix.attributes`)
Attributes allow the player to boost certain abilities over time. Both frameworks require one to register attributes, but they are done differently. In Clockwork, the `ATTRIBUTE` table needs to be defined and registered manually. In Helix, the `ATTRIBUTE` table is automatically defined and registered for you. All you need to do is have `ATTRIBUTE.value = "value"`. The basic parts of the attribute needed is `ATTRIBUTE.name` and `ATTRIBUTE.description`.

One extra feature for attributes in Helix is `ATTRIBUTE:OnSetup(client, value)` which is a function that gets called on spawn to apply any effects. For example, the stamina attribute changes the player's run speed by adding the amount of stamina points the player has.

You can find an example at [https://github.com/NebulousCloud/helix/blob/master/plugins/stamina/attributes/sh_stm.lua](https://github.com/NebulousCloud/helix/blob/master/plugins/stamina/attributes/sh_stm.lua)

## Classes (`ix.class`)
Classes are a part of the factions. They basically are a more specific form of a faction. Factions in Helix and Clockwork work similarly. For instance, all classes are placed in the `classes` folder under the schema folder and use `CLASS` as the main variable inside the file.

However:

- You do not need to use `local CLASS = Clockwork.class:New("My Class")`. Instead, `CLASS` is already defined for you and you set the name using `CLASS.name = "My Class"`
- `CLASS.factions` is *not* a table, so `CLASS.factions = {FACTION_MYFACTION}` becomes `CLASS.faction = FACTION_MYFACTION`
- You do not need to use `CLASS:Register()` as classes are registered for you after the file is done processing.
- Classes are *optional* for factions rather than being required.

## Commands (`ix.command`)
Commands no longer need to be in separate files. Instead, they are just placed into one large file. However, if you really wanted you can register multiple commands across multiple files or however you want. One thing you may notice is Clockwork uses a _COMMAND_ table while Helix does not always. It is simply a design preference. You can find examples at [https://github.com/NebulousCloud/helix/blob/master/gamemode/core/sh_commands.lua](https://github.com/NebulousCloud/helix/blob/master/gamemode/core/sh_commands.lua)

It should be noted that:

- `COMMAND.tip` is not used.
- `COMMAND.text` is not used.
- `COMMAND.flags` is not used.
- `COMMAND.arguments` does not need to be defined if no arguments are needed but is defined as a table of argument types when needed `arguments = {ix.type.character, ix.type.number}`. See `ix.command.CommandArgumentsStructure` for details.
- `COMMAND.access` for checking whether or not a person is a (super)admin can be replaced with `adminOnly = true` or `superAdminOnly = true` in the command table.

## Configurations (`ix.config`)
In Helix, the method of adding configurations that can be changed by server owners is heavily simplified. [See an example here](https://github.com/NebulousCloud/helix/blob/master/gamemode/config/sh_config.lua).

Adding a configuration is as follows:

```
-- before
Clockwork.config:Add("run_speed", 225)

-- after
ix.config.Add("runSpeed", 235, ...)
```
You'll notice that ellipses (...) were added at the end. This is because there are more arguments since adding configuration information has been placed into one function. Additionally:

- `Clockwork.config:ShareKey()` is not needed.
- The 3rd argument for `Clockwork.config:AddToSystem(name, key, description, min, max)` is also the 3rd argument for `ix.config.Add`
- The 4th argument for `ix.config.Add` is an optional function that is called when the configuration is changed.
- The 5th argument for `ix.config.Add` is a table. You can specify the category for the configuration to group it with other configurations. There is also a data table inside which can be used to determine the minimum value and maximum value for numbers. Check out [an example here](https://github.com/NebulousCloud/helix/blob/master/gamemode/config/sh_config.lua). See also `ix.config`.

## Currency (`ix.currency`)
Updating your currency code is simple:

```
-- before
Clockwork.config:SetKey("name_cash", "Tokens")
Clockwork.config:SetKey("name_cash", "Dollars") -- another example

-- after
ix.currency.Set("", "token", "tokens")
ix.currency.Set("$", "dollar", "dollars")
```

Note that you need to provide a symbol for that currency (€ for Euro, £ for Pound, ¥ for Yen, etc.) or just leave it as an empty string (`""`) and then provide the singular form of the name for the currency, then the plural form.

## Datastream
Helix uses the [net library](http://wiki.garrysmod.com/page/Net_Library_Usage) whereas Clockwork uses datastream ([netstream](https://github.com/alexgrist/NetStream/blob/master/netstream2.lua)).

If you're unfamiliar with the net library, you can include the netstream library to your schema by downloading [netstream](https://github.com/alexgrist/NetStream/blob/master/netstream2.lua) to `schema/libs/thirdparty/sh_netstream2.lua` and adding `ix.util.Include("libs/thirdparty/sh_netstream2.lua")` to your `sh_schema.lua` file.

Starting a datastream:

```
-- before
Clockwork.datastream:Start(receiver, "MessageName", {1, 2, 3});

-- after
netstream.Start(receiver, "MessageName", 1, 2, 3)
```

Receiving a datastream:

```
-- before
Clockwork.datastream:Hook("MessageName", function(player, data)
	local a = data[1];
	local b = data[2];
	local c = data[3];

	print(a, b, c);
end);

-- after
netstream.Hook("MessageName", function(client, a, b, c)
	print(a, b, c)
end)
```

## Factions (`ix.faction`)
Factions, like classes, are pretty similar too. They share pretty much the same differences as classes in Clockwork and Helix do.

For instance:

- You do not need to use `local FACTION = Clockwork.faction:New("Name Here")`, instead `FACTION` is already defined for you and you set the name using `FACTION.name = "Name Here"`
- `FACTION.whitelist = true` is changed to `FACTION.isDefault = false`
- `FACTION.models` does not need a male and female part. Instead, all the models are combined into one big list.
- `function FACTION:GetName(name)` becomes `function FACTION:GetDefaultName(name)`
- `FACTION.description = "Describe me"` is added to the faction.
- `FACTION_MYFACTION = FACTION:Register()` becomes `FACTION_MYFACTION = FACTION.index`

## Flags (`ix.flag`)
Flags are functionally equivalent in Helix. To add a new flag:

```
-- before
Clockwork.flag:Add("x", "Name", "Description")

-- after
ix.flag.Add("x", "Description")
```

To check or manipulate a character's flag(s):

```
-- before
Clockwork.player:GiveFlags(player, flags)
Clockwork.player:TakeFlags(player, flags)
Clockwork.player:HasFlags(player, flags)

-- after
client:GetCharacter():GiveFlags(flags)
client:GetCharacter():TakeFlags(flags)
client:GetCharacter():HasFlags(flags)
```

## Inventories (`Inventory`)
Inventories have also had a change in the way they work that may seem very different than Clockwork. Similar to how characters are their own objects, inventories become their own objects as well. These inventory objects belong to character objects, which belongs to players. So, this creates a chain of objects which is neat. The use of inventories as objects makes it very simple to attach inventories to anything.

To access a player's inventory, you need to use `client:GetCharacter():GetInventory()` which returns the main inventory object for the player's character. You can also access all loaded inventories with `ix.item.inventories` but that is not important right now.

## Items (`Item`)
As discussed above, inventories contain items. Items are still used in inventories and world entities, use default class data, have callback functions, and can contain unique item data per instance.

### Setting up items
Every time needs to be registered, or have information about it (such as the name, model, what it does, etc.) defined. In Clockwork, you have your items defined in schemas/plugins under the items folder.

So let's start with the differences in structure in the item file.

- `local ITEM = Clockwork.item:New();` is removed
- `ITEM.uniqueID` is *completely* optional
- Replace `ITEM.cost` with `ITEM.price`
- `ITEM:Register()` is removed

### Item Sizes
Helix's inventory uses a grid and utilizes width and height instead of weight as a means of inventory capacity. This means you will have to change your item's weight (`ITEM.weight`) to something that might be analagous to the item's size using `ITEM.width` and `ITEM.height`. The item's size must be at least one by one grid cell. It's up to you to balance the sizes of items in your use case - taking into account how many items a character might have at once, the default inventory size set in the config, etc.

### Item Functions
Item functions are defined very differently than they are in Clockwork. For example:

```
-- before
function ITEM:OnUse(player, entity)
	print("My name is: " .. player:Name(), entity)
end

-- after
ITEM.functions.Use = {
	OnRun = function(item)
		print("My name is: " .. item.player, item.entity)
	end
}
```

All item functions are defined in the `ITEM.functions` table. This allows the drop-down menus when using the item a lot easier and cleaner to generate dynamically. There is also more control of the icons used for the options, whether or not the function should be displayed, etc.

You can see an example of a water item here: [https://github.com/NebulousCloud/helix-hl2rp/blob/master/schema/items/sh_water.lua](https://github.com/NebulousCloud/helix-hl2rp/blob/master/schema/items/sh_water.lua)

Here, we can define what happens when the function is run, what the icon is, and what sound it plays when used. It is basically put into one area rather than being scattered among hooks and stuff.

### Giving/Taking Items
So before we can give/take items, we need to understand what the *item instance* is. Using the analogy earlier about how the inventory system is like a forum, and inside the forum are posts (the items in this case), we can think of instancing an item as making a new post on a forum. So when we talk about an *item instance*, it is an item that has been created in the past. The reason we use an item instance (which is its own object too, neat!) is to make each item ever created unique. Each item instance can have its own data unique to itself.

Clockwork also uses an item instance system where you have to instance an item. So, to instance an item in Clockwork you would use:

```
item = Clockwork.item:CreateInstance("item")
```

And this would create a new instance of an item. Helix's instancing system is slightly different. Instead of having the function return the instance like it does in Clockwork, Helix relies on a callback to pass the instance. The reason for this is the item must be inserted into the database to get a unique number to represent that item. This is not done instantly, otherwise servers would freeze when new items are made. Clockwork uses the time and adds a number to get the numeric ID for an item, which allows the item to be returned which "solves" the issue, but I digress.

The Helix equivalent would be:

```
ix.item.Instance(0, "item", data, x, y, function(item) end)
```

Let's break down the differences:

- For Helix's item instance, the 1st argument (`0`) is the inventory that the item belongs to. You can specify 0 so it does not belong to any inventory.
- The data argument is *optional* and is just a table for the item data.
- *x* and *y* are the position of the items in inventory. You can find an available *x* and *y* with `inventory:FindEmptySlot()`.
- The function is an *optional* argument that passes the item instance. This is where you can directly access the new item.

Keep in mind that Helix will simplify the item system for you when it can. Normally, you would not need to instance an item yourself unless you were doing something advanced.

So you might be wondering, how do I spawn an item in the map, and how do I give a player an item? In Clockwork, you would do the following:

```
-- spawning an item in the map
Clockwork.entity:CreateItem(player, Clockwork.item:CreateInstance("item"), Vector(1, 2, 3));

-- giving a player an item
player:GiveItem(Clockwork.item:CreateInstance("item"));
```

The equivalent in Helix would be:

```
-- spawning an item in the map
ix.item.Spawn("item", Vector(1, 2, 3))

-- giving a player an item
client:GetCharacter():GetInventory():Add("test")
```

So in these two examples, the whole deal of instancing items is done for you in Helix!

# Hooks
You will need to modify the function name and arguments for your schema or plugin hooks.

```
-- before
function Schema:PlayerPlayPainSound(player, gender, damageInfo, hitGroup)
	-- ...
end

-- after
function Schema:GetPlayerPainSound(client)
	-- ...
end
```

You can see the documented hooks for the schema and plugins in the `Plugin` section.

# Conclusion
Overall, most of the conversion from Clockwork to Helix is simply renaming a certain function and/or switching the order of arguments around. Both are frameworks so they function similarly.

You may want to use our HL2 RP schema example for reference which can be found at [https://github.com/NebulousCloud/helix-hl2rp](https://github.com/NebulousCloud/helix-hl2rp)


================================================
FILE: docs/manual/getting-started.md
================================================
# Getting Started
It's pretty easy to get started with creating your own schema with Helix. It requires a bit of bootstrapping if you're starting from scratch, but you should quickly be on your way to developing your schema after following one of the below sections in this guide.

# Installing the framework
Before you start working on your schema, you'll need to install Helix onto your server. The exact instructions will vary based on your server provider, or if you're hosting the server yourself.

You'll need to download the framework from [GitHub](https://github.com/NebulousCloud/helix) into a folder called `helix`. This folder goes into your server's `gamemodes` folder at `garrysmod/gamemodes/helix`. That's it! The framework is now installed onto your server. Of course, you'll need to restart your server after installing the framework and a schema.

# MySQL usage
By default, Helix will use SQLite (which is built into Garry's Mod) to store player/character data. This requires no configuration and will work "out of the box" after installing and will be fine for most server owners. However, you might want to connect your database to your website or use multiple servers with one database - this will require the usage of an external database accessible elsewhere. This will require the use of a MySQL server. Some server providers will provide you with a MySQL database for free to use with your server.

## Installing
Helix uses the [MySQLOO](https://github.com/FredyH/MySQLOO) library to connect to MySQL databases. You'll need to follow the instructions for installing that library onto your server before continuing. In a nutshell, you need to make sure `gmsv_mysqloo_win32.dll` or `gmsv_mysqloo_linux.dll` (depending on your server's operating system) is in the `garrysmod/lua/bin` folder. 

In older versions of MySQLOO, you previously required a .dll called `libmysql.dll` to place in your `root` server folder, where `srcds`/`srcds_linux` was stored. Newer versions of MySQLOO no longer require this.

## Configuring
Now that you've installed MySQLOO, you need to tell Helix that you want to connect to an external MySQL database instead of using SQLite. This requires creating a `helix.yml` configuration file in the `garrysmod/gamemodes/helix` folder. There is an example one already made for you called `helix.example.yml` that you can copy and rename to `helix.yml`.

The first thing you'll need to change is the `adapter` entry so that it says `mysqloo`. Next is to change the other entries to match your database's connection information. Here is an example of what your `helix.yml` should look like:

```
database:
  adapter: "mysqloo"
  hostname: "myexampledatabase.com"
  username: "myusername"
  password: "mypassword"
  database: "helix"
  port: 3306
```

The `hostname` field can either be a domain name (like `myexampledatabase.com`) or an IP address (`123.123.123.123`). If you don't know what the `port` field should be, simply leave it as the default `3306`; this is the default port for MySQL database connections. The `database` field is the name of the database that you've created for Helix. Note that it does not need to be `helix`, it can be whatever you'd like.

Another important thing to note about this configuration file is that you **must** indent with **two spaces only**. `database` should not have any spacing before it, and all other entries must have two spaces before them. Failing to ensure this will make the configuration file fail to load.

# Starting with the HL2 RP schema (Basic)
This section is for using the existing HL2 RP schema as a base for your own schema. It contains a good amount of example code if you need a stronger foundation than just a skeleton.

First, you'll need to download the schema from [GitHub](https://github.com/NebulousCloud/helix-hl2rp). Make sure that you download the contents of the repository into a folder called `ixhl2rp` and place it into your `garrysmod/gamemodes` folder. That's all you'll need to do to get the schema installed, other than setting your gamemode to `ixhl2rp` in the server's command line.

# Starting with the skeleton (Basic)
If you don't want excess code you might not use, or prefer to build from an almost-empty foundation that covers the basic bootstrapping, then the skeleton schema is for you. The skeleton schema contains a lot of comments explaining why code is laid out in a certain way, and some other helpful tips/explanations. Make sure you give it a read!

You'll need to download the schema from [GitHub](https://github.com/NebulousCloud/helix-skeleton) into the folder name of your choice - just make sure it's all lowercase with no spaces. Our example for the sake of brevity will be `myschema`. Place the folder into `garrysmod/gamemodes`.

Next up is to modify the gamemode info so that Garry's Mod will properly recognize it. Rename `skeleton.txt` in your schema folder to your folder's name. In our example we would rename `skeleton.txt` to `myschema.txt`. Next, you'll need to modify the contents of `myschema.txt` and replace the existing information with your own - making sure to replace the `"skeleton"` at the top of the file to your folder's name. In our case we would replace it with `"myschema"`. Once you've renamed the file, you're all good to go!

# Converting from Clockwork (Intermediate)
If you are looking to switch to Helix from Clockwork, you can follow the @{converting-from-clockwork|conversion guide}.

# Starting from scratch (Intermediate)
You can always create the gamemode files yourself if you'd like (although we suggest the skeleton schema in general). In general, a schema is a gamemode that is derived from `helix` and automatically loads `schema/sh_schema.lua`. You shouldn't have your schema files outside of the `schema` folder. The files you'll need are as follows:

`gamemode/init.lua`
```
AddCSLuaFile("cl_init.lua")
DeriveGamemode("helix")
```

`gamemode/cl_init.lua`
```
DeriveGamemode("helix")
```

`schema/sh_schema.lua`
```
Schema.name = "My Schema"
Schema.author = "me!"
Schema.description = "My awesome schema."

-- include your other schema files
ix.util.Include("cl_schema.lua")
ix.util.Include("sv_schema.lua")
-- etc.
```


================================================
FILE: docs/templates/landing.ltp
================================================

<div class="landing">
	<h1>Helix Documentation</h1>
</div>

<div class="wrapper">
	<p style="text-align: center;">Welcome to the documentation for Helix - the better gamemode framework.</p>
	<h2>Developers</h2>
	<p>The sidebar shows the entire contents of the documentation. Libraries, functions, etc are all searchable with the search box at the top of the sidebar. Migrating from Clockwork? Check out the <a href="{* ldoc.url('manual/converting-from-clockwork') *}">conversion guide</a> in the manual.</p>
	<h2>Server owners</h2>
	<p>If you're looking to get your Helix server up and running as soon as possible, check out the <a href="{* ldoc.url('manual/getting-started') *}">Getting Started</a> guide in the manual.</p>
	<h2>Community</h2>
	<p>Questions? Want to show off your work? Maybe drop a new plugin release? Come join our community <a href="https://discord.gg/2AutUcF" target="_blank">Discord server</a>.</p>
	<h2>Contributing</h2>
	<p>Helix is a large project and there are still a few things missing here and there. Contributions to the documentation - from function references, to simple typo fixes - are welcomed! Check out the <code>ix.storage</code> library's <a href="https://github.com/NebulousCloud/helix/blob/master/gamemode/core/libs/sh_storage.lua" target="_blank">source code</a> for a good example on how to write documentation. You'll need a basic understanding of <a href="https://guides.github.com/features/mastering-markdown/" target="_blank">Markdown</a>, since it's used extensively to generate the markup.</p>
	<p>If you'd like to contribute code, you can visit the <a href="https://github.com/NebulousCloud/helix/" target="_blank">GitHub repository</a> and make a pull request.</p>
	<h2>Learning</h2>
	<p>Getting started on developing with the Helix framework requires an intermediate level of Garry's Mod Lua knowledge. You'll want to learn the basics before you get starting making a schema. The <a href="https://wiki.facepunch.com/gmod/" target="_blank">Garry's Mod Wiki</a> is a good place to start.</p>
</div>


================================================
FILE: docs/templates/ldoc.ltp
================================================

{%
local baseUrl = ldoc.css:gsub("ldoc.css", "")
local repo = "https://github.com/nebulouscloud/helix/"
local pageTitle = mod and (ldoc.display_name(mod) .. " - " .. ldoc.title) or ldoc.title

local oldmarkup = ldoc.markup
function ldoc.markup(text, item)
	return oldmarkup(text, item, ldoc.plain)
end

function ldoc.url(path)
	return baseUrl .. path
end

function ldoc.realm_icon(realm)
	return "<span class=\"realm " .. (realm or "") .. "\"></span>";
end

function ldoc.is_kind_classmethod(kind)
	return kind ~= "libraries"
end

function ldoc.repo_reference(item)
	return repo .. "tree/master" .. item.file.filename:gsub(item.file.base, "/gamemode") .. "#L" .. item.lineno
end

local function moduleDescription(mod)
	if (mod.type == "topic") then
		return mod.body:gsub(mod.display_name, ""):gsub("#", ""):sub(1, 256) .. "..."
	end

	return mod.summary
end
%}

<html>
	<head>
		<title>{{pageTitle}}</title>

		<meta property="og:type" content="website" />
		<meta property="og:title" content="{{pageTitle}}" />
		<meta property="og:site_name" content="Helix Documentation" />

		{% if (mod) then %}
			<meta property="og:description" content="{{moduleDescription(mod)}}" />
		{% else %}
			<meta property="og:description" content="Documentation and function reference for the Helix framework." />
		{% end %}

		<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Code+Pro" />
		<link rel="stylesheet" href="{* ldoc.css *}" />
		<link rel="stylesheet" href="{* ldoc.url('highlight.css') *}" />
	</head>

	<body>
		<main>
			{(docs/templates/sidebar.ltp)}

			<article>
				{% if (ldoc.root) then -- we're rendering the landing page (index.html) %}
					{(docs/templates/landing.ltp)}
				{% elseif (ldoc.body) then -- we're rendering non-code elements %}
					<div class="wrapper">
						{* ldoc.body *}
					</div>
				{% elseif (module) then -- we're rendering libary contents %}
					<div class="wrapper">
						{(docs/templates/module.ltp)}
					</div>
				{% end %}
			</article>
		</main>

		<script type="text/javascript" src="{* ldoc.url('app.js') *}"></script>
		<script type="text/javascript" src="{* ldoc.url('highlight.min.js') *}"></script>
		<script type="text/javascript">
			var elements = document.querySelectorAll("pre code")

			hljs.configure({
				languages: ["lua"]
			});

			for (var i = 0; i < elements.length; i++)
			{
				hljs.highlightBlock(elements[i]);
			}
		</script>
	</body>
</html>


================================================
FILE: docs/templates/module.ltp
================================================

<header class="module">
	<h1>{{mod.name}}</h1>
	<h2>{* ldoc.markup(mod.summary) *}</h2>
</header>

<p>{* ldoc.markup(mod.description) *}</p>

{% for kind, items in mod.kinds() do %}
	<h1 class="title">{{kind}}</h1>

	{% for item in items() do %}
		<section class="method">
			<header>
				<a class="anchor" id="{{item.name}}">
					<h1>{* ldoc.realm_icon(item.tags.realm[1]) *}</span>{{ldoc.display_name(item)}}</h1>
				</a>

				{% if (item.tags.internal) then %}
					<div class="notice error">
						<div class="title">Internal</div>
						<p>This is an internal function! You are able to use it, but you risk unintended side effects if used incorrectly.</p>
					</div>
				{% end %}

				{% if (item.module and item.module.type ~= "hooks") then %}
					<a class="reference" href="{* ldoc.repo_reference(item) *}">View source &raquo;</a>
				{% end %}

				{% if (ldoc.descript(item):len() == 0) then %}
					<div class="notice warning">
						<div class="title">Incomplete</div>
						<p>Documentation for this section is incomplete and needs expanding.</p>
					</div>
				{% else %}
					<p>{* ldoc.markup(ldoc.descript(item)) *}</p>
				{% end %}
			</header>

			{# function arguments #}
			{% if (item.params and #item.params > 0) then %}
				{% local subnames = mod.kinds:type_of(item).subnames %}

				{% if (subnames) then %}
					<h3>{{subnames}}</h3>
				{% end %}

				{% for argument in ldoc.modules.iter(item.params) do %}
					{% local argument, sublist = item:subparam(argument) %}

					<ul>
						{% for argumentName in ldoc.modules.iter(argument) do %}
							{% local displayName = item:display_name_of(argumentName) %}
							{% local type = ldoc.typename(item:type_of_param(argumentName)) %}
							{% local default = item:default_of_param(argumentName) %}

							<li>
								<span class="tag parameter">{{displayName}}</span>

								{% if (type ~= "") then %}
									<span class="tag">{* type *}</span>
								{% end %}

								{% if (default and default ~= true) then %}
									<span class="tag default">default: {{default}}</span>
								{% elseif (default) then %}
									<span class="tag default">optional</span>
								{% end %}

								<p>{* ldoc.markup(item.params.map[argumentName]) *}</p>
							</li>
						{% end %}
					</ul>
				{% end %}
			{% end %}

			{# function returns #}
			{% if ((not ldoc.no_return_or_parms) and item.retgroups) then %}
				{% local groups = item.retgroups %}

				<h3>Returns</h3>
				<ul>
					{% for i, group in ldoc.ipairs(groups) do %}
						{% for returnValue in group:iter() do %}
							{% local type, ctypes = item:return_type(returnValue) %}
							{% type = ldoc.typename(type) %}

							<li>
								{% if (type ~= "") then %}
									{* type *}
								{% else -- we'll assume that it will return a variable type if none is set %}
									<span class="tag type">any</span>
								{% end %}

								<p>{* ldoc.markup(returnValue.text) *}</p>
							</li>
						{% end %}

						{% if (i ~= #groups) then %}
							<div class="or"><span>OR</span></div>
						{% end %}
					{% end %}
				</ul>
			{% end %}

			{% if (item.usage) then -- function usage %}
				<h3>Example Usage</h3>
				{% for usage in ldoc.modules.iter(item.usage) do %}
					<pre><code>{* usage *}</code></pre>
				{% end %}
			{% end %}

			{% if (item.see) then %}
				<h3>See Also</h3>
				<ul>
					{% for see in ldoc.modules.iter(item.see) do %}
						<li><a href="{* ldoc.href(see) *}">{{see.label}}</a></li>
					{% end %}
				</ul>
			{% end %}
		</section>
	{% end %}
{% end %}


================================================
FILE: docs/templates/sidebar.ltp
================================================

{%
local function isKindExpandable(kind)
	return kind ~= "Manual"
end
%}

<nav>
	<header>
		{% if (not ldoc.root) then %}
			<h1><a href="{* ldoc.url('') *}">Helix Documentation</a></h1>
		{% end %}
		<input id="search" type="search" autocomplete="off" placeholder="Search..." />
	</header>

	<section>
		{% for kind, mods, type in ldoc.kinds() do %}
			{% if (ldoc.allowed_in_contents(type, mod)) then %}
				<details class="category" open>
					<summary>
						<h2>{{kind}}</h2>
					</summary>

					<ul>
						{% for currentMod in mods() do %}
							{% local name = ldoc.display_name(currentMod) %}
							<li>
								{% if (isKindExpandable(kind)) then %}
									<details {{currentMod.name == (mod or {}).name and "open" or ""}}>
									<summary><a href="{* ldoc.ref_to_module(currentMod) *}">{{name}}</a></summary>

									<ul>
								{% else %}
									<a href="{* ldoc.ref_to_module(currentMod) *}">{{name}}</a>
								{% end %}

								{% if (isKindExpandable(kind)) then
									currentMod.items:sort(function(a, b)
										return a.name < b.name
									end)
								end %}

								{% for k, v in pairs(currentMod.items) do %}
									{% if (v.kind == "functions") then %}
										<li>
											{* ldoc.realm_icon(v.tags.realm[1]) *}
											<a href="{* ldoc.ref_to_module(currentMod) *}#{{v.name}}">
												{% if (ldoc.is_kind_classmethod(currentMod.kind)) then
													echo((v.name:gsub(".+:", "")))
												else
													echo((v.name:gsub(currentMod.name .. ".", "")))
												end %}
											</a>
										</li>
									{% end %}
								{% end %}

								{% if (isKindExpandable(kind)) then %}
									</ul>
									</details>
								{% end %}
							</li>
						{% end %}
					</ul>
				</details>
			{% end %}
		{% end %}
	</section>
</nav>


================================================
FILE: entities/entities/ix_item.lua
================================================

AddCSLuaFile()

ENT.Base = "base_entity"
ENT.Type = "anim"
ENT.PrintName = "Item"
ENT.Category = "Helix"
ENT.Spawnable = false
ENT.ShowPlayerInteraction = true
ENT.RenderGroup = RENDERGROUP_BOTH
ENT.bNoPersist = true

function ENT:SetupDataTables()
	self:NetworkVar("String", 0, "ItemID")
end

if (SERVER) then
	local invalidBoundsMin = Vector(-8, -8, -8)
	local invalidBoundsMax = Vector(8, 8, 8)

	util.AddNetworkString("ixItemEntityAction")

	function ENT:Initialize()
		self:SetModel("models/props_junk/watermelon01.mdl")
		self:SetSolid(SOLID_VPHYSICS)
		self:PhysicsInit(SOLID_VPHYSICS)
		self:SetUseType(SIMPLE_USE)
		self.health = 50

		local physObj = self:GetPhysicsObject()

		if (IsValid(physObj)) then
			physObj:EnableMotion(true)
			physObj:Wake()
		end
	end

	function ENT:Use(activator, caller)
		local itemTable = self:GetItemTable()

		if (IsValid(caller) and caller:IsPlayer() and caller:GetCharacter() and itemTable) then
			itemTable.player = caller
			itemTable.entity = self

			if (itemTable.functions.take.OnCanRun(itemTable)) then
				caller:PerformInteraction(ix.config.Get("itemPickupTime", 0.5), self, function(client)
					if (!ix.item.PerformInventoryAction(client, "take", self)) then
						return false -- do not mark dirty if interaction fails
					end
				end)
			end

			itemTable.player = nil
			itemTable.entity = nil
		end
	end

	function ENT:SetItem(itemID)
		local itemTable = ix.item.instances[itemID]

		if (itemTable) then
			local material = itemTable:GetMaterial(self)

			self:SetSkin(itemTable:GetSkin())
			self:SetModel(itemTable:GetModel())

			if (material) then
				self:SetMaterial(material)
			end

			self:PhysicsInit(SOLID_VPHYSICS)
			self:SetSolid(SOLID_VPHYSICS)
			self:SetItemID(itemTable.uniqueID)
			self.ixItemID = itemID

			if (!table.IsEmpty(itemTable.data)) then
				self:SetNetVar("data", itemTable.data)
			end

			local physObj = self:GetPhysicsObject()

			if (!IsValid(physObj)) then
				self:PhysicsInitBox(invalidBoundsMin, invalidBoundsMax)
				self:SetCollisionBounds(invalidBoundsMin, invalidBoundsMax)
			end

			if (IsValid(physObj)) then
				physObj:EnableMotion(true)
				physObj:Wake()
			end

			if (itemTable.OnEntityCreated) then
				itemTable:OnEntityCreated(self)
			end
		end
	end

	function ENT:OnDuplicated(entTable)
		local itemID = entTable.ixItemID
		local itemTable = ix.item.instances[itemID]

		ix.item.Instance(0, itemTable.uniqueID, itemTable.data, 1, 1, function(item)
			self:SetItem(item:GetID())
		end)
	end

	function ENT:OnTakeDamage(damageInfo)
		local itemTable = ix.item.instances[self.ixItemID]

		if (itemTable.OnEntityTakeDamage
		and itemTable:OnEntityTakeDamage(self, damageInfo) == false) then
			return
		end

		local damage = damageInfo:GetDamage()
		self:SetHealth(self:Health() - damage)

		if (self:Health() <= 0 and !self.ixIsDestroying) then
			self.ixIsDestroying = true
			self.ixDamageInfo = {damageInfo:GetAttacker(), damage, damageInfo:GetInflictor()}
			self:Remove()
		end
	end

	function ENT:OnRemove()
		if (!ix.shuttingDown and !self.ixIsSafe and self.ixItemID) then
			local itemTable = ix.item.instances[self.ixItemID]

			if (itemTable) then
				if (self.ixIsDestroying) then
					self:EmitSound("physics/cardboard/cardboard_box_break"..math.random(1, 3)..".wav")
					local position = self:LocalToWorld(self:OBBCenter())

					local effect = EffectData()
						effect:SetStart(position)
						effect:SetOrigin(position)
						effect:SetScale(3)
					util.Effect("GlassImpact", effect)

					if (itemTable.OnDestroyed) then
						itemTable:OnDestroyed(self)
					end

					ix.log.Add(self.ixDamageInfo[1], "itemDestroy", itemTable:GetName(), itemTable:GetID())
				end

				if (itemTable.OnRemoved) then
					itemTable:OnRemoved()
				end

				local query = mysql:Delete("ix_items")
					query:Where("item_id", self.ixItemID)
				query:Execute()
			end
		end
	end

	function ENT:Think()
		local itemTable = self:GetItemTable()

		if (!itemTable) then
			self:Remove()
		end

		if (itemTable.Think) then
			itemTable:Think(self)
		end

		return true
	end

	function ENT:UpdateTransmitState()
		return TRANSMIT_PVS
	end

	net.Receive("ixItemEntityAction", function(length, client)
		ix.item.PerformInventoryAction(client, net.ReadString(), net.ReadEntity())
	end)
else
	ENT.PopulateEntityInfo = true

	local shadeColor = Color(0, 0, 0, 200)
	local blockSize = 4
	local blockSpacing = 2

	function ENT:OnPopulateEntityInfo(tooltip)
		local item = self:GetItemTable()

		if (!item) then
			return
		end

		local oldData = item.data

		item.data = self:GetNetVar("data", {})
		item.entity = self

		ix.hud.PopulateItemTooltip(tooltip, item)

		local name = tooltip:GetRow("name")
		local color = name and name:GetBackgroundColor() or ix.config.Get("color")

		-- set the arrow to be the same colour as the title/name row
		tooltip:SetArrowColor(color)

		if ((item.width > 1 or item.height > 1) and
			hook.Run("ShouldDrawItemSize", item) != false) then

			local sizeHeight = item.height * blockSize + item.height * blockSpacing
			local size = tooltip:Add("Panel")
			size:SetWide(tooltip:GetWide())

			if (tooltip:IsMinimal()) then
				size:SetTall(sizeHeight)
				size:Dock(TOP)
				size:SetZPos(-999)
			else
				size:SetTall(sizeHeight + 8)
				size:Dock(BOTTOM)
			end

			size.Paint = function(sizePanel, width, height)
				if (!tooltip:IsMinimal()) then
					surface.SetDrawColor(ColorAlpha(shadeColor, 60))
					surface.DrawRect(0, 0, width, height)
				end

				local x, y = width * 0.5 - 1, height * 0.5 - 1
				local itemWidth = item.width - 1
				local itemHeight = item.height - 1
				local heightDifference = ((itemHeight + 1) * blockSize + blockSpacing * itemHeight)

				x = x - (itemWidth * blockSize + blockSpacing * itemWidth) * 0.5
				y = y - heightDifference * 0.5

				for i = 0, itemHeight do
					for j = 0, itemWidth do
						local blockX, blockY = x + j * blockSize + j * blockSpacing, y + i * blockSize + i * blockSpacing

						surface.SetDrawColor(shadeColor)
						surface.DrawRect(blockX + 1, blockY + 1, blockSize, blockSize)

						surface.SetDrawColor(color)
						surface.DrawRect(blockX, blockY, blockSize, blockSize)
					end
				end
			end

			tooltip:SizeToContents()
		end

		item.entity = nil
		item.data = oldData
	end

	function ENT:DrawTranslucent()
		local itemTable = self:GetItemTable()

		if (itemTable and itemTable.DrawEntity) then
			itemTable:DrawEntity(self)
		end
	end

	function ENT:Draw()
		self:DrawModel()
	end
end

function ENT:GetEntityMenu(client)
	local itemTable = self:GetItemTable()
	local options = {}

	if (!itemTable) then
		return false
	end

	itemTable.player = client
	itemTable.entity = self

	for k, v in SortedPairs(itemTable.functions) do
		if (k == "take" or k == "combine") then
			continue
		end

		if (v.OnCanRun and v.OnCanRun(itemTable) == false) then
			continue
		end

		-- we keep the localized phrase since we aren't using the callbacks - the name won't matter in this case
		options[L(v.name or k)] = function()
			local send = true

			if (v.OnClick) then
				send = v.OnClick(itemTable)
			end

			if (v.sound) then
				surface.PlaySound(v.sound)
			end

			if (send != false) then
				net.Start("ixItemEntityAction")
					net.WriteString(k)
					net.WriteEntity(self)
				net.SendToServer()
			end

			-- don't run callbacks since we're handling it manually
			return false
		end
	end

	itemTable.player = nil
	itemTable.entity = nil

	return options
end

function ENT:GetItemTable()
	return ix.item.list[self:GetItemID()]
end

function ENT:GetData(key, default)
	local data = self:GetNetVar("data", {})

	return data[key] or default
end


================================================
FILE: entities/entities/ix_money.lua
================================================
AddCSLuaFile()

ENT.Type = "anim"
ENT.PrintName = "Money"
ENT.Category = "Helix"
ENT.Spawnable = false
ENT.ShowPlayerInteraction = true
ENT.bNoPersist = true

function ENT:SetupDataTables()
	self:NetworkVar("Int", 0, "Amount")
end

if (SERVER) then
	local invalidBoundsMin = Vector(-8, -8, -8)
	local invalidBoundsMax = Vector(8, 8, 8)

	function ENT:Initialize()
		self:SetModel(ix.currency.model)
		self:SetSolid(SOLID_VPHYSICS)
		self:PhysicsInit(SOLID_VPHYSICS)
		self:SetUseType(SIMPLE_USE)

		local physObj = self:GetPhysicsObject()

		if (IsValid(physObj)) then
			physObj:EnableMotion(true)
			physObj:Wake()
		else
			self:PhysicsInitBox(invalidBoundsMin, invalidBoundsMax)
			self:SetCollisionBounds(invalidBoundsMin, invalidBoundsMax)
		end
	end

	function ENT:Use(activator)
		if (self.ixSteamID and self.ixCharID) then
			local char = activator:GetCharacter()

			if (char and self.ixCharID != char:GetID() and self.ixSteamID == activator:SteamID()) then
				activator:NotifyLocalized("itemOwned")
				return false
			end
		end

		activator:PerformInteraction(ix.config.Get("itemPickupTime", 0.5), self, function(client)
			if (hook.Run("OnPickupMoney", client, self) != false) then
				self:Remove()
			end
		end)
	end

	function ENT:UpdateTransmitState()
		return TRANSMIT_PVS
	end
else
	ENT.PopulateEntityInfo = true

	function ENT:OnPopulateEntityInfo(container)
		local text = container:AddRow("name")
		text:SetImportant()
		text:SetText(ix.currency.Get(self:GetAmount()))
		text:SizeToContents()
	end
end


================================================
FILE: entities/entities/ix_shipment.lua
================================================

AddCSLuaFile()

ENT.Type = "anim"
ENT.PrintName = "Shipment"
ENT.Category = "Helix"
ENT.Spawnable = false
ENT.ShowPlayerInteraction = true
ENT.bNoPersist = true

function ENT:SetupDataTables()
	self:NetworkVar("Int", 0, "DeliveryTime")
end

if (SERVER) then
	function ENT:Initialize()
		self:SetModel("models/Items/item_item_crate.mdl")
		self:SetSolid(SOLID_VPHYSICS)
		self:PhysicsInit(SOLID_VPHYSICS)
		self:SetUseType(SIMPLE_USE)
		self:PrecacheGibs()

		local physObj = self:GetPhysicsObject()

		if (IsValid(physObj)) then
			physObj:EnableMotion(true)
			physObj:Wake()
		end

		self:SetDeliveryTime(CurTime() + 120)

		timer.Simple(120, function()
			if (IsValid(self)) then
				self:Remove()
			end
		end)
	end

	function ENT:Use(activator)
		activator:PerformInteraction(ix.config.Get("itemPickupTime", 0.5), self, function(client)
			if (client:GetCharacter() and client:GetCharacter():GetID() == self:GetNetVar("owner", 0)
			and hook.Run("CanPlayerOpenShipment", client, self) != false) then
				client.ixShipment = self

				net.Start("ixShipmentOpen")
					net.WriteEntity(self)
					net.WriteTable(self.items)
				net.Send(client)
			end

			-- don't mark dirty since the player could come back and use this shipment again later
			return false
		end)
	end

	function ENT:SetItems(items)
		self.items = items
	end

	function ENT:GetItemCount()
		local count = 0

		for _, v in pairs(self.items) do
			count = count + math.max(v, 0)
		end

		return count
	end

	function ENT:OnRemove()
		self:EmitSound("physics/cardboard/cardboard_box_break"..math.random(1, 3)..".wav")

		local position = self:LocalToWorld(self:OBBCenter())

		local effect = EffectData()
			effect:SetStart(position)
			effect:SetOrigin(position)
			effect:SetScale(3)
		util.Effect("GlassImpact", effect)
	end

	function ENT:UpdateTransmitState()
		return TRANSMIT_PVS
	end
else
	ENT.PopulateEntityInfo = true

	local size = 150
	local tempMat = Material("particle/warp1_warp", "alphatest")

	function ENT:Draw()
		local pos, ang = self:GetPos(), self:GetAngles()

		self:DrawModel()

		pos = pos + self:GetUp() * 25
		pos = pos + self:GetForward() * 1
		pos = pos + self:GetRight() * 3

		local delTime = math.max(math.ceil(self:GetDeliveryTime() - CurTime()), 0)

		local func = function()
			surface.SetMaterial(tempMat)
			surface.SetDrawColor(0, 0, 0, 200)
			surface.DrawTexturedRect(-size / 2, -size / 2 - 10, size, size)

			ix.util.DrawText("k", 0, 0, color_white, 1, 4, "ixIconsBig")
			ix.util.DrawText(delTime, 0, -10, color_white, 1, 5, "ixBigFont")
		end

		cam.Start3D2D(pos, ang, .15)
			func()
		cam.End3D2D()

		ang:RotateAroundAxis(ang:Right(), 180)
		pos = pos - self:GetUp() * 26

		cam.Start3D2D(pos, ang, .15)
			func()
		cam.End3D2D()
	end

	function ENT:OnPopulateEntityInfo(container)
		local owner = ix.char.loaded[self:GetNetVar("owner", 0)]

		local name = container:AddRow("name")
		name:SetImportant()
		name:SetText(L("shipment"))
		name:SizeToContents()

		if (owner) then
			local description = container:AddRow("description")
			description:SetText(L("shipmentDesc", owner:GetName()))
			description:SizeToContents()
		end
	end
end


================================================
FILE: entities/weapons/ix_hands.lua
================================================

AddCSLuaFile()

if (CLIENT) then
	SWEP.PrintName = "Hands"
	SWEP.Slot = 0
	SWEP.SlotPos = 1
	SWEP.DrawAmmo = false
	SWEP.DrawCrosshair = true
end

SWEP.Author = "Chessnut"
SWEP.Instructions = [[Primary Fire: Throw/Punch
Secondary Fire: Knock/Pickup
Secondary Fire + Mouse: Rotate Object
Reload: Drop]]
SWEP.Purpose = "Hitting things and knocking on doors."
SWEP.Drop = false

SWEP.ViewModelFOV = 45
SWEP.ViewModelFlip = false
SWEP.AnimPrefix	 = "rpg"

SWEP.ViewTranslation = 4
if CLIENT then
	SWEP.NextAllowedPlayRateChange = 0
end

SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = -1
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = ""
SWEP.Primary.Damage = 5
SWEP.Primary.Delay = 0.75

SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = 0
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = ""
SWEP.Secondary.Delay = 0.5

SWEP.ViewModel = Model("models/weapons/c_arms.mdl")
SWEP.WorldModel = ""

SWEP.UseHands = true
SWEP.LowerAngles = Angle(0, 5, -14)
SWEP.LowerAngles2 = Angle(0, 5, -19)
SWEP.KnockViewPunchAngle = Angle(-1.3, 1.8, 0)

SWEP.FireWhenLowered = true
SWEP.HoldType = "fist"

SWEP.holdDistance = 64
SWEP.maxHoldDistance = 96 -- how far away the held object is allowed to travel before forcefully dropping
SWEP.maxHoldStress = 4000 -- how much stress the held object can undergo before forcefully dropping

-- luacheck: globals ACT_VM_FISTS_DRAW ACT_VM_FISTS_HOLSTER
ACT_VM_FISTS_DRAW = 2
ACT_VM_FISTS_HOLSTER = 1

function SWEP:Initialize()
	self:SetHoldType(self.HoldType)

	self.lastHand = 0
	self.maxHoldDistanceSquared = self.maxHoldDistance ^ 2
	self.heldObjectAngle = Angle(angle_zero)
end

if (CLIENT) then
	function SWEP:DoDrawCrosshair(x, y)
		surface.SetDrawColor(255, 255, 255, 66)
		surface.DrawRect(x - 2, y - 2, 4, 4)
	end

	hook.Add("CreateMove", "ixHandsCreateMove", function(cmd)
		if (LocalPlayer():GetLocalVar("bIsHoldingObject", false) and cmd:KeyDown(IN_ATTACK2)) then
			cmd:ClearMovement()
			local angle = RenderAngles()
			angle.z = 0
			cmd:SetViewAngles(angle)
		end
	end)
end

function SWEP:Deploy()
	if (!IsValid(self:GetOwner())) then
		return
	end

	local viewModel = self:GetOwner():GetViewModel()

	if (IsValid(viewModel)) then
		viewModel:SetPlaybackRate(1)
		viewModel:ResetSequence(ACT_VM_FISTS_DRAW)
		if CLIENT then
			self.NextAllowedPlayRateChange = CurTime() + viewModel:SequenceDuration()
		end
	end

	self:DropObject()
	return true
end

function SWEP:Precache()
	util.PrecacheSound("npc/vort/claw_swing1.wav")
	util.PrecacheSound("npc/vort/claw_swing2.wav")
	util.PrecacheSound("physics/plastic/plastic_box_impact_hard1.wav")
	util.PrecacheSound("physics/plastic/plastic_box_impact_hard2.wav")
	util.PrecacheSound("physics/plastic/plastic_box_impact_hard3.wav")
	util.PrecacheSound("physics/plastic/plastic_box_impact_hard4.wav")
	util.PrecacheSound("physics/wood/wood_crate_impact_hard2.wav")
	util.PrecacheSound("physics/wood/wood_crate_impact_hard3.wav")
end

function SWEP:OnReloaded()
	self.maxHoldDistanceSquared = self.maxHoldDistance ^ 2
	self:DropObject()
end

function SWEP:Holster()
	if (!IsValid(self:GetOwner())) then
		return
	end

	local viewModel = self:GetOwner():GetViewModel()

	if (IsValid(viewModel)) then
		viewModel:SetPlaybackRate(1)
		viewModel:ResetSequence(ACT_VM_FISTS_HOLSTER)
		if CLIENT then
			self.NextAllowedPlayRateChange = CurTime() + viewModel:SequenceDuration()
		end
	end

	return true
end

function SWEP:Think()
	if (!IsValid(self:GetOwner())) then
		return
	end

	if (CLIENT) then
		local viewModel = self:GetOwner():GetViewModel()

		if (IsValid(viewModel) and self.NextAllowedPlayRateChange < CurTime()) then
			viewModel:SetPlaybackRate(1)
		end
	else
		if (self:IsHoldingObject()) then
			local physics = self:GetHeldPhysicsObject()
			local bIsRagdoll = self.heldEntity:IsRagdoll()
			local holdDistance = bIsRagdoll and self.holdDistance * 0.5 or self.holdDistance
			local targetLocation = self:GetOwner():GetShootPos() + self:GetOwner():GetForward() * holdDistance

			if (bIsRagdoll) then
				targetLocation.z = math.min(targetLocation.z, self:GetOwner():GetShootPos().z - 32)
			end

			if (!IsValid(physics)) then
				self:DropObject()
				return
			end

			if (physics:GetPos():DistToSqr(targetLocation) > self.maxHoldDistanceSquared) then
				self:DropObject()
			else
				local physicsObject = self.holdEntity:GetPhysicsObject()
				local currentPlayerAngles = self:GetOwner():EyeAngles()
				local client = self:GetOwner()

				if (client:KeyDown(IN_ATTACK2)) then
					local cmd = client:GetCurrentCommand()
					self.heldObjectAngle:RotateAroundAxis(currentPlayerAngles:Forward(), cmd:GetMouseX() / 15)
					self.heldObjectAngle:RotateAroundAxis(currentPlayerAngles:Right(), cmd:GetMouseY() / 15)
				end

				self.lastPlayerAngles = self.lastPlayerAngles or currentPlayerAngles
				self.heldObjectAngle.y = self.heldObjectAngle.y - math.AngleDifference(self.lastPlayerAngles.y, currentPlayerAngles.y)
				self.lastPlayerAngles = currentPlayerAngles

				physicsObject:Wake()
				physicsObject:ComputeShadowControl({
					secondstoarrive = 0.01,
					pos = targetLocation,
					angle = self.heldObjectAngle,
					maxangular = 256,
					maxangulardamp = 10000,
					maxspeed = 256,
					maxspeeddamp = 10000,
					dampfactor = 0.8,
					teleportdistance = self.maxHoldDistance * 0.75,
					deltatime = FrameTime()
				})

				if (physics:GetStress() > self.maxHoldStress) then
					self:DropObject()
				end
			end
		end
		-- Prevents the camera from getting stuck when the object that the client is holding gets deleted.
		if(!IsValid(self.heldEntity) and self:GetOwner():GetLocalVar("bIsHoldingObject", true)) then
			self:GetOwner():SetLocalVar("bIsHoldingObject", false)
		end
	end
end

function SWEP:GetHeldPhysicsObject()
	return IsValid(self.heldEntity) and self.heldEntity:GetPhysicsObject() or nil
end

function SWEP:CanHoldObject(entity)
	local physics = entity:GetPhysicsObject()

	return IsValid(physics) and
		(physics:GetMass() <= ix.config.Get("maxHoldWeight", 100) and physics:IsMoveable()) and
		!self:IsHoldingObject() and
		!IsValid(entity.ixHeldOwner) and
		hook.Run("CanPlayerHoldObject", self:GetOwner(), entity)
end

function SWEP:IsHoldingObject()
	return IsValid(self.heldEntity) and
		IsValid(self.heldEntity.ixHeldOwner) and
		self.heldEntity.ixHeldOwner == sel
Download .txt
gitextract_omsmarjc/

├── .editorconfig
├── .github/
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .luacheckrc
├── LICENSE.txt
├── README.md
├── config.ld
├── docs/
│   ├── css/
│   │   ├── highlight.css
│   │   └── ldoc.css
│   ├── hooks/
│   │   ├── class.lua
│   │   ├── faction.lua
│   │   └── plugin.lua
│   ├── js/
│   │   └── app.js
│   ├── manual/
│   │   ├── converting-from-clockwork.md
│   │   └── getting-started.md
│   └── templates/
│       ├── landing.ltp
│       ├── ldoc.ltp
│       ├── module.ltp
│       └── sidebar.ltp
├── entities/
│   ├── entities/
│   │   ├── ix_item.lua
│   │   ├── ix_money.lua
│   │   └── ix_shipment.lua
│   └── weapons/
│       └── ix_hands.lua
├── gamemode/
│   ├── cl_init.lua
│   ├── config/
│   │   ├── sh_config.lua
│   │   └── sh_options.lua
│   ├── core/
│   │   ├── cl_skin.lua
│   │   ├── derma/
│   │   │   ├── cl_attribute.lua
│   │   │   ├── cl_bar.lua
│   │   │   ├── cl_business.lua
│   │   │   ├── cl_character.lua
│   │   │   ├── cl_charcreate.lua
│   │   │   ├── cl_charload.lua
│   │   │   ├── cl_classes.lua
│   │   │   ├── cl_config.lua
│   │   │   ├── cl_credits.lua
│   │   │   ├── cl_deathscreen.lua
│   │   │   ├── cl_dev_icon.lua
│   │   │   ├── cl_entitymenu.lua
│   │   │   ├── cl_generic.lua
│   │   │   ├── cl_help.lua
│   │   │   ├── cl_information.lua
│   │   │   ├── cl_intro.lua
│   │   │   ├── cl_inventory.lua
│   │   │   ├── cl_menu.lua
│   │   │   ├── cl_menubutton.lua
│   │   │   ├── cl_modelpanel.lua
│   │   │   ├── cl_notice.lua
│   │   │   ├── cl_noticebar.lua
│   │   │   ├── cl_overrides.lua
│   │   │   ├── cl_scoreboard.lua
│   │   │   ├── cl_settings.lua
│   │   │   ├── cl_shipment.lua
│   │   │   ├── cl_spawnicon.lua
│   │   │   ├── cl_storage.lua
│   │   │   ├── cl_subpanel.lua
│   │   │   └── cl_tooltip.lua
│   │   ├── hooks/
│   │   │   ├── cl_hooks.lua
│   │   │   ├── sh_hooks.lua
│   │   │   └── sv_hooks.lua
│   │   ├── libs/
│   │   │   ├── cl_bar.lua
│   │   │   ├── cl_hud.lua
│   │   │   ├── cl_markup.lua
│   │   │   ├── cl_networking.lua
│   │   │   ├── sh_animation.lua
│   │   │   ├── sh_anims.lua
│   │   │   ├── sh_attribs.lua
│   │   │   ├── sh_business.lua
│   │   │   ├── sh_character.lua
│   │   │   ├── sh_chatbox.lua
│   │   │   ├── sh_class.lua
│   │   │   ├── sh_command.lua
│   │   │   ├── sh_currency.lua
│   │   │   ├── sh_date.lua
│   │   │   ├── sh_faction.lua
│   │   │   ├── sh_flag.lua
│   │   │   ├── sh_inventory.lua
│   │   │   ├── sh_item.lua
│   │   │   ├── sh_language.lua
│   │   │   ├── sh_log.lua
│   │   │   ├── sh_menu.lua
│   │   │   ├── sh_notice.lua
│   │   │   ├── sh_option.lua
│   │   │   ├── sh_player.lua
│   │   │   ├── sh_plugin.lua
│   │   │   ├── sh_storage.lua
│   │   │   ├── sv_database.lua
│   │   │   ├── sv_networking.lua
│   │   │   ├── sv_player.lua
│   │   │   └── thirdparty/
│   │   │       ├── cl_ikon.lua
│   │   │       ├── data/
│   │   │       │   └── sh_utf8_casemap.lua
│   │   │       ├── sh_cami.lua
│   │   │       ├── sh_date.lua
│   │   │       ├── sh_middleclass.lua
│   │   │       ├── sh_pon.lua
│   │   │       ├── sh_tween.lua
│   │   │       ├── sh_utf8.lua
│   │   │       ├── sh_yaml.lua
│   │   │       └── sv_mysql.lua
│   │   ├── meta/
│   │   │   ├── sh_character.lua
│   │   │   ├── sh_entity.lua
│   │   │   ├── sh_inventory.lua
│   │   │   ├── sh_item.lua
│   │   │   ├── sh_player.lua
│   │   │   └── sh_tool.lua
│   │   ├── sh_commands.lua
│   │   ├── sh_config.lua
│   │   ├── sh_data.lua
│   │   └── sh_util.lua
│   ├── init.lua
│   ├── items/
│   │   ├── ammo/
│   │   │   ├── sh_357ammo.txt
│   │   │   ├── sh_ar2ammo.txt
│   │   │   ├── sh_crossbowammo.txt
│   │   │   ├── sh_pistolammo.txt
│   │   │   ├── sh_rocketammo.txt
│   │   │   ├── sh_shotgunammo.txt
│   │   │   └── sh_smg1ammo.txt
│   │   ├── bags/
│   │   │   ├── sh_large.txt
│   │   │   └── sh_small.txt
│   │   ├── base/
│   │   │   ├── sh_ammo.lua
│   │   │   ├── sh_bags.lua
│   │   │   ├── sh_outfit.lua
│   │   │   ├── sh_pacoutfit.lua
│   │   │   └── sh_weapons.lua
│   │   ├── pacoutfit/
│   │   │   └── sh_skullmask.txt
│   │   ├── sh_defaultitem.txt
│   │   └── weapons/
│   │       ├── sh_357.txt
│   │       ├── sh_ar2.txt
│   │       ├── sh_crowbar.txt
│   │       ├── sh_pistol.txt
│   │       └── sh_smg1.txt
│   ├── languages/
│   │   ├── sh_dutch.lua
│   │   ├── sh_english.lua
│   │   ├── sh_french.lua
│   │   ├── sh_german.lua
│   │   ├── sh_korean.lua
│   │   ├── sh_norwegian.lua
│   │   ├── sh_polish.lua
│   │   ├── sh_portuguese.lua
│   │   ├── sh_russian.lua
│   │   └── sh_spanish.lua
│   └── shared.lua
├── helix.example.yml
├── helix.txt
└── plugins/
    ├── 3dpanel.lua
    ├── 3dtext.lua
    ├── act/
    │   ├── cl_hooks.lua
    │   ├── sh_definitions.lua
    │   ├── sh_plugin.lua
    │   └── sv_hooks.lua
    ├── ammosave.lua
    ├── area/
    │   ├── cl_hooks.lua
    │   ├── cl_plugin.lua
    │   ├── derma/
    │   │   ├── cl_area.lua
    │   │   └── cl_areaedit.lua
    │   ├── languages/
    │   │   ├── sh_english.lua
    │   │   └── sh_russian.lua
    │   ├── sh_plugin.lua
    │   ├── sv_hooks.lua
    │   └── sv_plugin.lua
    ├── chatbox/
    │   ├── derma/
    │   │   ├── cl_chatbox.lua
    │   │   └── cl_chatboxcustomize.lua
    │   └── sh_plugin.lua
    ├── containers/
    │   ├── entities/
    │   │   └── entities/
    │   │       └── ix_container.lua
    │   ├── sh_definitions.lua
    │   └── sh_plugin.lua
    ├── crosshair.lua
    ├── doors/
    │   ├── cl_plugin.lua
    │   ├── derma/
    │   │   └── cl_door.lua
    │   ├── entities/
    │   │   └── weapons/
    │   │       └── ix_keys.lua
    │   ├── sh_commands.lua
    │   ├── sh_plugin.lua
    │   └── sv_plugin.lua
    ├── logging.lua
    ├── mapscene.lua
    ├── observer.lua
    ├── pac.lua
    ├── permakill.lua
    ├── persistence.lua
    ├── propprotect.lua
    ├── recognition.lua
    ├── saveitems.lua
    ├── spawns.lua
    ├── spawnsaver.lua
    ├── stamina/
    │   ├── attributes/
    │   │   ├── sh_end.lua
    │   │   └── sh_stm.lua
    │   └── sh_plugin.lua
    ├── strength/
    │   ├── attributes/
    │   │   └── sh_str.lua
    │   └── sh_plugin.lua
    ├── thirdperson.lua
    ├── typing.lua
    ├── vendor/
    │   ├── derma/
    │   │   ├── cl_vendor.lua
    │   │   ├── cl_vendoreditor.lua
    │   │   └── cl_vendorfaction.lua
    │   ├── entities/
    │   │   └── entities/
    │   │       └── ix_vendor.lua
    │   └── sh_plugin.lua
    └── wepselect.lua
Download .txt
SYMBOL INDEX (8 symbols across 1 files)

FILE: docs/js/app.js
  class Node (line 4) | class Node
    method constructor (line 6) | constructor(name, element, expandable, noAutoCollapse, children = [])
    method AddChild (line 15) | AddChild(name, element, expandable, noAutoCollapse, children)
  class SearchManager (line 24) | class SearchManager
    method constructor (line 26) | constructor(input, contents)
    method ResetVisibility (line 81) | ResetVisibility(current)
    method Search (line 100) | Search(input, current)
    method OnInputUpdated (line 137) | OnInputUpdated(input)
Condensed preview — 197 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,803K chars).
[
  {
    "path": ".editorconfig",
    "chars": 168,
    "preview": "\nroot = true\n\n[*]\nend_of_line = crlf\ninsert_final_newline = true\ncharset = utf-8\nindent_style = tab\nindent_size = 4\n\n[.t"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1621,
    "preview": "\nname: CI\non: [push, pull_request]\n\njobs:\n  linter:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@"
  },
  {
    "path": ".gitignore",
    "chars": 85,
    "preview": "\n*.sublime-*\ngamemode/config/sv_database.lua\ndocs/html\n.vscode/*\n.DS_Store\nhelix.yml\n"
  },
  {
    "path": ".luacheckrc",
    "chars": 80569,
    "preview": "\nmax_line_length = 128\nstd = \"luajit+gmod+helix\"\nignore = {\n\t\"212\", -- unused argument\n}\n\n-- helix\nstds.helix = {}\nstds."
  },
  {
    "path": "LICENSE.txt",
    "chars": 1157,
    "preview": "\nThe MIT License (MIT)\n\nCopyright (c) 2015 Brian Hang, Kyu Yeon Lee\nCopyright (c) 2018-2021 Alexander Grist-Hucker, Igor"
  },
  {
    "path": "README.md",
    "chars": 3238,
    "preview": "<p align=\"center\">\n\t<img src=\"https://raw.githubusercontent.com/NebulousCloud/helix/master/docs/banner.gif\" alt=\"Helix\" "
  },
  {
    "path": "config.ld",
    "chars": 2230,
    "preview": "\nfile = {\n\t\"gamemode\",\n\t\"plugins\",\n\t\"docs/hooks\",\n\texclude = {\"gamemode/core/libs/thirdparty\"}\n}\n\nmodule_file = {\n\tChara"
  },
  {
    "path": "docs/css/highlight.css",
    "chars": 1090,
    "preview": "/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  color: #333;\n}\n\n.hljs-co"
  },
  {
    "path": "docs/css/ldoc.css",
    "chars": 8873,
    "preview": "\n:root {\n\t--content-width: 1200px;\n\t--sidebar-width: 330px;\n\n\t--padding-big: 48px;\n\t--padding-normal: 24px;\n\t--padding-s"
  },
  {
    "path": "docs/hooks/class.lua",
    "chars": 1321,
    "preview": "\n-- luacheck: ignore 111\n\n--[[--\nClass setup hooks.\n\nAs with `Faction`s, `Class`es get their own hooks for when players "
  },
  {
    "path": "docs/hooks/faction.lua",
    "chars": 1685,
    "preview": "\n-- luacheck: ignore 111\n\n--[[--\nFaction setup hooks.\n\nFactions get their own hooks that are called for various reasons,"
  },
  {
    "path": "docs/hooks/plugin.lua",
    "chars": 36994,
    "preview": "\n-- luacheck: ignore 111\n\n--[[--\nGlobal hooks for general use.\n\nPlugin hooks are regular hooks that can be used in your "
  },
  {
    "path": "docs/js/app.js",
    "chars": 3463,
    "preview": "\nconst skippedCategories = [\"manual\"];\n\nclass Node\n{\n\tconstructor(name, element, expandable, noAutoCollapse, children = "
  },
  {
    "path": "docs/manual/converting-from-clockwork.md",
    "chars": 19811,
    "preview": "# Clockwork to Helix Migration\n\nIf you are here, you probably want to be converting your code from another framework to "
  },
  {
    "path": "docs/manual/getting-started.md",
    "chars": 6211,
    "preview": "# Getting Started\nIt's pretty easy to get started with creating your own schema with Helix. It requires a bit of bootstr"
  },
  {
    "path": "docs/templates/landing.ltp",
    "chars": 2051,
    "preview": "\n<div class=\"landing\">\n\t<h1>Helix Documentation</h1>\n</div>\n\n<div class=\"wrapper\">\n\t<p style=\"text-align: center;\">Welco"
  },
  {
    "path": "docs/templates/ldoc.ltp",
    "chars": 2445,
    "preview": "\n{%\nlocal baseUrl = ldoc.css:gsub(\"ldoc.css\", \"\")\nlocal repo = \"https://github.com/nebulouscloud/helix/\"\nlocal pageTitle"
  },
  {
    "path": "docs/templates/module.ltp",
    "chars": 3556,
    "preview": "\n<header class=\"module\">\n\t<h1>{{mod.name}}</h1>\n\t<h2>{* ldoc.markup(mod.summary) *}</h2>\n</header>\n\n<p>{* ldoc.markup(mo"
  },
  {
    "path": "docs/templates/sidebar.ltp",
    "chars": 1815,
    "preview": "\n{%\nlocal function isKindExpandable(kind)\n\treturn kind ~= \"Manual\"\nend\n%}\n\n<nav>\n\t<header>\n\t\t{% if (not ldoc.root) then "
  },
  {
    "path": "entities/entities/ix_item.lua",
    "chars": 7663,
    "preview": "\nAddCSLuaFile()\n\nENT.Base = \"base_entity\"\nENT.Type = \"anim\"\nENT.PrintName = \"Item\"\nENT.Category = \"Helix\"\nENT.Spawnable "
  },
  {
    "path": "entities/entities/ix_money.lua",
    "chars": 1525,
    "preview": "AddCSLuaFile()\n\nENT.Type = \"anim\"\nENT.PrintName = \"Money\"\nENT.Category = \"Helix\"\nENT.Spawnable = false\nENT.ShowPlayerInt"
  },
  {
    "path": "entities/entities/ix_shipment.lua",
    "chars": 3154,
    "preview": "\nAddCSLuaFile()\n\nENT.Type = \"anim\"\nENT.PrintName = \"Shipment\"\nENT.Category = \"Helix\"\nENT.Spawnable = false\nENT.ShowPlaye"
  },
  {
    "path": "entities/weapons/ix_hands.lua",
    "chars": 13982,
    "preview": "\nAddCSLuaFile()\n\nif (CLIENT) then\n\tSWEP.PrintName = \"Hands\"\n\tSWEP.Slot = 0\n\tSWEP.SlotPos = 1\n\tSWEP.DrawAmmo = false\n\tSWE"
  },
  {
    "path": "gamemode/cl_init.lua",
    "chars": 1325,
    "preview": "\n-- unix systems are case-sensitive, are missing fonts, or use different naming conventions\nif (!system.IsWindows()) the"
  },
  {
    "path": "gamemode/config/sh_config.lua",
    "chars": 8164,
    "preview": "\r\n-- You can change the default language by setting this in your schema.\r\nix.config.language = \"english\"\r\n\r\n--[[\r\n\tDO NO"
  },
  {
    "path": "gamemode/config/sh_options.lua",
    "chars": 1554,
    "preview": "\nif (CLIENT) then\n\tix.option.Add(\"animationScale\", ix.type.number, 1, {\n\t\tcategory = \"appearance\", min = 0.3, max = 2, d"
  },
  {
    "path": "gamemode/core/cl_skin.lua",
    "chars": 17605,
    "preview": "\nlocal gradient = surface.GetTextureID(\"vgui/gradient-d\")\nlocal gradientUp = surface.GetTextureID(\"vgui/gradient-u\")\nloc"
  },
  {
    "path": "gamemode/core/derma/cl_attribute.lua",
    "chars": 4164,
    "preview": "\nlocal gradient = ix.util.GetMaterial(\"vgui/gradient-u\")\nlocal gradient2 = ix.util.GetMaterial(\"vgui/gradient-d\")\n\nlocal"
  },
  {
    "path": "gamemode/core/derma/cl_bar.lua",
    "chars": 4237,
    "preview": "\n-- bar manager\n-- this manages positions for bar panels\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"padding\", \"Padding\", FOR"
  },
  {
    "path": "gamemode/core/derma/cl_business.lua",
    "chars": 12528,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\t-- being relative.\n\tlocal size = 120\n\tself:SetSize(size, size * 1.4)\nend\n\nfunc"
  },
  {
    "path": "gamemode/core/derma/cl_character.lua",
    "chars": 13947,
    "preview": "\r\nlocal gradient = surface.GetTextureID(\"vgui/gradient-d\")\r\nlocal audioFadeInTime = 2\r\nlocal animationTime = 0.5\r\nlocal "
  },
  {
    "path": "gamemode/core/derma/cl_charcreate.lua",
    "chars": 13028,
    "preview": "\nlocal padding = ScreenScale(32)\n\n-- create character panel\nDEFINE_BASECLASS(\"ixCharMenuPanel\")\nlocal PANEL = {}\n\nfuncti"
  },
  {
    "path": "gamemode/core/derma/cl_charload.lua",
    "chars": 12506,
    "preview": "\nlocal errorModel = \"models/error.mdl\"\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"animationTime\", \"AnimationTime\", FORCE_NUM"
  },
  {
    "path": "gamemode/core/derma/cl_classes.lua",
    "chars": 3285,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tself:SetTall(64)\n\n\tlocal function AssignClick(panel)\n\t\tpanel.OnMousePressed = "
  },
  {
    "path": "gamemode/core/derma/cl_config.lua",
    "chars": 5049,
    "preview": "\n-- config manager\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tself:Dock(FILL)\n\tself:SetSearchEnabled(true)\n\n\tself:Populate"
  },
  {
    "path": "gamemode/core/derma/cl_credits.lua",
    "chars": 7047,
    "preview": "\nlocal CREDITS = {\n\t{\"Alex Grist\", \"76561197979205163\", {\"creditLeadDeveloper\", \"creditManager\"}},\n\t{\"Igor Radovanovic\","
  },
  {
    "path": "gamemode/core/derma/cl_deathscreen.lua",
    "chars": 1369,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tlocal scrW, scrH = ScrW(), ScrH()\n\n\tself:SetSize(scrW, scrH)\n\tself:SetPos(0, 0"
  },
  {
    "path": "gamemode/core/derma/cl_dev_icon.lua",
    "chars": 8398,
    "preview": "--Icon Editor Base and Math Scale Functions from: https://github.com/TeslaCloud/flux-ce/tree/master\n\nlocal scaleFactorX "
  },
  {
    "path": "gamemode/core/derma/cl_entitymenu.lua",
    "chars": 5960,
    "preview": "\nlocal animationTime = 1\nlocal padding = 32\n\n-- entity menu button\nDEFINE_BASECLASS(\"ixMenuButton\")\nlocal PANEL = {}\n\nAc"
  },
  {
    "path": "gamemode/core/derma/cl_generic.lua",
    "chars": 23833,
    "preview": "\n-- generic panels that are applicable anywhere\n\n-- used for prominent text entries\nDEFINE_BASECLASS(\"DTextEntry\")\nlocal"
  },
  {
    "path": "gamemode/core/derma/cl_help.lua",
    "chars": 10067,
    "preview": "\nlocal backgroundColor = Color(0, 0, 0, 66)\n\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"maxWidth\", \"MaxWidth\", FORCE_NUMBER)"
  },
  {
    "path": "gamemode/core/derma/cl_information.lua",
    "chars": 7161,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tlocal parent = self:GetParent()\n\n\tself:SetSize(parent:GetWide() * 0.6, parent:"
  },
  {
    "path": "gamemode/core/derma/cl_intro.lua",
    "chars": 8384,
    "preview": "\nlocal waveSegments = 32\nlocal helixSegments = 76\nlocal helixHeight = 64\nlocal backgroundColor = Color(115, 53, 142)\nloc"
  },
  {
    "path": "gamemode/core/derma/cl_inventory.lua",
    "chars": 19083,
    "preview": "\nlocal RECEIVER_NAME = \"ixInventoryItem\"\n\n-- The queue for the rendered icons.\nICON_RENDER_QUEUE = ICON_RENDER_QUEUE or "
  },
  {
    "path": "gamemode/core/derma/cl_menu.lua",
    "chars": 12214,
    "preview": "\nlocal animationTime = 1\nlocal matrixZScale = Vector(1, 1, 0.0001)\n\nDEFINE_BASECLASS(\"ixSubpanelParent\")\nlocal PANEL = {"
  },
  {
    "path": "gamemode/core/derma/cl_menubutton.lua",
    "chars": 6921,
    "preview": "\nlocal buttonPadding = ScreenScale(14) * 0.5\nlocal animationTime = 0.5\n\n-- base menu button\nDEFINE_BASECLASS(\"DButton\")\n"
  },
  {
    "path": "gamemode/core/derma/cl_modelpanel.lua",
    "chars": 2526,
    "preview": "\nDEFINE_BASECLASS(\"DModelPanel\")\n\nlocal PANEL = {}\nlocal MODEL_ANGLE = Angle(0, 45, 0)\n\nfunction PANEL:Init()\n\tself.brig"
  },
  {
    "path": "gamemode/core/derma/cl_notice.lua",
    "chars": 6207,
    "preview": "\nlocal animationTime = 0.75\n\n-- notice manager\n-- this manages positions/animations for notice panels\nlocal PANEL = {}\n\n"
  },
  {
    "path": "gamemode/core/derma/cl_noticebar.lua",
    "chars": 2069,
    "preview": "\nlocal PANEL = {\n\ttypes = {\n\t\t\"Info\", -- info\n\t\t\"Success\", -- success\n\t\t\"Error\" -- error\n\t}\n}\n\nAccessorFunc(PANEL, \"type"
  },
  {
    "path": "gamemode/core/derma/cl_overrides.lua",
    "chars": 5127,
    "preview": "\n-- overrides standard derma panels to add/change functionality\n\nlocal PANEL = {}\nlocal OVERRIDES = {}\n\n-- @todo remove "
  },
  {
    "path": "gamemode/core/derma/cl_scoreboard.lua",
    "chars": 8046,
    "preview": "local rowPaintFunctions = {\n\tfunction(width, height)\n\tend,\n\n\tfunction(width, height)\n\t\tsurface.SetDrawColor(30, 30, 30, "
  },
  {
    "path": "gamemode/core/derma/cl_settings.lua",
    "chars": 17205,
    "preview": "\nlocal panelMap = {\n\t[ix.type.bool] = \"ixSettingsRowBool\",\n\t[ix.type.array] = \"ixSettingsRowArray\",\n\t[ix.type.string] = "
  },
  {
    "path": "gamemode/core/derma/cl_shipment.lua",
    "chars": 2629,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tself:SetSize(460, 360)\n\tself:SetTitle(L\"shipment\")\n\tself:Center()\n\tself:MakePo"
  },
  {
    "path": "gamemode/core/derma/cl_spawnicon.lua",
    "chars": 1827,
    "preview": "\nDEFINE_BASECLASS(\"DModelPanel\")\n\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tself.defaultEyeTarget = Vector(0, 0, 64)\n\tsel"
  },
  {
    "path": "gamemode/core/derma/cl_storage.lua",
    "chars": 5062,
    "preview": "\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"money\", \"Money\", FORCE_NUMBER)\n\nfunction PANEL:Init()\n\tself:DockPadding(1, 1, 1,"
  },
  {
    "path": "gamemode/core/derma/cl_subpanel.lua",
    "chars": 6488,
    "preview": "\nlocal DEFAULT_PADDING = ScreenScale(32)\nlocal DEFAULT_ANIMATION_TIME = 1\nlocal DEFAULT_SUBPANEL_ANIMATION_TIME = 0.5\n\n-"
  },
  {
    "path": "gamemode/core/derma/cl_tooltip.lua",
    "chars": 16319,
    "preview": "\n--- Text container for `ixTooltip`.\n-- Rows are the main way of interacting with `ixTooltip`s. These derive from\n-- [DL"
  },
  {
    "path": "gamemode/core/hooks/cl_hooks.lua",
    "chars": 23886,
    "preview": "\nfunction GM:ForceDermaSkin()\n\treturn \"helix\"\nend\n\nfunction GM:ScoreboardShow()\n\tif (LocalPlayer():GetCharacter()) then\n"
  },
  {
    "path": "gamemode/core/hooks/sh_hooks.lua",
    "chars": 16522,
    "preview": "\nfunction GM:PlayerNoClip(client)\n\treturn client:IsAdmin()\nend\n\n-- luacheck: globals HOLDTYPE_TRANSLATOR\nHOLDTYPE_TRANSL"
  },
  {
    "path": "gamemode/core/hooks/sv_hooks.lua",
    "chars": 23041,
    "preview": "\nutil.AddNetworkString(\"ixPlayerDeath\")\n\nfunction GM:PlayerInitialSpawn(client)\n\tclient.ixJoinTime = RealTime()\n\n\tif (cl"
  },
  {
    "path": "gamemode/core/libs/cl_bar.lua",
    "chars": 3048,
    "preview": "\r\nix.bar = ix.bar or {}\r\nix.bar.list = {}\r\nix.bar.delta = ix.bar.delta or {}\r\nix.bar.actionText = \"\"\r\nix.bar.actionStart"
  },
  {
    "path": "gamemode/core/libs/cl_hud.lua",
    "chars": 2393,
    "preview": "\nix.hud = {}\n\nfunction ix.hud.DrawItemPickup()\n\tlocal pickupTime = ix.config.Get(\"itemPickupTime\", 0.5)\n\n\tif (pickupTime"
  },
  {
    "path": "gamemode/core/libs/cl_markup.lua",
    "chars": 13187,
    "preview": "\n-- luacheck: ignore\nix.markup = ix.markup or {}\n\n-- Temporary information used when building text frames.\nlocal colour_"
  },
  {
    "path": "gamemode/core/libs/cl_networking.lua",
    "chars": 1132,
    "preview": "\nlocal entityMeta = FindMetaTable(\"Entity\")\nlocal playerMeta = FindMetaTable(\"Player\")\n\nix.net = ix.net or {}\nix.net.glo"
  },
  {
    "path": "gamemode/core/libs/sh_animation.lua",
    "chars": 3720,
    "preview": "\nfunction ix.util.InstallAnimationMethods(meta)\n\tlocal function TweenAnimationThink(object)\n\t\tfor k, v in pairs(object.t"
  },
  {
    "path": "gamemode/core/libs/sh_anims.lua",
    "chars": 18375,
    "preview": "\n--[[--\nPlayer model animation.\n\nHelix comes with support for using NPC animations/models as regular player models by ma"
  },
  {
    "path": "gamemode/core/libs/sh_attribs.lua",
    "chars": 5413,
    "preview": "\n-- @module ix.attributes\n\nif (!ix.char) then\n\tinclude(\"sh_character.lua\")\nend\n\nix.attributes = ix.attributes or {}\nix.a"
  },
  {
    "path": "gamemode/core/libs/sh_business.lua",
    "chars": 3265,
    "preview": "\nif (SERVER) then\n\tutil.AddNetworkString(\"ixBusinessBuy\")\n\tutil.AddNetworkString(\"ixBusinessResponse\")\n\tutil.AddNetworkS"
  },
  {
    "path": "gamemode/core/libs/sh_character.lua",
    "chars": 35608,
    "preview": "\n--[[--\nCharacter creation and management.\n\n**NOTE:** For the most part you shouldn't use this library unless you know w"
  },
  {
    "path": "gamemode/core/libs/sh_chatbox.lua",
    "chars": 23109,
    "preview": "\r\n--[[--\r\nChat manipulation and helper functions.\r\n\r\nChat messages are a core part of the framework - it's takes up a go"
  },
  {
    "path": "gamemode/core/libs/sh_class.lua",
    "chars": 6430,
    "preview": "\n--[[--\nHelper library for loading/getting class information.\n\nClasses are temporary assignments for characters - analog"
  },
  {
    "path": "gamemode/core/libs/sh_command.lua",
    "chars": 22436,
    "preview": "\n--[[--\nRegistration, parsing, and handling of commands.\n\nCommands can be ran through the chat with slash commands or th"
  },
  {
    "path": "gamemode/core/libs/sh_currency.lua",
    "chars": 2979,
    "preview": "\r\n--- A library representing the server's currency system.\r\n-- @module ix.currency\r\n\r\nix.currency = ix.currency or {}\r\ni"
  },
  {
    "path": "gamemode/core/libs/sh_date.lua",
    "chars": 4856,
    "preview": "\n--[[--\nPersistent date and time handling.\n\nAll of Lua's time functions are dependent on the Unix epoch, which means we "
  },
  {
    "path": "gamemode/core/libs/sh_faction.lua",
    "chars": 3628,
    "preview": "\n--- Helper library for loading/getting faction information.\n-- @module ix.faction\n\nix.faction = ix.faction or {}\nix.fac"
  },
  {
    "path": "gamemode/core/libs/sh_flag.lua",
    "chars": 6073,
    "preview": "\n--[[--\nGrants abilities to characters.\n\nFlags are a simple way of adding/removing certain abilities to players on a per"
  },
  {
    "path": "gamemode/core/libs/sh_inventory.lua",
    "chars": 4763,
    "preview": "\n--[[--\nInventory manipulation and helper functions.\n]]\n-- @module ix.inventory\n\nix.inventory = ix.inventory or {}\n\nix.u"
  },
  {
    "path": "gamemode/core/libs/sh_item.lua",
    "chars": 21358,
    "preview": "--[[--\nItem manipulation and helper functions.\n]]\n-- @module ix.item\n\nix.item = ix.item or {}\nix.item.list = ix.item.lis"
  },
  {
    "path": "gamemode/core/libs/sh_language.lua",
    "chars": 3515,
    "preview": "\n--[[--\nMulti-language phrase support.\n\nHelix has support for multiple languages, and you can easily leverage this syste"
  },
  {
    "path": "gamemode/core/libs/sh_log.lua",
    "chars": 5660,
    "preview": "\n--[[--\nLogging helper functions.\n\nPredefined flags:\n\tFLAG_NORMAL\n\tFLAG_SUCCESS\n\tFLAG_WARNING\n\tFLAG_DANGER\n\tFLAG_SERVER\n"
  },
  {
    "path": "gamemode/core/libs/sh_menu.lua",
    "chars": 3069,
    "preview": "\n--[[--\nEntity menu manipulation.\n\nThe `menu` library allows you to open up a context menu of arbitrary options whose ca"
  },
  {
    "path": "gamemode/core/libs/sh_notice.lua",
    "chars": 4483,
    "preview": "\n--- Notification helper functions\n-- @module ix.notice\n\nif (SERVER) then\n\tutil.AddNetworkString(\"ixNotify\")\n\tutil.AddNe"
  },
  {
    "path": "gamemode/core/libs/sh_option.lua",
    "chars": 12777,
    "preview": "\n--[[--\nClient-side configuration management.\n\nThe `option` library provides a cleaner way to manage any arbitrary data "
  },
  {
    "path": "gamemode/core/libs/sh_player.lua",
    "chars": 2985,
    "preview": "local playerMeta = FindMetaTable(\"Player\")\n\n-- ixData information for the player.\ndo\n\tif (SERVER) then\n\t\tfunction player"
  },
  {
    "path": "gamemode/core/libs/sh_plugin.lua",
    "chars": 11013,
    "preview": "\nix.plugin = ix.plugin or {}\nix.plugin.list = ix.plugin.list or {}\nix.plugin.unloaded = ix.plugin.unloaded or {}\n\nix.uti"
  },
  {
    "path": "gamemode/core/libs/sh_storage.lua",
    "chars": 13605,
    "preview": "\n--[[--\nPlayer manipulation of inventories.\n\nThis library provides an easy way for players to manipulate other inventori"
  },
  {
    "path": "gamemode/core/libs/sv_database.lua",
    "chars": 5488,
    "preview": "\nix.db = ix.db or {\n\tschema = {},\n\tschemaQueue = {},\n\ttype = {\n\t\t-- TODO: more specific types, lengths, and defaults\n\t\t-"
  },
  {
    "path": "gamemode/core/libs/sv_networking.lua",
    "chars": 5398,
    "preview": "\n-- @module ix.net\n\nlocal entityMeta = FindMetaTable(\"Entity\")\nlocal playerMeta = FindMetaTable(\"Player\")\n\nix.net = ix.n"
  },
  {
    "path": "gamemode/core/libs/sv_player.lua",
    "chars": 2953,
    "preview": "local playerMeta = FindMetaTable(\"Player\")\n\n-- Player data (outside of characters) handling.\ndo\n\tutil.AddNetworkString(\""
  },
  {
    "path": "gamemode/core/libs/thirdparty/cl_ikon.lua",
    "chars": 9262,
    "preview": "--[[\n\tBLACK TEA ICON LIBRARY FOR NUTSCRIPT 1.1\n\n\tThe MIT License (MIT)\n\n\tCopyright (c) 2017, Kyu Yeon Lee(Black Tea Za r"
  },
  {
    "path": "gamemode/core/libs/thirdparty/data/sh_utf8_casemap.lua",
    "chars": 25979,
    "preview": "utf8_lc_uc = {\n\t[\"a\"] = \"A\",\n\t[\"b\"] = \"B\",\n\t[\"c\"] = \"C\",\n\t[\"d\"] = \"D\",\n\t[\"e\"] = \"E\",\n\t[\"f\"] = \"F\",\n\t[\"g\"] = \"G\",\n\t[\"h\"] "
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_cami.lua",
    "chars": 15271,
    "preview": "--[[\nCAMI - Common Admin Mod Interface.\nCopyright 2020 CAMI Contributors\n\nMakes admin mods intercompatible and provides "
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_date.lua",
    "chars": 33703,
    "preview": "---------------------------------------------------------------------------------------\n-- Module for date and time calc"
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_middleclass.lua",
    "chars": 5952,
    "preview": "local middleclass = {\n  _VERSION     = 'middleclass v4.1.1',\n  _DESCRIPTION = 'Object Orientation for Lua',\n  _URL      "
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_pon.lua",
    "chars": 10290,
    "preview": "--[[\nDEVELOPMENTAL VERSION;\nVERSION 1.2.2\nCopyright thelastpenguin™\n\tYou may use this for any purpose as long as:\n\t-\tYou"
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_tween.lua",
    "chars": 12500,
    "preview": "local tween = {\n  _VERSION     = 'tween 2.1.1',\n  _DESCRIPTION = 'tweening for lua',\n  _URL         = 'https://github.co"
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_utf8.lua",
    "chars": 10196,
    "preview": "-- $Id: utf8.lua 179 2009-04-03 18:10:03Z pasta $\n--\n-- Provides UTF-8 aware string functions implemented in pure lua:\n-"
  },
  {
    "path": "gamemode/core/libs/thirdparty/sh_yaml.lua",
    "chars": 15993,
    "preview": "--[[\n  (The MIT License)\n\n  Copyright (c) 2017 Dominic Letz dominicletz@exosite.com\n\n  Permission is hereby granted, fre"
  },
  {
    "path": "gamemode/core/libs/thirdparty/sv_mysql.lua",
    "chars": 17300,
    "preview": "--[[\n\tmysql - 1.0.3\n\tA simple MySQL wrapper for Garry's Mod.\n\n\tAlexander Grist-Hucker\n\thttp://www.alexgrist.com\n\n\n\tThe M"
  },
  {
    "path": "gamemode/core/meta/sh_character.lua",
    "chars": 10681,
    "preview": "\n--[[--\nContains information about a player's current game state.\n\nCharacters are a fundamental object type in Helix. Th"
  },
  {
    "path": "gamemode/core/meta/sh_entity.lua",
    "chars": 5496,
    "preview": "\n--[[--\nPhysical object in the game world.\n\nEntities are physical representations of objects in the game world. Helix ex"
  },
  {
    "path": "gamemode/core/meta/sh_inventory.lua",
    "chars": 27429,
    "preview": "\n--[[--\nHolds items within a grid layout.\n\nInventories are an object that contains `Item`s in a grid layout. Every `Char"
  },
  {
    "path": "gamemode/core/meta/sh_item.lua",
    "chars": 23779,
    "preview": "\n--[[--\nInteractable entities that can be held in inventories.\n\nItems are objects that are contained inside of an `Inven"
  },
  {
    "path": "gamemode/core/meta/sh_player.lua",
    "chars": 18607,
    "preview": "\n--[[--\nPhysical representation of connected player.\n\n`Player`s are a type of `Entity`. They are a physical representati"
  },
  {
    "path": "gamemode/core/meta/sh_tool.lua",
    "chars": 2453,
    "preview": "\nlocal TOOL = ix.meta.tool or {}\n\n-- code replicated from gamemodes/sandbox/entities/weapons/gmod_tool/stool.lua\nfunctio"
  },
  {
    "path": "gamemode/core/sh_commands.lua",
    "chars": 20594,
    "preview": "\nix.command.Add(\"Roll\", {\n\tdescription = \"@cmdRoll\",\n\targuments = bit.bor(ix.type.number, ix.type.optional),\n\tOnRun = fu"
  },
  {
    "path": "gamemode/core/sh_config.lua",
    "chars": 9347,
    "preview": "\n--- Helper library for creating/setting config options.\n-- @module ix.config\n\nix.config = ix.config or {}\nix.config.sto"
  },
  {
    "path": "gamemode/core/sh_data.lua",
    "chars": 4137,
    "preview": "\n--- Helper library for reading/writing files to the data folder.\n-- @module ix.data\n\nix.data = ix.data or {}\nix.data.st"
  },
  {
    "path": "gamemode/core/sh_util.lua",
    "chars": 33286,
    "preview": "\n--- Various useful helper functions.\n-- @module ix.util\n\nix.type = ix.type or {\n\t[2] = \"string\",\n\t[4] = \"text\",\n\t[8] = "
  },
  {
    "path": "gamemode/init.lua",
    "chars": 1506,
    "preview": "\n-- Include Helix content.\nresource.AddWorkshop(\"1267236756\")\n\n-- Include features from the Sandbox gamemode.\nDeriveGame"
  },
  {
    "path": "gamemode/items/ammo/sh_357ammo.txt",
    "chars": 218,
    "preview": "ITEM.name = \".357 Ammo\"\nITEM.model = \"models/items/357ammo.mdl\"\nITEM.ammo = \"357\" -- type of the ammo\nITEM.ammoAmount = "
  },
  {
    "path": "gamemode/items/ammo/sh_ar2ammo.txt",
    "chars": 229,
    "preview": "ITEM.name = \"AR2 Cartridge\"\nITEM.model = \"models/Items/combine_rifle_cartridge01.mdl\"\nITEM.ammo = \"ar2\" -- type of the a"
  },
  {
    "path": "gamemode/items/ammo/sh_crossbowammo.txt",
    "chars": 214,
    "preview": "ITEM.name = \"Crossbow Bolts\"\nITEM.model = \"models/Items/CrossbowRounds.mdl\"\nITEM.ammo = \"XBowRounds\" -- type of the ammo"
  },
  {
    "path": "gamemode/items/ammo/sh_pistolammo.txt",
    "chars": 209,
    "preview": "ITEM.name = \"Pistol Ammo\"\nITEM.model = \"models/items/357ammo.mdl\"\nITEM.ammo = \"pistol\" -- type of the ammo\nITEM.ammoAmou"
  },
  {
    "path": "gamemode/items/ammo/sh_rocketammo.txt",
    "chars": 342,
    "preview": "ITEM.name = \"A Rocket\"\nITEM.model = \"models/weapons/w_missile_closed.mdl\"\nITEM.ammo = \"rpg_round\" -- type of the ammo\nIT"
  },
  {
    "path": "gamemode/items/ammo/sh_shotgunammo.txt",
    "chars": 207,
    "preview": "ITEM.name = \"Shotgun Shells\"\nITEM.model = \"models/Items/BoxBuckshot.mdl\"\nITEM.ammo = \"buckshot\" -- type of the ammo\nITEM"
  },
  {
    "path": "gamemode/items/ammo/sh_smg1ammo.txt",
    "chars": 216,
    "preview": "ITEM.name = \"Sub Machine Gun Ammo\"\nITEM.model = \"models/Items/BoxSRounds.mdl\"\nITEM.ammo = \"smg1\" -- type of the ammo\nITE"
  },
  {
    "path": "gamemode/items/bags/sh_large.txt",
    "chars": 90,
    "preview": "ITEM.name = \"Big Bag\"\nITEM.description = \"A big bag.\"\nITEM.invWidth = 6\nITEM.invHeight = 4"
  },
  {
    "path": "gamemode/items/bags/sh_small.txt",
    "chars": 57,
    "preview": "ITEM.name = \"Small Bag\"\nITEM.description = \"A small bag.\""
  },
  {
    "path": "gamemode/items/base/sh_ammo.lua",
    "chars": 1193,
    "preview": "\nITEM.name = \"Ammo Base\"\nITEM.model = \"models/Items/BoxSRounds.mdl\"\nITEM.width = 1\nITEM.height = 1\nITEM.ammo = \"pistol\" "
  },
  {
    "path": "gamemode/items/base/sh_bags.lua",
    "chars": 5664,
    "preview": "\nif (SERVER) then\n\tutil.AddNetworkString(\"ixBagDrop\")\nend\n\nITEM.name = \"Bag\"\nITEM.description = \"A bag to hold items.\"\nI"
  },
  {
    "path": "gamemode/items/base/sh_outfit.lua",
    "chars": 8071,
    "preview": "\nITEM.name = \"Outfit\"\nITEM.description = \"A Outfit Base.\"\nITEM.category = \"Outfit\"\nITEM.model = \"models/Gibs/HGIBS.mdl\"\n"
  },
  {
    "path": "gamemode/items/base/sh_pacoutfit.lua",
    "chars": 4011,
    "preview": "\nITEM.name = \"PAC Outfit\"\nITEM.description = \"A PAC Outfit Base.\"\nITEM.category = \"Outfit\"\nITEM.model = \"models/Gibs/HGI"
  },
  {
    "path": "gamemode/items/base/sh_weapons.lua",
    "chars": 7688,
    "preview": "\nITEM.name = \"Weapon\"\nITEM.description = \"A Weapon.\"\nITEM.category = \"Weapons\"\nITEM.model = \"models/weapons/w_pistol.mdl"
  },
  {
    "path": "gamemode/items/pacoutfit/sh_skullmask.txt",
    "chars": 709,
    "preview": "ITEM.name = \"Skull Mask\"\nITEM.description = \"It's a skull mask.\"\nITEM.model = \"models/Gibs/HGIBS.mdl\"\nITEM.width = 1\nITE"
  },
  {
    "path": "gamemode/items/sh_defaultitem.txt",
    "chars": 104,
    "preview": "ITEM.name = \"Test Item\"\nITEM.description = \"A test item!\"\nITEM.model = \"models/props_c17/oildrum001.mdl\""
  },
  {
    "path": "gamemode/items/weapons/sh_357.txt",
    "chars": 371,
    "preview": "ITEM.name = \"357\"\nITEM.description = \"A sidearm utilising .357 Caliber ammunition.\"\nITEM.model = \"models/weapons/w_357.m"
  },
  {
    "path": "gamemode/items/weapons/sh_ar2.txt",
    "chars": 301,
    "preview": "ITEM.name = \"AR2\"\nITEM.description = \"A Weapon.\"\nITEM.model = \"models/weapons/w_IRifle.mdl\"\nITEM.class = \"weapon_ar2\"\nIT"
  },
  {
    "path": "gamemode/items/weapons/sh_crowbar.txt",
    "chars": 333,
    "preview": "ITEM.name = \"Crowbar\"\nITEM.description = \"A slightly rusty looking crowbar.\"\nITEM.model = \"models/weapons/w_crowbar.mdl\""
  },
  {
    "path": "gamemode/items/weapons/sh_pistol.txt",
    "chars": 338,
    "preview": "ITEM.name = \"9MM Pistol\"\nITEM.description = \"A sidearm utilising 9mm Ammunition.\"\nITEM.model = \"models/weapons/w_pistol."
  },
  {
    "path": "gamemode/items/weapons/sh_smg1.txt",
    "chars": 314,
    "preview": "ITEM.name = \"Sub Machine Gun\"\nITEM.description = \"A Weapon.\"\nITEM.model = \"models/weapons/w_smg1.mdl\"\nITEM.class = \"weap"
  },
  {
    "path": "gamemode/languages/sh_dutch.lua",
    "chars": 6869,
    "preview": "\n-- DUTCH TRANSLATION - http://steamcommunity.com/profiles/76561198084653538/\nNAME = \"Nederlands\"\n\nLANGUAGE = {\n\tloading"
  },
  {
    "path": "gamemode/languages/sh_english.lua",
    "chars": 22015,
    "preview": "\nNAME = \"English\"\n\nLANGUAGE = {\n\thelix = \"Helix\",\n\n\tintroTextOne = \"fist industries presents\",\n\tintroTextTwo = \"in colla"
  },
  {
    "path": "gamemode/languages/sh_french.lua",
    "chars": 21958,
    "preview": "\n-- FRENCH TRANSLATION\n-- http://steamcommunity.com/id/sadness81\n-- https://steamcommunity.com/id/Azphal\n\nNAME = \"França"
  },
  {
    "path": "gamemode/languages/sh_german.lua",
    "chars": 22555,
    "preview": "\n-- GERMAN TRANSLATION\n\nNAME = \"Deutsch\"\n\nLANGUAGE = {\n    helix = \"Helix\",\n\n    introTextOne = \"fist industries präsent"
  },
  {
    "path": "gamemode/languages/sh_korean.lua",
    "chars": 7266,
    "preview": "\nNAME = \"한국어\"\n\nLANGUAGE = {\n\tloading = \"불러오는 중\",\n\tdbError = \"DB 서버 연결 실패\",\n\tunknown = \"알 수 없음\",\n\tnoDesc = \"정보가 존재하지 않습니다"
  },
  {
    "path": "gamemode/languages/sh_norwegian.lua",
    "chars": 9744,
    "preview": "\nNAME = \"Norwegian\"\n\nLANGUAGE = {\n\tloading = \"Laster\",\n\tdbError = \"Database tilkobling feilet\",\n\tunknown = \"Ukjent\",\n\tno"
  },
  {
    "path": "gamemode/languages/sh_polish.lua",
    "chars": 20816,
    "preview": "-- Autorzy: zgredinzyyy (Poprawki + Brakujące rzeczy) || Veran120, Michał, Lechu2375 https://github.com/lechu2375/helix-"
  },
  {
    "path": "gamemode/languages/sh_portuguese.lua",
    "chars": 21219,
    "preview": "NAME = \"Portuguese\"\n\nLANGUAGE = {\n\thelix = \"Helix\",\n\n\tintroTextOne = \"fist industries apresenta\",\n\tintroTextTwo = \"em co"
  },
  {
    "path": "gamemode/languages/sh_russian.lua",
    "chars": 20771,
    "preview": "--Maybe this thing have some trouble with translate\nNAME = \"Русский\"\n\nLANGUAGE = {\n\thelix = \"Helix\",\n\n\tintroTextOne = \"F"
  },
  {
    "path": "gamemode/languages/sh_spanish.lua",
    "chars": 24476,
    "preview": "-- SPANISH TRANSLATION\n-- Cuboxis (http://steamcommunity.com/id/Cuboxis)\n-- Geferon (https://steamcommunity.com/id/GEFER"
  },
  {
    "path": "gamemode/shared.lua",
    "chars": 6093,
    "preview": "\r\n--- Top-level library containing all Helix libraries. A large majority of the framework is split into respective libra"
  },
  {
    "path": "helix.example.yml",
    "chars": 134,
    "preview": "\ndatabase:\n  adapter: \"sqlite\"\n  hostname: \"example.com\"\n  username: \"example\"\n  password: \"example\"\n  database: \"helix\""
  },
  {
    "path": "helix.txt",
    "chars": 76,
    "preview": "\"helix\"\n{\n\t\"base\"\t\t\"sandbox\"\n\t\"title\"\t\t\"Helix\"\n\t\"author\"\t\"nebulous.cloud\"\n}\n"
  },
  {
    "path": "plugins/3dpanel.lua",
    "chars": 10571,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"3D Panels\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds web panels that "
  },
  {
    "path": "plugins/3dtext.lua",
    "chars": 8060,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"3D Text\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds text that can be p"
  },
  {
    "path": "plugins/act/cl_hooks.lua",
    "chars": 3100,
    "preview": "\nlocal animationTime = 2\n\nlocal PLUGIN = PLUGIN\nPLUGIN.cameraFraction = 0\n\nlocal function GetHeadBone(client)\n\tlocal hea"
  },
  {
    "path": "plugins/act/sh_definitions.lua",
    "chars": 3803,
    "preview": "\nlocal function FacingWall(client)\n\tlocal data = {}\n\tdata.start = client:EyePos()\n\tdata.endpos = data.start + client:Get"
  },
  {
    "path": "plugins/act/sh_plugin.lua",
    "chars": 6717,
    "preview": "\n--[[--\nProvides players the ability to perform animations.\n\n]]\n-- @module ix.act\n\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = "
  },
  {
    "path": "plugins/act/sv_hooks.lua",
    "chars": 1255,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nutil.AddNetworkString(\"ixActEnter\")\nutil.AddNetworkString(\"ixActLeave\")\n\nfunction PLUGIN:CanPlay"
  },
  {
    "path": "plugins/ammosave.lua",
    "chars": 2055,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Ammo Saver\"\nPLUGIN.author = \"Black Tea\"\nPLUGIN.description = \"Saves the ammo of a"
  },
  {
    "path": "plugins/area/cl_hooks.lua",
    "chars": 6115,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nlocal function DrawTextBackground(x, y, text, font, backgroundColor, padding)\n\tfont = font or \"i"
  },
  {
    "path": "plugins/area/cl_plugin.lua",
    "chars": 475,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nfunction PLUGIN:GetPlayerAreaTrace()\n\tlocal client = LocalPlayer()\n\n\treturn util.TraceLine({\n\t\ts"
  },
  {
    "path": "plugins/area/derma/cl_area.lua",
    "chars": 3912,
    "preview": "\n-- area entry\nDEFINE_BASECLASS(\"Panel\")\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"text\", \"Text\", FORCE_STRING)\nAccessorFun"
  },
  {
    "path": "plugins/area/derma/cl_areaedit.lua",
    "chars": 4513,
    "preview": "\nlocal PLUGIN = PLUGIN\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tif (IsValid(ix.gui.areaEdit)) then\n\t\tix.gui.areaEdit:Rem"
  },
  {
    "path": "plugins/area/languages/sh_english.lua",
    "chars": 663,
    "preview": "LANGUAGE = {\n\tarea = \"Area\",\n\tareas = \"Areas\",\n\tareaEditMode = \"Area Edit Mode\",\n\tareaNew = \"New Area\",\n\tareaAlreadyExis"
  },
  {
    "path": "plugins/area/languages/sh_russian.lua",
    "chars": 735,
    "preview": "LANGUAGE = {\n\tarea = \"Зона\",\n\tareas = \"Зоны\",\n\tareaEditMode = \"Редактирование зоны\",\n\tareaNew = \"Новая зона\",\n\tareaAlrea"
  },
  {
    "path": "plugins/area/sh_plugin.lua",
    "chars": 2177,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Areas\"\nPLUGIN.author = \"`impulse\"\nPLUGIN.description = \"Provides customizable are"
  },
  {
    "path": "plugins/area/sv_hooks.lua",
    "chars": 2824,
    "preview": "\nfunction PLUGIN:LoadData()\n\thook.Run(\"SetupAreaProperties\")\n\tix.area.stored = self:GetData() or {}\n\n\ttimer.Create(\"ixAr"
  },
  {
    "path": "plugins/area/sv_plugin.lua",
    "chars": 1527,
    "preview": "\nutil.AddNetworkString(\"ixAreaSync\")\nutil.AddNetworkString(\"ixAreaAdd\")\nutil.AddNetworkString(\"ixAreaRemove\")\nutil.AddNe"
  },
  {
    "path": "plugins/chatbox/derma/cl_chatbox.lua",
    "chars": 32929,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nlocal animationTime = 0.5\nlocal chatBorder = 32\nlocal sizingBorder = 20\nlocal maxChatEntries = 1"
  },
  {
    "path": "plugins/chatbox/derma/cl_chatboxcustomize.lua",
    "chars": 2767,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tix.gui.chatTabCustomize = self\n\n\tself:SetTitle(L(\"chatN"
  },
  {
    "path": "plugins/chatbox/sh_plugin.lua",
    "chars": 3792,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Chatbox\"\nPLUGIN.author = \"`impulse\"\nPLUGIN.description = \"Replaces the chatbox to"
  },
  {
    "path": "plugins/containers/entities/entities/ix_container.lua",
    "chars": 4524,
    "preview": "\nENT.Type = \"anim\"\nENT.PrintName = \"Container\"\nENT.Category = \"Helix\"\nENT.Spawnable = false\nENT.bNoPersist = true\n\nfunct"
  },
  {
    "path": "plugins/containers/sh_definitions.lua",
    "chars": 3040,
    "preview": "--[[\n\tix.container.Register(model, {\n\t\tname = \"Crate\",\n\t\tdescription = \"A simple wooden create.\",\n\t\twidth = 4,\n\t\theight "
  },
  {
    "path": "plugins/containers/sh_plugin.lua",
    "chars": 8698,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Containers\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Provides the ability"
  },
  {
    "path": "plugins/crosshair.lua",
    "chars": 3356,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Crosshair\"\nPLUGIN.author = \"Black Tea\"\nPLUGIN.description = \"A Crosshair.\"\n\nif (C"
  },
  {
    "path": "plugins/doors/cl_plugin.lua",
    "chars": 5483,
    "preview": "\n-- luacheck: globals ACCESS_LABELS\nACCESS_LABELS = {}\nACCESS_LABELS[DOOR_OWNER] = \"owner\"\nACCESS_LABELS[DOOR_TENANT] = "
  },
  {
    "path": "plugins/doors/derma/cl_door.lua",
    "chars": 2722,
    "preview": "\nlocal PANEL = {}\n\nlocal function DoorSetPermission(door, target, permission)\n\tnet.Start(\"ixDoorPermission\")\n\t\tnet.Write"
  },
  {
    "path": "plugins/doors/entities/weapons/ix_keys.lua",
    "chars": 4455,
    "preview": "\nAddCSLuaFile()\n\nif (CLIENT) then\n\tSWEP.PrintName = \"Keys\"\n\tSWEP.Slot = 0\n\tSWEP.SlotPos = 2\n\tSWEP.DrawAmmo = false\n\tSWEP"
  },
  {
    "path": "plugins/doors/sh_commands.lua",
    "chars": 13682,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nix.command.Add(\"DoorSell\", {\n\tdescription = \"@cmdDoorSell\",\n\tOnRun = function(self, client, argu"
  },
  {
    "path": "plugins/doors/sh_plugin.lua",
    "chars": 1860,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Doors\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"A simple door system.\"\n\n-"
  },
  {
    "path": "plugins/doors/sv_plugin.lua",
    "chars": 6373,
    "preview": "\nutil.AddNetworkString(\"ixDoorMenu\")\nutil.AddNetworkString(\"ixDoorPermission\")\n\n-- Variables for door data.\nlocal variab"
  },
  {
    "path": "plugins/logging.lua",
    "chars": 7145,
    "preview": "\nPLUGIN.name = \"Logging\"\nPLUGIN.author = \"Black Tea\"\nPLUGIN.description = \"You can modfiy the logging text/lists on this"
  },
  {
    "path": "plugins/mapscene.lua",
    "chars": 6490,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Map Scenes\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds areas of the ma"
  },
  {
    "path": "plugins/observer.lua",
    "chars": 5793,
    "preview": "\nPLUGIN.name = \"Observer\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds on to the no-clip mode to prevent intrus"
  },
  {
    "path": "plugins/pac.lua",
    "chars": 7819,
    "preview": "\n-- luacheck: globals pac pace\n\n-- This Library is just for PAC3 Integration.\n-- You must install PAC3 to make this libr"
  },
  {
    "path": "plugins/permakill.lua",
    "chars": 1046,
    "preview": "\nPLUGIN.name = \"Permakill\"\nPLUGIN.author = \"Thadah Denyse\"\nPLUGIN.description = \"Adds permanent death in the server opti"
  },
  {
    "path": "plugins/persistence.lua",
    "chars": 4577,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Persistence\"\nPLUGIN.description = \"Define entities to persist through restarts.\"\n"
  },
  {
    "path": "plugins/propprotect.lua",
    "chars": 5450,
    "preview": "\nPLUGIN.name = \"Basic Prop Protection\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds a simple prop protection sy"
  },
  {
    "path": "plugins/recognition.lua",
    "chars": 4502,
    "preview": "\nPLUGIN.name = \"Recognition\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds the ability to recognize people.\"\n\ndo"
  },
  {
    "path": "plugins/saveitems.lua",
    "chars": 3091,
    "preview": "\nPLUGIN.name = \"Save Items\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Saves items that were dropped.\"\n\n--[[\n\tfunc"
  },
  {
    "path": "plugins/spawns.lua",
    "chars": 3030,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Spawns\"\nPLUGIN.description = \"Spawn points for factions and classes.\"\nPLUGIN.auth"
  },
  {
    "path": "plugins/spawnsaver.lua",
    "chars": 1454,
    "preview": "PLUGIN.name = \"Spawn Saver\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Saves the position of a character.\"\n\n-- Cal"
  },
  {
    "path": "plugins/stamina/attributes/sh_end.lua",
    "chars": 88,
    "preview": "ATTRIBUTE.name = \"Endurance\"\nATTRIBUTE.description = \"Affects how long you can run for.\""
  },
  {
    "path": "plugins/stamina/attributes/sh_stm.lua",
    "chars": 185,
    "preview": "ATTRIBUTE.name = \"Stamina\"\nATTRIBUTE.description = \"Affects how fast you can run.\"\n\nfunction ATTRIBUTE:OnSetup(client, v"
  },
  {
    "path": "plugins/stamina/sh_plugin.lua",
    "chars": 4173,
    "preview": "PLUGIN.name = \"Stamina\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds a stamina system to limit running.\"\n\n-- lu"
  },
  {
    "path": "plugins/strength/attributes/sh_str.lua",
    "chars": 86,
    "preview": "ATTRIBUTE.name = \"Strength\"\nATTRIBUTE.description = \"A measure of how strong you are.\""
  },
  {
    "path": "plugins/strength/sh_plugin.lua",
    "chars": 775,
    "preview": "PLUGIN.name = \"Strength\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"Adds a strength attribute.\"\n\nif (SERVER) then\n"
  },
  {
    "path": "plugins/thirdperson.lua",
    "chars": 5056,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Third Person\"\nPLUGIN.author = \"Black Tea\"\nPLUGIN.description = \"Enables third per"
  },
  {
    "path": "plugins/typing.lua",
    "chars": 6230,
    "preview": "\nlocal PLUGIN = PLUGIN\n\nPLUGIN.name = \"Typing Indicator\"\nPLUGIN.description = \"Shows an indicator when someone is typing"
  },
  {
    "path": "plugins/vendor/derma/cl_vendor.lua",
    "chars": 7758,
    "preview": "\nlocal PANEL = {}\n\nAccessorFunc(PANEL, \"bReadOnly\", \"ReadOnly\", FORCE_BOOL)\n\nfunction PANEL:Init()\n\tself:SetSize(ScrW() "
  },
  {
    "path": "plugins/vendor/derma/cl_vendoreditor.lua",
    "chars": 8033,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tlocal entity = ix.gui.vendor.entity\n\n\tself:SetSize(320, 480)\n\tself:MoveLeftOf("
  },
  {
    "path": "plugins/vendor/derma/cl_vendorfaction.lua",
    "chars": 1381,
    "preview": "\nlocal PANEL = {}\n\nfunction PANEL:Init()\n\tself:SetSize(256, 280)\n\tself:Center()\n\tself:MakePopup()\n\tself:SetTitle(L\"vendo"
  },
  {
    "path": "plugins/vendor/entities/entities/ix_vendor.lua",
    "chars": 7758,
    "preview": "\nENT.Type = \"anim\"\nENT.PrintName = \"Vendor\"\nENT.Category = \"Helix\"\nENT.Spawnable = true\nENT.AdminOnly = true\nENT.isVendo"
  },
  {
    "path": "plugins/vendor/sh_plugin.lua",
    "chars": 17662,
    "preview": "\n-- luacheck: globals VENDOR_BUY VENDOR_SELL VENDOR_BOTH VENDOR_WELCOME VENDOR_LEAVE VENDOR_NOTRADE VENDOR_PRICE\n-- luac"
  },
  {
    "path": "plugins/wepselect.lua",
    "chars": 5276,
    "preview": "\nPLUGIN.name = \"Weapon Select\"\nPLUGIN.author = \"Chessnut\"\nPLUGIN.description = \"A replacement for the default weapon sel"
  }
]

About this extraction

This page contains the full source code of the NebulousCloud/helix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 197 files (1.5 MB), approximately 470.8k tokens, and a symbol index with 8 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!