# FPS Classes & Armory (fps.armory) ## What it is for Adds classes, a weapon workshop with validated attachments and perks, grenades, fire modes and a persistent career to the shared first-person match; web only. It needs `fps.deathmatch`, `game.engine`; installing it brings them in. ## Turn it on Install the kit in a project, then change a setting (the values shown are its defaults): ```text gripforge_gamekit_install { project_id: "gkp_…", id: "fps.armory" } gripforge_gamekit_configure { project_id: "gkp_…", id: "fps.armory", config: { "mode": "team_deathmatch", "slide": true } } ``` ## First example This is the body of the passing test `the_default_profile_has_three_classes_and_an_empty_career`; the helper functions it calls are defined at the top of the same test file. ```rust #[test] fn the_default_profile_has_three_classes_and_an_empty_career() { let mut s = armory(json!({})); let p = profile(&mut s); assert_eq!(p["version"], 1); let ids: Vec<&str> = p["classes"] .as_array() .unwrap() .iter() .map(|c| c["id"].as_str().unwrap()) .collect(); assert_eq!(ids, ["assault", "breacher", "recon"]); assert_eq!(p["selected"], "assault"); assert_eq!(p["career"]["xp"], 0); assert_eq!(p["career"]["kills"], 0); assert_eq!(p["career"]["weaponXp"], json!({})); // The first class is the one the player plays. assert_eq!(chosen(&mut s)["id"], "assault"); } ``` ## Settings and defaults Descriptions come from the kit manifest and stay in English. | Setting | Type | Default | Range or values | Meaning | |---|---|---|---|---| | `mode` | string | `"team_deathmatch"` | `team_deathmatch`, `domination`, `bomb` | | | `slide` | boolean | `true` | | | | `vault` | boolean | `true` | | | | `penetration` | boolean | `true` | | | | `killcam` | boolean | `true` | | | | `progression` | boolean | `true` | | | | `maxAttachments` | integer | `5` | 0–7 | | | `helpSeconds` | number | `18` | 0–120 | | | `catalog` | object | — | | Optional replacement FpsArmoryCatalog. | ## Services, events, variables - Service `fps.armory`: Validated classes, attachment statistics, career and class selection on respawn. - Events listened to: `fps.kill`, `fps.match_end`, `fps.loadout_selected`, `fps.*` ## Hooks and modding - Moddable settings: `mode`, `slide`, `vault`, `penetration`, `killcam`, `progression`, `maxAttachments`, `helpSeconds`, `catalog` ## Engines Declared targets: `web`, `rust`. `gripforge kit api fps.armory` lists the exact settings and services of your version. ## Versions Kit version 1.2.0.