refactor(mod): renamed project file and made build script zip releases automagically
This commit is contained in:
43
WeebSights/Mod.cs
Normal file
43
WeebSights/Mod.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.DI;
|
||||
using SPTarkov.Server.Core.Models.Enums;
|
||||
using SPTarkov.Server.Core.Models.Utils;
|
||||
using WeebSights.Services;
|
||||
|
||||
namespace WeebSights;
|
||||
|
||||
[Injectable(TypePriority = OnLoadOrder.PostDBModLoader + 1)]
|
||||
public class Mod(ISptLogger<Mod> logger,
|
||||
WeebItemService weebItemService,
|
||||
WeebTraderService weebTraderService,
|
||||
WeebLocaleService weebLocaleService): IOnLoad
|
||||
{
|
||||
public Task OnLoad()
|
||||
{
|
||||
var stopWatch = Stopwatch.StartNew();
|
||||
var currentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
if (!weebLocaleService.TryLoadLocales(Path.Join(currentAssemblyPath, "/db/locales/en.json"), out var locales))
|
||||
{
|
||||
logger.Error("[Weeb Iron Sights] Failed to load locales. Names might be weird");
|
||||
}
|
||||
|
||||
if(!weebItemService.TryLoadConfig(Path.Join(currentAssemblyPath, "/db/items.jsonc"), out var items))
|
||||
{
|
||||
logger.Critical("[Weeb Iron Sights] Failed to load items. MOD WILL NOT LOAD");
|
||||
stopWatch.Stop();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
var resultItemCreation = weebItemService.GenerateItems(items, locales);
|
||||
if (!weebTraderService.AddToAssortFromItemClone(Traders.MECHANIC, resultItemCreation))
|
||||
{
|
||||
logger.Critical("[Weeb Iron Sights] Failed to add items into Mechanic. Sights wont be available for purchase");
|
||||
}
|
||||
|
||||
stopWatch.Stop();
|
||||
logger.Success($"[Weeb Iron Sights] Loaded in {stopWatch.ElapsedMilliseconds} ms");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
20
WeebSights/ModMetadata.cs
Normal file
20
WeebSights/ModMetadata.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using SPTarkov.Server.Core.Models.Spt.Mod;
|
||||
|
||||
namespace WeebSights;
|
||||
|
||||
public record ModMetadata : AbstractModMetadata
|
||||
{
|
||||
public override string Name { get; init; } = "Weeb Iron Sights";
|
||||
public override string Author { get; init; } = "yuyui.moe";
|
||||
public override List<string>? Contributors { get; init; } = ["SamSWAT"];
|
||||
public override SemanticVersioning.Version Version { get; init; } = new("1.0.0");
|
||||
public override SemanticVersioning.Range SptVersion { get; init; } = new("~4.0.0");
|
||||
|
||||
|
||||
public override List<string>? Incompatibilities { get; init; }
|
||||
public override Dictionary<string, SemanticVersioning.Range>? ModDependencies { get; init; }
|
||||
public override string? Url { get; init; } = "https://github.com/yuyuimoe/SamSwat-AnimeSights-4.0/";
|
||||
public override bool? IsBundleMod { get; init; } = true;
|
||||
public override string? License { get; init; } = "MIT";
|
||||
public override string ModGuid { get; init; } = "moe.yuyui.animesights-port";
|
||||
}
|
||||
22
WeebSights/Models/WeebItemConfig.cs
Normal file
22
WeebSights/Models/WeebItemConfig.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using SPTarkov.Server.Core.Models.Common;
|
||||
|
||||
namespace WeebSights.Models;
|
||||
|
||||
public record WeebItemConfig()
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public MongoId Id { get; set; }
|
||||
|
||||
[JsonPropertyName("clone_from_tpl")]
|
||||
public MongoId CloneFromTpl { get; set; }
|
||||
|
||||
[JsonPropertyName("bundle_path")]
|
||||
public string BundlePath { get; set; }
|
||||
|
||||
[JsonPropertyName("price")]
|
||||
public int Price { get; set; }
|
||||
|
||||
[JsonPropertyName("ergonomics")]
|
||||
public int Ergonomics { get; set; }
|
||||
}
|
||||
15
WeebSights/Models/WeebLocaleConfig.cs
Normal file
15
WeebSights/Models/WeebLocaleConfig.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace WeebSights.Models;
|
||||
|
||||
public record WeebLocaleConfig()
|
||||
{
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("short_name")]
|
||||
public string ShortName { get; set; }
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
}
|
||||
14
WeebSights/Properties/launchSettings.json
Normal file
14
WeebSights/Properties/launchSettings.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"SPTarkov.Server": {
|
||||
"commandName": "Executable",
|
||||
"executablePath": "$(SPTPath)/SPT.Server.Linux",
|
||||
"commandLineArgs": "--disable-software-rasterizer",
|
||||
"workingDirectory": "$(SPTPath)",
|
||||
"environmentVariables": {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
123
WeebSights/Services/WeebItemService.cs
Normal file
123
WeebSights/Services/WeebItemService.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.DI;
|
||||
using SPTarkov.Server.Core.Models.Common;
|
||||
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
|
||||
using SPTarkov.Server.Core.Models.Spt.Mod;
|
||||
using SPTarkov.Server.Core.Models.Utils;
|
||||
using SPTarkov.Server.Core.Services;
|
||||
using SPTarkov.Server.Core.Services.Mod;
|
||||
using SPTarkov.Server.Core.Utils;
|
||||
using WeebSights.Models;
|
||||
|
||||
namespace WeebSights.Services;
|
||||
|
||||
[Injectable(TypePriority = OnLoadOrder.PostDBModLoader + 3)]
|
||||
public class WeebItemService(ISptLogger<WeebItemService> logger, JsonUtil jsonUtil, CustomItemService customItemService, DatabaseService databaseService)
|
||||
{
|
||||
public bool TryLoadConfig(string filePath, out List<WeebItemConfig> outputObject)
|
||||
{
|
||||
var json = LoadConfig(filePath);
|
||||
if (json is null)
|
||||
{
|
||||
outputObject = [];
|
||||
return false;
|
||||
}
|
||||
|
||||
outputObject = json;
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<WeebItemConfig>? LoadConfig(string filePath)
|
||||
{
|
||||
return jsonUtil.DeserializeFromFile<List<WeebItemConfig>>(filePath);
|
||||
}
|
||||
|
||||
public void AddIronSightToFilters(WeebItemConfig sight)
|
||||
{
|
||||
var itemsWithSlots = databaseService.GetTemplates().Items.Where(i => i.Value.Properties?.Slots?.Count() > 0);
|
||||
foreach (var item in itemsWithSlots)
|
||||
{
|
||||
var backIronSightSlot = item.Value.Properties?.Slots?.FirstOrDefault(s => s.Name == "mod_sight_rear");
|
||||
if (backIronSightSlot == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var slotFilter = backIronSightSlot?.Properties?.Filters?.FirstOrDefault(f => f.Filter?.Contains(sight.CloneFromTpl) ?? false);
|
||||
if (slotFilter == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (slotFilter.Filter?.Add(sight.Id) is false)
|
||||
{
|
||||
logger.Error("[Weeb Iron Sights] Failed to add filter to item " + item.Key);
|
||||
continue;
|
||||
}
|
||||
#if DEBUG
|
||||
logger.Success($"[Weeb Iron Sights] Added {sight.Id} to filter on item {item.Key}");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<CreateItemResult> GenerateItems(List<WeebItemConfig> items, Dictionary<MongoId, WeebLocaleConfig> locales)
|
||||
{
|
||||
if (items.Count == 0)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
foreach (var item in items)
|
||||
{
|
||||
if (!locales.TryGetValue(item.Id, out var localeConfig))
|
||||
{
|
||||
logger.Error($"[Weeb Iron Sights] Failed to load locale for {item.Id}, using IDs for name");
|
||||
localeConfig = new WeebLocaleConfig()
|
||||
{
|
||||
Name = item.Id,
|
||||
Description = "FAILED TO LOAD LOCALES",
|
||||
ShortName = "WEEBSIGHT",
|
||||
};
|
||||
}
|
||||
|
||||
NewItemFromCloneDetails clonedItem = new()
|
||||
{
|
||||
NewId = item.Id,
|
||||
ItemTplToClone = item.CloneFromTpl,
|
||||
ParentId = "55818ac54bdc2d5b648b456e", // Ironsight
|
||||
HandbookParentId = "5b5f746686f77447ec5d7708", // CATEGORY
|
||||
HandbookPriceRoubles = item.Price,
|
||||
OverrideProperties = new TemplateItemProperties()
|
||||
{
|
||||
Ergonomics = item.Ergonomics,
|
||||
CreditsPrice = item.Price,
|
||||
Prefab = new Prefab()
|
||||
{
|
||||
Path = item.BundlePath
|
||||
},
|
||||
},
|
||||
Locales = new Dictionary<string, LocaleDetails>
|
||||
{
|
||||
{
|
||||
"en", new LocaleDetails()
|
||||
{
|
||||
Name = localeConfig.Name,
|
||||
ShortName = localeConfig.ShortName,
|
||||
Description = localeConfig.Description,
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
var itemCreation = customItemService.CreateItemFromClone(clonedItem);
|
||||
if (itemCreation.Success is false or null)
|
||||
{
|
||||
logger.Error($"[Weeb Iron Sights] Failed to clone item {item.CloneFromTpl} into {item.Id}");
|
||||
itemCreation.Errors?.ForEach(e => logger.Critical("[Weeb Iron Sights] " + e));
|
||||
continue;
|
||||
}
|
||||
|
||||
AddIronSightToFilters(item);
|
||||
yield return itemCreation;
|
||||
}
|
||||
}
|
||||
}
|
||||
29
WeebSights/Services/WeebLocaleService.cs
Normal file
29
WeebSights/Services/WeebLocaleService.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.DI;
|
||||
using SPTarkov.Server.Core.Models.Common;
|
||||
using SPTarkov.Server.Core.Utils;
|
||||
using WeebSights.Models;
|
||||
|
||||
namespace WeebSights.Services;
|
||||
|
||||
[Injectable]
|
||||
public class WeebLocaleService(JsonUtil jsonUtil)
|
||||
{
|
||||
public bool TryLoadLocales(string filePath, out Dictionary<MongoId, WeebLocaleConfig> outputObject)
|
||||
{
|
||||
var json = LoadLocales(filePath);
|
||||
if (json == null)
|
||||
{
|
||||
outputObject = new Dictionary<MongoId, WeebLocaleConfig>();
|
||||
return false;
|
||||
}
|
||||
|
||||
outputObject = json;
|
||||
return true;
|
||||
}
|
||||
|
||||
public Dictionary<MongoId, WeebLocaleConfig>? LoadLocales(string filePath)
|
||||
{
|
||||
return jsonUtil.DeserializeFromFile<Dictionary<MongoId, WeebLocaleConfig>>(filePath);
|
||||
}
|
||||
}
|
||||
73
WeebSights/Services/WeebTraderService.cs
Normal file
73
WeebSights/Services/WeebTraderService.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.DI;
|
||||
using SPTarkov.Server.Core.Extensions;
|
||||
using SPTarkov.Server.Core.Models.Common;
|
||||
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
|
||||
using SPTarkov.Server.Core.Models.Enums;
|
||||
using SPTarkov.Server.Core.Models.Spt.Mod;
|
||||
using SPTarkov.Server.Core.Models.Utils;
|
||||
using SPTarkov.Server.Core.Services;
|
||||
|
||||
namespace WeebSights.Services;
|
||||
|
||||
[Injectable]
|
||||
public class WeebTraderService(ISptLogger<WeebTraderService> logger, DatabaseService databaseService)
|
||||
{
|
||||
public bool AddToAssortFromItemClone(MongoId traderId, IEnumerable<CreateItemResult> itemCloneResults)
|
||||
{
|
||||
if (!databaseService.GetTables().Traders.TryGetValue(traderId, out var trader))
|
||||
{
|
||||
logger.Error($"[Weeb Iron Sights] Failed to find trader with ID {traderId}");
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var itemResult in itemCloneResults)
|
||||
{
|
||||
var item = databaseService.GetItems().First(i => i.Key == itemResult.ItemId);
|
||||
var traderItem = GenerateItemForTrader(item);
|
||||
var traderBarter = new BarterScheme()
|
||||
{
|
||||
Count = item.Value.Properties?.CreditsPrice ?? 1,
|
||||
Template = CurrencyType.RUB.GetCurrencyTpl()
|
||||
};
|
||||
|
||||
trader.Assort.Items.Add(traderItem);
|
||||
if (!trader.Assort.BarterScheme.TryAdd(traderItem.Id, [[traderBarter]]))
|
||||
{
|
||||
logger.Error(
|
||||
$"[Weeb Iron Sights] Failed to add barter {traderItem.Id} for item {item.Value.Name} with ID {item.Value.Id} in {trader.Base.Name}. Item will not be added");
|
||||
trader.Assort.Items.Remove(traderItem);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!trader.Assort.LoyalLevelItems.TryAdd(traderItem.Id, 1))
|
||||
{
|
||||
logger.Critical(
|
||||
$"[Weeb Iron Sight] Failed to add loyalty requirements for item {item.Value.Name} with ID {item.Value.Id} in {trader.Base.Name}. Item will not be added");
|
||||
trader.Assort.Items.Remove(traderItem);
|
||||
continue;
|
||||
}
|
||||
#if DEBUG
|
||||
logger.Success($"[Weeb Iron Sights] Added item {traderItem.Id} with ID {item.Value.Id} and barter {traderItem.Id} to MECHANIC");
|
||||
#endif
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private Item GenerateItemForTrader(KeyValuePair<MongoId, TemplateItem> databaseItem)
|
||||
{
|
||||
return new Item
|
||||
{
|
||||
Id = new MongoId(),
|
||||
Template = databaseItem.Value.Id,
|
||||
ParentId = "hideout",
|
||||
SlotId = "hideout",
|
||||
Upd = new Upd()
|
||||
{
|
||||
UnlimitedCount = true,
|
||||
StackObjectsCount = 99999,
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
64
WeebSights/WeebSights.csproj
Normal file
64
WeebSights/WeebSights.csproj
Normal file
@@ -0,0 +1,64 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<RootNamespace>WeebSights</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName>WeebSights</AssemblyName>
|
||||
<AssemblyVersion>1.0.0</AssemblyVersion>
|
||||
<FileVersion>1.0.0</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SPTarkov.Server.Core" Version="4.0.3" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="bundles\**">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="WeebSights.csproj.user" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="bundles.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="db\**">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" />
|
||||
<PropertyGroup>
|
||||
<ModsDirectoryPath>$(SPTPath)user/mods/$(MSBuildProjectName)</ModsDirectoryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<DebugType>none</DebugType>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CopyToSPT" AfterTargets="AfterBuild" Condition="'$(SPTPath)' != ''">
|
||||
<Message Importance="high" Text="Copying mods to $(ModsDirectoryPath)" />
|
||||
<Delete Files="$(OutputPath)/$(MSBuildProjectName).deps.json" />
|
||||
<ItemGroup>
|
||||
<FilesToCopy Include="$(OutputPath)/**" />
|
||||
</ItemGroup>
|
||||
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(ModsDirectoryPath)\%(RecursiveDir)" ContinueOnError="false" />
|
||||
<Message Text="Files copied" />
|
||||
</Target>
|
||||
|
||||
<Target Name="MakeZIPFile" AfterTargets="AfterBuild" Condition="'$(Configuration)' == 'Release'">
|
||||
<ItemGroup>
|
||||
<FilesToMove Include="$(OutputPath)/**"/>
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<FolderToMove>$(OutputPath)../package/SPT/user/mods/$(MSBuildProjectName)</FolderToMove>
|
||||
</PropertyGroup>
|
||||
<Message Importance="high" Text="Making zip file for redistribution" />
|
||||
<MakeDir Directories="$(FolderToMove)"/>
|
||||
<Move SourceFiles="@(FilesToMove)" DestinationFolder="$(FolderToMove)\%(RecursiveDir)" />
|
||||
<ZipDirectory DestinationFile="$(OutputPath)../$(MSBuildProjectName)-$(AssemblyVersion)" SourceDirectory="$(OutputPath)../package/" />
|
||||
</Target>
|
||||
</Project>
|
||||
205
WeebSights/bundles.json
Normal file
205
WeebSights/bundles.json
Normal file
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_gloss_nrm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_gloss_nrm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_anti.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime3.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime3v2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anti2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_ramrem.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime3.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime3v2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anti.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anti2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_ramrem.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime3.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime3v2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anti.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anti2.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_ramrem.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_weebshit_textures.bundle",
|
||||
"assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_std.bundle",
|
||||
"assets/commonassets/physics/physicsmaterials.bundle"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
45
WeebSights/bundles/LICENSE.md
Normal file
45
WeebSights/bundles/LICENSE.md
Normal file
@@ -0,0 +1,45 @@
|
||||
Copyright (c) 2021 SamSWAT. All rights reserved.
|
||||
|
||||
Developed by: SamSWAT
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions
|
||||
of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License").
|
||||
To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of
|
||||
Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor
|
||||
receives from making the Licensed Material available under these terms and conditions.
|
||||
|
||||
License grant.
|
||||
|
||||
> Subject to the terms and conditions of this Public License, the Licensor hereby grants You
|
||||
a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise
|
||||
the Licensed Rights in the Licensed Material to:
|
||||
* reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
|
||||
* produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
|
||||
|
||||
> Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use,
|
||||
this Public License does not apply, and You do not need to comply with its terms and conditions.
|
||||
|
||||
> Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights
|
||||
in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so.
|
||||
The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures.
|
||||
For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
||||
|
||||
> Downstream recipients.
|
||||
* Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor
|
||||
to exercise the Licensed Rights under the terms and conditions of this Public License.
|
||||
* No downstream restrictions. You may not offer or impose any additional or different terms or conditions on,
|
||||
or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed Material.
|
||||
|
||||
> No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are,
|
||||
or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
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
|
||||
CONTRIBUTORS 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 WITH
|
||||
THE SOFTWARE.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
143
WeebSights/db/items.jsonc
Normal file
143
WeebSights/db/items.jsonc
Normal file
@@ -0,0 +1,143 @@
|
||||
[
|
||||
{
|
||||
"id": "6753d006cec7fc449f055445",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_anti.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f05544a",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anti2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055450",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anti.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055451",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anti2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055446",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055447",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f05544d",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055448",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime3.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f05544e",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime3.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055449",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_anime3v2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f05544f",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_anime3v2.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f05544b",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_ramrem.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055452",
|
||||
"clone_from_tpl": "5bc09a18d4351e003562b68e", //IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_magpul_mbus_gen2_fde_ramrem.bundle",
|
||||
"price": 4000,
|
||||
"ergonomics": 3
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055453",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055454",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime2.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055455",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime3.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055456",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anime3v2.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055457",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anti.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055458",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_anti2.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
},
|
||||
{
|
||||
"id": "6753d006cec7fc449f055459",
|
||||
"clone_from_tpl": "5fc0fa957283c4046c58147e", //IRONSIGHT_MCX_FLIPUP_REAR_SIGHT
|
||||
"bundle_path": "assets/content/items/mods/sights rear/sight_rear_all_sig_flip_up_ramrem.bundle",
|
||||
"price": 2500,
|
||||
"ergonomics": 2
|
||||
}
|
||||
|
||||
]
|
||||
107
WeebSights/db/locales/en.json
Normal file
107
WeebSights/db/locales/en.json
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"6753d006cec7fc449f055445": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Anti]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Your personal waifu giving her neko love to support you in combat."
|
||||
},
|
||||
"6753d006cec7fc449f055446": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Ai Fuyuumi]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul."
|
||||
},
|
||||
"6753d006cec7fc449f055447": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [GF M4 SOPMOD II]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul."
|
||||
},
|
||||
"6753d006cec7fc449f055448": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Animu 3]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul."
|
||||
},
|
||||
"6753d006cec7fc449f055449": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Animu 3 v2]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul."
|
||||
},
|
||||
"6753d006cec7fc449f05544a": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Anti 2]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. The personal sight used by Anti, the war Neko! Nya!!"
|
||||
},
|
||||
"6753d006cec7fc449f05544b": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight [Ram & Rem]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul."
|
||||
},
|
||||
"6753d006cec7fc449f05544c": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Ai Fuyuumi]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color."
|
||||
},
|
||||
"6753d006cec7fc449f05544d": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [GF M4 SOPMOD II]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color."
|
||||
},
|
||||
"6753d006cec7fc449f05544e": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Animu 3]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color."
|
||||
},
|
||||
"6753d006cec7fc449f05544f": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Animu 3 v2]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color."
|
||||
},
|
||||
"6753d006cec7fc449f055450": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Anti]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color. Your personal waifu giving her neko love to support you in combat."
|
||||
},
|
||||
"6753d006cec7fc449f055451": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Anti 2]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color. The personal sight used by Anti, the war Neko! Nya!!"
|
||||
},
|
||||
"6753d006cec7fc449f055452": {
|
||||
"name": "Magpul MBUS Gen2 rear flip-up sight (FDE) [Ram & Rem]",
|
||||
"short_name": "MBUS RS",
|
||||
"description": "Removable flip-up rear sight MBUS Gen2, installed on the mount. Manufactured by Magpul. Flat Dark Earth color."
|
||||
},
|
||||
"6753d006cec7fc449f055453": {
|
||||
"name": "MCX flip-up rear sight [Ai Fuyuumi]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer."
|
||||
},
|
||||
"6753d006cec7fc449f055454": {
|
||||
"name": "MCX flip-up rear sight [GF M4 SOPMOD II]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer."
|
||||
},
|
||||
"6753d006cec7fc449f055455": {
|
||||
"name": "MCX flip-up rear sight [Animu 3]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer."
|
||||
},
|
||||
"6753d006cec7fc449f055456": {
|
||||
"name": "MCX flip-up rear sight [Animu 3 v2]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer."
|
||||
},
|
||||
"6753d006cec7fc449f055457": {
|
||||
"name": "MCX flip-up rear sight [Anti]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer. Your personal waifu giving her neko love to support you in combat."
|
||||
},
|
||||
"6753d006cec7fc449f055458": {
|
||||
"name": "MCX flip-up rear sight [Anti 2]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer. The personal sight used by Anti, the war Neko! Nya!!"
|
||||
},
|
||||
"6753d006cec7fc449f055459": {
|
||||
"name": "MCX flip-up rear sight [Ram & Rem]",
|
||||
"short_name": "MCX RS",
|
||||
"description": "Removable flip-up rear sight for MCX assault rifles, manufactured by SIG Sauer."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user