Jump to content

Notes or Tutorial on Making An Item?


Recommended Posts

I've seen Zilbest's tutorial which is helpful but there are 1400 lines of code on the item I'm looking at (an item from the Reliquary mod) and it's hard to even skim through it all to see what really needs to be changed.  Anyone have any notes or guides on making a badass weapon with flames and special powers?

 

I'm sure everyone wants to make new items, and if we don't make it easily understandable, then we'll never reach peak animu mod culture for this game.

  • Like 1
Link to comment
Share on other sites

Peardox has put together a great tutorial in this thread, check it out: https://forums.obsidian.net/topic/103840-first-mod-spoilers/

 

Obsidian also has a ton of documentation here, which can be useful: https://eternity.obsidian.net/game-data-formats/concepts

 

Specific info on items: https://eternity.obsidian.net/game-data-formats/components#itemcomponent

 

General notes for modifying/creating an item:

 

Debugname: make this simple, at least when you're working on it. You can test an item in-game by opening the console with the ~ key, typing iroll20s and hitting Enter, then opening the console again and typing giveitem [debugname]

 

AttackID: This is what a weapon does when it autoattacks, naturally, but also it's what any item does when it's used. When you see your character drinking their potion, or hulking out when they Frenzy, those are attacks. A healing spell is an attack! An attack is its own separate "component" which can do damage and/or cause status effects (another separate component)

 

Itemmods: These are the enchantments/properties of an item. An itemmod is a component with an ability or status affect attached to it- equipping a weapon with the itemmod applies the attached status effect to you, or grants you the attached ability. You can use existing itemmods or create your own.

 

Other than that, honestly the best advice I can think of is to open up an existing mod, tinker around with some values, and then check out the item in-game and see what the changes look like.

 

Useful links:

 

Those long strings of letters and numbers are UUIDs, and every item, attack, ability, whatever, needs one. Get a randomly-generated one for anything you create at https://www.uuidgenerator.net/

 

When you're ready to test your mod, before loading up the game, ctrl+c your entire code file and ctrl+v it here: https://jsonlint.com/ it'll let you know if there are any errors.

 

I recommend testing frequently, because that way if something breaks it'll be easier to figure out what!

  • Like 1
Link to comment
Share on other sites

Thanks House.  The problem with the examples posted here already is that they do not change the items significantly.  I've already come across problems.  My IDs match, my json and Strings are valid.  I always get this error in the output_log:

 
ERROR: Failed to load game data bundle C:/GOG Games/Pillars of Eternity II Deadfire/PillarsOfEternityII_Data/override/Sword of Slaying\design\gamedata\swordslaying.gamedatabundle.


(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

 

How do you review your code for a weapon to know it's accurate?

 

I've created a sword that will give extra % damage bonuses each hit, but it reduces your Will each hit also, stackable up to 30 times.

 

I used your godclub as a base, and changed it to reflect the basic properties from the normal sword code.  I used the Hel Beckoning sword for graphics references.  For the special effects, I altered a version of Relentless_SE_Will and it's parent special effect, Relentless_SE_ApplyOnEvent.

 

What's interesting is that I could cut out all of the special effect code and just make a legendary sword without an issue, but it was the extra good stuff that didn't work.  I'm sure you've had these problems before.  How did you think about fixing them?

 

(Note: I changed the code to apply on enemies to be safe for testing and haven't added the +%dmg effect yet)

(bd418c6c-2544-4fb9-bde9-cd0f2207d2cf = Legendary itemmod)

{
	"GameDataObjects": [{
			"$type": "Game.GameData.WeaponGameData, Assembly-CSharp",
			"DebugName": "swordslaying",
			"ID": "632aba8a-0a38-484b-adc2-638a3a8aee10",
			"Components": [
				{
					"$type": "Game.GameData.ItemComponent, Assembly-CSharp",
					"DisplayName": 305149951,
					"DescriptionText": 305149952,
					"FilterType": "Weapons",
					"InventoryAudioEventListID": "d9ef8ec9-f1fb-4d0b-88b7-49d7c0310019",
					"IsQuestItem": "false",
					"IsIngredient": "false",
					"IsCurrency": "false",
					"IsAdventuringItem": "false",
					"CanSellForFullValue": "false",
					"MaxStackSize": 1,
					"NeverDropAsLoot": "true",
					"CanBePickpocketed": "true",
					"IsUnique": "true",
					"Value": 25,
					"IconTextureSmall": "gui/icons/items/weapons/sword/sword_basic_s.png",
					"IconTextureLarge": "gui/icons/items/weapons/sword/sword_basic_l.png",
					"PencilSketchTexture": "",
					"InspectOnUseButton": [],
					"IsPlaceholder": "false"
				},
				{
					"$type": "Game.GameData.EquippableComponent, Assembly-CSharp",
					"EquipmentType": "Sword",
					"EquipmentSlot": "AnyWeapon",
					"AppearancePiece": {
						"ModelVisualDataPath": "prefabs/items/appearance/weapons/sword/a_sword01.asset"
					},
					"ItemModsIDs": [
						"bd418c6c-2544-4fb9-bde9-cd0f2207d2cf",
						"8b93c088-542b-46a8-a5a3-df0e74854157"
					],
					"OnEquipVisualEffects": [
						{
							"VisualEffect": "prefabs/effects/items/weapons/fx_hel_beckoning.prefab",
							"AttachPoint": "Fx_Bone_01",
							"EmissiveColor": {
								"A": 0,
								"R": 0,
								"G": 0,
								"B": 1
							},
							"EmissiveGlowScale": 0.5
						}
					],
					"RestrictedToClassIDs": [],
					"RestrictedToPlayer": "false",
					"EquipConditionals": {
                        "Operator": 0,
                        "Components": []
                    },
					"ProficientAbilityID": "e56c9809-5046-48a8-9334-491b053c79a7",
					"CannotUnequip": "false",
					"ItemRendererPrefab": "prefabs/itemrenderers/genericitemrenderer.prefab",
					"ItemModel": "art/character/weapons/sword/sword01/w_sword01.fbx",
					"AnimationController": "",
					"PaperdollOverrideRenderer": "",
					"AttackSummonID": "00000000-0000-0000-0000-000000000000",
					"CannotSheathe": "false",
					"PropVisualEffects": []
				},
				{
					"$type": "Game.GameData.WeaponComponent, Assembly-CSharp",
					"Stance": "OneHanded",
					"AnimationStanceID": "42de436a-5f52-4bc5-8310-076eb320abc4",
					"StatusEffectsOnLaunchIDs": [],
					"IsDisplayedWhenAlternate": "true",
					"IsUniversalType": "false",
					"AttackID": "0426199b-2065-4cd6-8618-e3a84cc79648",
					"NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
					"ForceBackScabbard": "false",
					"ScabbardAppearancePiece": {
						"ModelVisualDataPath": "prefabs/items/appearance/weapons/sword/a_sword01_scabbard.asset"
					},
					"ScabbardRendererPrefab": "prefabs/itemrenderers/genericitemrenderer.prefab",
					"ScabbardModel": "",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000"
				}
			]
		},
		{
			"$type": "Game.GameData.AttackMeleeGameData, Assembly-CSharp",
			"DebugName": "SwordSlayingAttack",
			"ID": "0426199b-2065-4cd6-8618-e3a84cc79648",
			"Components": [
				{
					"$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp",
					"KeywordsIDs": [
						"7de64ef2-2625-43a7-b66f-76d853b8fd80"
					],
					"AttackDistance": 0.75,
					"MinAttackDistance": 0,
					"AttackVariationID": "536366a9-5173-415f-89a6-be3127e0fb68",
					"UseParentEquippableHand": "false",
					"CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9",
					"RecoveryTimeID": "9d15e1c1-c6e1-4b25-bc1d-bf3707f6f534",
					"ImpactDelay": 0,
					"ForcedTarget": "None",
					"AffectedTargetType": "All",
					"AffectedTargetConditional": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"AffectedTargetDeathState": "Alive",
					"HostilityOverride": "Default",
					"PushDistance": 0,
					"FaceTarget": "true",
					"AccuracyBonus": 0,
					"PenetrationRating": 6,
					"DamageData": {
						"DamageType": "Slash",
						"AlternateDamageType": "Pierce",
						"Minimum": 13,
						"Maximum": 19,
						"DamageProcs": []
					},
					"Require****Object": "true",
					"StatusEffectKeywordsIDs": [],
					"StatusEffectsIDs": [],
					"RandomizeStatusEffect": "false",
					"CanGraze": "false",
					"CanCrit": "true",
					"DefendedBy": "Deflect",
					"AfflictionsDefendedBy": "None",
					"AfflictionApplicationModifier": "None",
					"SubstituteHitVisualEffect": "",
					"VisualEffects": [],
					"AttackOnImpactID": "00000000-0000-0000-0000-000000000000",
					"ExtraAttackID": "00000000-0000-0000-0000-000000000000",
					"LaunchBone": "RightWeapon",
					"HitBone": "Chest",
					"OnHitShakeDuration": "None",
					"OnHitShakeStrength": "None",
					"NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
					"AllReactNoise": "false",
					"InterruptsOn": "None",
					"InterruptType": "Normal",
					"TargetAngle": 0,
					"ApplyOnceOnly": "false",
					"PathsToTarget": "true",
					"HideFromCombatLog": "false",
					"AdditionalAttackOnTooltip": "false",
					"DoesNotApplyDamage": "false",
					"TreatAsWeapon": "false",
					"BounceData": {
						"Bounces": 0,
						"Multiplier": 0.5,
						"Range": 4,
						"InRangeOrder": "true",
						"NoRepeatTargets": "false",
						"AlwaysBounceAtEnemies": "true",
						"Delay": 0,
						"NeverBounce": "false"
					}
				},
				{
					"$type": "Game.GameData.AttackMeleeComponent, Assembly-CSharp",
					"EngagementRadius": 1,
					"IsUnarmed": "false"
				}
			]
		},
		{
			"$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
			"DebugName": "swordslayingwill_ItemMod",
			"ID": "bd418c6c-2544-4fb9-bde9-cd0f2207d2cf",
			"Components": [
				{
					"$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
					"DisplayName": 305149953,
					"HideFromUI": "false",
					"EnchantCategory": "None",
					"Cost": 3,
					"DisplayEvenIfCostZero": "true",
					"CursesItem": "false",
					"StatusEffectsOnEquipIDs": [
					],
					"StatusEffectsOnLaunchIDs": [],
					"StatusEffectsOnAttackIDs": ["a6d9fff1-c99e-4d3e-9278-64d0dfe260b2"],
					"AbilityModsOnEquipIDs": [],
					"OnEquipVisualEffects": [],
					"DamageProcs": [],
					"AbilitiesOnEquipIDs": []
				}
			]
		},
		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "swordslayingwill_SE_ApplyOnEvent",
			"ID": "a6d9fff1-c99e-4d3e-9278-64d0dfe260b2",
			"Components": [
				{
					"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
					"StatusEffectType": "ApplyStatusEffectToEnemyOnEvent",
					"OverrideDescriptionString": 305149954,
					"UseStatusEffectValueAs": "None",
					"BaseValue": -3,
					"DynamicValue": {
						"Stat": "None",
						"SkillDataID": "00000000-0000-0000-0000-000000000000",
						"ClassID": "00000000-0000-0000-0000-000000000000",
						"MultiplyBy": 1,
						"Operator": "Add"
					},
					"KeywordsIDs": [],
					"DurationType": "Infinite",
					"Duration": 1,
					"MaxStackQuantity": 0,
					"ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
					"ApplicationType": "ApplyOnStart",
					"IntervalRateID": "00000000-0000-0000-0000-000000000000",
					"StackedChildrenApplyEffects": "false",
					"ApplicationPrerequisites": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"TriggerAdjustment": {
						"TriggerOnEvent": "None",
						"TriggerOffEvent": "None",
						"ValidateWithAttackFilter": "false",
						"ParamValue": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0,
						"ResetTriggerOnEffectTimeout": "false",
						"MaxTriggerCount": 30,
						"IgnoreMaxTriggerCount": "false",
						"RemoveEffectAtMax": "false",
						"ChanceToTrigger": 1
					},
					"PowerLevelScaling": {
						"UseCharacterLevel": "false",
						"BaseLevel": 0,
						"LevelIncrement": 1,
						"MaxLevel": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0
					},
					"IsHostile": "false",
					"ClearOnCombatEnd": "false",
					"ClearOnRest": "false",
					"ClearOnFoodRest": "false",
					"ClearWhenAttacks": "false",
					"ClearOnDeath": "false",
					"HideFromCombatTooltip": "true",
					"HideFromCombatLog": "false",
					"HideFromUI": "false",
					"VisualEffects": [],
					"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
					"AttackFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Range": "None",
						"ClassTypeID": "00000000-0000-0000-0000-000000000000",
						"Source": "ParentEquippable",
						"DefendedBy": "None",
						"Empowered": "false",
						"Disengagement": "false",
						"Stealthed": "false",
						"UseStealthLinger": "false",
						"PowerLevel": 0,
						"PowerLevelOperator": "EqualTo",
						"ChanceToApply": 1,
						"AttackHostility": "Default"
					},
					"AttackTargetFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Race": "None",
						"IsKith": "true",
						"HealthPercentage": 0,
						"HealthOperator": "EqualTo",
						"Distance": 0,
						"DistanceOperator": "EqualTo",
						"HasDOT": "false",
						"IsMarked": "false",
						"TargetHostility": "Default"
					},
					"ExtraValue": 90,
					"OverridePenetration": 0,
					"DamageTypeValue": "All",
					"KeywordValueID": "00000000-0000-0000-0000-000000000000",
					"RaceValue": "None",
					"StatusEffectTypeValue": "None",
					"ItemValueID": "00000000-0000-0000-0000-000000000000",
					"AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
					"StatusEffectsValueIDs": ["f67a23b2-b38b-490b-8000-b4127e1d7ed2]"],
					"AttackValueID": "00000000-0000-0000-0000-000000000000",
					"AttackOverrideValue": "None",
					"EventValue": "OnScoringGrazeHitOrCriticalHit",
					"ClassValueID": "00000000-0000-0000-0000-000000000000",
					"WeaponTypeValue": "None",
					"AttackHitType": "None",
					"SkillValueID": "00000000-0000-0000-0000-000000000000",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000",
					"BedRestDaysMinimum": 0,
					"BedRestDaysMaximum": 0
				}
			]
		},
		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "swordslaying_SE_will",
			"ID": "f67a23b2-b38b-490b-8000-b4127e1d7ed2",
			"Components": [
				{
					"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
					"StatusEffectType": "Will",
					"OverrideDescriptionString": -1,
					"UseStatusEffectValueAs": "None",
					"BaseValue": -3,
					"DynamicValue": {
						"Stat": "None",
						"SkillDataID": "00000000-0000-0000-0000-000000000000",
						"ClassID": "00000000-0000-0000-0000-000000000000",
						"MultiplyBy": 1,
						"Operator": "Add"
					},
					"KeywordsIDs": [],
					"DurationType": "UseDurationTime",
					"Duration": 90,
					"MaxStackQuantity": 30,
					"ApplicationBehavior": "StackIfAlreadyApplied",
					"ApplicationType": "ApplyOnStart",
					"IntervalRateID": "00000000-0000-0000-0000-000000000000",
					"StackedChildrenApplyEffects": "false",
					"ApplicationPrerequisites": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"TriggerAdjustment": {
						"TriggerOnEvent": "None",
						"TriggerOffEvent": "None",
						"ValidateWithAttackFilter": "false",
						"ParamValue": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0,
						"ResetTriggerOnEffectTimeout": "false",
						"MaxTriggerCount": 0,
						"IgnoreMaxTriggerCount": "false",
						"RemoveEffectAtMax": "false",
						"ChanceToTrigger": 1
					},
					"PowerLevelScaling": {
						"UseCharacterLevel": "false",
						"BaseLevel": 0,
						"LevelIncrement": 1,
						"MaxLevel": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0
					},
					"IsHostile": "true",
					"ClearOnCombatEnd": "false",
					"ClearOnRest": "false",
					"ClearOnFoodRest": "false",
					"ClearWhenAttacks": "false",
					"ClearOnDeath": "false",
					"HideFromCombatTooltip": "false",
					"HideFromCombatLog": "false",
					"HideFromUI": "false",
					"VisualEffects": [],
					"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
					"AttackFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Range": "None",
						"ClassTypeID": "00000000-0000-0000-0000-000000000000",
						"Source": "None",
						"DefendedBy": "None",
						"Empowered": "false",
						"Disengagement": "false",
						"Stealthed": "false",
						"UseStealthLinger": "false",
						"PowerLevel": 0,
						"PowerLevelOperator": "EqualTo",
						"ChanceToApply": 1,
						"AttackHostility": "Default"
					},
					"AttackTargetFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Race": "None",
						"IsKith": "false",
						"HealthPercentage": 0,
						"HealthOperator": "EqualTo",
						"Distance": 0,
						"DistanceOperator": "EqualTo",
						"HasDOT": "false",
						"IsMarked": "false",
						"TargetHostility": "Default"
					},
					"ExtraValue": 0,
					"OverridePenetration": 0,
					"DamageTypeValue": "All",
					"KeywordValueID": "00000000-0000-0000-0000-000000000000",
					"RaceValue": "None",
					"StatusEffectTypeValue": "None",
					"ItemValueID": "00000000-0000-0000-0000-000000000000",
					"AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
					"StatusEffectsValueIDs": [],
					"AttackValueID": "00000000-0000-0000-0000-000000000000",
					"AttackOverrideValue": "None",
					"EventValue": "OnApply",
					"ClassValueID": "00000000-0000-0000-0000-000000000000",
					"WeaponTypeValue": "None",
					"AttackHitType": "None",
					"SkillValueID": "00000000-0000-0000-0000-000000000000",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000",
					"BedRestDaysMinimum": 0,
					"BedRestDaysMaximum": 0
				}
			]
		}
	]
}

Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

In swordslayingwill_SE_ApplyOnEvent there's this typo:

"StatusEffectsValueIDs": ["f67a23b2-b38b-490b-8000-b4127e1d7ed2]"],

Just gave a glance, beware maybe there are others.

 

Anyway if you have trouble to do the desired effect think if there's in game an object or skill that does what you want to accomplish and then copy/change. There's a lot of stuff done by obs really good and interesting.

I think there's a weapon that stacks attack speed on hit, should be a good sample to check it out for your purpose.

Edited by mammasaura
  • Like 1

CzSyX91.jpg

Link to comment
Share on other sites

I was actually able to make this sword work exactly the way I wanted.  You get -3 Will and +5% weapon damage per hit with the weapon.  The +damage only works for the sword's damage, and the damage bonus is cleared after battle, but the Will reduction isn't cleared until 90 seconds later.  

 

The code structure seems to need the following:

 

Item

> Item Mod IDs

> Attack IDs

Item Mod

>Status Effect (Apply on Event)

>>Status Effect (Real status effect)

 

You can see this pretty clearly in The Producer's Sword mod, which is an example great sword that has some complicated abilities.  But you have to piece the code together because it's all in separate files.

 

I had to use a different type of Status Effect to make the item work, because there's isn't a "ApplyStatusEffectToSelfOnEvent".  The way Obsidian makes the skills is by having a status effect enabled when wielding the weapon and hitting a target, and that links to another status effect which occurs afterwards.

 

 

Other Notes

--------------------

Item Mods are in the top of the Items.gamedatabundle code
 
Racial accuracy bonuses on items are in the "filter" section of attacks, with Race or IsKith option
(IsKith  "true",)
 
The "AttackFilter" section of status effects determines the source applicable to the effect
Example: (+Deflection vs. melee weapons would be "Range": "Melee", and "Source": "Weapon", for your status effect that increases Deflection.)
 
{
	"GameDataObjects": [
		{
			"$type": "Game.GameData.WeaponGameData, Assembly-CSharp",
			"DebugName": "swordslaying",
			"ID": "632aba8a-0a38-484b-adc2-638a3a8aee10",
			"Components": [
				{
					"$type": "Game.GameData.ItemComponent, Assembly-CSharp",
					"DisplayName": 305149951,
					"DescriptionText": 305149952,
					"FilterType": "Weapons",
					"InventoryAudioEventListID": "d9ef8ec9-f1fb-4d0b-88b7-49d7c0310019",
					"IsQuestItem": "false",
					"IsIngredient": "false",
					"IsCurrency": "false",
					"IsAdventuringItem": "false",
					"CanSellForFullValue": "false",
					"MaxStackSize": 1,
					"NeverDropAsLoot": "true",
					"CanBePickpocketed": "true",
					"IsUnique": "true",
					"Value": 25,
					"IconTextureSmall": "gui/icons/items/weapons/sword/sword_basic_s.png",
					"IconTextureLarge": "gui/icons/items/weapons/sword/sword_basic_l.png",
					"PencilSketchTexture": "",
					"InspectOnUseButton": [],
					"IsPlaceholder": "false"
				},
				{
					"$type": "Game.GameData.EquippableComponent, Assembly-CSharp",
					"EquipmentType": "Sword",
					"EquipmentSlot": "AnyWeapon",
					"AppearancePiece": {
						"ModelVisualDataPath": "prefabs/items/appearance/weapons/sword/a_sword01.asset"
					},
					"ItemModsIDs": [
						"bd418c6c-2544-4fb9-bde9-cd0f2207d2cf",
						"8b93c088-542b-46a8-a5a3-df0e74854157"
					],
					"OnEquipVisualEffects": [],
					"RestrictedToClassIDs": [],
					"RestrictedToPlayer": "false",
					"EquipConditionals": {
						"Operator": 0,
						"Components": []
					},
					"ProficientAbilityID": "e56c9809-5046-48a8-9334-491b053c79a7",
					"CannotUnequip": "false",
					"ItemRendererPrefab": "prefabs/itemrenderers/genericitemrenderer.prefab",
					"ItemModel": "art/character/weapons/sword/sword01/w_sword01.fbx",
					"AnimationController": "",
					"PaperdollOverrideRenderer": "",
					"AttackSummonID": "00000000-0000-0000-0000-000000000000",
					"CannotSheathe": "false",
					"PropVisualEffects": []
				},
				{
					"$type": "Game.GameData.WeaponComponent, Assembly-CSharp",
					"Stance": "OneHanded",
					"AnimationStanceID": "42de436a-5f52-4bc5-8310-076eb320abc4",
					"StatusEffectsOnLaunchIDs": [],
					"IsDisplayedWhenAlternate": "true",
					"IsUniversalType": "false",
					"AttackID": "0426199b-2065-4cd6-8618-e3a84cc79648",
					"NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
					"ForceBackScabbard": "false",
					"ScabbardAppearancePiece": {
						"ModelVisualDataPath": "prefabs/items/appearance/weapons/sword/a_sword01_scabbard.asset"
					},
					"ScabbardRendererPrefab": "prefabs/itemrenderers/genericitemrenderer.prefab",
					"ScabbardModel": "",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000"
				}
			]
		},
		{
			"$type": "Game.GameData.AttackMeleeGameData, Assembly-CSharp",
			"DebugName": "SwordSlayingAttack",
			"ID": "0426199b-2065-4cd6-8618-e3a84cc79648",
			"Components": [
				{
					"$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp",
					"KeywordsIDs": [
						"7de64ef2-2625-43a7-b66f-76d853b8fd80"
					],
					"AttackDistance": 0.75,
					"MinAttackDistance": 0,
					"AttackVariationID": "536366a9-5173-415f-89a6-be3127e0fb68",
					"UseParentEquippableHand": "false",
					"CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9",
					"RecoveryTimeID": "9d15e1c1-c6e1-4b25-bc1d-bf3707f6f534",
					"ImpactDelay": 0,
					"ForcedTarget": "None",
					"AffectedTargetType": "All",
					"AffectedTargetConditional": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"AffectedTargetDeathState": "Alive",
					"HostilityOverride": "Default",
					"PushDistance": 0,
					"FaceTarget": "true",
					"AccuracyBonus": 0,
					"PenetrationRating": 6,
					"DamageData": {
						"DamageType": "Slash",
						"AlternateDamageType": "Pierce",
						"Minimum": 13,
						"Maximum": 19,
						"DamageProcs": []
					},
					"Require****Object": "true",
					"StatusEffectKeywordsIDs": [],
					"StatusEffectsIDs": [],
					"RandomizeStatusEffect": "false",
					"CanGraze": "false",
					"CanCrit": "true",
					"DefendedBy": "Deflect",
					"AfflictionsDefendedBy": "None",
					"AfflictionApplicationModifier": "None",
					"SubstituteHitVisualEffect": "",
					"VisualEffects": [],
					"AttackOnImpactID": "00000000-0000-0000-0000-000000000000",
					"ExtraAttackID": "00000000-0000-0000-0000-000000000000",
					"LaunchBone": "RightWeapon",
					"HitBone": "Chest",
					"OnHitShakeDuration": "None",
					"OnHitShakeStrength": "None",
					"NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
					"AllReactNoise": "false",
					"InterruptsOn": "None",
					"InterruptType": "Normal",
					"TargetAngle": 0,
					"ApplyOnceOnly": "false",
					"PathsToTarget": "true",
					"HideFromCombatLog": "false",
					"AdditionalAttackOnTooltip": "false",
					"DoesNotApplyDamage": "false",
					"TreatAsWeapon": "false",
					"BounceData": {
						"Bounces": 0,
						"Multiplier": 0.5,
						"Range": 4,
						"InRangeOrder": "true",
						"NoRepeatTargets": "false",
						"AlwaysBounceAtEnemies": "true",
						"Delay": 0,
						"NeverBounce": "false"
					}
				},
				{
					"$type": "Game.GameData.AttackMeleeComponent, Assembly-CSharp",
					"EngagementRadius": 1,
					"IsUnarmed": "false"
				}
			]
		},
		{
			"$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
			"DebugName": "swordslayingwill_ItemMod",
			"ID": "bd418c6c-2544-4fb9-bde9-cd0f2207d2cf",
			"Components": [
				{
					"$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
					"DisplayName": 305149953,
					"HideFromUI": "false",
					"EnchantCategory": "None",
					"Cost": 3,
					"DisplayEvenIfCostZero": "true",
					"CursesItem": "false",
					"StatusEffectsOnEquipIDs": [
						"a6d9fff1-c99e-4d3e-9278-64d0dfe260b2"
					],
					"StatusEffectsOnLaunchIDs": [],
					"StatusEffectsOnAttackIDs": [],
					"AbilityModsOnEquipIDs": [],
					"OnEquipVisualEffects": [],
					"DamageProcs": [],
					"AbilitiesOnEquipIDs": []
				}
			]
		},
		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "swordslayingwill_SE_ApplyOnEvent",
			"ID": "a6d9fff1-c99e-4d3e-9278-64d0dfe260b2",
			"Components": [
				{
					"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
					"StatusEffectType": "ApplyStatusEffectOnEvent",
					"OverrideDescriptionString": 305149954,
					"UseStatusEffectValueAs": "None",
					"BaseValue": -3,
					"DynamicValue": {
						"Stat": "None",
						"SkillDataID": "00000000-0000-0000-0000-000000000000",
						"ClassID": "00000000-0000-0000-0000-000000000000",
						"MultiplyBy": 1,
						"Operator": "Add"
					},
					"KeywordsIDs": [],
					"DurationType": "Infinite",
					"Duration": 1,
					"MaxStackQuantity": 0,
					"ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
					"ApplicationType": "ApplyOnStart",
					"IntervalRateID": "00000000-0000-0000-0000-000000000000",
					"StackedChildrenApplyEffects": "false",
					"ApplicationPrerequisites": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"TriggerAdjustment": {
						"TriggerOnEvent": "None",
						"TriggerOffEvent": "None",
						"ValidateWithAttackFilter": "false",
						"ParamValue": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0,
						"ResetTriggerOnEffectTimeout": "false",
						"MaxTriggerCount": 0,
						"IgnoreMaxTriggerCount": "false",
						"RemoveEffectAtMax": "false",
						"ChanceToTrigger": 1
					},
					"PowerLevelScaling": {
						"UseCharacterLevel": "false",
						"BaseLevel": 0,
						"LevelIncrement": 1,
						"MaxLevel": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0
					},
					"IsHostile": "false",
					"ClearOnCombatEnd": "false",
					"ClearOnRest": "false",
					"ClearOnFoodRest": "false",
					"ClearWhenAttacks": "false",
					"ClearOnDeath": "false",
					"HideFromCombatTooltip": "false",
					"HideFromCombatLog": "false",
					"HideFromUI": "false",
					"VisualEffects": [],
					"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
					"AttackFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Range": "None",
						"ClassTypeID": "00000000-0000-0000-0000-000000000000",
						"Source": "ParentEquippable",
						"DefendedBy": "None",
						"Empowered": "false",
						"Disengagement": "false",
						"Stealthed": "false",
						"UseStealthLinger": "false",
						"PowerLevel": 0,
						"PowerLevelOperator": "EqualTo",
						"ChanceToApply": 1,
						"AttackHostility": "Default"
					},
					"AttackTargetFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Race": "None",
						"IsKith": "false",
						"HealthPercentage": 0,
						"HealthOperator": "EqualTo",
						"Distance": 0,
						"DistanceOperator": "EqualTo",
						"HasDOT": "false",
						"IsMarked": "false",
						"TargetHostility": "Default"
					},
					"ExtraValue": 90,
					"OverridePenetration": 0,
					"DamageTypeValue": "All",
					"KeywordValueID": "00000000-0000-0000-0000-000000000000",
					"RaceValue": "None",
					"StatusEffectTypeValue": "None",
					"ItemValueID": "00000000-0000-0000-0000-000000000000",
					"AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
					"StatusEffectsValueIDs": [
						"f67a23b2-b38b-490b-8000-b4127e1d7ed2",
						"62f7d98c-9ee0-49eb-b2b5-84adfc91e0c4"
					],
					"AttackValueID": "00000000-0000-0000-0000-000000000000",
					"AttackOverrideValue": "None",
					"EventValue": "OnScoringGrazeHitOrCriticalHit",
					"ClassValueID": "00000000-0000-0000-0000-000000000000",
					"WeaponTypeValue": "None",
					"AttackHitType": "None",
					"SkillValueID": "00000000-0000-0000-0000-000000000000",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000",
					"BedRestDaysMinimum": 0,
					"BedRestDaysMaximum": 0
				}
			]
		},
		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "swordslaying_SE_will",
			"ID": "f67a23b2-b38b-490b-8000-b4127e1d7ed2",
			"Components": [
				{
					"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
					"StatusEffectType": "Will",
					"OverrideDescriptionString": -1,
					"UseStatusEffectValueAs": "None",
					"BaseValue": -3,
					"DynamicValue": {
						"Stat": "None",
						"SkillDataID": "00000000-0000-0000-0000-000000000000",
						"ClassID": "00000000-0000-0000-0000-000000000000",
						"MultiplyBy": 1,
						"Operator": "Add"
					},
					"KeywordsIDs": [],
					"DurationType": "UseDurationTime",
					"Duration": 90,
					"MaxStackQuantity": 99,
					"ApplicationBehavior": "StackIfAlreadyApplied",
					"ApplicationType": "ApplyOnStart",
					"IntervalRateID": "00000000-0000-0000-0000-000000000000",
					"StackedChildrenApplyEffects": "false",
					"ApplicationPrerequisites": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"TriggerAdjustment": {
						"TriggerOnEvent": "None",
						"TriggerOffEvent": "None",
						"ValidateWithAttackFilter": "false",
						"ParamValue": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0,
						"ResetTriggerOnEffectTimeout": "false",
						"MaxTriggerCount": 0,
						"IgnoreMaxTriggerCount": "false",
						"RemoveEffectAtMax": "false",
						"ChanceToTrigger": 1
					},
					"PowerLevelScaling": {
						"UseCharacterLevel": "false",
						"BaseLevel": 0,
						"LevelIncrement": 1,
						"MaxLevel": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0
					},
					"IsHostile": "true",
					"ClearOnCombatEnd": "false",
					"ClearOnRest": "false",
					"ClearOnFoodRest": "false",
					"ClearWhenAttacks": "false",
					"ClearOnDeath": "false",
					"HideFromCombatTooltip": "false",
					"HideFromCombatLog": "false",
					"HideFromUI": "false",
					"VisualEffects": [],
					"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
					"AttackFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Range": "None",
						"ClassTypeID": "00000000-0000-0000-0000-000000000000",
						"Source": "None",
						"DefendedBy": "None",
						"Empowered": "false",
						"Disengagement": "false",
						"Stealthed": "false",
						"UseStealthLinger": "false",
						"PowerLevel": 0,
						"PowerLevelOperator": "EqualTo",
						"ChanceToApply": 1,
						"AttackHostility": "Default",
						"TargetType": "None"
					},
					"AttackTargetFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Race": "None",
						"IsKith": "false",
						"HealthPercentage": 0,
						"HealthOperator": "EqualTo",
						"Distance": 0,
						"DistanceOperator": "EqualTo",
						"HasDOT": "false",
						"IsMarked": "false",
						"TargetHostility": "Default"
					},
					"ExtraValue": 0,
					"OverridePenetration": 0,
					"DamageTypeValue": "All",
					"KeywordValueID": "00000000-0000-0000-0000-000000000000",
					"RaceValue": "None",
					"StatusEffectTypeValue": "None",
					"ItemValueID": "00000000-0000-0000-0000-000000000000",
					"AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
					"StatusEffectsValueIDs": [],
					"AttackValueID": "00000000-0000-0000-0000-000000000000",
					"AttackOverrideValue": "None",
					"EventValue": "OnApply",
					"ClassValueID": "00000000-0000-0000-0000-000000000000",
					"WeaponTypeValue": "None",
					"AttackHitType": "None",
					"SkillValueID": "00000000-0000-0000-0000-000000000000",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000",
					"BedRestDaysMinimum": 0,
					"BedRestDaysMaximum": 0
				}
			]
		},
		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "swordslaying_SE_damageproc_slash",
			"ID": "62f7d98c-9ee0-49eb-b2b5-84adfc91e0c4",
			"Components": [
				{
					"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
					"StatusEffectType": "BonusDamageProc",
					"OverrideDescriptionString": -1,
					"UseStatusEffectValueAs": "None",
					"BaseValue": 0.03,
					"DynamicValue": {
						"Stat": "None",
						"SkillDataID": "00000000-0000-0000-0000-000000000000",
						"ClassID": "00000000-0000-0000-0000-000000000000",
						"MultiplyBy": 1,
						"Operator": "Add"
					},
					"KeywordsIDs": [],
					"DurationType": "UseDurationTime",
					"Duration": 90,
					"MaxStackQuantity": 99,
					"ApplicationBehavior": "StackIfAlreadyApplied",
					"ApplicationType": "ApplyOnStart",
					"IntervalRateID": "00000000-0000-0000-0000-000000000000",
					"StackedChildrenApplyEffects": "false",
					"ApplicationPrerequisites": {
						"Conditional": {
							"Operator": 0,
							"Components": []
						}
					},
					"TriggerAdjustment": {
						"TriggerOnEvent": "None",
						"TriggerOffEvent": "None",
						"ValidateWithAttackFilter": "false",
						"ParamValue": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0,
						"ResetTriggerOnEffectTimeout": "false",
						"MaxTriggerCount": 0,
						"IgnoreMaxTriggerCount": "false",
						"RemoveEffectAtMax": "false",
						"ChanceToTrigger": 1
					},
					"PowerLevelScaling": {
						"UseCharacterLevel": "false",
						"BaseLevel": 0,
						"LevelIncrement": 1,
						"MaxLevel": 0,
						"ValueAdjustment": 0,
						"DurationAdjustment": 0
					},
					"IsHostile": "false",
					"ClearOnCombatEnd": "true",
					"ClearOnRest": "false",
					"ClearOnFoodRest": "false",
					"ClearWhenAttacks": "false",
					"ClearOnDeath": "false",
					"HideFromCombatTooltip": "false",
					"HideFromCombatLog": "false",
					"HideFromUI": "false",
					"VisualEffects": [],
					"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
					"AttackFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Range": "None",
						"ClassTypeID": "00000000-0000-0000-0000-000000000000",
						"Source": "ParentEquippable",
						"DefendedBy": "None",
						"Empowered": "false",
						"Disengagement": "false",
						"Stealthed": "false",
						"UseStealthLinger": "false",
						"PowerLevel": 0,
						"PowerLevelOperator": "EqualTo",
						"ChanceToApply": 1,
						"AttackHostility": "Default",
						"TargetType": "None"
					},
					"AttackTargetFilter": {
						"KeywordsIDs": [],
						"KeywordLogic": "Or",
						"Race": "None",
						"IsKith": "false",
						"HealthPercentage": 0,
						"HealthOperator": "EqualTo",
						"Distance": 0,
						"DistanceOperator": "EqualTo",
						"HasDOT": "false",
						"IsMarked": "false",
						"TargetHostility": "Default"
					},
					"ExtraValue": 0,
					"OverridePenetration": 0,
					"DamageTypeValue": "Slash",
					"KeywordValueID": "00000000-0000-0000-0000-000000000000",
					"RaceValue": "None",
					"StatusEffectTypeValue": "None",
					"ItemValueID": "00000000-0000-0000-0000-000000000000",
					"AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
					"StatusEffectsValueIDs": [],
					"AttackValueID": "00000000-0000-0000-0000-000000000000",
					"AttackOverrideValue": "None",
					"EventValue": "OnApply",
					"ClassValueID": "00000000-0000-0000-0000-000000000000",
					"WeaponTypeValue": "None",
					"AttackHitType": "None",
					"SkillValueID": "00000000-0000-0000-0000-000000000000",
					"AudioEventListID": "00000000-0000-0000-0000-000000000000",
					"BedRestDaysMinimum": 0,
					"BedRestDaysMaximum": 0
				}
			]
		}
	]
}
Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

Well, item modding is super easy once you know what to look for.  In 8 hours I created a psionic blade like Templar Assassin that hits enemies in a small cone behind it.  The key there was using the new weapon as a base, then adding in the changes from another weapon that does a similar ability.

 

Also, I just created a cool new eye patch that scales a stat with your skill levels.  This is also super easy but you have to find the Skill ID in other items:

 

YI3l2ng.jpg

 

Here are the skill IDs that I found.  They can be used in either SkillDataID or SkillValueID but these are the places I found them:

 

SkillDataID
---------------
stealth - 8cc41e27-e62f-4e75-9f7d-ae47986895d2
arcana - e5f33551-ec5c-4cc8-b5f2-1eb03d210374
explosives - e67f20e3-5bf9-4d87-9bda-211405107362
athletics - fefc4d3d-250d-4c32-85e0-62a851240e62
intimidate - 3ad9194b-4f41-480e-aa75-1c82df43be84
metaphysics - 98051b85-d7e5-4746-a66c-260e2fcd2d4b
religion - 98cc5a0d-1387-42e3-9202-417bc42b53ad
survival - 9c7962b8-bf69-4670-ba67-acc86a09fca8
 
intellect? - 1b26af87-fd19-4dc6-9380-4f5cec7aefd5
 
SkillValueID
----------------
bluff - 6fa62ec8-6695-4a1d-8553-7486b0ac20c4
diplomacy - c7e22ee0-bdd6-4ca8-99f0-a46f3dd66606
history - c6b6f87a-0381-4219-93eb-77ae2b64f0af
insight - f5d2c2bf-1ffd-4741-b6d8-31ae01985d4b
streetwise - eb8da173-4a3e-4910-94e8-dd0c1436ca40
slight of hand - 3b073ebf-0a4a-48a3-947d-ad38bef10b36
mechanics - 3affbb70-86bd-41f3-82c6-325326d40796
alchemy - 1b26af87-fd19-4dc6-9380-4f5cec7aefd5

 

 

The code for this looks like:

        {
            "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
            "DebugName": "journeyman_SE_bluff",
            "ID": "82c29fce-5487-4fed-99cf-6141a248affd",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
                    "StatusEffectType": "Perception",
                    "OverrideDescriptionString": 305149966,
                    "UseStatusEffectValueAs": "None",
                    "BaseValue": 0,
                    "DynamicValue": {
                        "Stat": "SkillValue",
                        "SkillDataID": "6fa62ec8-6695-4a1d-8553-7486b0ac20c4",
                        "ClassID": "00000000-0000-0000-0000-000000000000",
                        "MultiplyBy": 0.5,
                        "Operator": "Add"
                    },

and then it's the rest of the code for that Status Effect.  The DynamicValue section is what performs the work here.  It multiplies the Skill amount by 0.5 and adds the stat.

 

Like always, you link your Item to an ItemModsID, ItemMod to a StatusEffect(on equip).  There's actually another StatusEffect for this item that does the same thing, but reduces the stat (Perception) for each increase in Diplomacy.

Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

Just made a glove that gives a bonus to deflection, scaling with your Sleight of Hand ability, applying when you get grazed by melee weapons, stackable up to 20x.  It's pretty cool that you can link all of those status effects!

 

amM0KHK.jpg

{
    "GameDataObjects": [
        {
            "$type": "Game.GameData.EquippableGameData, Assembly-CSharp",
            "DebugName": "hands_sleight",
            "ID": "72e3962c-56ae-4f58-bfd4-23336778484c",
            "Components": [
                {
                    "$type": "Game.GameData.ItemComponent, Assembly-CSharp",
                    "DisplayName": 305149968,
                    "DescriptionText": 305149969,
                    "FilterType": "Clothing",
                    "InventoryAudioEventListID": "fb712b7c-32bf-4e9c-b5bd-595abd18298e",
                    "IsQuestItem": "false",
                    "IsIngredient": "false",
                    "IsCurrency": "false",
                    "IsAdventuringItem": "false",
                    "IsJunk": "false",
                    "CanSellForFullValue": "false",
                    "MaxStackSize": 1,
                    "NeverDropAsLoot": "false",
                    "CanBePickpocketed": "true",
                    "IsUnique": "true",
                    "Value": 750,
                    "IconTextureSmall": "gui\/icons\/items\/hand\/glove_01_s.png",
                    "IconTextureLarge": "gui\/icons\/items\/hand\/glove_01_l.png",
                    "PencilSketchTexture": "",
                    "InspectOnUseButton": [],
                    "IsPlaceholder": "false"
                },
                {
                    "$type": "Game.GameData.EquippableComponent, Assembly-CSharp",
                    "EquipmentType": "None",
                    "EquipmentSlot": "Hand",
                    "AppearancePiece": {
                        "ModelVisualDataPath": ""
                    },
                    "ItemModsIDs": [
                        "8589d499-27a7-4c84-80c5-3a33c7404f88"
                    ],
                    "OnEquipVisualEffects": [],
                    "RestrictedToClassIDs": [],
                    "RestrictedToPlayer": "false",
                    "EquipConditionals": {
                        "Operator": 0,
                        "Components": []
                    },
                    "ProficientAbilityID": "00000000-0000-0000-0000-000000000000",
                    "CannotUnequip": "false",
                    "ItemRendererPrefab": "",
                    "ItemModel": "",
                    "AnimationController": "",
                    "PaperdollOverrideRenderer": "",
                    "AttackSummonID": "00000000-0000-0000-0000-000000000000",
                    "CannotSheathe": "false",
                    "PropVisualEffects": []
                }
            ]
        },
        {
            "$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
            "DebugName": "a_sleight_angle",
            "ID": "8589d499-27a7-4c84-80c5-3a33c7404f88",
            "Components": [
                {
                    "$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
                    "DisplayName": 305149970,
                    "HideFromUI": "false",
                    "EnchantCategory": "None",
                    "Cost": 8,
                    "CursesItem": "false",
                    "DurabilityDamage": 0,
                    "StatusEffectsOnEquipIDs": [
                        "c58ad9f4-ff8c-4213-8b13-9962b4f54382"
                    ],
                    "StatusEffectsOnLaunchIDs": [],
                    "StatusEffectsOnAttackIDs": [],
                    "AbilityModsOnEquipIDs": [],
                    "OnEquipVisualEffects": [],
                    "DamageProcs": [],
                    "AbilitiesOnEquipIDs": []
                }
            ]
        },
        {
            "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
            "DebugName": "hands_sleight_angle_SE_ApplyOnEvent",
            "ID": "c58ad9f4-ff8c-4213-8b13-9962b4f54382",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
                    "StatusEffectType": "ApplyStatusEffectOnEvent",
                    "OverrideDescriptionString": 305149971,
                    "UseStatusEffectValueAs": "None",
                    "BaseValue": 0,
                    "DynamicValue": {
                        "Stat": "None",
                        "SkillDataID": "00000000-0000-0000-0000-000000000000",
                        "ClassID": "00000000-0000-0000-0000-000000000000",
                        "MultiplyBy": 1,
                        "Operator": "Add"
                    },
                    "KeywordsIDs": [],
                    "DurationType": "Infinite",
                    "Duration": 1,
                    "MaxStackQuantity": 0,
                    "ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
                    "ApplicationType": "ApplyOnStart",
                    "IntervalRateID": "00000000-0000-0000-0000-000000000000",
                    "StackedChildrenApplyEffects": "false",
                    "ApplicationPrerequisites": {
                        "Conditional": {
                            "Operator": 0,
                            "Components": []
                        }
                    },
                    "TriggerAdjustment": {
                        "TriggerOnEvent": "None",
                        "TriggerOffEvent": "None",
                        "ValidateWithAttackFilter": "false",
                        "ParamValue": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0,
                        "ResetTriggerOnEffectTimeout": "false",
                        "MaxTriggerCount": 20,
                        "IgnoreMaxTriggerCount": "false",
                        "RemoveEffectAtMax": "false",
                        "ChanceToTrigger": 1
                    },
                    "PowerLevelScaling": {
                        "UseCharacterLevel": "false",
                        "BaseLevel": 0,
                        "LevelIncrement": 1,
                        "MaxLevel": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0
                    },
                    "IsHostile": "false",
                    "ClearOnCombatEnd": "true",
                    "ClearOnRest": "false",
                    "ClearOnFoodRest": "false",
                    "ClearWhenAttacks": "false",
                    "ClearOnDeath": "false",
                    "HideFromCombatTooltip": "true",
                    "HideFromCombatLog": "false",
                    "HideFromUI": "false",
                    "VisualEffects": [],
                    "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
                    "AttackFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Range": "Melee",
                        "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                        "Source": "Weapon",
                        "DefendedBy": "None",
                        "Empowered": "false",
                        "Disengagement": "false",
                        "Stealthed": "false",
                        "UseStealthLinger": "false",
                        "PowerLevel": 0,
                        "PowerLevelOperator": "EqualTo",
                        "ChanceToApply": 1,
                        "AttackHostility": "Default",
                        "TargetType": "None"
                    },
                    "AttackTargetFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Race": "None",
                        "IsKith": "false",
                        "HealthPercentage": 0,
                        "HealthOperator": "EqualTo",
                        "Distance": 0,
                        "DistanceOperator": "EqualTo",
                        "HasDOT": "false",
                        "IsMarked": "false",
                        "TargetHostility": "Hostile"
                    },
                    "ExtraValue": 60,
                    "OverridePenetration": 0,
                    "DamageTypeValue": "All",
                    "KeywordValueID": "00000000-0000-0000-0000-000000000000",
                    "RaceValue": "None",
                    "StatusEffectTypeValue": "None",
                    "ItemValueID": "00000000-0000-0000-0000-000000000000",
                    "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
                    "StatusEffectsValueIDs": [
                        "195b5fc6-9e89-49c6-99b1-0768f9859ad1"
                    ],
                    "AttackValueID": "00000000-0000-0000-0000-000000000000",
                    "AttackOverrideValue": "None",
                    "EventValue": "OnGrazed",
                    "ClassValueID": "00000000-0000-0000-0000-000000000000",
                    "WeaponTypeValue": "None",
                    "AttackHitType": "None",
                    "SkillValueID": "00000000-0000-0000-0000-000000000000",
                    "AudioEventListID": "00000000-0000-0000-0000-000000000000",
                    "BedRestDaysMinimum": 0,
                    "BedRestDaysMaximum": 0
                }
            ]
        },
        {
            "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
            "DebugName": "sleight_angle_SE_deflect_stack",
            "ID": "195b5fc6-9e89-49c6-99b1-0768f9859ad1",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
                    "StatusEffectType": "Deflection",
                    "OverrideDescriptionString": 305149972,
                    "UseStatusEffectValueAs": "None",
                    "BaseValue": 0,
                    "DynamicValue": {
                        "Stat": "SkillValue",
                        "SkillDataID": "3b073ebf-0a4a-48a3-947d-ad38bef10b36",
                        "ClassID": "00000000-0000-0000-0000-000000000000",
                        "MultiplyBy": 0.1,
                        "Operator": "Add"
                    },
                    "KeywordsIDs": [],
                    "DurationType": "UseDurationTime",
                    "Duration": 60,
                    "MaxStackQuantity": 20,
                    "ApplicationBehavior": "StackIfAlreadyApplied",
                    "ApplicationType": "ApplyOnStart",
                    "IntervalRateID": "00000000-0000-0000-0000-000000000000",
                    "StackedChildrenApplyEffects": "false",
                    "ApplicationPrerequisites": {
                        "Conditional": {
                            "Operator": 0,
                            "Components": []
                        }
                    },
                    "TriggerAdjustment": {
                        "TriggerOnEvent": "None",
                        "TriggerOffEvent": "None",
                        "ValidateWithAttackFilter": "false",
                        "ParamValue": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0,
                        "ResetTriggerOnEffectTimeout": "false",
                        "MaxTriggerCount": 0,
                        "IgnoreMaxTriggerCount": "false",
                        "RemoveEffectAtMax": "false",
                        "ChanceToTrigger": 1
                    },
                    "PowerLevelScaling": {
                        "UseCharacterLevel": "false",
                        "BaseLevel": 0,
                        "LevelIncrement": 1,
                        "MaxLevel": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0
                    },
                    "IsHostile": "false",
                    "ClearOnCombatEnd": "true",
                    "ClearOnRest": "false",
                    "ClearOnFoodRest": "false",
                    "ClearWhenAttacks": "false",
                    "ClearOnDeath": "false",
                    "HideFromCombatTooltip": "false",
                    "HideFromCombatLog": "false",
                    "HideFromUI": "false",
                    "VisualEffects": [],
                    "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
                    "AttackFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Range": "None",
                        "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                        "Source": "None",
                        "DefendedBy": "None",
                        "Empowered": "false",
                        "Disengagement": "false",
                        "Stealthed": "false",
                        "UseStealthLinger": "false",
                        "PowerLevel": 0,
                        "PowerLevelOperator": "EqualTo",
                        "ChanceToApply": 1,
                        "AttackHostility": "Default",
                        "TargetType": "None"
                    },
                    "AttackTargetFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Race": "None",
                        "IsKith": "false",
                        "HealthPercentage": 0,
                        "HealthOperator": "EqualTo",
                        "Distance": 0,
                        "DistanceOperator": "EqualTo",
                        "HasDOT": "false",
                        "IsMarked": "false",
                        "TargetHostility": "Default"
                    },
                    "ExtraValue": 0,
                    "OverridePenetration": 0,
                    "DamageTypeValue": "All",
                    "KeywordValueID": "00000000-0000-0000-0000-000000000000",
                    "RaceValue": "None",
                    "StatusEffectTypeValue": "None",
                    "ItemValueID": "00000000-0000-0000-0000-000000000000",
                    "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
                    "StatusEffectsValueIDs": [],
                    "AttackValueID": "00000000-0000-0000-0000-000000000000",
                    "AttackOverrideValue": "None",
                    "EventValue": "OnApply",
                    "ClassValueID": "00000000-0000-0000-0000-000000000000",
                    "WeaponTypeValue": "None",
                    "AttackHitType": "None",
                    "SkillValueID": "00000000-0000-0000-0000-000000000000",
                    "AudioEventListID": "00000000-0000-0000-0000-000000000000",
                    "BedRestDaysMinimum": 0,
                    "BedRestDaysMaximum": 0
                }
            ]
        }
    ]
}
  • Like 1
Link to comment
Share on other sites

Here's how to make an effect occur after a certain amount of time after combat starts.  This will have to be an ability, because abilities can have the status of "IsCombatOnly" and that starts and stops the effects automatically.

 

This ability will give -0.2 Power Levels per History skill after 60 seconds.

 

"$type": "Game.GameData.GenericAbilityGameData, Assembly-CSharp",
"DebugName": "head_history_lessons_Ability",
.
.
.
"IsPassive": "true",
"IsCombatOnly": "true",
"StatusEffectsIDs": [
"4971be2c-d568-4b14-b6a3-41e5805e41c7"
],

 

Then you have your first status effect, which will be the countdown timer that triggers the next effect (your truly desired effect) after the duration.  The countdown timer uses ApplyAtEnd, but Obsidian uses OnClear instead.  If you use OnClear it appears that you have to change a couple more settings.

 

Note: The first effect (the countdown timer) will describe the effects because it's linked to those effects.  So in the game it will look like those effects are happening but they are not---it's just the timer.  That is why it is hidden from the GUI (HideFromCombatTooltip, HideFromCombatLog, HideFromUI), when Obsidian made drug crashes, so it doesn't appear that your effects are happening when truly they are only about to happen!

 

Also, notice that the first effect (the countdown timer) can be a good or bad effect, so "IsHostile" should be something that helps the player when they have better intelligence or resolve!

        {
            "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
            "DebugName": "head_history_lessons_SE_powerlevel_decrease_ApplyOnEvent",
            "ID": "4971be2c-d568-4b14-b6a3-41e5805e41c7",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
                    "StatusEffectType": "ApplyStatusEffectOnEvent",
                    "OverrideDescriptionString": 305149979,
                    "UseStatusEffectValueAs": "None",
                    "BaseValue": 0,
                    "DynamicValue": {
                        "Stat": "None",
                        "SkillDataID": "00000000-0000-0000-0000-000000000000",
                        "ClassID": "00000000-0000-0000-0000-000000000000",
                        "MultiplyBy": 1,
                        "Operator": "Add"
                    },
                    "KeywordsIDs": [],
                    "DurationType": "UseDurationTime",
                    "Duration": 60,
                    "MaxStackQuantity": 0,
                    "ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
                    "ApplicationType": "ApplyAtEnd",
                    "IntervalRateID": "00000000-0000-0000-0000-000000000000",
                    "StackedChildrenApplyEffects": "false",
                    "ApplicationPrerequisites": {
                        "Conditional": {
                            "Operator": 0,
                            "Components": []
                        }
                    },
                    "TriggerAdjustment": {
                        "TriggerOnEvent": "None",
                        "TriggerOffEvent": "None",
                        "ValidateWithAttackFilter": "false",
                        "ParamValue": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0,
                        "ResetTriggerOnEffectTimeout": "false",
                        "MaxTriggerCount": 0,
                        "IgnoreMaxTriggerCount": "false",
                        "RemoveEffectAtMax": "false",
                        "ChanceToTrigger": 1
                    },
                    "PowerLevelScaling": {
                        "UseCharacterLevel": "false",
                        "BaseLevel": 0,
                        "LevelIncrement": 1,
                        "MaxLevel": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0
                    },
                    "IsHostile": "false",
                    "ClearOnCombatEnd": "false",
                    "ClearOnRest": "false",
                    "ClearOnFoodRest": "false",
                    "ClearWhenAttacks": "false",
                    "ClearOnDeath": "false",
                    "HideFromCombatTooltip": "true",
                    "HideFromCombatLog": "false",
                    "HideFromUI": "true",
                    "VisualEffects": [],
                    "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
                    "AttackFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Range": "None",
                        "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                        "Source": "None",
                        "DefendedBy": "None",
                        "Empowered": "false",
                        "Disengagement": "false",
                        "Stealthed": "false",
                        "UseStealthLinger": "false",
                        "PowerLevel": 0,
                        "PowerLevelOperator": "EqualTo",
                        "ChanceToApply": 1,
                        "AttackHostility": "Default",
                        "TargetType": "None"
                    },
                    "AttackTargetFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Race": "None",
                        "IsKith": "false",
                        "HealthPercentage": 0,
                        "HealthOperator": "EqualTo",
                        "Distance": 0,
                        "DistanceOperator": "EqualTo",
                        "HasDOT": "false",
                        "IsMarked": "false",
                        "TargetHostility": "Default"
                    },
                    "ExtraValue": 0,
                    "OverridePenetration": 0,
                    "DamageTypeValue": "All",
                    "KeywordValueID": "00000000-0000-0000-0000-000000000000",
                    "RaceValue": "None",
                    "StatusEffectTypeValue": "None",
                    "ItemValueID": "00000000-0000-0000-0000-000000000000",
                    "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
                    "StatusEffectsValueIDs": [
                        "b928e3c4-2c79-4ed3-bddb-757ef34b834a"
                    ],
                    "AttackValueID": "00000000-0000-0000-0000-000000000000",
                    "AttackOverrideValue": "None",
                    "EventValue": "OnApply",
                    "ClassValueID": "00000000-0000-0000-0000-000000000000",
                    "WeaponTypeValue": "None",
                    "AttackHitType": "None",
                    "SkillValueID": "00000000-0000-0000-0000-000000000000",
                    "AudioEventListID": "00000000-0000-0000-0000-000000000000",
                    "BedRestDaysMinimum": 0,
                    "BedRestDaysMaximum": 0
                }
            ]
        },
        {
            "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
            "DebugName": "head_history_lessons_SE_powerlevel_decrease",
            "ID": "b928e3c4-2c79-4ed3-bddb-757ef34b834a",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
                    "StatusEffectType": "PowerLevel",
                    "OverrideDescriptionString": 305149980,
                    "UseStatusEffectValueAs": "None",
                    "BaseValue": 0,
                    "DynamicValue": {
                        "Stat": "SkillValue",
                        "SkillDataID": "c6b6f87a-0381-4219-93eb-77ae2b64f0af",
                        "ClassID": "00000000-0000-0000-0000-000000000000",
                        "MultiplyBy": -0.2,
                        "Operator": "Add"
                    },
                    "KeywordsIDs": [],
                    "DurationType": "Infinite",
                    "Duration": 1,
                    "MaxStackQuantity": 0,
                    "ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
                    "ApplicationType": "ApplyOnStart",
                    "IntervalRateID": "00000000-0000-0000-0000-000000000000",
                    "StackedChildrenApplyEffects": "false",
                    "ApplicationPrerequisites": {
                        "Conditional": {
                            "Operator": 0,
                            "Components": []
                        }
                    },
                    "TriggerAdjustment": {
                        "TriggerOnEvent": "None",
                        "TriggerOffEvent": "None",
                        "ValidateWithAttackFilter": "false",
                        "ParamValue": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0,
                        "ResetTriggerOnEffectTimeout": "false",
                        "MaxTriggerCount": 0,
                        "IgnoreMaxTriggerCount": "false",
                        "RemoveEffectAtMax": "false",
                        "ChanceToTrigger": 1
                    },
                    "PowerLevelScaling": {
                        "UseCharacterLevel": "false",
                        "BaseLevel": 0,
                        "LevelIncrement": 1,
                        "MaxLevel": 0,
                        "ValueAdjustment": 0,
                        "DurationAdjustment": 0
                    },
                    "IsHostile": "true",
                    "ClearOnCombatEnd": "true",
                    "ClearOnRest": "false",
                    "ClearOnFoodRest": "false",
                    "ClearWhenAttacks": "false",
                    "ClearOnDeath": "false",
                    "HideFromCombatTooltip": "false",
                    "HideFromCombatLog": "false",
                    "HideFromUI": "false",
                    "VisualEffects": [],
                    "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
                    "AttackFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Range": "None",
                        "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                        "Source": "None",
                        "DefendedBy": "None",
                        "Empowered": "false",
                        "Disengagement": "false",
                        "Stealthed": "false",
                        "UseStealthLinger": "false",
                        "PowerLevel": 0,
                        "PowerLevelOperator": "EqualTo",
                        "ChanceToApply": 1,
                        "AttackHostility": "Default",
                        "TargetType": "None"
                    },
                    "AttackTargetFilter": {
                        "KeywordsIDs": [],
                        "KeywordLogic": "Or",
                        "Race": "None",
                        "IsKith": "false",
                        "HealthPercentage": 0,
                        "HealthOperator": "EqualTo",
                        "Distance": 0,
                        "DistanceOperator": "EqualTo",
                        "HasDOT": "false",
                        "IsMarked": "false",
                        "TargetHostility": "Default"
                    },
                    "ExtraValue": 0,
                    "OverridePenetration": 0,
                    "DamageTypeValue": "All",
                    "KeywordValueID": "00000000-0000-0000-0000-000000000000",
                    "RaceValue": "None",
                    "StatusEffectTypeValue": "None",
                    "ItemValueID": "00000000-0000-0000-0000-000000000000",
                    "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
                    "StatusEffectsValueIDs": [],
                    "AttackValueID": "00000000-0000-0000-0000-000000000000",
                    "AttackOverrideValue": "None",
                    "EventValue": "OnApply",
                    "ClassValueID": "00000000-0000-0000-0000-000000000000",
                    "WeaponTypeValue": "None",
                    "AttackHitType": "None",
                    "SkillValueID": "00000000-0000-0000-0000-000000000000",
                    "AudioEventListID": "00000000-0000-0000-0000-000000000000",
                    "BedRestDaysMinimum": 0,
                    "BedRestDaysMaximum": 0
                }
            ]
        }
    ]
}
Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

To make an effect only affect specific categories, you can use keywords in the AttackFilter section.  Keywords act as categories/tags.  Here is how I made boots that increase the Area of Effect size for only Burn, Shock, Freeze, and Corrode abilities.

 

"StatusEffectType": "AoEMult",
.
.
.
"AttackFilter": {
"KeywordsIDs": [
"f0dbb330-1b06-4175-8ce4-efe790b99213",
"9c7d6f36-50ff-4b08-a528-74789abe0599",
"f8a513bb-3e92-4d10-b59f-abbdf71d8af4",
"56895011-1aab-4413-827b-51a126c04555"
],
.
.
.
}

 

You could also change

"AttackHostility": "Default",

to "Hostile" if you wanted only offensive spells to be affected.

 

How do you get the keywords? I have no idea, I can't find a list anywhere.

 

 

j9RIKXM.jpg

 

 

Here's the List of Keywords I have so Far:

 

Keywords
----------------
Cypher stuff (Mental & something else?)
902ae78f-1151-4f14-9db6-a7a1c728a1eb
04f1f10c-5b4c-42ce-8fc2-01ce366851ad
 
fire - f0dbb330-1b06-4175-8ce4-efe790b99213
shock - 9c7d6f36-50ff-4b08-a528-74789abe0599
frost - f8a513bb-3e92-4d10-b59f-abbdf71d8af4
corrode - 56895011-1aab-4413-827b-51a126c04555
 
restoration - d5e4e9b4-9565-4654-9e2e-2d68d8847c20
evocation - 3f075d80-787a-493e-bbaa-6da3d6dc2d0f
illusion - 69d9e77c-1a78-4af0-b590-0ea1620ab60b
enchanting - 6149f072-d79d-4429-8dbd-3f014e8f013c
 
flanked - 8ca098ca-731e-481d-b958-a337064afd6c
gaze abilities - 30171246-34fc-4066-b6da-6aa100db273d
plant - 504782eb-f943-42a1-93dc-cbec74d42c66
 
 
 
If you instead wanted to make an item that gives +3 Power Levels to Priest spells in the Restoration category, that is instead at the end of the code:
 
"KeywordValueID": "d5e4e9b4-9565-4654-9e2e-2d68d8847c20",
.
.
.
"ClassValueID": "f7cb46af-a719-41c0-9a53-107eefdbce2b",

 

 

Maybe you hate that idea and want to make a weapon effect that only affects enemies that are flanked instead?  The AttackTargetFilter is your happy place:

 

But first you define this effect only for the weapon:

"AttackFilter": {
.
.
.
"Source": "ParentEquippable",

 

Then it only hits flanked targets:

"AttackTargetFilter": {
"KeywordsIDs": [
"8ca098ca-731e-481d-b958-a337064afd6c"
Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

Do you know which key word are unsafe for new statuseffects?  There is a "boss" keyword for example.  So many of those keywords are not in any StatusEffect.  They seem to be listed in groups in the Keyword List of gui.gamedatabundle.  For instance, there are two "scroll" keywords in different places, and they are sometimes alphabetical until the next group is reached.

Edited by Grape_You_In_The_Mouth
Link to comment
Share on other sites

I think all these keyword can be safely used, it's just the statuseffect needs to be paired with meaningful keywords for the purpose.
You can create a status effect that works only when you hit bosses for example, or an aura that only inspires in presence of such creature etc...
If some keyword doesn't seem to mean much, try to search its ID in other databundles.
Search, for example, in character.gamedatabundle the boss keyword and see to which creature is bound, just to have an idea if the keyword is usable or not.

  • Like 1

CzSyX91.jpg

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...