фыв
This commit is contained in:
parent
f7e8f8bf1f
commit
7223dd3b61
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "bugulma/3dglasses",
|
"ClothUrl": "bugulma/3dglasses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "3D Glasses",
|
"Name": "3D Glasses",
|
||||||
"Description": "3dglasses",
|
"Description": "3dglasses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/bugulma/3dglasses/thumb/9f61b3b4-74cb-4eb5-9ec8-eb399c7c9c7d.png",
|
"ImageUrl": "https://cdn.sbox.game/org/bugulma/3dglasses/thumb/9f61b3b4-74cb-4eb5-9ec8-eb399c7c9c7d.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "microfivetwotwo/arrowthroughhead",
|
"ClothUrl": "microfivetwotwo/arrowthroughhead",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Arrow through head",
|
"Name": "Arrow through head",
|
||||||
"Description": "arrowthroughhead",
|
"Description": "arrowthroughhead",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.arrowthroughhead/thumb.png.84ad8ab39e94fb7f",
|
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.arrowthroughhead/thumb.png.84ad8ab39e94fb7f",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "bugulma/aviatorsunglasses",
|
"ClothUrl": "bugulma/aviatorsunglasses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Aviator Sunglasses",
|
"Name": "Aviator Sunglasses",
|
||||||
"Description": "aviatorsunglasses",
|
"Description": "aviatorsunglasses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/bugulma/aviatorsunglasses/thumb/af7f9115-c03a-411f-84d9-364c21a3a88a.png",
|
"ImageUrl": "https://cdn.sbox.game/org/bugulma/aviatorsunglasses/thumb/af7f9115-c03a-411f-84d9-364c21a3a88a.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gbonn/axolotlhat",
|
"ClothUrl": "gbonn/axolotlhat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Axolotl Hat",
|
"Name": "Axolotl Hat",
|
||||||
"Description": "axolotlhat",
|
"Description": "axolotlhat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.axolotlhat/thumb.png.6904ffacd460d7ac",
|
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.axolotlhat/thumb.png.6904ffacd460d7ac",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/balaclavanoholesblack",
|
"ClothUrl": "ducksworkshop/balaclavanoholesblack",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Balaclava Noholes Black",
|
"Name": "Balaclava Noholes Black",
|
||||||
"Description": "balaclavanoholesblack",
|
"Description": "balaclavanoholesblack",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/balaclavanoholesblack/thumb/718ab42d-4149-4533-ada2-7c1f22fe138d.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/balaclavanoholesblack/thumb/718ab42d-4149-4533-ada2-7c1f22fe138d.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/ballisticmaskv1",
|
"ClothUrl": "ducksworkshop/ballisticmaskv1",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Ballistic Mask - Slightly Worn",
|
"Name": "Ballistic Mask - Slightly Worn",
|
||||||
"Description": "ballisticmaskv1",
|
"Description": "ballisticmaskv1",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/ballisticmaskv1/thumb/4a6d7662-29b0-4f0c-a6ed-90b2905116dd.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/ballisticmaskv1/thumb/4a6d7662-29b0-4f0c-a6ed-90b2905116dd.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "neil/bunnyears",
|
"ClothUrl": "neil/bunnyears",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Bunny Ears",
|
"Name": "Bunny Ears",
|
||||||
"Description": "bunnyears",
|
"Description": "bunnyears",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/neil.bunnyears/thumb.png.3fc91cf542b0f276",
|
"ImageUrl": "https://cdn.sbox.game/asset/neil.bunnyears/thumb.png.3fc91cf542b0f276",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "microfivetwotwo/classicbasketballsneakers",
|
"ClothUrl": "microfivetwotwo/classicbasketballsneakers",
|
||||||
"Slot": "Body",
|
"Slot": "Feet",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Classic Basketball Sneakers",
|
"Name": "Classic Basketball Sneakers",
|
||||||
"Description": "classicbasketballsneakers",
|
"Description": "classicbasketballsneakers",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.classicbasketballsneakers/thumb.png.5e316a9db5ed8a1d",
|
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.classicbasketballsneakers/thumb.png.5e316a9db5ed8a1d",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/cleaningglovesv1",
|
"ClothUrl": "ducksworkshop/cleaningglovesv1",
|
||||||
"Slot": "Body",
|
"Slot": "Hands",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Cleaning Gloves 2 tone",
|
"Name": "Cleaning Gloves 2 tone",
|
||||||
"Description": "cleaningglovesv1",
|
"Description": "cleaningglovesv1",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/cleaningglovesv1/thumb/3bcc1fb8-b7ba-47d4-a7e3-6a61243bb15a.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/cleaningglovesv1/thumb/3bcc1fb8-b7ba-47d4-a7e3-6a61243bb15a.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/cleaningglovesv2",
|
"ClothUrl": "ducksworkshop/cleaningglovesv2",
|
||||||
"Slot": "Body",
|
"Slot": "Hands",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Black Cleaning Gloves",
|
"Name": "Black Cleaning Gloves",
|
||||||
"Description": "cleaningglovesv2",
|
"Description": "cleaningglovesv2",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/cleaningglovesv2/thumb/d0ecb094-4931-4619-be25-3628711b9431.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/cleaningglovesv2/thumb/d0ecb094-4931-4619-be25-3628711b9431.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "jammie/cyberpunkglasses",
|
"ClothUrl": "jammie/cyberpunkglasses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Cyberpunk Glasses",
|
"Name": "Cyberpunk Glasses",
|
||||||
"Description": "cyberpunkglasses",
|
"Description": "cyberpunkglasses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/jammie.cyberpunkglasses/thumb.png.ac1dde3ce46a63e8",
|
"ImageUrl": "https://cdn.sbox.game/asset/jammie.cyberpunkglasses/thumb.png.ac1dde3ce46a63e8",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "doubletrouble/denimshorts",
|
"ClothUrl": "doubletrouble/denimshorts",
|
||||||
"Slot": "Body",
|
"Slot": "Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Denim Shorts",
|
"Name": "Denim Shorts",
|
||||||
"Description": "denimshorts",
|
"Description": "denimshorts",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/doubletrouble/denimshorts/thumb/6eb2b1e4-d5cc-4afb-8482-ef4b3c049727.png",
|
"ImageUrl": "https://cdn.sbox.game/org/doubletrouble/denimshorts/thumb/6eb2b1e4-d5cc-4afb-8482-ef4b3c049727.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "zedskipper/devilhorns",
|
"ClothUrl": "zedskipper/devilhorns",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Devil Horns",
|
"Name": "Devil Horns",
|
||||||
"Description": "devilhorns",
|
"Description": "devilhorns",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.devilhorns/thumb.png.6d4a8cdf9b857a8f",
|
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.devilhorns/thumb.png.6d4a8cdf9b857a8f",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gbonn/doubletophat",
|
"ClothUrl": "gbonn/doubletophat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Double Top Hat",
|
"Name": "Double Top Hat",
|
||||||
"Description": "doubletophat",
|
"Description": "doubletophat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.doubletophat/thumb.png.b7cf66efffe14d5f",
|
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.doubletophat/thumb.png.b7cf66efffe14d5f",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/duckhat",
|
"ClothUrl": "ducksworkshop/duckhat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Duck Hat",
|
"Name": "Duck Hat",
|
||||||
"Description": "duckhat",
|
"Description": "duckhat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/duckhat/thumb/1588b283-19e0-4982-a421-f90068fa688c.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/duckhat/thumb/1588b283-19e0-4982-a421-f90068fa688c.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "zedskipper/firefighter_helmet_top",
|
"ClothUrl": "zedskipper/firefighter_helmet_top",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Firefighter Helmet",
|
"Name": "Firefighter Helmet",
|
||||||
"Description": "firefighterhelmettop",
|
"Description": "firefighterhelmettop",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.firefighter_helmet_top/thumb.png.ce6459e8d15f4efa",
|
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.firefighter_helmet_top/thumb.png.ce6459e8d15f4efa",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "shadb/fluffyslippers",
|
"ClothUrl": "shadb/fluffyslippers",
|
||||||
"Slot": "Body",
|
"Slot": "Feet",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Fluffy Slippers",
|
"Name": "Fluffy Slippers",
|
||||||
"Description": "fluffyslippers",
|
"Description": "fluffyslippers",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/shadb.fluffyslippers/thumb.png.74097a2166abfb5",
|
"ImageUrl": "https://cdn.sbox.game/asset/shadb.fluffyslippers/thumb.png.74097a2166abfb5",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/froghatv1",
|
"ClothUrl": "ducksworkshop/froghatv1",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Frog Bucket Hat",
|
"Name": "Frog Bucket Hat",
|
||||||
"Description": "froghatv1",
|
"Description": "froghatv1",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/froghatv1/thumb/84c3fed2-376c-49bc-a54e-3c8ba00f5530.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/froghatv1/thumb/84c3fed2-376c-49bc-a54e-3c8ba00f5530.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "stellawisps/goathorns",
|
"ClothUrl": "stellawisps/goathorns",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Horns",
|
"Name": "Horns",
|
||||||
"Description": "goathorns",
|
"Description": "goathorns",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/stellawisps.goathorns/thumb.png.f0af53d423adb315",
|
"ImageUrl": "https://cdn.sbox.game/asset/stellawisps.goathorns/thumb.png.f0af53d423adb315",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "lakrin/hatjester",
|
"ClothUrl": "lakrin/hatjester",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Jester Hat",
|
"Name": "Jester Hat",
|
||||||
"Description": "hatjester",
|
"Description": "hatjester",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/lakrin.hatjester/thumb.png.12c08519ee16b454",
|
"ImageUrl": "https://cdn.sbox.game/asset/lakrin.hatjester/thumb.png.12c08519ee16b454",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "doubletrouble/hockeymask",
|
"ClothUrl": "doubletrouble/hockeymask",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Hockey Mask",
|
"Name": "Hockey Mask",
|
||||||
"Description": "hockeymask",
|
"Description": "hockeymask",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/doubletrouble.hockeymask/thumb.png.a188f9176597da70",
|
"ImageUrl": "https://cdn.sbox.game/asset/doubletrouble.hockeymask/thumb.png.a188f9176597da70",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "zontax/homberg_hat",
|
"ClothUrl": "zontax/homberg_hat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Homberg Hat",
|
"Name": "Homberg Hat",
|
||||||
"Description": "homberghat",
|
"Description": "homberghat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/zontax.homberg_hat/thumb.png.e9ed7f1952377c22",
|
"ImageUrl": "https://cdn.sbox.game/asset/zontax.homberg_hat/thumb.png.e9ed7f1952377c22",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/looseblackpants",
|
"ClothUrl": "ducksworkshop/looseblackpants",
|
||||||
"Slot": "Body",
|
"Slot": "Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Loose Black Pants",
|
"Name": "Loose Black Pants",
|
||||||
"Description": "looseblackpants",
|
"Description": "looseblackpants",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/looseblackpants/thumb/28653368-fde8-4b09-9adf-591f46afbb3c.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/looseblackpants/thumb/28653368-fde8-4b09-9adf-591f46afbb3c.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/loosebrownpants",
|
"ClothUrl": "ducksworkshop/loosebrownpants",
|
||||||
"Slot": "Body",
|
"Slot": "Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Loose Brown Pants",
|
"Name": "Loose Brown Pants",
|
||||||
"Description": "loosebrownpants",
|
"Description": "loosebrownpants",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/loosebrownpants/thumb/34fed9c3-d279-4608-8dd4-1f1dedca188e.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/loosebrownpants/thumb/34fed9c3-d279-4608-8dd4-1f1dedca188e.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gbonn/melonhelmet",
|
"ClothUrl": "gbonn/melonhelmet",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Melon Helmet",
|
"Name": "Melon Helmet",
|
||||||
"Description": "melonhelmet",
|
"Description": "melonhelmet",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.melonhelmet/thumb.png.f4b3ec8c275076c3",
|
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.melonhelmet/thumb.png.f4b3ec8c275076c3",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "bugulma/nvg",
|
"ClothUrl": "bugulma/nvg",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Night-vision Goggles",
|
"Name": "Night-vision Goggles",
|
||||||
"Description": "nvg",
|
"Description": "nvg",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/bugulma/nvg/thumb/6c78edae-06ee-48b9-aa5b-4f751187a155.png",
|
"ImageUrl": "https://cdn.sbox.game/org/bugulma/nvg/thumb/6c78edae-06ee-48b9-aa5b-4f751187a155.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "zedskipper/piratehat",
|
"ClothUrl": "zedskipper/piratehat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Pirate Hat",
|
"Name": "Pirate Hat",
|
||||||
"Description": "piratehat",
|
"Description": "piratehat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.piratehat/thumb.png.4dc0302e00f6fbd7",
|
"ImageUrl": "https://cdn.sbox.game/asset/zedskipper.piratehat/thumb.png.4dc0302e00f6fbd7",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/propanetankhelm",
|
"ClothUrl": "ducksworkshop/propanetankhelm",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Propane Tank Helm",
|
"Name": "Propane Tank Helm",
|
||||||
"Description": "propanetankhelm",
|
"Description": "propanetankhelm",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/propanetankhelm/thumb/f3f94d9c-0782-4f8a-9fbf-9c0c66e099bc.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/propanetankhelm/thumb/f3f94d9c-0782-4f8a-9fbf-9c0c66e099bc.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gbonn/propellerhat",
|
"ClothUrl": "gbonn/propellerhat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Propeller Hat",
|
"Name": "Propeller Hat",
|
||||||
"Description": "propellerhat",
|
"Description": "propellerhat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.propellerhat/thumb.png.39d839fc687bb529",
|
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.propellerhat/thumb.png.39d839fc687bb529",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "pukes/pyjamabottoms",
|
"ClothUrl": "pukes/pyjamabottoms",
|
||||||
"Slot": "Body",
|
"Slot": "Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Pyjama Bottoms",
|
"Name": "Pyjama Bottoms",
|
||||||
"Description": "pyjamabottoms",
|
"Description": "pyjamabottoms",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/pukes.pyjamabottoms/thumb.png.2c4ce23bebd09859",
|
"ImageUrl": "https://cdn.sbox.game/asset/pukes.pyjamabottoms/thumb.png.2c4ce23bebd09859",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "bulldog/rangerhelmet",
|
"ClothUrl": "bulldog/rangerhelmet",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Ranger Helmet",
|
"Name": "Ranger Helmet",
|
||||||
"Description": "rangerhelmet",
|
"Description": "rangerhelmet",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/bulldog.rangerhelmet/thumb.png.72fd06137d4691df",
|
"ImageUrl": "https://cdn.sbox.game/asset/bulldog.rangerhelmet/thumb.png.72fd06137d4691df",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "microfivetwotwo/retrotechracerhelmet",
|
"ClothUrl": "microfivetwotwo/retrotechracerhelmet",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Retrotech Racer Helmet",
|
"Name": "Retrotech Racer Helmet",
|
||||||
"Description": "retrotechracerhelmet",
|
"Description": "retrotechracerhelmet",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.retrotechracerhelmet/thumb.png.6debe4873184c136",
|
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.retrotechracerhelmet/thumb.png.6debe4873184c136",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gkaf/safetyglasses",
|
"ClothUrl": "gkaf/safetyglasses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Safety Glasses",
|
"Name": "Safety Glasses",
|
||||||
"Description": "safetyglasses",
|
"Description": "safetyglasses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gkaf.safetyglasses/thumb.png.4930fdfd9dcd705c",
|
"ImageUrl": "https://cdn.sbox.game/asset/gkaf.safetyglasses/thumb.png.4930fdfd9dcd705c",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "luke/sfsocks",
|
"ClothUrl": "luke/sfsocks",
|
||||||
"Slot": "Body",
|
"Slot": "Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Smallfish Socks",
|
"Name": "Smallfish Socks",
|
||||||
"Description": "sfsocks",
|
"Description": "sfsocks",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/luke.sfsocks/thumb.png.1afb82a849d2f8d3",
|
"ImageUrl": "https://cdn.sbox.game/asset/luke.sfsocks/thumb.png.1afb82a849d2f8d3",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "shadb/sharkhead",
|
"ClothUrl": "shadb/sharkhead",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"BodyPart": "",
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Shark Head",
|
"Name": "Shark Head",
|
||||||
"Description": "sharkhead",
|
"Description": "sharkhead",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +14,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/shadb.sharkhead/thumb.png.cda75d69b325a050",
|
"ImageUrl": "https://cdn.sbox.game/asset/shadb.sharkhead/thumb.png.cda75d69b325a050",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "microfivetwotwo/skibidilid",
|
"ClothUrl": "microfivetwotwo/skibidilid",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Skibidi Lid",
|
"Name": "Skibidi Lid",
|
||||||
"Description": "skibidilid",
|
"Description": "skibidilid",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,10 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.skibidilid/thumb.png.c7d32555cfd3eb63",
|
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.skibidilid/thumb.png.c7d32555cfd3eb63",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsStackable": false,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/skihelmetgreen",
|
"ClothUrl": "ducksworkshop/skihelmetgreen",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Ski Helmet Green",
|
"Name": "Ski Helmet Green",
|
||||||
"Description": "skihelmetgreen",
|
"Description": "skihelmetgreen",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/skihelmetgreen/thumb/9fb0468b-fa48-4c39-a80c-870d91293046.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/skihelmetgreen/thumb/9fb0468b-fa48-4c39-a80c-870d91293046.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "pukes/sleepmask",
|
"ClothUrl": "pukes/sleepmask",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Sleep Mask",
|
"Name": "Sleep Mask",
|
||||||
"Description": "sleepmask",
|
"Description": "sleepmask",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/pukes.sleepmask/thumb.png.b87686ad5d97c35a",
|
"ImageUrl": "https://cdn.sbox.game/asset/pukes.sleepmask/thumb.png.b87686ad5d97c35a",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "jammie/snowgoggles",
|
"ClothUrl": "jammie/snowgoggles",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Snow Goggles",
|
"Name": "Snow Goggles",
|
||||||
"Description": "snowgoggles",
|
"Description": "snowgoggles",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/jammie.snowgoggles/thumb.png.2fe4662e72e3ea5f",
|
"ImageUrl": "https://cdn.sbox.game/asset/jammie.snowgoggles/thumb.png.2fe4662e72e3ea5f",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "microfivetwotwo/sunglasseswithanimatedlenses",
|
"ClothUrl": "microfivetwotwo/sunglasseswithanimatedlenses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Jackpot Animated Sunglasses",
|
"Name": "Jackpot Animated Sunglasses",
|
||||||
"Description": "sunglasseswithanimatedlenses",
|
"Description": "sunglasseswithanimatedlenses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.sunglasseswithanimatedlenses/thumb.png.4cd0e084b475da06",
|
"ImageUrl": "https://cdn.sbox.game/asset/microfivetwotwo.sunglasseswithanimatedlenses/thumb.png.4cd0e084b475da06",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "fanlab/thugglasses",
|
"ClothUrl": "fanlab/thugglasses",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Thug Glasses",
|
"Name": "Thug Glasses",
|
||||||
"Description": "thugglasses",
|
"Description": "thugglasses",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/fanlab.thugglasses/thumb.png.16669a12b1e62af3",
|
"ImageUrl": "https://cdn.sbox.game/asset/fanlab.thugglasses/thumb.png.16669a12b1e62af3",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "gbonn/trafficcone",
|
"ClothUrl": "gbonn/trafficcone",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Traffic Cone",
|
"Name": "Traffic Cone",
|
||||||
"Description": "trafficcone",
|
"Description": "trafficcone",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.trafficcone/thumb.png.a97a7cac4a8e8918",
|
"ImageUrl": "https://cdn.sbox.game/asset/gbonn.trafficcone/thumb.png.a97a7cac4a8e8918",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "ducksworkshop/weldinggogglesvisorup",
|
"ClothUrl": "ducksworkshop/weldinggogglesvisorup",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Welding Goggles Visor Up",
|
"Name": "Welding Goggles Visor Up",
|
||||||
"Description": "weldinggogglesvisorup",
|
"Description": "weldinggogglesvisorup",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/weldinggogglesvisorup/thumb/ff7a517b-ded4-49e6-b777-696e6a6b8f0b.png",
|
"ImageUrl": "https://cdn.sbox.game/org/ducksworkshop/weldinggogglesvisorup/thumb/ff7a517b-ded4-49e6-b777-696e6a6b8f0b.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "shadb/wizardhat",
|
"ClothUrl": "shadb/wizardhat",
|
||||||
"Slot": "Body",
|
"Slot": "Head",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "Wizard Hat",
|
"Name": "Wizard Hat",
|
||||||
"Description": "wizardhat",
|
"Description": "wizardhat",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/asset/shadb.wizardhat/thumb.png.e1eed67e9d79abca",
|
"ImageUrl": "https://cdn.sbox.game/asset/shadb.wizardhat/thumb.png.e1eed67e9d79abca",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"ClothUrl": "edgyvoxel/xvioutfit",
|
"ClothUrl": "edgyvoxel/xvioutfit",
|
||||||
"Slot": "Body",
|
"Slot": "Body, Bottom",
|
||||||
|
"ArmorValue": 0,
|
||||||
|
"IsVisible": true,
|
||||||
|
"Category": "Clothing",
|
||||||
"Name": "17th Outfit",
|
"Name": "17th Outfit",
|
||||||
"Description": "xvioutfit",
|
"Description": "xvioutfit",
|
||||||
"Prefab": {
|
"Prefab": {
|
||||||
@ -10,6 +13,9 @@
|
|||||||
"ImageTexture": null,
|
"ImageTexture": null,
|
||||||
"ImageUrl": "https://cdn.sbox.game/org/edgyvoxel/xvioutfit/thumb/648dca1c-4b2a-4b9f-bdd2-bca374536455.png",
|
"ImageUrl": "https://cdn.sbox.game/org/edgyvoxel/xvioutfit/thumb/648dca1c-4b2a-4b9f-bdd2-bca374536455.png",
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
|
"Rarity": "Common",
|
||||||
|
"Weight": 1,
|
||||||
|
"IsEquipable": true,
|
||||||
"__references": [],
|
"__references": [],
|
||||||
"__version": 0
|
"__version": 0
|
||||||
}
|
}
|
||||||
@ -19,49 +19,40 @@ public enum ItemRarity
|
|||||||
Legendary
|
Legendary
|
||||||
}
|
}
|
||||||
|
|
||||||
[GameResource("Base Item Definition", "inv", "", Category = "Sasalka", Icon = "inventory_2")]
|
[GameResource( "Base Item Definition", "inv", "", Category = "Sasalka", Icon = "inventory_2" )]
|
||||||
public class BaseItemDefinition : GameResource
|
public class BaseItemDefinition : GameResource
|
||||||
{
|
{
|
||||||
[Property, Title("Basic Info")]
|
[Property, Title( "Basic Info" )] public string Name { get; set; } = "Unknown Item";
|
||||||
public string Name { get; set; } = "Unknown Item";
|
|
||||||
|
|
||||||
[Property]
|
[Property] public string Description { get; set; } = "";
|
||||||
public string Description { get; set; } = "";
|
|
||||||
|
|
||||||
[Property, Category("Visual")]
|
[Property, Category( "Visual" )]
|
||||||
[ResourceType("prefab")]
|
[ResourceType( "prefab" )]
|
||||||
public GameObject Prefab { get; set; } = GameObject.GetPrefab("prefabs/item_parcel.prefab");
|
public GameObject Prefab { get; set; } = GameObject.GetPrefab( "prefabs/item_parcel.prefab" );
|
||||||
|
|
||||||
[Property, Category("Visual")]
|
[Property, Category( "Visual" )] public Texture ImageTexture { get; set; }
|
||||||
public Texture ImageTexture { get; set; }
|
|
||||||
|
|
||||||
[Property, Category("Visual")]
|
[Property, Category( "Visual" )] public string ImageUrl { get; set; }
|
||||||
public string ImageUrl { get; set; }
|
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )]
|
||||||
[Range(1, 1000)]
|
[Range( 1, 1000 )]
|
||||||
public int MaxCount { get; set; } = 1;
|
public int MaxCount { get; set; } = 1;
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )] public virtual ItemCategory Category { get; set; } = ItemCategory.Misc;
|
||||||
public virtual ItemCategory Category { get; set; } = ItemCategory.Misc;
|
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )] public ItemRarity Rarity { get; set; } = ItemRarity.Common;
|
||||||
public ItemRarity Rarity { get; set; } = ItemRarity.Common;
|
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )] public float Weight { get; set; } = 1.0f;
|
||||||
public float Weight { get; set; } = 1.0f;
|
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )] public bool IsStackable = false;
|
||||||
public bool IsStackable => MaxCount > 1;
|
|
||||||
|
|
||||||
[Property, Category("Properties")]
|
[Property, Category( "Properties" )] public bool IsEquipable => this is IEquipable;
|
||||||
public bool IsEquipable => this is IEquipable;
|
|
||||||
|
|
||||||
public virtual Inventar.InventorySlot? GetSlot() => null;
|
public virtual Inventar.InventorySlot? GetSlot() => null;
|
||||||
|
|
||||||
public virtual bool CanUse() => false;
|
public virtual bool CanUse() => false;
|
||||||
|
|
||||||
public virtual void OnUse(InventoryItem item) { }
|
public virtual void OnUse( InventoryItem item ) { }
|
||||||
|
|
||||||
public string GetRarityColor()
|
public string GetRarityColor()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,8 +15,8 @@ public class ClothingItemDefinition : BaseItemDefinition, IEquipable
|
|||||||
[Property, Category( "Clothing Properties" )]
|
[Property, Category( "Clothing Properties" )]
|
||||||
public bool IsVisible { get; set; } = true;
|
public bool IsVisible { get; set; } = true;
|
||||||
|
|
||||||
[Property, Category( "Clothing Properties" )]
|
// [Property, Category( "Clothing Properties" )]
|
||||||
public string BodyPart { get; set; } = "";
|
// public string BodyPart { get; set; } = "";
|
||||||
|
|
||||||
public override Inventar.InventorySlot? GetSlot() => Slot;
|
public override Inventar.InventorySlot? GetSlot() => Slot;
|
||||||
|
|
||||||
|
|||||||
@ -38,15 +38,23 @@ public class Inventar : Component
|
|||||||
public event Action<InventoryItem> OnItemAdded;
|
public event Action<InventoryItem> OnItemAdded;
|
||||||
public event Action<InventoryItem> OnItemRemoved;
|
public event Action<InventoryItem> OnItemRemoved;
|
||||||
|
|
||||||
|
// Кэш для оптимизации поиска предметов
|
||||||
|
private Dictionary<BaseItemDefinition, InventoryItem> _itemCache = new();
|
||||||
|
private bool _cacheDirty = true;
|
||||||
|
|
||||||
public bool CanAddItem( InventoryItem item )
|
public bool CanAddItem( InventoryItem item )
|
||||||
{
|
{
|
||||||
if ( item == null || item.Definition == null )
|
if ( item == null || item.Definition == null )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Проверяем, есть ли уже такой предмет в инвентаре
|
// Обновляем кэш при необходимости
|
||||||
var existingItem = Items.FirstOrDefault( x => x.Definition == item.Definition );
|
if ( _cacheDirty )
|
||||||
|
{
|
||||||
|
UpdateItemCache();
|
||||||
|
}
|
||||||
|
|
||||||
if ( existingItem != null )
|
// Проверяем, есть ли уже такой предмет в инвентаре
|
||||||
|
if ( _itemCache.TryGetValue( item.Definition, out var existingItem ) )
|
||||||
{
|
{
|
||||||
// Если предмет уже есть, проверяем, можно ли добавить к нему количество
|
// Если предмет уже есть, проверяем, можно ли добавить к нему количество
|
||||||
return existingItem.Count + item.Count <= item.Definition.MaxCount;
|
return existingItem.Count + item.Count <= item.Definition.MaxCount;
|
||||||
@ -62,6 +70,22 @@ public class Inventar : Component
|
|||||||
return item.Count <= item.Definition.MaxCount;
|
return item.Count <= item.Definition.MaxCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обновляет кэш предметов
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateItemCache()
|
||||||
|
{
|
||||||
|
_itemCache.Clear();
|
||||||
|
foreach ( var item in Items )
|
||||||
|
{
|
||||||
|
if ( item.Definition != null )
|
||||||
|
{
|
||||||
|
_itemCache[item.Definition] = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_cacheDirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавляет предмет в инвентарь, распределяя по существующим и новым стекам. Возвращает остаток, который не удалось добавить (или 0, если всё добавлено).
|
/// Добавляет предмет в инвентарь, распределяя по существующим и новым стекам. Возвращает остаток, который не удалось добавить (или 0, если всё добавлено).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -80,6 +104,7 @@ public class Inventar : Component
|
|||||||
{
|
{
|
||||||
stack.Count += canAdd;
|
stack.Count += canAdd;
|
||||||
toAdd -= canAdd;
|
toAdd -= canAdd;
|
||||||
|
_cacheDirty = true; // Помечаем кэш как устаревший
|
||||||
OnChanged?.Invoke();
|
OnChanged?.Invoke();
|
||||||
OnItemAdded?.Invoke( stack );
|
OnItemAdded?.Invoke( stack );
|
||||||
}
|
}
|
||||||
@ -94,6 +119,7 @@ public class Inventar : Component
|
|||||||
var newStack = new InventoryItem { Definition = item.Definition, Count = stackCount, MagazineAmmo = item.MagazineAmmo };
|
var newStack = new InventoryItem { Definition = item.Definition, Count = stackCount, MagazineAmmo = item.MagazineAmmo };
|
||||||
Items.Add( newStack );
|
Items.Add( newStack );
|
||||||
toAdd -= stackCount;
|
toAdd -= stackCount;
|
||||||
|
_cacheDirty = true; // Помечаем кэш как устаревший
|
||||||
OnChanged?.Invoke();
|
OnChanged?.Invoke();
|
||||||
OnItemAdded?.Invoke( newStack );
|
OnItemAdded?.Invoke( newStack );
|
||||||
}
|
}
|
||||||
@ -112,6 +138,7 @@ public class Inventar : Component
|
|||||||
// Удаляем весь предмет
|
// Удаляем весь предмет
|
||||||
UnEquipItem( item );
|
UnEquipItem( item );
|
||||||
Items.Remove( item );
|
Items.Remove( item );
|
||||||
|
_cacheDirty = true; // Помечаем кэш как устаревший
|
||||||
OnChanged?.Invoke();
|
OnChanged?.Invoke();
|
||||||
OnItemRemoved?.Invoke( item );
|
OnItemRemoved?.Invoke( item );
|
||||||
return true;
|
return true;
|
||||||
@ -120,6 +147,7 @@ public class Inventar : Component
|
|||||||
{
|
{
|
||||||
// Уменьшаем количество
|
// Уменьшаем количество
|
||||||
item.Count -= count;
|
item.Count -= count;
|
||||||
|
_cacheDirty = true; // Помечаем кэш как устаревший
|
||||||
OnChanged?.Invoke();
|
OnChanged?.Invoke();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,6 +39,12 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
|
|||||||
|
|
||||||
private Vector3 _wishDirection;
|
private Vector3 _wishDirection;
|
||||||
|
|
||||||
|
// Кэш для оптимизации
|
||||||
|
private bool _isOwner;
|
||||||
|
private float _lastBodyYaw;
|
||||||
|
private float _lastCameraYaw;
|
||||||
|
private bool _bodyRotationDirty = true;
|
||||||
|
|
||||||
protected override void OnStart()
|
protected override void OnStart()
|
||||||
{
|
{
|
||||||
InventoryStart();
|
InventoryStart();
|
||||||
@ -66,9 +72,12 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
|
|||||||
|
|
||||||
protected override void OnUpdate()
|
protected override void OnUpdate()
|
||||||
{
|
{
|
||||||
|
_isOwner = Network.IsOwner;
|
||||||
|
|
||||||
UpdateCustomAnimations();
|
UpdateCustomAnimations();
|
||||||
InventoryUpdate();
|
InventoryUpdate();
|
||||||
if ( Network.IsOwner )
|
|
||||||
|
if ( _isOwner )
|
||||||
{
|
{
|
||||||
EyeAngles += Input.AnalogLook;
|
EyeAngles += Input.AnalogLook;
|
||||||
EyeAngles = EyeAngles.WithPitch( MathX.Clamp( EyeAngles.pitch, -89f, 89f ) );
|
EyeAngles = EyeAngles.WithPitch( MathX.Clamp( EyeAngles.pitch, -89f, 89f ) );
|
||||||
@ -122,6 +131,21 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateBodyRotation()
|
private void UpdateBodyRotation()
|
||||||
{
|
{
|
||||||
|
var currentBodyYaw = Renderer.LocalRotation.Yaw();
|
||||||
|
var currentCameraYaw = EyeAngles.yaw;
|
||||||
|
|
||||||
|
// Проверяем, изменились ли углы
|
||||||
|
if ( Math.Abs( currentBodyYaw - _lastBodyYaw ) < 0.1f &&
|
||||||
|
Math.Abs( currentCameraYaw - _lastCameraYaw ) < 0.1f &&
|
||||||
|
!_bodyRotationDirty )
|
||||||
|
{
|
||||||
|
return; // Пропускаем обновление, если углы не изменились
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastBodyYaw = currentBodyYaw;
|
||||||
|
_lastCameraYaw = currentCameraYaw;
|
||||||
|
_bodyRotationDirty = false;
|
||||||
|
|
||||||
var targetRotation = Rotation.LookAt( Rotation.FromYaw( EyeAngles.yaw ).Forward, -_directionToAxis );
|
var targetRotation = Rotation.LookAt( Rotation.FromYaw( EyeAngles.yaw ).Forward, -_directionToAxis );
|
||||||
var currentForward = Renderer.LocalRotation.Forward;
|
var currentForward = Renderer.LocalRotation.Forward;
|
||||||
float angleDiff = currentForward.Angle( targetRotation.Forward );
|
float angleDiff = currentForward.Angle( targetRotation.Forward );
|
||||||
@ -162,6 +186,7 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
|
|||||||
{
|
{
|
||||||
Renderer.LocalRotation = Rotation.Slerp( Renderer.LocalRotation, Rotation.FromYaw( EyeAngles.yaw ),
|
Renderer.LocalRotation = Rotation.Slerp( Renderer.LocalRotation, Rotation.FromYaw( EyeAngles.yaw ),
|
||||||
Time.Delta * 3f );
|
Time.Delta * 3f );
|
||||||
|
_bodyRotationDirty = true; // Помечаем, что тело повернулось
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,10 @@ public class BaseWeapon : InventoryItem, IUseable
|
|||||||
private bool _isInitialized;
|
private bool _isInitialized;
|
||||||
private InventoryItem _inventoryItem;
|
private InventoryItem _inventoryItem;
|
||||||
|
|
||||||
|
// Оптимизация обновлений
|
||||||
|
private TimeSince _lastEffectsUpdate = 0f;
|
||||||
|
private const float EFFECTS_UPDATE_INTERVAL = 0.1f; // Обновляем эффекты каждые 100мс
|
||||||
|
|
||||||
// IUseable реализация - Cooldown вычисляется на основе FireRate
|
// IUseable реализация - Cooldown вычисляется на основе FireRate
|
||||||
public float Cooldown
|
public float Cooldown
|
||||||
{
|
{
|
||||||
@ -95,8 +99,12 @@ public class BaseWeapon : InventoryItem, IUseable
|
|||||||
FinishReload();
|
FinishReload();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обновляем эффекты
|
// Обновляем эффекты с интервалом для оптимизации
|
||||||
|
if ( _lastEffectsUpdate >= EFFECTS_UPDATE_INTERVAL )
|
||||||
|
{
|
||||||
UpdateEffects();
|
UpdateEffects();
|
||||||
|
_lastEffectsUpdate = 0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -132,11 +140,16 @@ public class BaseWeapon : InventoryItem, IUseable
|
|||||||
{
|
{
|
||||||
base.OnEquipped();
|
base.OnEquipped();
|
||||||
|
|
||||||
// Получаем Rigidbody в момент экипировки
|
// Кэшируем Rigidbody при экипировке
|
||||||
|
if ( _rigidbody == null )
|
||||||
_rigidbody = GameObject.Components.Get<Rigidbody>();
|
_rigidbody = GameObject.Components.Get<Rigidbody>();
|
||||||
|
|
||||||
if ( _rigidbody != null )
|
if ( _rigidbody != null )
|
||||||
_rigidbody.Enabled = false;
|
_rigidbody.Enabled = false;
|
||||||
|
|
||||||
|
if ( _pickupItem == null )
|
||||||
|
_pickupItem = GameObject.Components.Get<PickupItem>();
|
||||||
|
|
||||||
if ( _pickupItem != null )
|
if ( _pickupItem != null )
|
||||||
_pickupItem.Enabled = false;
|
_pickupItem.Enabled = false;
|
||||||
}
|
}
|
||||||
@ -148,8 +161,7 @@ public class BaseWeapon : InventoryItem, IUseable
|
|||||||
{
|
{
|
||||||
base.OnUnEquipped();
|
base.OnUnEquipped();
|
||||||
|
|
||||||
// Получаем Rigidbody в момент снятия
|
// Используем кэшированный Rigidbody
|
||||||
_rigidbody = GameObject.Components.Get<Rigidbody>();
|
|
||||||
if ( _rigidbody != null )
|
if ( _rigidbody != null )
|
||||||
_rigidbody.Enabled = true;
|
_rigidbody.Enabled = true;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user