Jump to content

Recommended Posts

Hey guys. I've been wanting to try @Boeroer's steel garrote/blood mage build with WoTEP on turn based so I'm trying to create a mod to make offensive parry have a 50% chance to proc on graze. I made the mod by trial and (mostly) error before reading the guide but after reading I still can't seem to get it to work. I took the rogue riposte mod from the community patch to get the frame, duplicated it, and then replaced the values with the ones I needed. Offensive parry still works, but it will not trigger on graze. Can anyone see what I might be doing wrong? For testing purposes, the proc rate is 100% at the moment. 

wotep_test.gamedatabundle

  • Like 2
Link to comment
Share on other sites

{
	"GameDataObjects": [
		{
			"$type":"Game.GameData.ItemModGameData, Assembly-CSharp",
			"DebugName":"Offensive_Parry",
			"ID":"5ae42058-0b85-458a-bdc5-8110da090e2c",
			"Components":[
				{
					"$type":"Game.GameData.ItemModComponent, Assembly-CSharp",
					"DisplayName":1382,
					"StatusEffectsOnEquipIDs":["17d86aed-4ff7-4f0a-ba3a-4710b68c0f9d","2b1fa9e8-c44d-4702-85a1-647349bbf131", "4222c763-6316-4ba9-9242-e4a3283ba0af" 
					]
				}
			]
		},










{"$type":"Game.GameData.StatusEffectGameData,  Assembly-CSharp",
"DebugName":"Offensive_Parry_SE_AttackEnemyOnEvent_Graze",
"ID":"2b1fa9e8-c44d-4702-85a1-647349bbf131",
"Components":[{
	"$type":"Game.GameData.StatusEffectComponent, Assembly-CSharp",
	"StatusEffectType":"AttackEnemyOnEvent",
	"OverrideDescriptionString":352,
	"OverrideDescriptionStringTactical":-1,
	"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",
	"InclusionConditions":{
		"Operator":0,
		"Components":[]},
	"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",
	"HideIfNoValue":"false",
	"VisualEffects":[],
	"MaterialReplacementID":"00000000-0000-0000-0000-000000000000",
	"AttackFilter":{
		"KeywordsIDs":[],
		"KeywordLogic":"Or",
		"Race":"None",
		"IsKith":"false",
		"HealthPercentage":0,
		"HealthOperator":"EqualTo",
		"Range":"Melee",
		"ClassTypeID":"00000000-0000-0000-0000-000000000000",
		"Source":"None",
		"DefendedBy":"None",
		"Empowered":"false",
		"Disengagement":"false",
		"Stealthed":"false",
		"UseStealthLinger":"false",
		"PowerLevel":0,
		"PowerLevelOperator":"EqualTo",
		"ChanceToApply":1.0,
		"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":"1cc82f35-cf30-4dc5-bb92-086c398a9f7f",
	"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}]}]}

Sorry I'm new to this forum and didn't realize I had attached it as a file instead of something readable. Also hope it wasn't BM to tag in that post. I got excited. 

Link to comment
Share on other sites

No problem. Tagging is a good practice imo. :) Especially since I usually don't look into this subforum frequently. ;) 

I didn't mod much myself so I can't say what the problem is. 

@Elric Galad, @Noqn - any ideas?

Edited by Boeroer
  • Thanks 1

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

I have made a bit of progress but seem to be at another roadblock. I have tested pretty extensively and tried changing other parts of the item itself, the non-upgraded buffs, anything I could find. I changed the deflection part of the enchant as a sanity check and was able to alter those values easily. The final issue seems to be that I cannot get the ability to trigger off of both grazes AND misses simultaneously. It seems like whichever status effect has the actual default game ID will work and any new one added will not. I've tried:

  • replacing Offensive Parry entirely (using the same ID as basegame) and change the EventValue to "OnGrazed", it will switch correctly and no longer retaliate on misses. However, when I try to add the new Status Effect to have offensive parry trigger off of both misses and grazes, misses will supersede grazes regardless of the order of IDs in the "StatusEffectsOnEquipIDs" and grazes will not trigger an offensive parry. The new stringvalues will show in the description for offensive parry, but the proc does not occur.
  • removing the default offensive parry value, and adding in a new one with a new ID. The in game description of the ability will match the new status effect I've entered, but it will still maintain default behavior of only retaliating on a miss, even though that value has been overridden and should no longer exist on the weapon. 
  • Switching the order around so that I replace the default value and ID with the new OnGrazed value, and then in the same file creating the new status effect that is actually the default behavior but with a new ID. In this scenario, the default behavior does not work but the OnGrazed does. Example below. (default game ID is 4222c763-6316-4ba9-9242-e4a3283ba0af)
{
	"GameDataObjects": [{
			"$type": "Game.GameData.ItemModGameData, Assembly-CSharp",
			"DebugName": "Offensive_Parry",
			"ID": "5ae42058-0b85-458a-bdc5-8110da090e2c",
			"Components": [{
				"$type": "Game.GameData.ItemModComponent, Assembly-CSharp",
				"DisplayName": 1382,
				"StatusEffectsOnEquipIDs": ["17d86aed-4ff7-4f0a-ba3a-4710b68c0f9d", "4222c763-6316-4ba9-9242-e4a3283ba0af", "c10ac18c-47a8-4a64-91ad-7106f4f91b42"]
			}]
		},










		{
			"$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
			"DebugName": "Offensive_Parry_SE_AttackEnemyOnEvent_Graze",
			"ID": "4222c763-6316-4ba9-9242-e4a3283ba0af",
			"Components": [{
				"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
				"StatusEffectType": "AttackEnemyOnEvent",
				"OverrideDescriptionString": 20101,
				"OverrideDescriptionStringTactical": -1,
				"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",
				"InclusionConditions": {
					"Operator": 0,
					"Components": []
				},
				"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",
				"HideIfNoValue": "false",
				"VisualEffects": [],
				"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
				"AttackFilter": {
					"KeywordsIDs": [],
					"KeywordLogic": "Or",
					"Race": "None",
					"IsKith": "false",
					"HealthPercentage": 0,
					"HealthOperator": "EqualTo",
					"Range": "Melee",
					"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": "1cc82f35-cf30-4dc5-bb92-086c398a9f7f",
				"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": "Offensive_Parry_SE_AttackEnemyOnEvent_Miss",
			"ID": "c10ac18c-47a8-4a64-91ad-7106f4f91b42",
			"Components": [{
				"$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
				"StatusEffectType": "AttackEnemyOnEvent",
				"OverrideDescriptionString": 352,
				"OverrideDescriptionStringTactical": -1,
				"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": "StackWithAllSimilarDataEffects",
				"ApplicationType": "ApplyOnStart",
				"IntervalRateID": "00000000-0000-0000-0000-000000000000",
				"StackedChildrenApplyEffects": "false",
				"InclusionConditions": {
					"Operator": 0,
					"Components": []
				},
				"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",
				"HideIfNoValue": "false",
				"VisualEffects": [],
				"MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
				"AttackFilter": {
					"KeywordsIDs": [],
					"KeywordLogic": "Or",
					"Race": "None",
					"IsKith": "false",
					"HealthPercentage": 0,
					"HealthOperator": "EqualTo",
					"Range": "Melee",
					"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": "1cc82f35-cf30-4dc5-bb92-086c398a9f7f",
				"AttackOverrideValue": "None",
				"EventValue": "OnMissed",
				"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
			}]
		}
	]
}
  • Altering base values
  • Altering StackedChildrenApplyEffects
  • Altering ApplicationBehavior

At this point I am completely out of ideas. Does anyone have any thoughts or are there any additional tools I could use to see what type of error may be occurring? 

Link to comment
Share on other sites

  • 4 weeks later...

I've been away for a while. In case anyone is interested, the last code snippet I included actually works. For some reason it required my character to level up for the changes to be enabled but it works as intended. If anyone intends to use it, I would alter the value of "chancetotrigger" in the ongraze part to 0.5 for balance otherwise you may be a bit OP. This could also likely be cleaned up to remove the duplicate part but I got it working and was content leaving it as is. 

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...