Added Mods

- New Trader Mod; Painter
  - Along with a new weapon attachment mod; Black Core
- Make Val/VSS Great Again
This commit is contained in:
2025-01-15 20:53:42 -05:00
parent c3fcfb84f8
commit a161750966
109 changed files with 6721 additions and 2 deletions
+28
View File
@@ -0,0 +1,28 @@
[General]
gameName=spt
modid=0
version=d2025.1.15.0
newestVersion=
category="1,"
nexusFileStatus=1
installationFile=MoxoPixel-BlackCore.zip
repository=Nexus
ignoredVersion=
comments=
notes=
nexusDescription=
url=
hasCustomURL=true
lastNexusQuery=
lastNexusUpdate=
nexusLastModified=2025-01-16T01:49:42Z
nexusCategory=0
converted=false
validated=false
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
tracked=0
[installedFiles]
1\modid=0
1\fileid=0
size=1
@@ -0,0 +1,556 @@
{
"manifest": [
{
"key":"tactical_all_insight_wmx200_retex.bundle",
"dependencyKeys":[]
},
{
"key":"mag_stanag_hk_polymer_mag_556x45_30_retex.bundle",
"dependencyKeys":[]
},
{
"key":"handguard_ar15_dd_ris_ii_fsp_9,5_retex.bundle",
"dependencyKeys":[]
},
{
"key":"scope_all_eotech_exps3_retex.bundle",
"dependencyKeys":[
"scope_all_eotech_exps3_gloss_nrm_retex.bundle",
"scope_all_eotech_exps3_mesh_retex.bundle",
"scope_all_eotech_exps3_tan_textures_retex.bundle",
"scope_all_eotech_xps3_textures_retex.bundle"
]
},
{
"key":"scope_all_eotech_exps3_gloss_nrm_retex.bundle",
"dependencyKeys":[]
},
{
"key":"scope_all_eotech_exps3_tan_textures_retex.bundle",
"dependencyKeys":[]
},
{
"key":"scope_all_eotech_xps3_textures_retex.bundle",
"dependencyKeys":[]
},
{
"key":"scope_all_eotech_exps3_mesh_retex.bundle",
"dependencyKeys":[
"scope_all_eotech_exps3_gloss_nrm_retex.bundle",
"scope_all_eotech_exps3_tan_textures_retex.bundle",
"scope_all_eotech_xps3_textures_retex.bundle"
]
},
{
"key":"tactical_all_holosun_ls321_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/glow_particle_bright.bundle",
"assets/standard assets/effects/lightcookies/textures/flashlightcookie.bundle",
"assets/systems/effects/collimator.bundle",
"assets/systems/effects/laserbeam/laser.bundle",
"assets/systems/effects/multiflare/multiflare.bundle",
"assets/systems/effects/nightvision.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"m4a1_black_lines/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"m4a1_black_lines/client_assets.bundle",
"dependencyKeys":[
"m4a1_black_lines/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"m4a1_black_lines/weapon_colt_m4a1_556x45_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/m4a1.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/m4a1.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"m4a1_black_lines/client_assets.bundle",
"m4a1_black_lines/textures/client_assets.bundle",
"assets/content/weapons/tx15/client_assets.bundle",
"assets/content/weapons/tx15/textures/client_assets.bundle",
"assets/content/weapons/tx15/weapon_lone_star_tx15_designated_marksman_556x45_container.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"ak103_black_lines/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"ak103_black_lines/client_assets.bundle",
"dependencyKeys":[
"ak103_black_lines/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"ak103_black_lines/weapon_izhmash_ak103_762x39_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/ak74.bundle",
"assets/content/audio/banks/akm.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/akm.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/saiga12.bundle",
"assets/content/items/mods/handguards/handguard_pp-19-01_izhmash_vityaz_std_plastic_textures.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"ak103_black_lines/client_assets.bundle",
"ak103_black_lines/textures/client_assets.bundle",
"assets/content/weapons/ak100/weapon_izhmash_ak104_762x39_container.bundle",
"assets/content/weapons/ak100/weapon_izhmash_ak105_545x39_container.bundle",
"assets/content/weapons/ak74m/textures/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"assets/content/weapons/pp-19-01/textures/client_assets.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"reciever_ak_akademia_bastion_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"rsass_black/weapon_remington_r11_rsass_762x51_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/rsass.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/mpx.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"rsass_black/client_assets.bundle",
"rsass_black/textures/client_assets.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"rsass_black/client_assets.bundle",
"dependencyKeys":[
"rsass_black/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"rsass_black/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"mk47_black_lines/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"mk47_black_lines/client_assets.bundle",
"dependencyKeys":[
"mk47_black_lines/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"mk47_black_lines/weapon_cmmg_mk47_762x39_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/mp5.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/akm/instrumental.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/mp5.bundle",
"assets/content/audio/weapons/mpx.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"assets/content/weapons/m4a1/client_assets.bundle",
"assets/content/weapons/m4a1/textures/client_assets.bundle",
"mk47_black_lines/client_assets.bundle",
"mk47_black_lines/textures/client_assets.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"reciever_mk47_cmmg_mk47_std_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"tactical_all_wilcox_raptar_es_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/glow_particle_bright.bundle",
"assets/standard assets/effects/lightcookies/textures/flashlightcookie.bundle",
"assets/systems/effects/collimator.bundle",
"assets/systems/effects/laserbeam/laser.bundle",
"assets/systems/effects/multiflare/multiflare.bundle",
"assets/systems/effects/nightvision.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"scope_30mm_razor_hd_gen_2_1_6x24_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/round_spec_mask.bundle",
"assets/systems/effects/opticsight/opticsightsmasks.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"reciever_ar15_noveske_gen3_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"stock_vepr_molot_vpo-101_std_wood_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"stock_m14_troy_sass_chassis_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"silencer_mount_silencerco_hybrid_46_multi_retex.bundle",
"dependencyKeys":[]
},
{
"key":"mag_aug_steyr_std_556x45_30_retex.bundle",
"dependencyKeys":[]
},
{
"key":"stock_ak_zenit_pt_1_retex.bundle",
"dependencyKeys":[]
},
{
"key":"pistolgrip_ak_magpul_moe_ak_retex.bundle",
"dependencyKeys":[]
},
{
"key":"gas_block_akp_slr_ak_railed_gas_tube_retex.bundle",
"dependencyKeys":[]
},
{
"key":"reciever_ak_texas_weapon_systems_dog_leg_rail_gen_3_retex.bundle",
"dependencyKeys":[]
},
{
"key":"handguard_ar15_precision_reflex_carbon_fiber_delta_gen_3_retex.bundle",
"dependencyKeys":[]
},
{
"key":"helmet_armor_slaap.bundle",
"dependencyKeys":[]
},
{
"key":"reciever_glock_glock_17_std_retex.bundle",
"dependencyKeys":[]
},
{
"key":"reciever_glock_gspc_viper_slide_cut_retex.bundle",
"dependencyKeys":[]
},
{
"key":"m4a1_flame/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"m4a1_flame/client_assets.bundle",
"dependencyKeys":[
"m4a1_flame/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"m4a1_flame/weapon_colt_m4a1_556x45_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/m4a1.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/m4a1.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"m4a1_flame/client_assets.bundle",
"m4a1_flame/textures/client_assets.bundle",
"assets/content/weapons/tx15/client_assets.bundle",
"assets/content/weapons/tx15/textures/client_assets.bundle",
"assets/content/weapons/tx15/weapon_lone_star_tx15_designated_marksman_556x45_container.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"foregrip_all_bcm_mod_3_new.bundle",
"dependencyKeys":[]
},
{
"key":"mag_ak74_izhmash_6l23_545x39_30_retex.bundle",
"dependencyKeys":[]
},
{
"key":"m4a1_new/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"m4a1_new/client_assets.bundle",
"dependencyKeys":[
"m4a1_new/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"m4a1_new/weapon_colt_m4a1_556x45_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/banks/m4a1.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/generic",
"assets/content/audio/weapons/m4a1.bundle",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"m4a1_new/client_assets.bundle",
"m4a1_new/textures/client_assets.bundle",
"assets/content/weapons/tx15/client_assets.bundle",
"assets/content/weapons/tx15/textures/client_assets.bundle",
"assets/content/weapons/tx15/weapon_lone_star_tx15_designated_marksman_556x45_container.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"reciever_ar15_vltor_mur-1s_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"mag_ar10_lancer_l7_awm_762x51_20.bundle",
"dependencyKeys":[
]
},
{
"key":"mag_ar10_lancer_l7_awm_762x51_25.bundle",
"dependencyKeys":[
]
},
{
"key":"spear_black/textures/client_assets.bundle",
"dependencyKeys":[
]
},
{
"key":"spear_black/client_assets.bundle",
"dependencyKeys":[
"spear_black/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"spear_black/weapon_sig_mcx_spear_68x51_container.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/audio/blendoptions/assets.bundle",
"assets/content/audio/weapons/ak74.bundle",
"assets/content/audio/weapons/generic",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/animations/simple_animations.bundle",
"assets/content/weapons/animations/spirit_animations.bundle",
"spear_black/client_assets.bundle",
"spear_black/textures/client_assets.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"spear_black/reciever_mcx_sig_spear_upper.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"spear_black/client_assets.bundle",
"spear_black/textures/client_assets.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"pistolgrip_ar15_sig_reduced_angle_pistol_grip_ct_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"handguard_mcx_sig_spear_m_lok_retex.bundle",
"dependencyKeys":[]
},
{
"key":"silencer_clutchlok_sig_slx68_mg_qd_suppressor_68x51_retex.bundle",
"dependencyKeys":[]
},
{
"key":"charge_spear_sig_spear_std_retex.bundle",
"dependencyKeys":[]
},
{
"key":"stock_ar15_magpul_moe_sl_k_carbine_ct_retex.bundle",
"dependencyKeys":[]
},
{
"key":"stock_base_sig_low_profile_tube_ct_retex.bundle",
"dependencyKeys":[]
},
{
"key":"balaclava/item_equipment_facecover_balaclava_black.bundle",
"dependencyKeys":[
"balaclava/wildman01head_textures_black.bundle"
]
},
{
"key":"balaclava/wildman01head_textures_black.bundle",
"dependencyKeys":[]
},
{
"key":"glasses/item_equipment_glasses_npp_retex.bundle",
"dependencyKeys":[]
},
{
"key":"rigs/cr_arscpc_retex.bundle",
"dependencyKeys":[]
},
{
"key":"rigs/item_equipment_rig_carriertactec_retex.bundle",
"dependencyKeys":[]
},
{
"key":"rigs/item_equipment_rig_tv110_retex.bundle",
"dependencyKeys":[]
},
{
"key":"rigs/item_equipment_rig_cryeavs_retex.bundle",
"dependencyKeys":[]
},
{
"key":"scope_all_vortex_razor_amg_uh-1_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/eotech_spec_mask.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"tactical_all_insight_anpeq15_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/glow_particle_bright.bundle",
"assets/standard assets/effects/lightcookies/textures/flashlightcookie.bundle",
"assets/systems/effects/collimator.bundle",
"assets/systems/effects/laserbeam/laser.bundle",
"assets/systems/effects/multiflare/multiflare.bundle",
"assets/systems/effects/nightvision.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"stock_ar15_fab_defense_gl_core_retex.bundle",
"dependencyKeys":[
]
},
{
"key":"scope_30mm_sig_tango6t_1_6x24_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/textures/holemanager/round_spec_mask.bundle",
"assets/systems/effects/opticsight/opticsightsmasks.bundle",
"cubemaps",
"shaders"
]
},
{
"key":"nvg_l3_gpnvg-18_anvis_retex.bundle",
"dependencyKeys":[
"assets/commonassets/physics/physicsmaterials.bundle",
"assets/content/items/equipment/glasses_6b34/glasses_6b34_glass_textures",
"cubemaps",
"shaders"
]
}
]
}
@@ -0,0 +1,603 @@
{
"ItemPresets": {
"6783f24f861dfacffe36b138": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d19f1683101780773b",
"_id": "6783f24f861dfacffe36b138",
"_items": [
{
"_id": "6783f25b69d649d493cda1fd",
"_tpl": "672e37d19f1683101780773b",
"upd": {
"Repairable": {
"Durability": 100,
"MaxDurability": 100
}
}
},
{
"_id": "6783f26abcf5805ba9248ad7",
"_tpl": "55d4b9964bdc2d1d4e8b456e",
"parentId": "6783f25b69d649d493cda1fd",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783f26d3b2ca6db3f36b858",
"_tpl": "55d4887d4bdc2d962f8b4570",
"parentId": "6783f25b69d649d493cda1fd",
"slotId": "mod_magazine"
},
{
"_id": "6783f2723a07e8c6a8006e9f",
"_tpl": "672e37d1249244ae3a50bb2f",
"parentId": "6783f25b69d649d493cda1fd",
"slotId": "mod_reciever"
},
{
"_id": "6783f29a304ff60a67653ddb",
"_tpl": "55d3632e4bdc2d972f8b4569",
"parentId": "6783f2723a07e8c6a8006e9f",
"slotId": "mod_barrel"
},
{
"_id": "6783f29f017667af4aeda8df",
"_tpl": "544a38634bdc2d58388b4568",
"parentId": "6783f29a304ff60a67653ddb",
"slotId": "mod_muzzle"
},
{
"_id": "6783f2a148624b6f5fe0a317",
"_tpl": "5ae30e795acfc408fb139a0b",
"parentId": "6783f29a304ff60a67653ddb",
"slotId": "mod_gas_block"
},
{
"_id": "6783f2a88b7b6cd3c9225511",
"_tpl": "5ae30db85acfc408fb139a05",
"parentId": "6783f2723a07e8c6a8006e9f",
"slotId": "mod_handguard"
},
{
"_id": "6783f2ad374903cfc652f22f",
"_tpl": "637f57a68d137b27f70c4968",
"parentId": "6783f2a88b7b6cd3c9225511",
"slotId": "mod_handguard"
},
{
"_id": "6783f2aeb598721f40ef1263",
"_tpl": "5ae30bad5acfc400185c2dc4",
"parentId": "6783f2723a07e8c6a8006e9f",
"slotId": "mod_sight_rear"
},
{
"_id": "6783f2af7cf3b743d3d8c1e2",
"_tpl": "5649be884bdc2d79388b4577",
"parentId": "6783f25b69d649d493cda1fd",
"slotId": "mod_stock"
},
{
"_id": "6783f2b54115cf68d3ffa632",
"_tpl": "55d4ae6c4bdc2d8b2f8b456e",
"parentId": "6783f2af7cf3b743d3d8c1e2",
"slotId": "mod_stock_000"
},
{
"_id": "6783f2b66dc7254a0401b1ca",
"_tpl": "55d44fd14bdc2d962f8b456e",
"parentId": "6783f25b69d649d493cda1fd",
"slotId": "mod_charge"
}
],
"_name": "M4A1 Std Painter Edition",
"_parent": "6783f25b69d649d493cda1fd",
"_type": "Preset"
},
"6783f192c8a5270c18aad6b6": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d1ddaf7c656e3a634c",
"_id": "6783f192c8a5270c18aad6b6",
"_items": [
{
"_id": "6783f1a47ef435b43580168c",
"_tpl": "672e37d1ddaf7c656e3a634c",
"upd": {
"Repairable": {
"Durability": 100,
"MaxDurability": 100
}
}
},
{
"_id": "6783f1b85be1b42bf29e4a61",
"_tpl": "55d4b9964bdc2d1d4e8b456e",
"parentId": "6783f1a47ef435b43580168c",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783f1bb8ce2bb9545fae1d8",
"_tpl": "55d4887d4bdc2d962f8b4570",
"parentId": "6783f1a47ef435b43580168c",
"slotId": "mod_magazine"
},
{
"_id": "6783f1c160f9c16d7f779a4d",
"_tpl": "55d355e64bdc2d962f8b4569",
"parentId": "6783f1a47ef435b43580168c",
"slotId": "mod_reciever"
},
{
"_id": "6783f1d493fa264e4493ac2e",
"_tpl": "55d3632e4bdc2d972f8b4569",
"parentId": "6783f1c160f9c16d7f779a4d",
"slotId": "mod_barrel"
},
{
"_id": "6783f1d9be58dbc9b2a069ba",
"_tpl": "544a38634bdc2d58388b4568",
"parentId": "6783f1d493fa264e4493ac2e",
"slotId": "mod_muzzle"
},
{
"_id": "6783f1daae07965124acac83",
"_tpl": "5ae30e795acfc408fb139a0b",
"parentId": "6783f1d493fa264e4493ac2e",
"slotId": "mod_gas_block"
},
{
"_id": "6783f1ddde94724c8bd6ca16",
"_tpl": "5ae30db85acfc408fb139a05",
"parentId": "6783f1c160f9c16d7f779a4d",
"slotId": "mod_handguard"
},
{
"_id": "6783f1e275d0b1ed88572ad0",
"_tpl": "637f57a68d137b27f70c4968",
"parentId": "6783f1ddde94724c8bd6ca16",
"slotId": "mod_handguard"
},
{
"_id": "6783f1e3fbc6c6dbf0aadc86",
"_tpl": "5ae30bad5acfc400185c2dc4",
"parentId": "6783f1c160f9c16d7f779a4d",
"slotId": "mod_sight_rear"
},
{
"_id": "6783f1ec39e6076911b5df9c",
"_tpl": "5649be884bdc2d79388b4577",
"parentId": "6783f1a47ef435b43580168c",
"slotId": "mod_stock"
},
{
"_id": "6783f1f09bad1af82a378d05",
"_tpl": "55d4ae6c4bdc2d8b2f8b456e",
"parentId": "6783f1ec39e6076911b5df9c",
"slotId": "mod_stock_000"
},
{
"_id": "6783f1f235ede9255929f2d4",
"_tpl": "55d44fd14bdc2d962f8b456e",
"parentId": "6783f1a47ef435b43580168c",
"slotId": "mod_charge"
}
],
"_name": "M4A1 Std Flames",
"_parent": "6783f1a47ef435b43580168c",
"_type": "Preset"
},
"6783f0fbb5c5bfbb971871e1": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d1179b7b969b7577cb",
"_id": "6783f0fbb5c5bfbb971871e1",
"_items": [
{
"_id": "6783f10174bf20e471c5c055",
"_tpl": "672e37d1179b7b969b7577cb",
"upd": {
"Repairable": {
"Durability": 100,
"MaxDurability": 100
}
}
},
{
"_id": "6783f11512857c267b254af7",
"_tpl": "55d4b9964bdc2d1d4e8b456e",
"parentId": "6783f10174bf20e471c5c055",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783f11aec8108543017f1e3",
"_tpl": "55d4887d4bdc2d962f8b4570",
"parentId": "6783f10174bf20e471c5c055",
"slotId": "mod_magazine"
},
{
"_id": "6783f1205747a3ea48865e73",
"_tpl": "55d355e64bdc2d962f8b4569",
"parentId": "6783f10174bf20e471c5c055",
"slotId": "mod_reciever"
},
{
"_id": "6783f1350fbe98026207e7ea",
"_tpl": "55d3632e4bdc2d972f8b4569",
"parentId": "6783f1205747a3ea48865e73",
"slotId": "mod_barrel"
},
{
"_id": "6783f13b8484c0c25a66be35",
"_tpl": "544a38634bdc2d58388b4568",
"parentId": "6783f1350fbe98026207e7ea",
"slotId": "mod_muzzle"
},
{
"_id": "6783f13dc1acd3ecae24270f",
"_tpl": "5ae30e795acfc408fb139a0b",
"parentId": "6783f1350fbe98026207e7ea",
"slotId": "mod_gas_block"
},
{
"_id": "6783f1488a3d2dc4157c8758",
"_tpl": "5ae30db85acfc408fb139a05",
"parentId": "6783f1205747a3ea48865e73",
"slotId": "mod_handguard"
},
{
"_id": "6783f151960a80ad5f9745ae",
"_tpl": "637f57a68d137b27f70c4968",
"parentId": "6783f1488a3d2dc4157c8758",
"slotId": "mod_handguard"
},
{
"_id": "6783f154906b450be0b3182f",
"_tpl": "5ae30bad5acfc400185c2dc4",
"parentId": "6783f1205747a3ea48865e73",
"slotId": "mod_sight_rear"
},
{
"_id": "6783f15600d12159f91920f6",
"_tpl": "5649be884bdc2d79388b4577",
"parentId": "6783f10174bf20e471c5c055",
"slotId": "mod_stock"
},
{
"_id": "6783f15bc0fe63d6d241fb9b",
"_tpl": "55d4ae6c4bdc2d8b2f8b456e",
"parentId": "6783f15600d12159f91920f6",
"slotId": "mod_stock_000"
},
{
"_id": "6783f1f861bc1198d4d14f7c",
"_tpl": "55d44fd14bdc2d962f8b456e",
"parentId": "6783f10174bf20e471c5c055",
"slotId": "mod_charge"
}
],
"_name": "M4A1 Std Topo",
"_parent": "6783f10174bf20e471c5c055",
"_type": "Preset"
},
"6783f026a570e11e98538c25": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d1e35a6ec6e6997492",
"_id": "6783f026a570e11e98538c25",
"_items": [
{
"_id": "6783f04c9ff3e61038c7a73b",
"_tpl": "672e37d1e35a6ec6e6997492"
},
{
"_id": "6783f05f37f27dd00e59aa24",
"_tpl": "59c6633186f7740cf0493bb9",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_gas_block"
},
{
"_id": "6783f07124277c3fd1890147",
"_tpl": "5648b1504bdc2d9d488b4584",
"parentId": "6783f05f37f27dd00e59aa24",
"slotId": "mod_handguard"
},
{
"_id": "6783f0741ec1081b46650491",
"_tpl": "5ac72e7d5acfc40016339a02",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_muzzle"
},
{
"_id": "6783f0764bac8452114f4a95",
"_tpl": "5649ade84bdc2d1b2b8b4587",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783f0770459d79d0f33b9da",
"_tpl": "672e37d10c5f88d8ed0d056a",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_reciever"
},
{
"_id": "6783f07a137b256bffe1cfb1",
"_tpl": "5ac50c185acfc400163398d4",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_stock"
},
{
"_id": "6783f07c8853c5e4efc96806",
"_tpl": "5ac66bea5acfc43b321d4aec",
"parentId": "6783f04c9ff3e61038c7a73b",
"slotId": "mod_magazine"
}
],
"_name": "AK-103 Default Topo",
"_parent": "6783f04c9ff3e61038c7a73b",
"_type": "Preset"
},
"6783ec2851c792b686291cb9": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d17f433cdb29072bc8",
"_id": "6783ec2851c792b686291cb9",
"_items": [
{
"_id": "6783ec33c8d50fdb6b63d3e9",
"_tpl": "672e37d17f433cdb29072bc8",
"upd": {
"FireMode": {
"FireMode": "single"
},
"Repairable": {
"Durability": 100,
"MaxDurability": 100
}
}
},
{
"_id": "657eb3773271d8578610fe2a",
"_tpl": "672e37d1861c12c7e1d94089",
"parentId": "6783ec33c8d50fdb6b63d3e9",
"slotId": "mod_pistol_grip"
},
{
"_id": "657eb3773271d8578610fe2b",
"_tpl": "672e37d19811257c1de39e6d",
"parentId": "6783ec33c8d50fdb6b63d3e9",
"slotId": "mod_magazine"
},
{
"_id": "6783ec4cf0b00cd50d9c2a87",
"_tpl": "672e37d133cc1fb4424ddb4c",
"parentId": "6783ec33c8d50fdb6b63d3e9",
"slotId": "mod_reciever"
},
{
"_id": "6783ec6e1a49dfd7571ae44e",
"_tpl": "5b2389515acfc4771e1be0c0",
"parentId": "6783ec4cf0b00cd50d9c2a87",
"slotId": "mod_scope"
},
{
"_id": "6783ec7588341583da153886",
"_tpl": "67617ec9ea1e82ea5e103054",
"parentId": "6783ec6e1a49dfd7571ae44e",
"slotId": "mod_scope_000"
},
{
"_id": "6783ec85d0fd3275f2ab164a",
"_tpl": "652910565ae2ae97b80fdf35",
"parentId": "6783ec4cf0b00cd50d9c2a87",
"slotId": "mod_barrel"
},
{
"_id": "6783ec955c4560dd83a3c26f",
"_tpl": "6529113b5ae2ae97b80fdf39",
"parentId": "6783ec85d0fd3275f2ab164a",
"slotId": "mod_muzzle"
},
{
"_id": "6783ec9892098902e42933bd",
"_tpl": "672e37d143ba463a1cdcbd7b",
"parentId": "6783ec955c4560dd83a3c26f",
"slotId": "mod_muzzle"
},
{
"_id": "6783ec9ddf30430fd30d48ef",
"_tpl": "652910bc24cbe3c74a05e5b9",
"parentId": "6783ec85d0fd3275f2ab164a",
"slotId": "mod_gas_block"
},
{
"_id": "6783ec9fb358c9d737de5800",
"_tpl": "672e37d1984bc9a10241a9c7",
"parentId": "6783ec4cf0b00cd50d9c2a87",
"slotId": "mod_handguard"
},
{
"_id": "6783eea29163d870c845e6b9",
"_tpl": "6529348224cbe3c74a05e5c4",
"parentId": "6783ec33c8d50fdb6b63d3e9",
"slotId": "mod_stock_000"
},
{
"_id": "6783eea6b0158f1b5bf6ba4e",
"_tpl": "672e37d151b832f3fb8ccbb0",
"parentId": "6783eea29163d870c845e6b9",
"slotId": "mod_stock"
},
{
"_id": "6783eeaa698962dfeeda79a3",
"_tpl": "672e37d1d9a55146e49287d6",
"parentId": "6783eea6b0158f1b5bf6ba4e",
"slotId": "mod_stock_000"
},
{
"_id": "6783eca92713d47b3f369d0b",
"_tpl": "672e37d1906226680c4e28d5",
"parentId": "6783ec33c8d50fdb6b63d3e9",
"slotId": "mod_charge"
}
],
"_name": "SIG SPEAR default black",
"_parent": "6783ec33c8d50fdb6b63d3e9",
"_type": "Preset"
},
"6783e5da52977a05d959ac2f": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d1dd890afba20c10e7",
"_id": "6783e5da52977a05d959ac2f",
"_items": [
{
"_id": "6783e5f4c23d0a4830e3d069",
"_tpl": "672e37d1dd890afba20c10e7",
"upd": {
"Repairable": {
"Durability": 100,
"MaxDurability": 100
}
}
},
{
"_id": "6783e603e6cebbfe9babfb73",
"_tpl": "5cc9bcaed7f00c011c04e179",
"parentId": "6783e5f4c23d0a4830e3d069",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783e60517f08a8301bbd2c5",
"_tpl": "5a3501acc4a282000d72293a",
"parentId": "6783e5f4c23d0a4830e3d069",
"slotId": "mod_magazine"
},
{
"_id": "6783e607810d48f18bc7e606",
"_tpl": "5a33ca0fc4a282000d72292f",
"parentId": "6783e5f4c23d0a4830e3d069",
"slotId": "mod_stock"
},
{
"_id": "6783e60ba048490f25da323e",
"_tpl": "5d44069ca4b9361ebd26fc37",
"parentId": "6783e607810d48f18bc7e606",
"slotId": "mod_stock"
},
{
"_id": "6783e60d0f11531e764dd864",
"_tpl": "5d00ef6dd7ad1a0940739b16",
"parentId": "6783e5f4c23d0a4830e3d069",
"slotId": "mod_handguard"
},
{
"_id": "6783e61457c31046a3d9466b",
"_tpl": "5a34fae7c4a2826c6e06d760",
"parentId": "6783e5f4c23d0a4830e3d069",
"slotId": "mod_barrel"
},
{
"_id": "6783e618cc78902eec1f2c0b",
"_tpl": "5a34fd2bc4a282329a73b4c5",
"parentId": "6783e61457c31046a3d9466b",
"slotId": "mod_muzzle"
},
{
"_id": "6783e61a7bfb5f73bdcef867",
"_tpl": "5a34fbadc4a28200741e230a",
"parentId": "6783e61457c31046a3d9466b",
"slotId": "mod_gas_block"
}
],
"_name": "RSASS Black",
"_parent": "6783e5f4c23d0a4830e3d069",
"_type": "Preset"
},
"6783eb2892780aded22f44d6": {
"_changeWeaponName": false,
"_encyclopedia": "672e37d10b7a12e6a7a50b77",
"_id": "6783eb2892780aded22f44d6",
"_items": [
{
"_id": "6783eb3a05c979d9171196e2",
"_tpl": "672e37d10b7a12e6a7a50b77",
"upd": {
"FireMode": {
"FireMode": "single"
}
}
},
{
"_id": "6783eb482a3ac74d07710776",
"_tpl": "55802f5d4bdc2dac148b458f",
"parentId": "6783eb3a05c979d9171196e2",
"slotId": "mod_pistol_grip"
},
{
"_id": "6783eb4de2e02a031c2d2eb9",
"_tpl": "59d6272486f77466146386ff",
"parentId": "6783eb3a05c979d9171196e2",
"slotId": "mod_magazine"
},
{
"_id": "6783eb54e77a16ac4853c726",
"_tpl": "672e37d1a98e0628807ba29a",
"parentId": "6783eb3a05c979d9171196e2",
"slotId": "mod_reciever"
},
{
"_id": "6783eb6f7e0a5b57278b5d8f",
"_tpl": "60658776f2cb2e02a42ace2b",
"parentId": "6783eb54e77a16ac4853c726",
"slotId": "mod_barrel"
},
{
"_id": "6783eb76f0ceaeb9063cdbf2",
"_tpl": "6065c6e7132d4d12c81fd8e1",
"parentId": "6783eb6f7e0a5b57278b5d8f",
"slotId": "mod_muzzle"
},
{
"_id": "6783eb7901da578da4b2230c",
"_tpl": "6065dc8a132d4d12c81fd8e3",
"parentId": "6783eb6f7e0a5b57278b5d8f",
"slotId": "mod_gas_block"
},
{
"_id": "6783eb7b04cdf6ff2fb14809",
"_tpl": "6065880c132d4d12c81fd8da",
"parentId": "6783eb54e77a16ac4853c726",
"slotId": "mod_handguard"
},
{
"_id": "6783eb7e73028d0ad6ba25a7",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "6783eb7b04cdf6ff2fb14809",
"slotId": "mod_sight_front"
},
{
"_id": "6783eb801f0133eec60418fd",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "6783eb54e77a16ac4853c726",
"slotId": "mod_sight_rear"
},
{
"_id": "6783eb82d4bfe4734f1968e8",
"_tpl": "606587e18900dc2d9a55b65f",
"parentId": "6783eb3a05c979d9171196e2",
"slotId": "mod_stock_001"
},
{
"_id": "6783eb85ede00f4e10fe95fa",
"_tpl": "606587d11246154cad35d635",
"parentId": "6783eb82d4bfe4734f1968e8",
"slotId": "mod_stock_000"
},
{
"_id": "6783eb8781c4dad6d094d7d5",
"_tpl": "606587bd6d0bd7580617bacc",
"parentId": "6783eb3a05c979d9171196e2",
"slotId": "mod_charge"
}
],
"_name": "CMMG MK47 short default black",
"_parent": "6783eb3a05c979d9171196e2",
"_type": "Preset"
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,26 @@
{
"name": "Black Core",
"version": "1.1.6",
"main": "src/mod.js",
"license": "University of Illinois/NCSA Open Source License",
"author": "MoxoPixel",
"sptVersion": "3.10.X",
"isBundleMod": true,
"scripts": {
"setup": "npm i",
"build": "node ./build.mjs",
"buildinfo": "node ./build.mjs --verbose"
},
"devDependencies": {
"@types/node": "20.11",
"@typescript-eslint/eslint-plugin": "7.2",
"@typescript-eslint/parser": "7.2",
"archiver": "^6.0",
"eslint": "8.57",
"fs-extra": "11.2",
"ignore": "^5.2",
"tsyringe": "4.8.0",
"typescript": "5.4",
"winston": "3.12"
}
}
@@ -0,0 +1,236 @@
import { DependencyContainer } from "tsyringe";
import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { ImporterUtil } from "@spt/utils/ImporterUtil";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables";
import { JsonUtil } from "@spt/utils/JsonUtil"
interface IHandbookEntry {
Id: string;
ParentId: string;
Price: number;
}
class BlackCore implements IPostDBLoadMod {
private db: IDatabaseTables;
private mydb: any;
private logger: ILogger;
private jsonUtil: JsonUtil;
public postDBLoad(container: DependencyContainer): void {
try {
this.logger = container.resolve<ILogger>("WinstonLogger");
this.jsonUtil = container.resolve<JsonUtil>("JsonUtil");
const databaseServer = container.resolve<DatabaseServer>("DatabaseServer");
const databaseImporter = container.resolve<ImporterUtil>("ImporterUtil");
const modLoader = container.resolve<PreSptModLoader>("PreSptModLoader");
this.db = databaseServer.getTables();
this.mydb = databaseImporter.loadRecursive(`${modLoader.getModPath("MoxoPixel-BlackCore")}database/`);
if (!this.db || !this.mydb) {
throw new Error("Failed to load required databases");
}
const modFolderName = "MoxoPixel-BlackCore";
const traders = {
"painter": "668aaff35fd574b6dcc4a686"
};
for (const newItem in this.mydb.items) {
this.cloneItem(this.mydb.items[newItem].clone, newItem);
this.addCompatibilitiesAndConflicts(this.mydb.items[newItem].clone, newItem);
const newItemLocales = this.mydb.items[newItem].locales;
for (const lang in this.db.locales.global) {
this.db.locales.global[lang][`${newItem} Name`] = newItemLocales.Name;
this.db.locales.global[lang][`${newItem} ShortName`] = newItemLocales.Shortname;
this.db.locales.global[lang][`${newItem} Description`] = newItemLocales.Description;
}
}
for (const trader in traders) this.addTraderAssort(traders[trader]);
for (const preset in this.mydb.globals.ItemPresets) {
this.db.globals.ItemPresets[preset] = this.mydb.globals.ItemPresets[preset];
}
const dbMastering = this.db.globals.config.Mastering;
for (const weapon in dbMastering) {
if (dbMastering[weapon].Name == "M4") dbMastering[weapon].Templates.push("672e37d1179b7b969b7577cb", "672e37d1ddaf7c656e3a634c", "672e37d19f1683101780773b");
if (dbMastering[weapon].Name == "AK74") dbMastering[weapon].Templates.push("672e37d1e35a6ec6e6997492");
if (dbMastering[weapon].Name == "R11SRASS") dbMastering[weapon].Templates.push("672e37d1dd890afba20c10e7");
if (dbMastering[weapon].Name == "MK47") dbMastering[weapon].Templates.push("672e37d10b7a12e6a7a50b77");
if (dbMastering[weapon].Name == "SPEAR") dbMastering[weapon].Templates.push("672e37d17f433cdb29072bc8");
}
const dbQuests = this.db.templates.quests;
for (const M4Quest in dbQuests) {
if (
dbQuests[M4Quest]._id === "5a27bb8386f7741c770d2d0a" ||
dbQuests[M4Quest]._id === "5c0d4c12d09282029f539173" ||
dbQuests[M4Quest]._id === "63a9b229813bba58a50c9ee5" ||
dbQuests[M4Quest]._id === "64e7b9bffd30422ed03dad38" ||
dbQuests[M4Quest]._id === "666314b4d7f171c4c20226c3"
) {
const availableForFinish = dbQuests[M4Quest].conditions.AvailableForFinish;
for (const condition of availableForFinish) {
if (condition.counter && condition.counter.conditions) {
for (const counterCondition of condition.counter.conditions) {
if (counterCondition.weapon) {
counterCondition.weapon.push(
"672e37d1179b7b969b7577cb",
"672e37d1ddaf7c656e3a634c",
"672e37d19f1683101780773b"
);
}
}
}
}
}
}
for (const AKQuest in dbQuests) {
if (
dbQuests[AKQuest]._id === "59c50a9e86f7745fef66f4ff" ||
dbQuests[AKQuest]._id === "61e6e60223374d168a4576a6" ||
dbQuests[AKQuest]._id === "64e7b9bffd30422ed03dad38"
) {
const availableForFinish = dbQuests[AKQuest].conditions.AvailableForFinish;
for (const condition of availableForFinish) {
if (condition.counter && condition.counter.conditions) {
for (const counterCondition of condition.counter.conditions) {
if (counterCondition.weapon) {
counterCondition.weapon.push(
"672e37d1e35a6ec6e6997492"
);
}
}
}
}
}
}
for (const MK47Quest in dbQuests) {
if (
dbQuests[MK47Quest]._id === "64e7b9bffd30422ed03dad38"
) {
const availableForFinish = dbQuests[MK47Quest].conditions.AvailableForFinish;
for (const condition of availableForFinish) {
if (condition.counter && condition.counter.conditions) {
for (const counterCondition of condition.counter.conditions) {
if (counterCondition.weapon) {
counterCondition.weapon.push(
"672e37d10b7a12e6a7a50b77",
"672e37d17f433cdb29072bc8"
);
}
}
}
}
}
}
this.logger.info("------------------------");
this.logger.info("Black Core Loaded");
} catch (error) {
this.logger.error(`Error loading BlackCore mod: ${error.message}`);
}
}
private cloneItem(itemToClone: string, blackCoreID: string): void {
if (!itemToClone || !blackCoreID) {
this.logger.error("Invalid parameters passed to cloneItem");
return;
}
if (!this.mydb.items[blackCoreID]?.enable) {
return;
}
if (!this.db.templates.items[itemToClone]) {
this.logger.error(`Template item ${itemToClone} not found`);
return;
}
if (this.mydb.items[blackCoreID].enable == true) {
let blackCoreItemOut = this.jsonUtil.clone(this.db.templates.items[itemToClone]);
blackCoreItemOut._id = blackCoreID;
blackCoreItemOut = this.compareAndReplace(blackCoreItemOut, this.mydb.items[blackCoreID]["items"]);
const bcCompatibilities: object = (typeof this.mydb.items[blackCoreID].bcCompatibilities == "undefined") ? {} : this.mydb.items[blackCoreID].bcCompatibilities;
const bcConflicts: Array<string> = (typeof this.mydb.items[blackCoreID].bcConflicts == "undefined") ? [] : this.mydb.items[blackCoreID].bcConflicts;
for (const modSlotName in bcCompatibilities) {
for (const slot of blackCoreItemOut._props.Slots) {
if (slot._name === modSlotName) for (const id of bcCompatibilities[modSlotName]) slot._props.filters[0].Filter.push(id);
}
}
blackCoreItemOut._props.ConflictingItems = blackCoreItemOut._props.ConflictingItems.concat(bcConflicts);
this.db.templates.items[blackCoreID] = blackCoreItemOut;
const handbookEntry: IHandbookEntry = {
"Id": blackCoreID,
"ParentId": this.mydb.items[blackCoreID]["handbook"]["ParentId"],
"Price": this.mydb.items[blackCoreID]["handbook"]["Price"]
};
this.db.templates.handbook.Items.push(handbookEntry);
}
}
private compareAndReplace(originalItem: any, attributesToChange: any): any {
for (const key in attributesToChange) {
if ((["boolean", "string", "number"].includes(typeof attributesToChange[key])) || Array.isArray(attributesToChange[key])) {
if (key in originalItem) originalItem[key] = attributesToChange[key];
else this.logger.error("Error finding the attribute: \"" + key + "\", default value is used instead.");
}
else originalItem[key] = this.compareAndReplace(originalItem[key], attributesToChange[key]);
}
return originalItem;
}
private addCompatibilitiesAndConflicts(itemClone: string, blackCoreID: string): void {
for (const item in this.db.templates.items) {
if (item in this.mydb.items) continue;
const slots = (typeof this.db.templates.items[item]._props.Slots === "undefined") ? [] : this.db.templates.items[item]._props.Slots;
const chambers = (typeof this.db.templates.items[item]._props.Chambers === "undefined") ? [] : this.db.templates.items[item]._props.Chambers;
const cartridges = (typeof this.db.templates.items[item]._props.Cartridges === "undefined") ? [] : this.db.templates.items[item]._props.Cartridges;
const combined = slots.concat(chambers, cartridges)
for (const entry of combined) {
for (const id of entry._props.filters[0].Filter) {
if (id === itemClone) entry._props.filters[0].Filter.push(blackCoreID);
}
}
const conflictingItems = (typeof this.db.templates.items[item]._props.ConflictingItems === "undefined") ? [] : this.db.templates.items[item]._props.ConflictingItems;
for (const conflictID of conflictingItems) if (conflictID === itemClone) conflictingItems.push(blackCoreID);
}
}
private addTraderAssort(trader: string): void {
if (!this.db.traders[trader]?.assort || !this.mydb.traders[trader]?.assort) {
this.logger.error(`Invalid trader assort data for trader: ${trader}`);
return;
}
for (const item in this.mydb.traders[trader].assort.items) {
this.db.traders[trader].assort.items.push(this.mydb.traders[trader].assort.items[item]);
}
for (const item in this.mydb.traders[trader].assort.barter_scheme) {
this.db.traders[trader].assort.barter_scheme[item] = this.mydb.traders[trader].assort.barter_scheme[item];
}
for (const item in this.mydb.traders[trader].assort.loyal_level_items) {
this.db.traders[trader].assort.loyal_level_items[item] = this.mydb.traders[trader].assort.loyal_level_items[item];
}
}
}
module.exports = { mod: new BlackCore() }