Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
More detailed explanations for the guide "Adding new items"
appearance.appmesh_black_blue


secondaryKey must match the entry in your .yaml file, or you will just see an empty string.
entityName for a match in the first field



entGarmentSkinnedMeshComponent


Items.my_custom_shirt_redwhite:
entityName: my_custom_shirt_factory_name << this is for the factory.csv
appearanceName: appearance_root_entity_white_red << this is for the root_entity.ent appearanceName: black_red_appearance_name
name: appearance_root_entity_black_red appearanceName: black_blue_appearance_name
name: appearance_root_entity_black_bluecomponentName: t1_tutorial_custom_shirt_4711 << no need to change this
mesh_appearance: mesh_black_blue << corresponds to meshMeshAppearance.name in my_mesh.mesh name: mesh_black_blue <<< as defined in step 1 and used by meshMeshAppearance in appearances[]
index: <index of item in array> w_smg__militech_saratogabase1_01.ent $instances:
- { type: sleeves, base_color: white, ribbons: red, icon: 01 }
- { type: nosleeves, base_color: black, ribbons: red, icon: 02 }appearanceName: root_entity_dynamic_appearance_!$(base_color)+$(ribbons)appearanceName: root_entity_dynamic_appearance_$(type)_!$(base_color)+$(ribbons)
How to add custom hat hairs that work the same way as the basegame hat hairs
h1_yourmodname and select "Duplicate in Array/Buffer".



01 - short
02 - long
03 - dreads
04 - buzzarchive_xl\characters\common\hair\h1_base_color_patch.mesh:
props: [ appearances ]
targets: [
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_buzz.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_dreads.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_long.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_short.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_buzz.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_dreads.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_long.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_short.mesh
]scope:
player_ma_hat_hair.mesh:
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_buzz.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_dreads.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_long.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_short.mesh
player_wa_hat_hair.mesh:
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_buzz.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_dreads.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_long.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_short.meshresource:
patch:
yourmoddername\yourmodname\meshes\h1_pwa_yourmodname.mesh:
- yourmoddername\yourmodname\meshes\h1_pma_yourmodname.mesh
archive_xl\characters\common\hair\h1_base_color_patch.mesh:
props: [ appearances ]
targets: [
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_buzz.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_dreads.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_long.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_short.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_buzz.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_dreads.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_long.mesh,
yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_short.mesh
]
scope:
player_ma_hat_hair.mesh:
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_buzz.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_dreads.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_long.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pma_yourmodname_hair_short.mesh
player_wa_hat_hair.mesh:
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_buzz.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_dreads.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_long.mesh
- yourmoddername\yourmodname\hair_meshes\h1_pwa_yourmodname_hair_short.mesh
factories:
- yourmoddername\yourmodname\yourmodname_factory.csv
localization:
onscreens:
en-us:
- yourmoddername\yourmodname\translation_strings.jsonMesh in their type name:KnifeAttacks.MyKnifeThrowAttackProjectile:
$type: Attack_Projectile
projectileTemplateName: my_new_weapon_projectile_nameItems.my_knife:
# the rest of your weapon's definition
projectileTemplateName: my_new_weapon_projectile_name
useProjectileAppearance: true
attacks:
- !append KnifeAttacks.MyKnifeThrowAttackProjectilebase\gameplay\projectiles\knife\tanto_projectile.entbase\gameplay\projectiles\knife\knife_projectile.entKnifeAttacks.MyNewWeaponThrowAttackProjectile:
projectileTemplateName: my_new_weapon_projectile_nameAn item addition with dynamic appearances, and what you can do for this
@addMethod(gameuiInGameMenuGameController)
protected cb func RegisterYOURNAMESStore(event: ref<VirtualShopRegistration>) -> Bool {
event.AddStore(
n"YOURNAME",
"Your Store Name",
[
"Items.my_custom_shirt_redwhite",
"Items.my_custom_shirt_redblack"
],
[ 1 ],
r"tutorial/torso/my_custom_shirt/ops/atelier_icon.inkatlas",
n"slot_01",
[ "Legendary" ]
);
}atelier_icon_template.inkatlas << map for the game
atelier_icon_template.png << 200x200px image for a final slot
atelier_icon_template.xbm << game texture
virtual_atelier_png_to_xbm_import_settings.png << image, also embedded here tutorial
torso
my_custom_shirt
ops
- my_shirt_factory.csv
- translation_strings.json
- preview_icons.inkatlas
- preview_icons.xbm
- atelier_icon.inkatlas <<<
- atelier_icon.xbm <<< resources
- tutorial_my_custom_tshirt.archive.xl
- r6
- tweaks
- tutorial_my_custom_tshirt.yaml
- scripts
- MyTutorialAtelierStore-atelier-store.reds << new fileentityName in the yaml











No more replacers! Add your own gear with TweakXL and ArchiveXL
packed into your game directory (it will overwrite without prompting)appearanceName: appearance_root_entity_black_blueappearance_root_entity_white_red&FemaleCMaterialInstancelocalMaterialBuffer.materialsappearances, localMaterialBuffer.materials and materialEntries with those from your previous mesh.










displayName: my_shirt_localization_name_black_blue
localizedDescription: my_shirt_localization_desclocalizationPersistenceOnScreenEntry - []
femaleVariant: my item - now in black and blue
maleVariant:
secondaryKey: my_shirt_localization_name_black_blueItems.my_custom_shirt_blueblack:
$base: Items.GenericInnerChestClothing
entityName: my_custom_shirt_factory_name
appearanceName: appearance_root_entity_black_blue
displayName: my_shirt_localization_name_black_blue
localizedDescription: my_shirt_localization_desc
quality: Quality.Legendary
appearanceSuffixes: []Game.AddToInventory('Items.my_custom_shirt_blueblack')mesh: DepotPath: tutorial\torso\my_custom_shirt\my_mesh_m.mesh << path to your mesh
Flags: Default << leave this alone
name: my_shirt_m << this corresponds to the appearanceOverride in appearance.app Items.my_custom_shirt_redwhite:
$base: Items.GenericInnerChestClothing
entityName: my_custom_shirt_factory_name
appearanceName: appearance_root_entity_white_red
displayName: my_shirt_localization_name_white_red
localizedDescription: my_shirt_localization_desc
quality: Quality.Legendary
appearanceSuffixes: [ itemsFactoryAppearanceSuffix.Gender ]
icon:
atlasResourcePath: tutorial\torso\my_custom_shirt\ops\preview_icons.inkatlas
atlasPartName: slot_01Game.AddToInventory("Items.my_custom_shirt_redwhite")$base: Items.GenericHeadClothingforce_Hairbase\weapons > entities > .ent# for guns etc
weaponAudio: wea_set_achilles
# for melee weapons
audioWeaponConfiguration: audio_melee_metadata_katana blueprint: Items.Iconic_Melee_Blueprint $base: Items.IconicWeaponModBase ikOffset: {x: 0, y: 0, z: 0}





Items.My_Custom_Shirt: << name of your item (the spawn code)
$base: Items.Shirt
Items.My_Custom_Helmet:
$base: Items.Helmet
# For items that should hide hair, use records with the "Hair" suffix.
Items.My_Custom_HelmetWithHair:
$base: Items.HelmetHair
# For items that should have an intrinsic modifier, e.g. Armor
Items.My_Custom_HelmetWithArmor:
$base: Items.Helmet_Intrinsic
# For feet items that use heels (clicky sound)
Items.MyCustom_Heels:
$base: Items.FormalShoesItems.MyNecklace:
$base: Items.GenericHeadClothing
placementSlots:
- !append OutfitSlots.NecklaceShort.ent files that correspond to an .app file (ignore the ones that don't match).mag_std and mag_stdr)# Base
Items.Ley_Ajax_Base:
$base: Items.w_rifle_assault__militech_ajax__base1 # Tweak Record for the Barrel of the weapon
appearanceResourceName: ley_ajax_base_appfile # Name of your .app file as registered at the factory.csv
Items.Ley_Ajax_inline4:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Base
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline3: # Barrel part to be appended to the slotPartList
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Barrel
itemPartList:
- Items.Ley_Ajax_inline4# Mag
Items.Ley_Ajax_Mag:
$base: Items.w_rifle_assault__militech_ajax__mag_std
appearanceResourceName: ley_ajax_mag_appfile
Items.Ley_Ajax_inline6:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Mag
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline5:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Magazine
itemPartList:
- Items.Ley_Ajax_inline6
# Mag Reload
Items.Ley_Ajax_Mag_Reload:
$base: Items.w_rifle_assault__militech_ajax__mag_stdr
appearanceResourceName: ley_ajax_mag_reload_appfile
Items.Ley_Ajax_inline8:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Mag_Reload
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline7:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.MagazineEmpty
itemPartList:
- Items.Ley_Ajax_inline8
# Receiver
Items.Ley_Ajax_Rcv1:
$base: Items.w_rifle_assault__militech_ajax__rcv1
appearanceResourceName: ley_ajax_rcv1_appfile
Items.Ley_Ajax_inline10:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Rcv1
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline9:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Receiver
itemPartList:
- Items.Ley_Ajax_inline10# Presets
Items.Preset_Ley_Ajax_inline0:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Base
slot: AttachmentSlots.Barrel
itemPartList: []
Items.Preset_Ley_Ajax_inline1:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Mag
slot: AttachmentSlots.Magazine
itemPartList: []
Items.Preset_Ley_Ajax_inline2:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Mag_Reload
slot: AttachmentSlots.MagazineEmpty
itemPartList: []
Items.Preset_Ley_Ajax_inline3:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Rcv1
slot: AttachmentSlots.Receiver
itemPartList: []slotPartList:
- !append-once Items.Ley_Ajax_inline3 # Base
- !append-once Items.Ley_Ajax_inline5 # Mag
- !append-once Items.Ley_Ajax_inline7 # Mag Reload
- !append-once Items.Ley_Ajax_inline9 # Receiver
slotPartListPreset: # Presets for each part of your weapon
- !append-once Items.Preset_Ley_Ajax_inline0
- !append-once Items.Preset_Ley_Ajax_inline1
- !append-once Items.Preset_Ley_Ajax_inline2
- !append-once Items.Preset_Ley_Ajax_inline3 appearanceResourceName: ley_ajax_rifle_appfile
appearanceName: ley
visualTags: [ ley_ajax ]Items.Ley_Ajax_Tutorial:
$base: Items.Preset_Ajax_Default
appearanceResourceName: ley_ajax_rifle_appfile # Name of your lonely appfile as registered on the .csv
appearanceName: ley # Name of your appearance
visualTags: [ ley_ajax ] # The visualTag you've set up on the .app
displayName: LocKey("Ley_Ajax_Name") # From your localization file
localizedDescription: LocKey("Ley_Ajax_Description") # Also from localization, this is the text in the preview window in-game.
slotPartList:
- !append-once Items.Ley_Ajax_inline3 # Base
- !append-once Items.Ley_Ajax_inline5 # Mag
- !append-once Items.Ley_Ajax_inline7 # Mag Reload
- !append-once Items.Ley_Ajax_inline9 # Receiver
slotPartListPreset: # Presets for each part of your weapon
- !append-once Items.Preset_Ley_Ajax_inline0
- !append-once Items.Preset_Ley_Ajax_inline1
- !append-once Items.Preset_Ley_Ajax_inline2
- !append-once Items.Preset_Ley_Ajax_inline3
tags:
- !append-once IconicWeapon
statModifierGroups:
- !append-once Items.IconicQualityRandomization
statModifiers:
- !append-once Quality.IconicItem
# Base
Items.Ley_Ajax_Base:
$base: Items.w_rifle_assault__militech_ajax__base1 # Tweak Record for the Barrel of the weapon
appearanceResourceName: ley_ajax_base_appfile # Name of your .app file as registered at the factory.csv
Items.Ley_Ajax_inline4:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Base
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline3: # Barrel part to be appended to the slotPartList
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Barrel
itemPartList:
- Items.Ley_Ajax_inline4
# Mag
Items.Ley_Ajax_Mag:
$base: Items.w_rifle_assault__militech_ajax__mag_std
appearanceResourceName: ley_ajax_mag_appfile
Items.Ley_Ajax_inline6:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Mag
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline5:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Magazine
itemPartList:
- Items.Ley_Ajax_inline6
# Mag Reload
Items.Ley_Ajax_Mag_Reload:
$base: Items.w_rifle_assault__militech_ajax__mag_stdr
appearanceResourceName: ley_ajax_mag_reload_appfile
Items.Ley_Ajax_inline8:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Mag_Reload
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline7:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.MagazineEmpty
itemPartList:
- Items.Ley_Ajax_inline8
# Receiver
Items.Ley_Ajax_Rcv1:
$base: Items.w_rifle_assault__militech_ajax__rcv1
appearanceResourceName: ley_ajax_rcv1_appfile
Items.Ley_Ajax_inline10:
$type: gamedataItemPartListElement_Record
item: Items.Ley_Ajax_Rcv1
weight: 1
statModifierWeight: []
Items.Ley_Ajax_inline9:
$type: gamedataSlotItemPartListElement_Record
optionalProbabilityCurveName: ''
slot: AttachmentSlots.Receiver
itemPartList:
- Items.Ley_Ajax_inline10
# Preset
Items.Preset_Ley_Ajax_inline0:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Base
slot: AttachmentSlots.Barrel
itemPartList: []
Items.Preset_Ley_Ajax_inline1:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Mag
slot: AttachmentSlots.Magazine
itemPartList: []
Items.Preset_Ley_Ajax_inline2:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Mag_Reload
slot: AttachmentSlots.MagazineEmpty
itemPartList: []
Items.Preset_Ley_Ajax_inline3:
$type: gamedataSlotItemPartPreset_Record
itemPartPreset: Items.Ley_Ajax_Rcv1
slot: AttachmentSlots.Receiver
itemPartList: []


































MC_gun_iconic_description












LocKey#49794






Items.Preset_Sidewinder_Default: # item "code" for your weapon. use this when giving item.
$type: gamedataWeaponItem_Record # the type of record. (records need to be defined with either a $type or a $base)
ammo: Ammo.RifleAmmo # ammo type used (Fun Fact: Dex's Gun has ammo type - Items.Money)
baseEmptyReloadTime: 1.54999995 # base reload time when mag empty NOTE: DO NOT EDIT RELOAD SPEED HERE see statModifierGroups: Items.Base_Sidewinder_Handling_Stats
baseReloadTime: 1.54999995 # base reload time when mag is not empty NOTE: DO NOT EDIT RELOAD SPEED HERE see statModifierGroups: Items.Base_Sidewinder_Handling_Stats
damageType: DamageTypes.Physical # damage type
effectiveRangeFalloffCurve: StandardFalloff # damage fall of curve
evolution: WeaponEvolution.Smart # what type of weapon none, power, tech and smart for ranged weps
forcedMinHitReaction: -1
fxPackage: WeaponFxPackage.SmartRifle # visual effects used for bullets. trail, bullet hole, impact, etc
fxPackageQuickMelee: WeaponFxPackage.QuickMeleeFxPackage
hudIcon: HUDWeaponIcons.Sidewinder # hud icon used
IsIKEnabled: False # are inverse kinematics enabled.
manufacturer: WeaponManufacturer.Corporation # weapon manufacturer type. not sure if used ingame.
primaryTriggerMode: TriggerMode.FullAuto # trigger mode when hip firing and aiming if secondaryTriggerMode is not set.
projectileEaseOutCurveName: ProjectileEaseOut
rangedAttacks: Attacks.SmartBulletLowPackage # what type of bullet to fire. explosive, smart, projectile, standard hitscan, etc
triggerEffectName: te_wea_aim_mid
uninterruptibleEmptyReloadStart: 0.5 # point after which reload cannot be cancelled by other animations such as running. with empty mag
uninterruptibleReloadStart: 0.5 # point after which reload cannot be cancelled by other animations such as running. with non empty mag
useForcedTBHZOffset: False # Time before hit offset? used by npc
UseShootVFXOnlyOnFirstShot: False # if bullet vfx is used again when firing in non semi-auto
animFeatureName: WeaponData
animName: ui_garment_pose
animSetResource: ''
appearanceResourceName: Preset_Sidewinder_Default # used to set .app file used by weapon
audioName: wea_set_sidewinder # used to set weapon sounds not related to reloading and and first equip anim.
blueprint: Items.Base_Smart_AR_SMG_LMG_NoAttachments_Blueprint # "blueprint" used to create the gun. different versions for guns with no barrel or scope attachments. also generic ones for iconics
crosshair: Crosshairs.SmartGun # what crosshairs to use
deprecated: False # TODO. used with items from before v2.0?
dropObject: defaultItemDrop
enableNpcRPGData: True # if npc should use npcRPGData found below
entityName: weapon_root
equipArea: EquipmentArea.Weapon # equip area. see equipment.EX
friendlyName: w_rifle_assault_nokota_sidewinder # used to set player arm animations in first person see player_ma_fpp.ent and player_wa_fpp.ent. reload and first equip sounds are set in .anims files also. see weapon anim files beginning with pwa_ and pma_
garmentOffset: 0
icon: UIIcon.ItemIcon # Used when setting inventory icon
iconPath: '' # Used when setting inventory icon
isCached: False
isCoreCW: False
isCustomizable: False
isGarment: False
isPart: False # this is set to true in weapon parts such as scopes
isSingleInstance: False
itemCategory: ItemCategory.Weapon # item category used for inventory
itemSecondaryAction: ItemAction.Equip # second action shown when looking at weapon on the ground for example.
itemType: ItemType.Wea_Rifle # what type of item. used in inventory and perks i think? maybe affects animations?
localizedName: ''
mass: 20 # weight of weapon.
minigameInstance: minigame_v2.DefaultItemMinigame
npcRPGData: Items.Base_Sidewinder_inline1 # stats used when the weapon is equipped by an NPC
parentAttachmentType: ParentAttachmentType.Slot # used for weapon attachments such as scopes and muzzles
powerLevelDeterminedByParent: False # TODO. not used since 2.0?
quality: Quality.Random # default quality for weapon. CET ignores Quality.Random and always gives normal. Other quality settings work fine in CET and random works normally when found normally ingame.
qualityRestrictedByParent: False
replicateWhenNotActive: False
stateMachineName: Weapon # used by game logic.
upgradeCostMult: 1
useHeadgearGarmentAggregator: False # TODO. probably not used by weapons?
useNewSpawnMethod: False
usesVariants: False
savable: False
attacks: # used to set different types of projectiles that can be shot by the gun. not used in 2.0?
- Attacks.Bullet_GameEffect
...
- Attacks.ChimeraPowerMod_ExplosiveBulletEffect
gameplayDescription: LocKey(92674) # used to set the description when inspecting weapon.
ikOffset: {x: 0, y: 0, z: 0}
shootingPatternPackages: [] # used by npc
triggerModes: # trigger modes available to weapon. should have primary and secondary trigger modes here also
- TriggerMode.FullAuto
animationParameters: []
appearanceSuffixes: []
appearanceSuffixesOwnerOverride: []
attachmentSlots: [] # TODO. used by attachments such as scopes and muzzles
buyPrice: # price multipliers used when buying weapon.
- Price.BaseWeaponPrice
- Price.ItemQualityMultiplier
- Price.PlusTierMultiplier
- Price.BrokenItemPriceMult
- Price.IconicMultiplier
- Price.BuyPrice_StreetCred_Discount
- Price.AssaultRifleMultiplier
- Price.SmartWeapon
cameraForward: {x: 0, y: 0, z: 0}
cameraUp: {x: 0, y: 0, z: 0}
connections: []
displayName: LocKey(3599) # name of weapon
equipAreas: []
equipPrereqs: [] # TODO. used by game logic packages(GLP)?
gameplayRestrictions: # restrict weapon usage in certain situations.
- GameplayRestriction.VehicleCombatNoInterruptions
hairSkinnedMeshComponents: []
localizedDescription: LocKey(3600) # white text description when hovering over an item.
OnAttach: # used to apply effects to player and weapon whean equipping weapon. stamina regen speed, stagger when shooting, etc
- Items.Base_Assault_Rifle_inline0
- EquipmentGLP.MediumStaminaRegen
- EquipmentGLP.LightStaminaDelay
- Items.SmartWeaponTargetsPriorityQueues
OnEquip: []
OnLooted: []
parts: []
placementSlots: # slots in Which this item can be placed in. see equipmentEX?
- AttachmentSlots.WeaponRight
- AttachmentSlots.WeaponLeft
- AttachmentSlots.ItemSlotSniperRifle
- AttachmentSlots.ItemSlotSMG
- AttachmentSlots.ItemSlotTechRifle
- AttachmentSlots.ItemSlotHandgunLeftJackie
- AttachmentSlots.ItemSlotHandgunRightJackie
- AttachmentSlots.ItemSlotGenericMelee
- AttachmentSlots.ItemSlotHammer
- AttachmentSlots.ItemSlotKatana
- AttachmentSlots.ItemSlotKnifeRight
- AttachmentSlots.ItemSlotKnifeLeft
- AttachmentSlots.ItemSlotGenericRanged
- AttachmentSlots.ItemSlotHandgunRight
- AttachmentSlots.ItemSlotHandgunLeft
- AttachmentSlots.ItemSlotTechRifle
- AttachmentSlots.ItemSlotSMG
previewBBoxOverride: []
requiredSlots: []
sellPrice:
- Price.BaseWeaponPrice
- Price.ItemQualityMultiplier
- Price.PlusTierMultiplier
- Price.WeaponSellMultiplier
- Price.BrokenItemPriceMult
- Price.IconicMultiplier
- Price.AssaultRifleMultiplier
- Price.SmartWeapon
slotPartList: # what models to load when weapon has attachments and when it has mag inserted(or not)
- Items.Base_Sidewinder_inline2
- Items.Base_Sidewinder_inline4
- Items.Base_Sidewinder_inline6
- Items.Base_Sidewinder_inline8
slotPartListPreset: # same as above but specific to the preset of the weapon, also used to set attachment and mod slots
- Items.Preset_Sidewinder_Default_inline0
…
- Items.Preset_Sidewinder_Default_inline5
tags: # tags signalling the game about weapon being smart, melee, ranged, etc....
- Weapon
- RangedWeapon
- inventoryDoubleSlot
- Preload
- Weapon
- Rifle Assault
- Smart
- SmartWeapon
- Preload
- Weapon
- Rifle Assault
variants: []
visualTags: # visual tags used to set what look to use from the app file set in appearanceResoureName
- Default
effectors: []
objectActions:
- ItemAction.Drop
- ItemAction.Disassemble
- ItemAction.WeaponDisassemble
statModifierGroups: # this section is for actually modifying weapon stats
- Items.Base_Smart_Stats
- Items.Base_Smart_Assault_Rifle_No_Sway_Stats
- Items.Base_Assault_Rifle_RPG_Stats
- Items.Base_Assault_Rifle_Misc_Stats
- Items.Base_PlayerState_Spread_Stats
- Items.Base_Weapon_Damage_Type_Min_Max
- Items.Base_Weapon_Damage_Type_Physical
- Items.QualityRandomization
- Items.ItemPlusRandomizer_MaxQuality
- Items.ItemPlusRandomizer_Below_MaxQuality
- Items.WeaponModsWeights_On_Tier2Plus
- Items.WeaponModsWeights_On_Tier3Plus
- Items.WeaponModsWeights_On_Tier4Plus
- Items.WeaponModsWeights_On_Tier5Plus
- Items.WeaponModsWeights_On_Tier5PlusPlus
- Items.Base_Smart_Assault_Rifle_Mult_Stats
- Items.Base_Sidewinder_Technical_Stats # used to set: bullet amount fired, projectiles fired per bullet, smart weapon accuracy, fire
rate(cycle time), mag size, smart range
- Items.Base_Sidewinder_Handling_Stats # used to set: reload speed, weapon zoom, speed of first equip anim.
- Items.Base_Sidewinder_Recoil_Stats # used to set: recoil stats
- Items.Base_Sidewinder_SmartGun_Stats # used to set: smartgun accuracy, projectile stats(speed), lock on stats
- Items.Base_Sidewinder_SmartGun_SmartLink_Stats # used to set: smartlink requirement and how stats in Base_Sidewinder_SmartGun_Stats are affected by link
- Items.Base_Sidewinder_SmartGun_Projectile_Stats # used to set: projectile miss conditions and other stuff like spirals
- Items.Base_Sidewinder_Spread_Stats
- Items.Base_Sidewinder_Flags # unknown
- Items.Base_Sidewinder_Aim_Stats
- Items.Base_Sidewinder_Constant_Stats # more spread stats, firepower, effective range
- Items.Base_Sidewinder_Damage_Stats # used to set: DPS
statModifiers: # this section is primarily used to set stuff intrinsic to all weapons
- Items.Base_Weapon_inline0
…
- Items.Base_Weapon_inline149
statPools: [] # used to set stat pools like tech weapon charge and overheating
weakspots: []
position: {x: '0,000500000024', y: 0, z: '0,0900000036'}
price: Items.Base_Sidewinder_inline0
weaponVignetteRadius: 0.648199975
weaponEdgesSharpness: 0.495799989
weaponFarPlane_aim: 23.7000008
weaponFarPlane: 29.5
weaponEdgesSharpness_aim: 0.495799989
weaponVignetteCircular_aim: 0.174500003
offset: -0.100000001
safeActionDuration: 2
weaponVignetteIntensity_aim: 0.135700002
weaponNearPlane_aim: 12.4700003
weaponVignetteRadius_aim: 0.681400001
weaponNearPlane: 8.31000042
weaponVignetteIntensity: 0.135700002
weaponBlurIntensity_aim: 1
weaponVignetteCircular: 0
weaponBlurIntensity: 1
hide_nametag: TrueItems.Preset_Unity_Default: -> Remove this
Items.Hand_Of_Midas: -> Add this Game.AddToInventory("Items.Hand_Of_Midas",1) crosshair: Crosshairs.Simple # -> remove this
crosshair: Crosshairs.Tech_Round # <- add thisGame.AddToInventory("Items.Hand_Of_Midas",1)
Game.AddToInventory("Items.Preset_Unity_Default",1)Items.Hand_Of_Midas:
$base: Items.Preset_Unity_Default
# Just the properties we want to edit...
# OR
Items.Hand_Of_Midas:
$type: WeaponItem
# Every single property of the weapon...Items.Hand_Of_Midas:
$base: Items.Preset_Unity_Default
crosshair: Crosshairs.Tech_Roundlocalization:
onscreens:
en-us: midas_collection\localization\en-us.jsonItems.Hand_Of_Midas:
$base: Items.Preset_Unity_Default
crosshair: Crosshairs.Tech_Round
displayName: LocKey("MC_gun_name")
localizedDescription: LocKey("MC_gun_description")# Hand of Midas weapon tweak
Items.Hand_Of_Midas:
$base: Items.Preset_Unity_Default # $base makes it so all the properties are taken from the specified tweak (in this case, "Items.Preset_Unity_Default") and the properties specified in this tweak overwrite the parent.
crosshair: Crosshairs.Tech_Round # other crosshairs can be found by looking for "Crosshairs." in Tweak Browser
displayName: LocKey("MC_gun_name") # name of the gun (will be fetched from "LocKey#MC_gun_name" secondary key in "en-us.json")
localizedDescription: LocKey("MC_gun_description") # description of the gun (can be seen when previewing the gun from inventory with "V" key)
tags:
- !append IconicWeapon # prevent the gun from being dissassembled
statModifiers:
- !append Quality.IconicItem # makes the weapon iconic
statModifierGroups:
- !append Items.IconicQualityRandomization # necessary for ingame upgrade
- !remove Items.QualityRandomization # to prevent stacking with the previousItems.Hand_Of_Midas:
#...
blueprint: Items.Iconic_Ranged_Weapon_Blueprint # blueprint decides what kind of attachments/mods are allowed on a weaponItems.Hand_Of_Midas:
#...
quality: Quality.Rare # minimum item qualityItems.Hand_Of_Midas:
#...
buyPrice:
- Price.Hand_Of_Midas
- Price.BuyPrice_StreetCred_Discount
sellPrice:
- Price.Hand_Of_Midas
- Price.WeaponSellMultiplier
# Static price for Hand of Midas
Price.Hand_Of_Midas:
$type: ConstantStatModifier
value: 100000
modifierType: Additive
statType: BaseStats.PriceWilsonWeaponMod : IconicWeaponModBase
{
OnAttach =
[
"Items.WilsonWeaponModAbility"
];
statModifiers +=
[
{
statType = "BaseStats.ReloadTimeBonus";
modifierType = "Additive";
value = -0.1f;
} : ConstantStatModifier
];
}WilsonWeaponModAbility : IconicWeaponModAbilityBase
{
UIData =
{
iconPath = "ability_offensive";
localizedDescription = "LocKey#50743";
};
effectors =
[
{
prereqRecord = "Prereqs.ProcessHitTriggered";
percentMult = 0.25f;
unitThreshold = 10f;
} : MultiplyDamageWithVelocity,
{
prereqRecord = "Perks.IsHitQuickMelee";
value = 1.5f;
} : MultiplyDamage
];
}# Hand of Midas weapon tweak
Items.Hand_Of_Midas:
# your other properties - cut out for readability
slotPartListPreset: # attachments & mods
- !append
$type: SlotItemPartPreset
itemPartPreset: Items.Cranial_Cashback_Mod # iconic mod
slot: AttachmentSlots.IconicWeaponModLegendary # Hand of Midas Iconic mod
Items.Cranial_Cashback_Mod:
$base: Items.IconicWeaponModBase
OnAttach:
- Items.Cranial_Cashback
statModifiers:
- !append
$type: ConstantStatModifier
statType: BaseStats.ReloadTimeBonus # modifies reload time (without influence to DamagePerHit)
modifierType: Additive
value: -0.20
- !append
$type: ConstantStatModifier
statType: BaseStats.MagazineCapacityBonus # multiplier on total mag size (without influence to DamagePerHit)
modifierType: Additive
value: 0.34
- !append
$type: ConstantStatModifier
statType: BaseStats.DamagePerHit # Direct change to damage per hit
modifierType: Multiplier
value: 1.1# Hand of Midas Iconic mod ability
Items.Cranial_Cashback:
$base: Items.IconicWeaponModAbilityBase
# effectors:
# - Effectors.Punish_Miss
# - Effectors.Heal_On_Headshot
UIData:
$type: GameplayLogicPackageUIData
localizedDescription: LocKey("MC_gun_iconic_description") # iconic description shown in yellow text when hovering over a weapon# Hand of Midas weapon tweak
Items.Hand_Of_Midas:
#...
slotPartListPreset: # attachments & mods
- !append-once
$type: SlotItemPartPreset
itemPartPreset: Items.Cranial_Cashback_Mod # iconic mod
slot: AttachmentSlots.IconicWeaponModLegendary
# Hand of Midas Iconic mod
Items.Cranial_Cashback_Mod:
$base: Items.IconicWeaponModBase
OnAttach:
- Items.Cranial_Cashback
statModifiers:
- $type: ConstantStatModifier
statType: BaseStats.ReloadTimeBonus # modifies reload time (without influence to DamagePerHit)
modifierType: Additive
value: -0.20
- $type: ConstantStatModifier
statType: BaseStats.MagazineCapacityBonus # multiplier on mag size (without influence to DamagePerHit)
modifierType: Additive
value: 0.34
- $type: ConstantStatModifier
statType: BaseStats.DamagePerHit # Direct change to damage per hit
modifierType: Multiplier
value: 1.1
# Hand of Midas Iconic mod ability
Items.Cranial_Cashback:
$base: Items.IconicWeaponModAbilityBase
# effectors:
# - Effectors.Punish_Miss
# - Effectors.Heal_On_Headshot
UIData:
$type: GameplayLogicPackageUIData
localizedDescription: LocKey("MC_gun_iconic_description") # iconic description shown in yellow text when hovering over a weaponItems.MemoryReplenishmentEffector:
$type: ModifyStatPoolValueEffector
setValue: False
usePercent: True
effectorClassName: ModifyStatPoolValueEffector
prereqRecord: Items.MemoryReplenishmentEffector_inline0
removeAfterActionCall: False
removeAfterPrereqCheck: False
statPoolUpdates:
- Items.MemoryReplenishmentEffector_inline4
statModifierGroups: []Effectors.Heal_On_Headshot:
$type: ModifyStatPoolValueEffector
setValue: False
usePercent: True
effectorClassName: ModifyStatPoolValueEffector
prereqRecord: Items.MemoryReplenishmentEffector_inline0
removeAfterActionCall: False
removeAfterPrereqCheck: False
statPoolUpdates:
- $type: StatPoolUpdate
statPoolType: BaseStatPools.Health
statPoolValue: 80
statModifierGroups: []# Prereq to check if headshot & target is alive and hit with a ranged weapon
Prereqs.Is_Target_Alive_And_Headshot:
$type: HitPrereq
callbackType: HitTriggered
ignoreSelfInflictedPressureWave: True
isSynchronous: True
pipelineStage: Process
pipelineType: Damage
prereqClassName: HitTriggeredPrereq # how to refer to it later - Prereqs.HitTriggeredPrereq
conditions:
- Perks.IsHitTargetAlive_inline2 # hit target is alive (health != 0)
- Perks.HitIsBodyPartHead_inline0 # headshot condition
- Prereqs.Is_Attack_Ranged # condition to check if it's the bullet hitting the target and not a quick melee
- Prereqs.Is_Weapon_Ranged # condition to check that the gun is source of damage and not a grenade
processMiss: False # process shots that hit npcs only# Condition to check if attack type is ranged
Prereqs.Is_Attack_Ranged:
$type: HitPrereqCondition
invert: False
onlyOncePerShot: True
type: Prereqs.AttackType
attackType: Ranged
# Condition to check if weapon type is ranged
Prereqs.Is_Weapon_Ranged:
$type: HitPrereqCondition
invert: False
onlyOncePerShot: True
type: Prereqs.WeaponType
weaponType: Ranged# Effector to heal player if they hit a headshot
Effectors.Heal_On_Headshot:
$type: ModifyStatPoolValueEffector
prereqRecord: Prereqs.Is_Target_Alive_And_Headshot
usePercent: False
statPoolUpdates:
- $type: StatPoolUpdate
statPoolType: BaseStatPools.Health
statPoolValue: 80# Effector to inflict damage on player when they shoot
Effectors.Punish_Miss:
$type: ModifyStatPoolValueEffector
prereqRecord: Prereqs.Has_Player_Shot
usePercent: False
statPoolUpdates:
- $type: StatPoolUpdate
statPoolType: BaseStatPools.Health
statPoolValue: -20
# Prereq to check if the player has shot (bug - currently detects if a player has hit anything, not if shot)
Prereqs.Has_Player_Shot:
$type: HitPrereq
callbackType: HitTriggered
ignoreSelfInflictedPressureWave: True
isSynchronous: True
pipelineStage: PreProcess
pipelineType: All
prereqClassName: HitOrMissTriggeredPrereq
processMiss: True # process shots that miss npcs
conditions:
- Prereqs.Is_Attack_Ranged # condition to check if it's the bullet hitting the target and not a quick melee
- Prereqs.Is_Weapon_Ranged # condition to check that the gun is source of damage and not a grenade# Hand of Midas weapon tweak
Items.Hand_Of_Midas:
$base: Items.Preset_Unity_Default # $base makes it so all the properties are taken from the specified tweak (in this case, "Items.Preset_Unity_Default") and the properties specified in this tweak overwrite the parent.
blueprint: Items.Iconic_Ranged_Weapon_Blueprint # blueprint decides what kind of attachments/mods are allowed on a weapon
crosshair: Crosshairs.Tech_Round # other crosshairs can be found by looking for "Crosshairs." in Tweak Browser
displayName: LocKey("MC_gun_name") # name of the gun (will be fetched from "LocKey#MC_gun_name" secondary key in "en-us.json")
localizedDescription: LocKey("MC_gun_description") # description of the gun (can be seen when previewing the gun from inventory with "V" key)
quality: Quality.Rare # minimum item quality
tags:
- !append IconicWeapon # prevent the gun from being dissassembled
statModifiers: # stats for a weapon - reload time/aim speed/magazine size/recoil kick/damage per second/etc.
- !append Quality.IconicItem # makes the weapon iconic
statModifierGroups: # stats for a weapon also, but grouped (generally by category)
- !append Items.IconicQualityRandomization # necessary for ingame upgrade
- !remove Items.QualityRandomization # to prevent stacking with the previous
slotPartListPreset: # attachments & mods
- !append
$type: SlotItemPartPreset
itemPartPreset: Items.Cranial_Cashback_Mod # iconic mod
slot: AttachmentSlots.IconicWeaponModLegendary
buyPrice:
- Price.Hand_Of_Midas
- Price.BuyPrice_StreetCred_Discount
sellPrice:
- Price.Hand_Of_Midas
- Price.WeaponSellMultiplier
Price.Hand_Of_Midas:
$type: ConstantStatModifier
value: 100000
modifierType: Additive
statType: BaseStats.Price
Items.Cranial_Cashback_Mod:
$base: Items.IconicWeaponModBase
OnAttach:
- Items.Cranial_Cashback
statModifiers:
- !append
$type: ConstantStatModifier
statType: BaseStats.ReloadTimeBonus # modifies reload time (without influence to DamagePerHit)
modifierType: Additive
value: -0.20
- !append
$type: ConstantStatModifier
statType: BaseStats.MagazineCapacityBonus # multiplier on mag size (without influence to DamagePerHit)
modifierType: Additive
value: 0.34
- !append
$type: ConstantStatModifier
statType: BaseStats.DamagePerHit # Direct change to damage per hit
modifierType: Multiplier
value: 1.1
Items.Cranial_Cashback:
$base: Items.IconicWeaponModAbilityBase
effectors:
- Effectors.Punish_Miss
- Effectors.Heal_On_Headshot
UIData:
$type: GameplayLogicPackageUIData
localizedDescription: LocKey("MC_gun_iconic_description") # iconic description shown in yellow text when hovering over a weapon
# -------------------------------------------------------------------------------------------------------------------------
# Effector to inflict damage on player when they shoot
Effectors.Punish_Miss:
$type: ModifyStatPoolValueEffector
prereqRecord: Prereqs.Has_Player_Shot
usePercent: False
statPoolUpdates:
- $type: StatPoolUpdate
statPoolType: BaseStatPools.Health
statPoolValue: -20
# Effector to heal player if they hit a headshot
Effectors.Heal_On_Headshot:
$type: ModifyStatPoolValueEffector
prereqRecord: Prereqs.Is_Target_Alive_And_Headshot
usePercent: False
statPoolUpdates:
- $type: StatPoolUpdate
statPoolType: BaseStatPools.Health
statPoolValue: 80
# -------------------------------------------------------------------------------------------------------------------------
# Prereq to check if the player has shot (bug - currently detects if a player has hit anything, not if shot)
Prereqs.Has_Player_Shot:
$type: HitPrereq
callbackType: HitTriggered
ignoreSelfInflictedPressureWave: True
isSynchronous: True
pipelineStage: PreProcess
pipelineType: All
prereqClassName: HitOrMissTriggeredPrereq
processMiss: True # process shots that miss npcs
conditions:
- Prereqs.Is_Attack_Ranged # condition to check if it's the bullet hitting the target and not a quick melee
- Prereqs.Is_Weapon_Ranged # condition to check that the gun is source of damage and not a grenade
# Prereq to check if headshot & target is alive and hit with a ranged weapon
Prereqs.Is_Target_Alive_And_Headshot:
$type: HitPrereq
callbackType: HitTriggered
ignoreSelfInflictedPressureWave: True
isSynchronous: True
pipelineStage: Process
pipelineType: Damage
prereqClassName: HitTriggeredPrereq
conditions:
- Perks.IsHitTargetAlive_inline2 # hit target is alive (health != 0)
- Perks.HitIsBodyPartHead_inline0 # headshot condition
- Prereqs.Is_Attack_Ranged # condition to check if it's the bullet hitting the target and not a quick melee
- Prereqs.Is_Weapon_Ranged # condition to check that the gun is source of damage and not a grenade
processMiss: False # process shots that hit npcs only
# -------------------------------------------------------------------------------------------------------------------------
# Condition to check if attack type is ranged
Prereqs.Is_Attack_Ranged:
$type: HitPrereqCondition
invert: False
onlyOncePerShot: True
type: Prereqs.AttackType
attackType: Ranged
# Condition to check if weapon type is ranged
Prereqs.Is_Weapon_Ranged:
$type: HitPrereqCondition
invert: False
onlyOncePerShot: True
type: Prereqs.WeaponType
weaponType: Ranged# Hand of Midas weapon tweak
Items.Hand_Of_Midas:
# ...
audioName: wea_set_liberty_dex
# ...How does the ancient magic work?

DynamicAppearance, without S.



Items.manavortex_my_custom_shirt_$(base_color)_$(secondary):
$base: Items.TShirt
$instances:
- {base_color: black, secondary: samurai}
- {base_color: black, secondary: witcher}
- {base_color: black, secondary: galaxy}
- {base_color: white, secondary: samurai}
- {base_color: white, secondary: witcher}
- {base_color: white, secondary: galaxy}
- {base_color: red, secondary: samurai}
- {base_color: red, secondary: witcher}
- {base_color: red, secondary: galaxy}
appearanceName: my_custom_shirt_!$(base_color)+$(secondary)
entityName: my_custom_shirt_factory_name
localizedDescription: LocKey#my_custom_shirt_i18n_desc
displayName: LocKey#my_custom_shirt_i18n_$(base_color)_$(secondary)
quality: Quality.Legendary
icon:
atlasResourcePath: manavortex\my_archive_xl_item\my_custom_shirt\my_custom_shirt_icons.inkatlas
atlasPartName: my_custom_shirt_$(base_color)_$(secondary)
statModifiers:
- !append Quality.IconicItem
- !append Character.ScaleToPlayerLevel
appearanceSuffixes: []
statModifierGroups:
- !append-once Items.IconicQualityRandomization
placementSlots: OutfitSlots.TorsoInner
Items.manavortex_my_custom_shirt_$(base_color)_$(secondary):
$instances:
- {base_color: black, secondary: samurai} # Items.manavortex_my_custom_shirt_black_samurai
- {base_color: black, secondary: witcher} # Items.manavortex_my_custom_shirt_black_witcher
- {base_color: black, secondary: galaxy} # Items.manavortex_my_custom_shirt_black_galaxy
- {base_color: white, secondary: samurai} # Items.manavortex_my_custom_shirt_white_samurai
- {base_color: white, secondary: witcher} # Items.manavortex_my_custom_shirt_white_witcher
- {base_color: white, secondary: galaxy} # Items.manavortex_my_custom_shirt_white_galaxy
- {base_color: red, secondary: samurai} # Items.manavortex_my_custom_shirt_red_samurai
- {base_color: red, secondary: witcher} # Items.manavortex_my_custom_shirt_red_witcher
- {base_color: red, secondary: galaxy} # Items.manavortex_my_custom_shirt_red_galaxyGame.AddToInventory("Items.manavortex_my_custom_shirt_black_samurai")
Game.AddToInventory("Items.manavortex_my_custom_shirt_black_witcher")
Game.AddToInventory("Items.manavortex_my_custom_shirt_black_galaxy")
Game.AddToInventory("Items.manavortex_my_custom_shirt_white_samurai")
Game.AddToInventory("Items.manavortex_my_custom_shirt_white_witcher")
Game.AddToInventory("Items.manavortex_my_custom_shirt_white_galaxy")
Game.AddToInventory("Items.manavortex_my_custom_shirt_red_samurai")
Game.AddToInventory("Items.manavortex_my_custom_shirt_red_witcher")
Game.AddToInventory("Items.manavortex_my_custom_shirt_red_galaxy")displayName: my_custom_shirt_i18n_$(base_color)_$(secondary)
$instances:
- {base_color: black, secondary: samurai} # my_custom_shirt_i18n_black_samurai
- {base_color: black, secondary: witcher} # my_custom_shirt_i18n_black_witcher
- {base_color: black, secondary: galaxy} # my_custom_shirt_i18n_black_galaxy
- {base_color: white, secondary: samurai} # my_custom_shirt_i18n_white_samurai
- {base_color: white, secondary: witcher} # my_custom_shirt_i18n_white_witcher
- {base_color: white, secondary: galaxy} # my_custom_shirt_i18n_white_galaxy
- {base_color: red, secondary: samurai} # my_custom_shirt_i18n_red_samurai
- {base_color: red, secondary: witcher} # my_custom_shirt_i18n_red_witchericon:
atlasResourcePath: manavortex\my_archive_xl_item\my_custom_shirt\my_custom_shirt_icons.inkatlas
atlasPartName: my_custom_shirt_$(base_color)_$(secondary)
$instances:
- {base_color: black, secondary: samurai} # my_custom_shirt_i18n_black_samurai
- {base_color: black, secondary: witcher} # my_custom_shirt_i18n_black_witcher
- {base_color: black, secondary: galaxy} # my_custom_shirt_i18n_black_galaxy
- {base_color: white, secondary: samurai} # my_custom_shirt_i18n_white_samurai
- {base_color: white, secondary: witcher} # my_custom_shirt_i18n_white_witcher
- {base_color: white, secondary: galaxy} # my_custom_shirt_i18n_white_galaxy
- {base_color: red, secondary: samurai} # my_custom_shirt_i18n_red_samurai
- {base_color: red, secondary: witcher} # my_custom_shirt_i18n_red_witcher$instances:
- { base_color: white, ribbons: red }
- { base_color: black, ribbons: red }
- { base_color: black, ribbons: blue }
appearanceName: root_entity_dynamic_appearance_!$(base_color)+$(ribbons)entSkinnedMeshComponent: MyJacketDecals!white_red
entSkinnedMeshComponent: MyJacketDecals!black_red
entSkinnedMeshComponent: MyJacketDecals!black_blue
entSkinnedMeshComponent: MyJacketDecals