package KurtKrauserBoss
using RTDB, AIActionTarget, ItemHandling, MovementActions, MeleeActions, DashAndDodgeActions, StatusEffectActions

Map : ActionMap
{
	map = 
	[
		{
			itemType = "ItemType.Wea_Fists";
			map = "Gang_Fists.Map";
		}, 
		{
			itemType = "ItemType.Cyb_StrongArms";
			map = "Gang_Fists.Map";
		}, 
		{
			itemType = "ItemType.Wea_Hammer";
			map = "Gang_Hammer.Map";
		}, 
		{
			itemType = "ItemType.Wea_Handgun";
			map = "Gang_Handgun.Map";
		}, 
		{
			itemType = "ItemType.Wea_Revolver";
			map = "Gang_Handgun.Map";
		}, 
		{
			itemType = "ItemType.Wea_Katana";
			map = "Gang_Katana.Map";
		}, 
		{
			itemType = "ItemType.Wea_Knife";
			map = "Gang_Knife.Map";
		}, 
		{
			itemType = "ItemType.Wea_ShortBlade";
			map = "Gang_Knife.Map";
		}, 
		{
			itemType = "ItemType.Wea_LongBlade";
			map = "Gang_LongBlade.Map";
		}, 
		{
			itemType = "ItemType.Wea_Axe";
			map = "Gang_LongBlade.Map";
		}, 
		{
			itemType = "ItemType.Wea_Chainsword";
			map = "Gang_LongBlade.Map";
		}, 
		{
			itemType = "ItemType.Wea_Machete";
			map = "Gang_LongBlade.Map";
		}, 
		{
			itemType = "ItemType.Cyb_MantisBlades";
			map = "Gang_MantisBlades.Map";
		}, 
		{
			itemType = "ItemType.Wea_OneHandedClub";
			map = "Gang_OneHandedClub.Map";
		}, 
		{
			itemType = "ItemType.Wea_TwoHandedClub";
			map = "Gang_TwoHandedClub.Map";
		}, 
		{
			itemType = "ItemType.Wea_SubmachineGun";
			map = "Gang_SubmachineGun.Map";
		}, 
		{
			itemType = "ItemType.Wea_Rifle";
			map = "Gang_Rifle.Map";
		}, 
		{
			itemType = "ItemType.Wea_AssaultRifle";
			map = "Gang_Rifle.Map";
		}, 
		{
			itemType = "ItemType.Wea_Shotgun";
			map = "Gang_Shotgun.Map";
		}, 
		{
			itemType = "ItemType.Wea_ShotgunDual";
			map = "Gang_Shotgun.Map";
		}, 
		{
			itemType = "ItemType.Wea_PrecisionRifle";
			map = "Gang_Sniper.Map";
		}, 
		{
			itemType = "ItemType.Wea_SniperRifle";
			map = "Gang_Sniper.Map";
		}, 
		{
			itemType = "ItemType.Wea_LightMachineGun";
			map = "Gang_LightMachineGun.Map";
		}, 
		{
			itemType = "ItemType.Wea_HeavyMachineGun";
			map = "Gang_LightMachineGun.Map";
		}
	];
	defaultMap = 
	{
		map = 
		[
			{
				node = "GenericArchetype.CoverDecisionDefault";
				isOverriddenBy = "Gang.CoverDecisionDefault";
			}, 
			{
				node = "GenericArchetype.CoverDecisionNoBlind";
				isOverriddenBy = "Gang.CoverDecisionNoBlind";
			}, 
			{
				node = "StatusEffectActions.SE_SystemCollapseAndroid";
				isOverriddenBy = "KurtKrauserBoss.SE_SystemCollapseBossMitigated";
			}, 
			{
				node = "StatusEffectActions.SE_SystemCollapseMech";
				isOverriddenBy = "KurtKrauserBoss.SE_SystemCollapse";
			}, 
			{
				node = "StatusEffectActions.SE_SystemCollapseBossMitigated";
				isOverriddenBy = "KurtKrauserBoss.SE_SystemCollapse";
			}, 
			{
				node = "StatusEffectActions.SE_SystemCollapseBoss";
				isOverriddenBy = "KurtKrauserBoss.SE_SystemCollapse";
			}, 
			{
				node = "StatusEffectActions.SE_SystemCollapse";
				isOverriddenBy = "KurtKrauserBoss.SE_SystemCollapse";
			}, 
			{
				node = "StatusEffectActions.SuicideWithGrenadeEMP";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGrenade";
			}, 
			{
				node = "StatusEffectActions.SuicideWithGrenadeBiohazard";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGrenade";
			}, 
			{
				node = "StatusEffectActions.SuicideWithGrenadeFallback";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGrenade";
			}, 
			{
				node = "StatusEffectActions.SuicideWithGrenadeIncendiary";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGrenade";
			}, 
			{
				node = "StatusEffectActions.SE_Knockdown";
				isOverriddenBy = "KurtKrauserBoss.SE_Knockdown";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithGunRifleEquipped";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithGunMech";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithGunHandgunEquipped";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithMeleeShortBladeEquipped";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithMeleeLongWeaponEquipped";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "StatusEffectActions.SE_SuicideWithGunUnarmed";
				isOverriddenBy = "KurtKrauserBoss.SE_SuicideWithGunRifleEquipped";
			}, 
			{
				node = "ItemHandling.EquipPrimaryWeaponAfterSuicideSequence";
				isOverriddenBy = "OdaBoss.EquipPrimaryWeaponAfterSuicideSequence";
			}, 
			{
				node = "GenericArchetype.SE_Madness";
				isOverriddenBy = "KurtKrauserBoss.SE_Madness";
			}, 
			{
				node = "GenericArchetype.SE_WeaponJammed";
				isOverriddenBy = "KurtKrauserBoss.SE_WeaponJammed";
			}, 
			{
				node = "StatusEffectActions.SE_QuickHackFreezeLocomotion";
				isOverriddenBy = "KurtKrauserBoss.SE_QuickHackStaggerLocomotion";
			}, 
			{
				node = "StatusEffectActions.SE_QuickHackStaggerLocomotion";
				isOverriddenBy = "KurtKrauserBoss.SE_QuickHackStaggerLocomotion";
			}
		];
	};
}

SE_SystemCollapse : AIStatusEffectAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.StatusEffectBossSystemCollapse", "Condition.NotStatusEffectBossSystemCollapseHackReactionImmunity"
			];
		} : AIActionOR;
	};
	startup = 
	{
		changeNPCState = 
		{
			upperBodyState = "Taunt";
			hitReactionMode = "Unstoppable";
		};
		useDurationFromAnimSlot = false;
		duration = 1.5f;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Taunt";
			hitReactionMode = "Unstoppable";
		};
		useDurationFromAnimSlot = false;
		duration = 8.5f;
	};
	animData = 
	{
		animFeature = "SE_Blind";
		animSlot = 
		{
		};
	};
	subActions = 
	[
		{
			name = "status_electricity_resistance";
		} : AISubActionSpawnFX, 
		{
			name = "status_electrocuted";
		} : AISubActionSpawnFX, 
		{
			name = "status_emp";
		} : AISubActionSpawnFX
	];
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.BossSystemCollapseHackReactionImmunity"
			];
			apply = true;
			remove = false;
			delay = 8.f;
		} : AISubActionStatusEffect
	];
}

SE_SuicideWithGrenade : AIQuickhackDefaultAction
{
	startup = 
	{
		duration = 1.3f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		duration = 1.96f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
		};
	};
	startupSubActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.GrenadeRight";
			name = "fx_beeping";
			delay = 1.1f;
		} : AISubActionSpawnFX, 
		{
			delay = 0.75f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.GrenadeFragRegularHack";
		} : AISubActionForceEquip, 
		{
			delay = 2.3f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
		} : AISubActionTriggerItemActivation
	];
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"Oda.Main_boss_oda_allow_knockdown"
			];
			apply = true;
			remove = false;
		} : AISubActionStatusEffect
	];
	subActions += 
	[
		{
			stimSource = "AIActionTarget.Owner";
			stimType = "StimTypes.Scream";
		} : AISubActionTriggerStim
	];
	animData = 
	{
		animFeature = "SE_SuicideWithGrenade";
		animSlot = 
		{
		};
	};
}

SE_SystemCollapseBossMitigated : AIStatusEffectAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.StatusEffectBossSystemCollapse", "Condition.StatusEffectBossSystemCollapseHackReactionImmunity"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 2.5f;
	};
	subActions = 
	[
		{
			name = "hacks_system_collapse";
		} : AISubActionSpawnFX, 
		{
			name = "hacks_cyberware_malfunction";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "SE_Staggered";
		animVariation = 0;
		animSlot = 
		{
			useRootMotion = true;
			usePoseMatching = true;
		};
	};
}

SE_Knockdown : AIStatusEffectAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.StatusEffectKnockdown", "Condition.StatusEffectKnockdownInfinite"
			];
		} : AIActionOR;
	};
	startup = 
	{
		duration = 2.667f;
	};
	loop = 
	{
		useDurationFromAnimSlot = false;
		duration = 0.f;
	};
	recovery = 
	{
		duration = 1.9f;
	};
	subActions = 
	[
		{
			stimSource = "AIActionTarget.Owner";
			stimType = "StimTypes.Attention";
		} : AISubActionTriggerStim
	];
	animData = 
	{
		animFeature = "SE_Knockdown";
		ragdollOnDeath = true;
		animSlot = 
		{
		};
	};
}

SE_SuicideWithGunRifleEquipped : AIQuickhackDefaultAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.StatusEffectSuicideWithWeapon", "Condition.HasAnyWeapon"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 2.3f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		duration = 4.3f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			hitReactionMode = "Unstoppable";
		};
	};
	startupSubActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 1.05f;
			dropItem = false;
		} : AISubActionForceUnequip, 
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 1.75f;
			itemCategory = "ItemCategory.Weapon";
			itemID = "Items.Preset_Unity_Default";
			itemType = "ItemType.Wea_Handgun";
		} : AISubActionForceEquip
	];
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			target = "AIActionTarget.Owner";
			rangedAttack = "Attacks.SuicideBullet";
			numberOfShots = 1;
			maxNumberOfShots = 1;
			delay = 2.1f;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect, 
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 2.2f;
			dropItem = false;
		} : AISubActionForceUnequip, 
		{
			effectors = 
			[
				"Effectors.BossForceSuicideGunWeapon"
			];
			float delay = 2.1f;
		} : AISubActionCustomEffectors, 
		{
			delay = 4f;
			apply = false;
			statusEffects = 
			[
				"BaseStatusEffect.SuicideWithWeapon"
			];
		} : AISubActionStatusEffect
	];
	subActions += 
	[
		{
			stimSource = "AIActionTarget.Owner";
			stimType = "StimTypes.Scream";
		} : AISubActionTriggerStim
	];
	animData = 
	{
		animFeature = "SE_SuicideWithGunNoEquip";
		animSlot = 
		{
		};
	};
}

SE_Stagger_suicide : AIStatusEffectAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.StatusEffectSasquatchSuicideStagger"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 4.9f;
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = -1.f;
			dropItem = false;
		} : AISubActionForceUnequip, 
		{
			name = "hack_weapon_malfunction";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "StaggerRightSuicideBoss";
		animSlot = 
		{
		};
	};
}

SE_Stagger_suicide_Remove : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			statusEffects = 
			[
				"Sasquatch.ForceStaggerSuicide"
			];
			delay = 0.f;
			apply = false;
			remove = true;
		} : AISubActionStatusEffect
	];
}

SE_Madness : AIStatusEffectAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.StatusEffectTypeMadness"
			];
		} : AIActionOR;
	};
	loop = 
	{
		duration = 3.5f;
	};
	subActions = 
	[
		{
			name = "hit_reaction_heavy";
			delay = 0.3f;
		} : AISubActionPlayVoiceOver, 
		{
			stimSource = "AIActionTarget.Owner";
			stimType = "StimTypes.Scream";
		} : AISubActionTriggerStim
	];
	animData = 
	{
		animFeature = "SE_Madness";
		animSlot = 
		{
		};
	};
}

SE_WeaponJammed : StatusEffectActions.AIQuickhackDefaultAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HasAnyWeapon", "Condition.StatusEffectTypeWeaponMalfunction"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 3.667f;
	};
	subActions = 
	[
		{
			delay = 0.1f;
			statusEffects = 
			[
				"BaseStatusEffect.BossControlhackReactionImmunity"
			];
			apply = true;
			remove = false;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "SE_WeaponJammed";
	};
}

SE_QuickHackStaggerLocomotion : AIQuickhackDefaultAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.StatusEffectTypeLocomotionMalfunction"
			];
		} : AIActionOR;
	};
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = 0.1f;
			statusEffects = 
			[
				"BaseStatusEffect.BossControlhackReactionImmunity"
			];
			apply = true;
			remove = false;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "SE_QuickHackStaggerLocomotionLegs";
		animSlot = 
		{
		};
	};
}

NotUnderCyberWareMalfunction : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
}

HasNoFarRangedWeaponEquippedCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasMachineGun"
			];
		} : AIActionAND;
	};
}

HasRangedWeaponEquippedCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HasRangedWeapon"
			];
		} : AIActionAND;
	};
}

HasNoMidRangedWeaponEquippedCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasRangedWeapon"
			];
		} : AIActionAND;
	};
}

ChangeToLMG_PhaseCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.HealthBelow95perc", "KurtKrauserBoss.StatusEffectKurtAlone"
			];
		} : AIActionOR;
	};
}

EquipRangedWeaponInstantly : AIAction
{
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 0.f;
			itemID = "Items.Preset_Defender_Kurt";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

ChangeMetelSpotCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.NotTargetIsVisible", "Condition.HealthBelow70perc", "KurtKrauserBoss.StatusEffectKurtAlone", {
					AND = 
					[
						"Condition.TargetBelow5m", "Condition.CalculatePathStraightToTarget"
					];
				} : AIActionAND
			];
		} : AIActionOR;
	};
}

ShootRound_Metel : AIAction
{
	startup = 
	{
		duration = 0.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow95perc", "KurtKrauserBoss.StatusEffectKurtAlone", {
							AND = 
							[
								"Condition.TargetBelow5m", "Condition.CalculatePathStraightToTarget"
							];
						} : AIActionAND
					];
				} : AIActionOR;
			}
		];
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.CombatTarget";
		};
	};
	recovery = 
	{
		duration = .5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Static";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 10;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

AimAttackInPlace : AIAction
{
	startup = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow70perc", "Condition.TargetBelow1dot5mPrediction", "Condition.StatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 100;
			pauseCondition = 
			[
				{
					condition = 
					{
						AND = 
						[
							"Condition.TargetAbove90deg"
						];
					} : AIActionAND;
				}
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

AimAttackInPlaceJammed : AimAttackInPlace
{
	loop = 
	{
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow70perc", "Condition.TargetBelow1dot5mPrediction", "Condition.NotStatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 100;
			shootingPatternPackages = 
			[
				"ShootingPatterns.KurtLMGMalfunctionShootingPackage"
			];
			pauseCondition = 
			[
				{
					condition = 
					{
						AND = 
						[
							"Condition.TargetAbove90deg"
						];
					} : AIActionAND;
				}
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

IdleShort : AIAction
{
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Normal";
		};
		duration = 0.f;
	};
}

AimAttackMadness : AIAction
{
	startup = 
	{
		duration = 0.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow70perc", "Condition.TargetAbove15mPrediction", "Condition.StatusEffectTypeWeaponMalfunction", "Condition.CombatTargetChanged", "Condition.TargetAbove270deg", "Condition.IsUsingOffMeshLink"
					];
				} : AIActionOR;
			}
		];
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 200;
			pauseCondition = 
			[
				{
					condition = 
					{
						AND = 
						[
							"Condition.TargetAbove90deg"
						];
					} : AIActionAND;
				}
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

AimAttackInPlace_AnyPhase : AIAction
{
	startup = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.StimTarget";
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.StatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	recovery = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			numberOfShots = 25;
			delay = 0.1f;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.BoostAccuracyStatusEffect"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
		animSlot = 
		{
		};
	};
	animationWrapperOverrides = 
	[
		"combatLocomotion"
	];
	lookats = 
	[
		{
			preset = "LookatPreset.Corpo_Handgun_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.StimTarget;
		}
	];
}

AimAttackInPlace_AnyPhase_LocomotionMalfuntion : AimAttackInPlace_AnyPhase
{
	loop = 
	{
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.StimTarget";
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.StatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			numberOfShots = 10;
			delay = 0.1f;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

AimAttackInPlace_AnyPhaseJammed : AimAttackInPlace_AnyPhase
{
	loop = 
	{
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.StimTarget";
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow70perc", "Condition.TargetAbove15mPrediction", "Condition.NotStatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			numberOfShots = 7;
			shootingPatternPackages = 
			[
				"ShootingPatterns.KurtPistolMalfunctionShootingPackage"
			];
			delay = 0.1f;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

AimAttackInPlace_AnyPhaseJammedLocomotionMalfunction : AimAttackInPlace_AnyPhaseJammed
{
	loop = 
	{
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.StimTarget";
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.NotStatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			numberOfShots = 4;
			shootingPatternPackages = 
			[
				"ShootingPatterns.KurtPistolMalfunctionShootingPackage"
			];
			delay = 0.1f;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

AimAttackInPlace_50Shots : AIAction
{
	startup = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow95perc", "Condition.TargetBelow1dot5mPrediction", "KurtKrauserBoss.StatusEffectKurtAlone"
					];
				} : AIActionOR;
			}
		];
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 100;
			pauseCondition = 
			[
				{
					condition = 
					{
						AND = 
						[
							"Condition.TargetAbove90deg", "Condition.StatusEffectTypeWeaponMalfunction"
						];
					} : AIActionAND;
				}
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

AimAttackInPlace_50Shots_Jammed : AimAttackInPlace_50Shots
{
	loop = 
	{
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.StimTarget";
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow95perc", "Condition.NotStatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			numberOfShots = 100;
			shootingPatternPackages = 
			[
				"ShootingPatterns.KurtLMGMalfunctionShootingPackage"
			];
			pauseCondition = 
			[
				{
					condition = 
					{
						AND = 
						[
							"Condition.TargetAbove90deg"
						];
					} : AIActionAND;
				}
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

AimAttackShortenDistance : AIAction
{
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Walk";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow3m", "Condition.StatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	recovery = 
	{
		duration = 0.5f;
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

AimAttackShortenDistanceJammed : AimAttackShortenDistance
{
	loop = 
	{
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Walk";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow3m", "Condition.NotStatusEffectTypeWeaponMalfunction"
					];
				} : AIActionOR;
			}
		];
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
			shootingPatternPackages = 
			[
				"ShootingPatterns.KurtLMGMalfunctionShootingPackage"
			];
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

CloseEnoughForTakedownCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow6m"
			];
		} : AIActionAND;
	};
}

LMGKeepDistanceRotationCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove45deg"
			];
		} : AIActionAND;
	};
}

LMGKeepDistanceRotation : AIAction
{
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Normal";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.CombatTarget";
		};
		toNextPhaseConditionCheckInterval = 0.f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow45deg"
					];
				} : AIActionOR;
			}
		];
	};
}

LMGKeepDistanceLocomotionCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow7mLongPrediction"
			];
		} : AIActionAND;
	};
}

LMGKeepDistanceLocomotion : AIAction
{
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			keepLineOfSight = "Keep";
			distance = 10.f;
			avoidThreatRange = 2.f;
			movementType = "Walk";
			tolerance = 0.5f;
		};
		toNextPhaseConditionCheckInterval = 0.f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = [];
				} : AIActionOR;
			}
		];
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
		};
	};
}

LMGFollowDistanceLocomotionCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = [];
		} : AIActionAND;
	};
}

LMGFollowDistanceLocomotion : AIAction
{
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			keepLineOfSight = "Keep";
			distance = 3.f;
			avoidThreatRange = 0.f;
			movementType = "Walk";
			tolerance = 0.5f;
		};
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
		};
	};
}

AimAttackMoving_KeepDistance : AIAction
{
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
			hitReactionMode = "UnstoppableTwitchMin";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			keepLineOfSight = "Keep";
			distance = 7.5f;
			movementType = "Walk";
			tolerance = 1.f;
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.HealthBelow70perc", "Condition.IsUsingOffMeshLink", "Condition.TargetAbove5m"
					];
				} : AIActionOR;
			}
		];
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
			locomotionMode = "Moving";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "ShootAction";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

NotHasMeleeWeaponKurt : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasMeleeWeapon"
			];
		} : AIActionAND;
	};
}

EquipMeleeWeaponInstantly : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasMachete"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 0.25;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "Unstoppable";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 0.1f;
			itemID = "Items.Preset_Machete_Kurt";
		} : AISubActionForceEquip
	];
}

MeleeAttackMoving : AIAction
{
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
			locomotionMode = "Moving";
			hitReactionMode = "Unstoppable";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			keepLineOfSight = "Keep";
			distance = 10.f;
			movementType = "Walk";
			tolerance = 10.f;
		};
	};
	recovery = 
	{
		duration = 1.5f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			locomotionMode = "Moving";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			target = "AIActionTarget.CombatTarget";
			delay = 0;
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	animData = 
	{
		animFeature = "MeleeAttack";
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}, 
		{
			preset = "LookatPreset.Gang_Rifle_Arms_LootAt";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

IsNotPreparedForTakedown_02 : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.NotHasMachete", "Condition.NotHasKnife"
			];
		} : AIActionOR;
	};
}

MeleeModeCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HealthBelow70perc"
			];
		} : AIActionAND;
	};
}

ThrowBossKnife : AIAction
{
	tickets = 
	[
		"AITicketType.Shoot"
	];
	startup = 
	{
		duration = 0.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Shoot";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			movementType = "Walk";
			distance = 9.f;
		};
	};
	recovery = 
	{
		duration = 0.5f;
		changeNPCState = 
		{
			upperBodyState = "Shoot";
		};
	};
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponLeft"
			];
			target = "AIActionTarget.CombatTarget";
		} : AISubActionShootWithWeapon, 
		{
			statusEffects = 
			[
				"Oda.Shooting"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
	lookats = 
	[
		{
			preset = "LookatPreset.EyesHeadWithBodyAttached";
			target = "AIActionTarget.CombatTarget";
		}
	];
}

FindMetelShootPosition : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtzSpotMetel";
			rangeFromOwner = ( 0.f, 200.f );
			rangeFromObj = ( 0.f, 200.f );
			selectionMethod = "Closest";
		} : AISubActionSetWaypointByTag
	];
}

FindMetelShootPositionTargetVisible : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtzSpotMetel";
			rangeFromOwner = ( 0.f, 200.f );
			rangeFromObj = ( 0.f, 200.f );
			selectionMethod = "Random";
			lineOfSightTarget = "AIActionTarget.CombatTarget";
		} : AISubActionSetWaypointByTag
	];
}

FindShootPosition : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtzSpot";
			rangeFromOwner = ( 0.f, 200.f );
			rangeFromObj = ( 0.f, 200.f );
			selectionMethod = "Farthest";
			lineOfSightTarget = "AIActionTarget.CombatTarget";
		} : AISubActionSetWaypointByTag
	];
}

FindShootPosition_Pistol : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtzSpot_Pistol";
			lineOfSightTarget = "AIActionTarget.CombatTarget";
		} : AISubActionSetWaypointByTag
	];
}

FindShootPosition_AfterQuickMelee : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtzSpot";
			rangeFromOwner = ( 15.f, 250.f );
			rangeFromObj = ( 0.f, 200.f );
			avoidSelectingSameTargetMethod = 1;
			selectionMethod = "Farthest";
			lineOfSightTarget = "AIActionTarget.CombatTarget";
		} : AISubActionSetWaypointByTag
	];
}

FindTakedownPosition : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			target = "AIActionTarget.MovementDestination";
			rangeObj = "AIActionTarget.CombatTarget";
			tag = "kurtTakedown01Spot";
			rangeFromOwner = ( 0.f, 100.f );
			rangeFromObj = ( 0.f, 100.f );
			selectionMethod = "Closest";
		} : AISubActionSetWaypointByTag
	];
}

ChangePositionCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.NotTargetIsVisible"
			];
		} : AIActionOR;
	};
}

RangedModeTimer : AIAction
{
	loop = 
	{
		duration = 15.f;
	};
}

CombatModeTimer : AIAction
{
	loop = 
	{
		duration = 20.f;
	};
}

TakedownCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetUpTo0dot5mZDiff", "Condition.NotStatusEffectKurtKnife"
			];
		} : AIActionAND;
	};
}

ThrowKnifeCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove10mPrediction", "Condition.TargetIsVisible", "Condition.NotStatusEffectKurtKnife"
			];
		} : AIActionAND;
	};
}

ThrowKnifeConditionClose : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove8mPrediction", "Condition.TargetIsVisible", "Condition.NotStatusEffectKurtKnife"
			];
		} : AIActionAND;
	};
}

ForceChangeRangedCombatModeCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HitCount3Timeout3"
			];
		} : AIActionAND;
	};
}

TargetNotVisibleCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotTargetIsVisible"
			];
		} : AIActionAND;
	};
}

ShortenDistanceCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.CatchUpCondition", {
					AND = 
					[
						"Condition.TargetAbove5m", "Condition.CalculatePathStraightToTarget"
					];
				} : AIActionAND
			];
		} : AIActionOR;
	};
}

ThrowGrenadeKurtBoss : AIAction
{
	disableAction = true;
	tickets = 
	[
		"AITicketType.GrenadeThrow"
	];
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.ThrowGrenadeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.867f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	loop = 
	{
		duration = 0.7f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.NPCGrenadeFragRegular";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 1.29f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
		} : AISubActionThrowItem
	];
	animData = 
	{
		animFeature = "ThrowGrenade";
		animSlot = 
		{
		};
	};
}

SandevistanChargeCompositeSequenceDefinitionCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.CalculatePathStraightForward4m", "Condition.TargetUpTo2dot5mZDiff", "Condition.TargetAbove7dot5m"
			];
		} : AIActionOR;
	};
}

SandevistanChargeCompositeSequenceDefinition : AIActionSmartComposite
{
	type = "AISmartCompositeType.Sequence";
	repeat = 0;
	nodes = 
	[
		"KurtKrauserBoss.SandevistanChargeDashRightSelector", "KurtKrauserBoss.SandevistanChargeDashLeftSelector"
	];
	gracefulInterruptionCondition = 
	[
		{
			condition = 
			{
				OR = 
				[
					"Condition.TargetBelow3m"
				];
			} : AIActionOR;
		}
	];
}

SandevistanChargeDashRightSelector : AIActionSelector
{
	actions = 
	[
		"KurtKrauserBoss.LocomotionKerenzikovRightFront", "KurtKrauserBoss.SandevistanChargeDashRight", "KurtKrauserBoss.SandevistanChargeDashFrontR"
	];
	defaultAction = "KurtKrauserBoss.SprintToTargetMeleeSandevistanKurt";
}

SandevistanChargeDashLeftSelector : AIActionSelector
{
	actions = 
	[
		"KurtKrauserBoss.LocomotionKerenzikovLeftFront", "KurtKrauserBoss.SandevistanChargeDashLeft", "KurtKrauserBoss.SandevistanChargeDashFrontL"
	];
	defaultAction = "KurtKrauserBoss.SprintToTargetMeleeSandevistanKurt";
}

ChargeToTargetMeleeSandevistanSequenceConditions : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove1m", "Condition.CalculatePathToTarget"
			];
		} : AIActionAND;
	};
}

SprintToMovementDestinationSandevistan : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.MovementDestinationAbove1m", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack", "Condition.NotStatusEffectTypeLocomotionMalfunction"
			];
		} : AIActionAND;
	};
	loop = "KurtKrauserBoss.SprintToMovementDestinationLoopPhase";
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "sandevistan_loop";
		} : AISubActionSpawnFX, 
		{
			multiplier = 3.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 2.f;
		} : AISubActionApplyTimeDilation
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
}

SprintToMovementDestinationLoopPhase : AIActionPhase
{
	movePolicy = 
	{
		target = "AIActionTarget.MovementDestination";
		movementType = "Sprint";
		tolerance = 0.f;
		avoidThreatRange = 15.f;
	};
	changeNPCState = 
	{
		upperBodyState = "Attack";
		hitReactionMode = "Unstoppable";
	};
	toNextPhaseConditionCheckInterval = 0.5f;
	toNextPhaseCondition = 
	[
		{
			condition = 
			{
				AND = 
				[
					"Condition.NotIsUsingOffMeshLink", {
						OR = 
						[
							"Condition.StatusEffectTypeLocomotionMalfunction", "Condition.IsNPCUnderCyberwareMalfunctionQuickhack", "Condition.MovementDestinationBelow1m"
						];
					} : AIActionOR
				];
			} : AIActionAND;
		}
	];
}

SprintToMovementDestinationNoSandevistanLoopPhase : AIActionPhase
{
	movePolicy = 
	{
		target = "AIActionTarget.MovementDestination";
		movementType = "Sprint";
		tolerance = 0.f;
		avoidThreatRange = 15.f;
	};
	changeNPCState = 
	{
		upperBodyState = "Attack";
		hitReactionMode = "Unstoppable";
	};
	toNextPhaseConditionCheckInterval = 0.5f;
	toNextPhaseCondition = 
	[
		{
			condition = 
			{
				AND = 
				[
					"Condition.NotIsUsingOffMeshLink", {
						OR = 
						[
							"Condition.MovementDestinationBelow1m", "Condition.StatusEffectTypeLocomotionMalfunction"
						];
					} : AIActionOR
				];
			} : AIActionAND;
		}
	];
}

SprintToMovementDestinationNoSandevistan : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.MovementDestinationAbove1m"
			];
		} : AIActionAND;
	};
	loop = "KurtKrauserBoss.SprintToMovementDestinationNoSandevistanLoopPhase";
	subActions = 
	[
		{
			statusEffects = 
			[
				"KurtKrauserBoss.NoSandevistanMode"
			];
			delay = 0.f;
		} : AISubActionStatusEffect
	];
	animationWrapperOverrides = 
	[
		"OdaCybMalfunctionWrapper"
	];
}

NoSandevistanMode : StatusEffect
{
	fk< StatModifierGroup > duration = "BaseStats.InfiniteDuration";
}

StrafeLeftSprintPolicy : MovementPolicy
{
	target = "AIActionTarget.CombatTarget";
	strafingTarget = "AIActionTarget.CombatTarget";
	deadAngle = 0.f;
	movementType = "Sprint";
	tolerance = 50.f;
	distance = 3.f;
	circlingDirection = "Left";
	keepLineOfSight = "Keep";
	stopOnObstacle = true;
	dynamicTargetUpdateTimer = 1.f;
	ignoreLoSPrecheck = true;
	avoidSafeArea = true;
}

StrafeRightSprintPolicy : MovementPolicy
{
	target = "AIActionTarget.CombatTarget";
	strafingTarget = "AIActionTarget.CombatTarget";
	deadAngle = 0.f;
	movementType = "Sprint";
	tolerance = 50.f;
	distance = 3.f;
	circlingDirection = "Right";
	keepLineOfSight = "Keep";
	stopOnObstacle = true;
	dynamicTargetUpdateTimer = 1.f;
	ignoreLoSPrecheck = true;
	avoidSafeArea = true;
}

EquipKurtPistolWeapon : AIAction
{
	loop = 
	{
		duration = 1.2f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			itemID = "Items.Preset_Base_Lexington";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

KurtHeal : AIAction
{
	startup = 
	{
		duration = 2.f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		toNextPhaseConditionCheckInterval = 0.25f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.NotOdaHealing", "Condition.TargetBelow8m"
					];
				} : AIActionOR;
			}
		];
	};
	recovery = 
	{
		duration = 2.f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
	};
	subActions = 
	[
		{
			statusEffects = 
			[
				"KurtKrauserBoss.KurtHealing"
			];
		} : AISubActionStatusEffect, 
		{
			name = "cloak_healing";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "OdaHeal";
		animSlot = 
		{
			loopSlide = "OdaBoss.RotateSlideData";
		};
	};
}

KurtHealing : StatusEffect
{
	CName[] gameplayTags += 
	[
		"Heal"
	];
	fk< StatModifierGroup > duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 2;
			} : ConstantStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			effectors = 
			[
				"Oda.HealEffector"
			];
		} : GameplayLogicPackage
	];
}

KurtThrowGrenadeFlash_Defensive : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityCanUseFlashbangGrenades", "Condition.ThrowGrenadeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.867f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	loop = 
	{
		duration = 0.7f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.GrenadeFlashRegular";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 1.29f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			throwType = "smoke_defensive";
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowGrenadeKurt";
		animSlot = 
		{
		};
	};
}

KurtBossThrowGrenadeFlash_Offensive : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityCanUseFlashbangGrenades", "Condition.ThrowGrenadeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.867f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	loop = 
	{
		duration = 0.7f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.GrenadeFlashRegular";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 1.29f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			throwType = "smoke_offensive";
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowGrenade";
		animSlot = 
		{
		};
	};
}

KurtThrowGrenadeSmoke_Defensive : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityCanUseFlashbangGrenades", "Condition.ThrowGrenadeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.867f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	loop = 
	{
		duration = 0.7f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.GrenadeSmokeRegular";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 0.8f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			throwType = "smoke_defensive";
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowGrenadeKurt";
		animSlot = 
		{
		};
	};
}

KurtBossPushdAttackWithRangedWeapon : AIAction
{
	tickets = 
	[
		"AITicketType.QuickMelee"
	];
	cooldowns = 
	[
		{
			name = "QuickMelee";
			duration = 3.f;
		}
	];
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HasRangedWeapon", "Condition.TargetIsVisible", "Condition.NotInCover", "Condition.NotIsEnteringOrLeavingCover", "Condition.NotIsUsingOffMeshLink", "Condition.NotSprint", "Condition.CalculatePathStraightFullCheckToTarget", "Condition.NotInStatesEquip"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 0.2f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		useDurationFromAnimSlot = false;
	};
	startupSubActions = 
	[
		{
			name = "attack_short";
		} : AISubActionPlayVoiceOver, 
		{
			delay = 0.f;
			cooldowns = 
			[
				{
					name = "QuickMelee";
					duration = 5.f;
				}
			];
		} : AISubActionStartCooldown
	];
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attack = "NPCAttacks.StrongAttackKnockdown";
			attackName = "ChargeAttack";
		} : AISubActionAttackWithWeapon
	];
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				{
					name = "PushAttack";
					duration = 5.f;
				}
			];
		} : AISubActionStartCooldown
	];
	animData = 
	{
		animFeature = "MeleeQuickStatic";
		animSlot = 
		{
			startupSlide = 
			{
				overrideOffsetToTargetFromWeapon = false;
			} : MeleeActions.MeleeAttackLightSlideData;
		};
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				trackingMode = "TargetTracking.RealPosition";
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}
	];
}

LMG_QuickMelee_Condition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow1dot5m"
			];
		} : AIActionAND;
	};
}

SandevistanActivationCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove7dot5m", "Condition.TargetBelow12m", "Condition.CalculatePathStraightFullCheckForwardKurt", "Condition.TargetUpTo1dot4mZDiff", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
}

SprintActivationCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove4m"
			];
		} : AIActionAND;
	};
}

DashActivationCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow4m", "Condition.TargetUpTo1dot4mZDiff"
			];
		} : AIActionAND;
	};
}

LMG_NotQuickMelee_Condition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove3m", "Condition.CalculatePathToTarget"
			];
		} : AIActionAND;
	};
}

KurtVO_KnifeThrow : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_knife_throw_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

KurtVO_LMGRound : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_lmg_round_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

KurtVO_MeleeFighting : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_melee_fighting_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

KurtVO_LMGTransition : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_lmg_transition_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

KurtVO_LMGQuickMelee : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_lmg_quick_melee_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

KurtVO_LMGToMelee : AIAction
{
	loop = 
	{
	};
	subActions = 
	[
		{
			name = "kurt_lmeg_to_melee_vo";
			resetValue = true;
		} : AISubActionAddFact
	];
}

SprintToMovementDestinationSequence : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SprintToMovementDestinationSandevistan", "KurtKrauserBoss.SprintToMovementDestinationNoSandevistan", "GenericArchetype.Success"
	];
}

SprintToMovementDestinationSelector : AIActionSelector
{
	actions = 
	[
		"KurtKrauserBoss.SprintToMovementDestinationSandevistan", "KurtKrauserBoss.SprintToMovementDestinationNoSandevistan", "GenericArchetype.Success"
	];
}

KurtAloneStatusEffect : StatusEffect
{
}

StatusEffectKurtAlone : AIStatusEffectCond
{
	statusEffect = "KurtKrauserBoss.KurtAloneStatusEffect";
}

TakedownKnifeLanded : AIStatusEffectCond
{
	statusEffect = "BaseStatusEffect.KurtTakedown_01_Effect";
}

QuickMeleeWithKnockdownAction : AIAction
{
	tickets = 
	[
		"AITicketType.QuickMelee"
	];
	cooldowns = 
	[
		{
			name = "QuickMelee";
			duration = 3.f;
		}
	];
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotWounded", "Condition.TargetBelow2dot5mPrediction", "Condition.TargetBelow120deg", "Condition.NotHitTimeout0dot7", "Condition.HasRangedWeapon", "Condition.NotTargetInVehicle", "Condition.TargetIsVisible", "Condition.NotAndroid", "Condition.NotInCover", "Condition.NotIsEnteringOrLeavingCover", "Condition.NotIsUsingOffMeshLink", "Condition.NotSprint", "Condition.CalculatePathStraightFullCheckToTarget", "Condition.NotStatusEffectExhausted", "Condition.NotInStatesEquip"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	recovery = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			locomotionMode = "Static";
		};
	};
	startupSubActions = 
	[
		{
			name = "attack_short";
		} : AISubActionPlayVoiceOver, 
		{
			target = "AIActionTarget.CombatTarget";
			isWindUp = false;
		} : AISubActionMeleeAttackAttemptEvent
	];
	loopSubActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.05f;
			attack = "NPCAttacks.QuickMeleeWithKnockdown";
			attackName = "QuickMelee";
		} : AISubActionAttackWithWeapon
	];
	animData = 
	{
		animFeature = "MeleeQuickStatic";
		animSlot = 
		{
			startupSlide = 
			{
				overrideOffsetToTargetFromWeapon = false;
			} : MeleeActions.MeleeAttackLightSlideData;
		};
	};
	lookats = 
	[
		{
			preset = "LookatPreset.Gang_Rifle_Body_LootAt";
			target = 
			{
				trackingMode = "TargetTracking.RealPosition";
				targetSlot = "Head";
			} : AIActionTarget.CombatTarget;
		}
	];
}

SprintToTargetDashSandevistan : SprintToTargetMeleeSandevistanKurt
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.05f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow2m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", "Condition.StatusEffectTypeLocomotionMalfunction", "Condition.IsNPCUnderCyberwareMalfunctionQuickhack", {
									AND = 
									[
										"Condition.TargetBelow1m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

SprintToTargetMadnessConditionDistance : SprintToTargetMeleeSandevistanKurt
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove10mPrediction"
			];
		} : AIActionAND;
	};
}

SprintToTargetSandevistanMadness : SprintToTargetMeleeSandevistanKurt
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.05f;
			dontUseStart = true;
			dontUseStop = false;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow8m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", {
									AND = 
									[
										"Condition.TargetBelow1m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

SprintToTargetMadness : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotPreviousAttackNameMove", {
					OR = 
					[
						"AnimalsBoss_Hammer.MeleeMoveToAttackRangeConditions", "AnimalsBoss_Hammer.MeleeMoveToAttackRangeConditionsBehindAnObstacle"
					];
				} : AIActionOR
			];
		} : AIActionAND;
	};
	loop = 
	{
		movePolicy = "AdamSmasherBoss.SprintToTarget";
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.NotCalculatePathToTarget", {
							AND = 
							[
								"Condition.NotIsUsingOffMeshLink", {
									OR = 
									[
										"Condition.TargetBelow1m", {
											AND = 
											[
												"Condition.TargetBelow8m", "Condition.TargetUpTo0dot5mZDiff", "Condition.CalculatePathStraightFullCheckForwardKurtShort"
											];
										} : AIActionAND
									];
								} : AIActionOR
							];
						} : AIActionAND
					];
				} : AIActionOR;
			}
		];
	};
}

SprintToTargetDashSandevistan_CloseTakedown : SprintToTargetMeleeSandevistanKurt
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.05f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.StatusEffectTypeLocomotionMalfunction", "Condition.TargetBelow2m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", {
									AND = 
									[
										"Condition.TargetBelow2m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

SandevistanStartup01 : AIAction
{
	loop = 
	{
		duration = 0.433f;
		changeNPCState = 
		{
			upperBodyState = "Normal";
			hitReactionMode = "Unstoppable";
		};
	};
	subActions = 
	[
		{
		} : AISubActionDisableAimAssist
	];
	animData = 
	{
		animFeature = "DashSandevistanStartup";
		animSlot = 
		{
			startupSlide = "AnimalsBoss_Fists.RotateSlideData";
			loopSlide = "AnimalsBoss_Fists.RotateSlideData";
			recoverySlide = "AnimalsBoss_Fists.RotateSlideData";
		};
	};
}

SprintToTargetMeleeSandevistanKurtCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove6mPrediction", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
}

SprintToTargetMeleeSandevistanKurt : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				{
					AND = 
					[
						"Condition.TargetAbove1dot4mZDiff", "Condition.CalculatePathToTargetOdaJump"
					];
				} : AIActionAND, 
				{
					AND = 
					[
						"Condition.CalculatePathToTargetOdaJump", "Condition.TargetAbove5mPrediction", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
					];
				} : AIActionAND
			];
		} : AIActionOR;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.5f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow2m", "Condition.PathFindingFailed", "Condition.StatusEffectTypeLocomotionMalfunction", {
									AND = 
									[
										"Condition.TargetBelow4m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND, 
								{
									AND = 
									[
										"Condition.TargetBelow2mPrediction", "Condition.TargetUpTo0dot5mZDiff", "Condition.CalculatePathStraightFullCheckForwardKurtShort"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
	loopSubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
			multiplier = 3.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.5f;
		} : AISubActionApplyTimeDilation, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "sandevistan_loop";
		} : AISubActionSpawnFX
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
}

KnifeThrowConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.KnifeThrowCooldown"
	];
}

SetKnifeThrowConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.KnifeThrowCooldown"
			];
		} : AISubActionStartCooldown
	];
}

KnifeThrowCooldown : AIActionCooldown
{
	name = "KnifeThrowCooldown";
	duration = 10.f;
}

Takedown_02ConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.Takedown_02Cooldown"
	];
}

SetTakedown_02ConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.Takedown_02Cooldown"
			];
		} : AISubActionStartCooldown
	];
}

Takedown_02Cooldown : AIActionCooldown
{
	name = "Takedown_02Cooldown";
	duration = 15.f;
}

ThrowKnife_Takedown : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.ThrowKnifeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 1.6f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 0.667f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	recovery = 
	{
		duration = 0.73f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.Kurt_Knife_NPC_KurtTakedown";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Hammer";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 2.05f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			trajectoryGravity = -44.f;
			checkThrowQuery = false;
			positionPredictionTime = 0.2f;
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowKnifeKurt";
		animSlot = 
		{
			startupSlide = "AnimalsBoss_Hammer.RotateSlideData";
			loopSlide = "AnimalsBoss_Hammer.RotateSlideData";
			recoverySlide = "AnimalsBoss_Hammer.RotateSlideData";
		};
	};
	lookats = 
	[
		{
			target = "AIActionTarget.CombatTarget";
			preset = "LookatPreset.HammerThrow";
		}
	];
}

ThrowKnife_Takedown_Dodgeable : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.ThrowKnifeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 1.6f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 0.667f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	recovery = 
	{
		duration = 0.63f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.Kurt_Knife_NPC_KurtTakedown_Dodgeable";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Hammer";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 2.05f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			trajectoryGravity = -44.f;
			checkThrowQuery = false;
			positionPredictionTime = 0.2f;
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowKnifeKurt";
		animSlot = 
		{
			startupSlide = "AnimalsBoss_Hammer.RotateSlideData";
			loopSlide = "AnimalsBoss_Hammer.RotateSlideData";
			recoverySlide = "AnimalsBoss_Hammer.RotateSlideData";
		};
	};
	lookats = 
	[
		{
			target = "AIActionTarget.CombatTarget";
			preset = "LookatPreset.HammerThrow";
		}
	];
}

ThrowKnife_Knockdown_Dodgeable : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.ThrowKnifeCondition"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 1.6f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 0.667f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	recovery = 
	{
		duration = 0.63f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.Kurt_Knife_NPC";
		} : AISubActionForceEquip
	];
	subActions = 
	[
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Hammer";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 2.05f;
			dropItemOnInterruption = true;
			target = "AIActionTarget.CombatTarget";
			trajectoryGravity = -44.f;
			checkThrowQuery = false;
			positionPredictionTime = 0.2f;
		} : AISubActionThrowItem
	];
	waitForAnimationToLoad = true;
	animData = 
	{
		animFeature = "ThrowKnifeKurt";
		animSlot = 
		{
			startupSlide = "AnimalsBoss_Hammer.RotateSlideData";
			loopSlide = "AnimalsBoss_Hammer.RotateSlideData";
			recoverySlide = "AnimalsBoss_Hammer.RotateSlideData";
		};
	};
	lookats = 
	[
		{
			target = "AIActionTarget.CombatTarget";
			preset = "LookatPreset.HammerThrow";
		}
	];
}

RotateSlideData : AIActionSlideData
{
	target = "AIActionTarget.CombatTarget";
	duration = 0.f;
	distance = 0.f;
	offsetToTarget = 1.5f;
	finalRotationAngle = 0.f;
	usePositionSlide = false;
	useRotationSlide = true;
}

RemoveStatusEffectInvulnerable : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			apply = false;
			remove = true;
		} : AISubActionStatusEffect
	];
}

UnequipWeaponRight : AIAction
{
	loop = 
	{
		duration = .1f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = -1.f;
		} : AISubActionForceUnequip
	];
}

PrepareToTakedown_01 : AIAction
{
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 0.f;
			itemID = "Items.KurtTakedownWeapon";
			animationTime = 1.533;
		} : AISubActionForceEquip, 
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 0.f;
			itemID = "Items.Preset_Knife_Kurtz_1";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

PrepareToTakedown_02 : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasMachete"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 0.f;
			itemID = "Items.Preset_Knife_Kurtz_1";
			animationTime = 1.533;
		} : AISubActionForceEquip, 
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 0.f;
			itemID = "Items.Preset_Machete_Kurt";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

EquipKnifeKurt : AIAction
{
	loop = 
	{
		duration = .1f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 0.f;
			itemID = "Items.Preset_Knife_Kurtz_1";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

EquipMacheteKurt : AIAction
{
	loop = 
	{
		duration = .1f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = 0.f;
			itemID = "Items.Preset_Machete_Kurt";
			animationTime = 1.533;
		} : AISubActionForceEquip
	];
}

HasNoMacheteCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasMachete"
			];
		} : AIActionAND;
	};
}

HasNoHandgunCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasHandgunWeapon"
			];
		} : AIActionAND;
	};
}

HasNoKnifeCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotHasKnife"
			];
		} : AIActionAND;
	};
}

CleanupTakedown_01 : AIAction
{
	loop = 
	{
		duration = 1.2f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = -1.f;
		} : AISubActionForceUnequip
	];
}

TakedownFarConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.TakedownFarCooldown"
	];
}

SetTakedownFarConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.TakedownFarCooldown"
			];
		} : AISubActionStartCooldown
	];
}

TakedownFarCooldown : AIActionCooldown
{
	name = "TakedownFarCooldown";
	duration = 9999.f;
}

TakedownCloseConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.TakedownCloseCooldown"
	];
}

SetTakedownCloseConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.TakedownCloseCooldown"
			];
		} : AISubActionStartCooldown
	];
}

TakedownCloseCooldown : AIActionCooldown
{
	name = "TakedownCloseCooldown";
	duration = 60.f;
}

SetTakedownClose_ShorterConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.TakedownCloseShorterCooldown"
			];
		} : AISubActionStartCooldown
	];
}

TakedownCloseShorterCooldown : AIActionCooldown
{
	name = "TakedownCloseCooldown";
	duration = 40.f;
}

TakedownCloseCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow2m", "Condition.CalculatePathStraightToTarget"
			];
		} : AIActionAND;
	};
}

KurtIsBehindPlayer : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.StimSourceBack200deg"
			];
		} : AIActionAND;
	};
}

UnequipLeftRight : AIAction
{
	loop = 
	{
		useDurationFromAnimSlot = false;
		duration = 0.f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponRight";
			delay = -1.f;
		} : AISubActionForceUnequip, 
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = -1.f;
		} : AISubActionForceUnequip
	];
}

UnequipLeft : AIAction
{
	loop = 
	{
		useDurationFromAnimSlot = false;
		duration = 0.f;
		changeNPCState = 
		{
			upperBodyState = "Equip";
		};
	};
	subActions = 
	[
		{
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			delay = 0.f;
			animationTime = 0.f;
		} : AISubActionForceUnequip
	];
}

ForceKurtStatusEffect : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.KurtTakedownKnockdown"
			];
			apply = true;
		} : AISubActionStatusEffect, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.KurtTakedown_01_Effect"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

LMGPhase_QuickMelee_ConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.LMGPhase_QuickMelee_Cooldown"
	];
}

Set_LMGPhase_QuickMelee_Cooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.LMGPhase_QuickMelee_Cooldown"
			];
		} : AISubActionStartCooldown
	];
}

LMGPhase_QuickMelee_Cooldown : AIActionCooldown
{
	name = "LMGPhaseQuickMeleeCooldown";
	duration = 25.f;
}

RotateToTarget : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove120deg"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Normal";
		};
		movePolicy = 
		{
			strafingTarget = "AIActionTarget.CombatTarget";
		};
		toNextPhaseConditionCheckInterval = 0.5f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow45deg"
					];
				} : AIActionOR;
			}
		];
	};
}

WeaponHandlingComposite : AIActionSmartComposite
{
	nodes = 
	[
		"ItemHandling.SuccessIfSprinting", "ItemHandling.SuccessIfEquipping", "CoverActions.RegularCoverActivationCheckSuccess", "ItemHandling.CommandThrowGrenadeSelector", "ItemHandling.ThrowGrenadeSelector", "SpecialActions.UseCombatStimConsumable", "GenericArchetype.ReloadSelector", "GenericArchetype.CommandForceShootSelector", "GenericArchetype.ShootSelector", "GenericArchetype.Success"
	];
	gracefulInterruptionConditionCheckInterval = 0.3f;
	gracefulInterruptionCondition = 
	[
		{
			condition = 
			{
				AND = 
				[
					"Condition.NotTicketGrenadeThrow", {
						OR = 
						[
							"Condition.AIUseWorkspotCommand", "Condition.TicketEquip", "Condition.GracefulCombatInterruptionCompound"
						];
					} : AIActionOR
				];
			} : AIActionAND;
		}
	];
}

LostTargetTimer : AIAction
{
	loop = 
	{
		duration = 6.5f;
	};
}

LMG_QuickMeleeTimer : AIAction
{
	loop = 
	{
		duration = 0.f;
	};
}

SprintToTargetMelee : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotPreviousAttackNameMove", {
					OR = 
					[
						"AnimalsBoss_Hammer.MeleeMoveToAttackRangeConditions", "AnimalsBoss_Hammer.MeleeMoveToAttackRangeConditionsBehindAnObstacle"
					];
				} : AIActionOR
			];
		} : AIActionAND;
	};
	loop = 
	{
		movePolicy = "AdamSmasherBoss.SprintToTarget";
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						{
							AND = 
							[
								"Condition.NotIsUsingOffMeshLink", "Condition.NotCalculatePathToTarget"
							];
						} : AIActionAND, 
						{
							AND = 
							[
								"Condition.NotIsUsingOffMeshLink", {
									OR = 
									[
										"Condition.StatusEffectTypeLocomotionMalfunction", "Condition.TargetBelow1m", {
											AND = 
											[
												"Condition.TargetBelow3m", "Condition.TargetUpTo0dot5mZDiff", "Condition.CalculatePathStraightFullCheckForwardKurtShort"
											];
										} : AIActionAND
									];
								} : AIActionOR
							];
						} : AIActionAND
					];
				} : AIActionOR;
			}
		];
	};
}

SprintToTargetJump : AIAction
{
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.05f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseConditionCheckInterval = 0.1f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						{
							AND = 
							[
								"Condition.NotIsUsingOffMeshLink", "Condition.NotCalculatePathToTarget"
							];
						} : AIActionAND, 
						{
							AND = 
							[
								"Condition.NotIsUsingOffMeshLink", {
									OR = 
									[
										"Condition.TargetBelow1m", "Condition.StatusEffectTypeLocomotionMalfunction", {
											AND = 
											[
												"Condition.TargetBelow2mPrediction", "Condition.TargetUpTo0dot5mZDiff", "Condition.CalculatePathStraightFullCheckForwardKurtShort"
											];
										} : AIActionAND
									];
								} : AIActionOR
							];
						} : AIActionAND
					];
				} : AIActionOR;
			}
		];
	};
}

SprintToMovementDestinationDashSandevistan : SprintToTargetMeleeSandevistanKurt
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.MovementDestination";
			movementType = "Sprint";
			tolerance = 0.05f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.StatusEffectTypeLocomotionMalfunction", "Condition.IsNPCUnderCyberwareMalfunctionQuickhack", "Condition.TargetBelow0dot2m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", {
									AND = 
									[
										"Condition.TargetBelow1m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

KurtRepositionConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.KurtRepositionCooldown"
	];
}

SetKurtRepositionConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.KurtRepositionCooldown"
			];
		} : AISubActionStartCooldown
	];
}

KurtRepositionCooldown : AIActionCooldown
{
	name = "KurtRepositionCooldown";
	duration = 12.f;
}

SprintToTargetDashSandevistan_FirstMelePunch : SprintToTargetMeleeSandevistan_FirstPunch
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove8m", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.5f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow1m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", "Condition.StatusEffectTypeLocomotionMalfunction", {
									AND = 
									[
										"Condition.TargetBelow1m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

SprintToTargetMeleeSandevistan_FirstPunch : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				{
					AND = 
					[
						"Condition.TargetAbove1dot4mZDiff", "Condition.CalculatePathToTargetOdaJump", "Condition.MinAccuracySharedValue0dot5"
					];
				} : AIActionAND, 
				{
					AND = 
					[
						"Condition.CalculatePathToTargetOdaJump", "Condition.TargetAbove5mPrediction", "Condition.MinAccuracySharedValue0dot5", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
					];
				} : AIActionAND
			];
		} : AIActionOR;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			strafingTarget = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.5f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow2m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", {
									AND = 
									[
										"Condition.TargetBelow4m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
	loopSubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
			multiplier = 3.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 2.f;
		} : AISubActionApplyTimeDilation, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "sandevistan_loop";
		} : AISubActionSpawnFX, 
		{
			statusEffects = 
			[
				"Oda.OdaNoDodge"
			];
		} : AISubActionStatusEffect
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
}

SprintToTargetDashSandevistan_ShortenDistanceHardMode : SprintToTargetMeleeSandevistan_FirstPunch
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetAbove8m", "Condition.NotIsNPCUnderCyberwareMalfunctionQuickhack"
			];
		} : AIActionAND;
	};
	loop = 
	{
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
		movePolicy = 
		{
			target = "AIActionTarget.CombatTarget";
			movementType = "Sprint";
			tolerance = 0.5f;
			dontUseStart = true;
			dontUseStop = true;
			avoidThreatRange = 0.f;
			dynamicTargetUpdateTimer = 1.f;
			dynamicTargetUpdateDistance = 4.f;
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.NotIsUsingOffMeshLink", {
							OR = 
							[
								"Condition.TargetBelow2m", "Condition.PathFindingFailed", "Condition.NotMinAccuracySharedValue0dot5", {
									AND = 
									[
										"Condition.TargetBelow1m", "Condition.TargetUpTo0dot5mZDiff"
									];
								} : AIActionAND
							];
						} : AIActionOR
					];
				} : AIActionAND;
			}
		];
	};
}

RepositionAfterNoActionConditionCooldown : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.RepositionAfterNoActionCooldown"
	];
}

SetRepositionAfterNoActionConditionCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.RepositionAfterNoActionCooldown"
			];
		} : AISubActionStartCooldown
	];
}

RepositionAfterNoActionCooldown : AIActionCooldown
{
	name = "RepositionAfterNoAction";
	duration = 15.f;
}

MeleeDefaultActionConditionCooldown : AIAction
{
}

MeleeStrongSingle01Definition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SingleMeleeAttackStrong01Definition", "KurtKrauserBoss.SingleMeleeAttackStrong01RecoverMissDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong01RecoverHitDefinition"
	];
}

SingleMeleeAttackStrong01FromIdleDefinition : MeleeActions.SingleMeleeAttackStrong01FromIdleDefinition
{
	startup = 
	{
		duration = 0.833f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loop = 
	{
		duration = 0.233f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong01FromIdleAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong01";
		animVariation = 1;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong01FromIdleAttackData : MeleeStrongSingle01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 2.f );
	attack = "NPCAttacks.StrongAttack";
}

SingleMeleeAttackStrong01Definition : MeleeActions.SingleMeleeAttackStrong01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong01AttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong01";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong01AttackData : MeleeStrongSingle01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 2.f );
	attack = "NPCAttacks.StrongAttack";
}

SingleMeleeAttackStrong01RecoverMissDefinition : MeleeActions.SingleMeleeAttackStrong01RecoverMissDefinition
{
}

SingleMeleeAttackStrong01RecoverHitDefinition : MeleeActions.SingleMeleeAttackStrong01RecoverHitDefinition
{
}

MeleeStrongSingle02Definition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SingleMeleeAttackStrong02Definition", "KurtKrauserBoss.SingleMeleeAttackStrong02RecoverMissDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong02RecoverHitDefinition"
	];
}

SingleMeleeAttackStrong02FromIdleDefinition : MeleeActions.SingleMeleeAttackStrong02FromIdleDefinition
{
	startup = 
	{
		duration = 0.933f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong02FromIdleAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong02";
		animVariation = 1;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong02FromIdleAttackData : MeleeStrongSingle02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.f );
	attack = "NPCAttacks.StrongAttack";
}

SingleMeleeAttackStrong02Definition : MeleeActions.SingleMeleeAttackStrong02Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong02AttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong02";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong02AttackData : MeleeStrongSingle02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.f );
	attack = "NPCAttacks.StrongAttack";
}

SingleMeleeAttackStrong02RecoverMissDefinition : MeleeActions.SingleMeleeAttackStrong02RecoverMissDefinition
{
}

SingleMeleeAttackStrong02RecoverHitDefinition : MeleeActions.SingleMeleeAttackStrong02RecoverHitDefinition
{
}

MeleePowerfulActionConditionCooldown : AIAction
{
}

MeleeComboCondition : AIAction
{
}

MeleeLightCombo01Definition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.Combo01MeleeAttackLight01Definition", "KurtKrauserBoss.Combo01MeleeAttackLight01RecoverMissDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight02Definition", "KurtKrauserBoss.Combo01MeleeAttackLight02RecoverMissDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight02RecoverHitDefinition"
	];
}

Combo01MeleeAttackLight01FromIdleDefinition : MeleeActions.Combo01MeleeAttackLight01FromIdleDefinition
{
	startup = 
	{
		duration = 1.067f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight01FromIdleAttackData
	];
	animData = 
	{
		animFeature = "Combo01MeleeAttackLight01";
		animVariation = 1;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
		};
	};
}

Combo01MeleeAttackLight01FromDashDefinition : MeleeActions.Combo01MeleeAttackLight01FromDashDefinition
{
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight01FromDashAttackData
	];
	animData = 
	{
		animFeature = "Combo01MeleeAttackLight01";
		animVariation = 2;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
		};
	};
}

Combo01MeleeAttackLight01Definition : MeleeActions.Combo01MeleeAttackLight01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight01AttackData
	];
	animData = 
	{
		animFeature = "Combo01MeleeAttackLight01";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
		};
	};
}

Combo01MeleeAttackLight02Definition : MeleeActions.Combo01MeleeAttackLight02Definition
{
	activationCondition = 
	{
	};
	startup = 
	{
		duration = 0.7f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight02AttackData
	];
	animData = 
	{
		animFeature = "Combo01MeleeAttackLight02";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackLightSlideData";
		};
	};
}

Combo01MeleeAttackLight01RecoverMissDefinition : MeleeActions.Combo01MeleeAttackLight01RecoverMissDefinition
{
	loop = 
	{
		duration = 1.733f;
	};
}

Combo01MeleeAttackLight02RecoverMissDefinition : MeleeActions.Combo01MeleeAttackLight02RecoverMissDefinition
{
	loop = 
	{
		duration = 2.f;
	};
}

Combo01MeleeAttackLight02RecoverHitDefinition : MeleeActions.Combo01MeleeAttackLight02RecoverHitDefinition
{
	loop = 
	{
		duration = 1.1f;
	};
}

OneHandedCombo01MeleeAttackLight01FromIdleAttackData : Combo01MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo01MeleeAttackLight01FromDashAttackData : Combo01MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo01MeleeAttackLight01AttackData : Combo01MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo01MeleeAttackLight02AttackData : Combo01MeleeAttackLight02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.StrongAttack";
}

MeleeLightCombo02Definition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.Combo02MeleeAttackLight01Definition", "KurtKrauserBoss.Combo02MeleeAttackLight01RecoverMissDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight02Definition", "KurtKrauserBoss.Combo02MeleeAttackLight02RecoverMissDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight02RecoverHitDefinition"
	];
}

Combo02MeleeAttackLight01FromIdleDefinition : MeleeActions.Combo02MeleeAttackLight01FromIdleDefinition
{
	startup = 
	{
		duration = 0.933f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight01FromIdleAttackData
	];
}

Combo02MeleeAttackLight01FromDashDefinition : MeleeActions.Combo02MeleeAttackLight01FromDashDefinition
{
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight01FromDashAttackData
	];
}

Combo02MeleeAttackLight01Definition : MeleeActions.Combo02MeleeAttackLight01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight01AttackData
	];
}

Combo02MeleeAttackLight02Definition : MeleeActions.Combo02MeleeAttackLight02Definition
{
	activationCondition = 
	{
	};
	startup = 
	{
		duration = 0.567f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
		};
	};
	startupSubActions += 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight02AttackData
	];
}

Combo02MeleeAttackLight01RecoverMissDefinition : MeleeActions.Combo02MeleeAttackLight01RecoverMissDefinition
{
}

Combo02MeleeAttackLight02RecoverMissDefinition : MeleeActions.Combo02MeleeAttackLight02RecoverMissDefinition
{
}

Combo02MeleeAttackLight02RecoverHitDefinition : MeleeActions.Combo02MeleeAttackLight02RecoverHitDefinition
{
}

OneHandedCombo02MeleeAttackLight01FromIdleAttackData : Combo02MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 1.5f, 0.3f, 1.f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo02MeleeAttackLight01FromDashAttackData : Combo02MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 1.5f, 0.3f, 1.f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo02MeleeAttackLight01AttackData : Combo02MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 1.5f, 0.3f, 1.f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo02MeleeAttackLight02AttackData : Combo02MeleeAttackLight02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.StrongAttack";
}

OneHandedCombo02MeleeAttackLight03AttackData : Combo02MeleeAttackLight03AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 2.f );
	attack = "NPCAttacks.StrongAttack";
}

MeleeAttackLightSlideData : AIActionSlideData
{
	duration = 1.f;
	target = "AIActionTarget.CombatTarget";
	distance = 4.f;
	positionSpeed = 5.f;
	offsetToTarget = 1.f;
	rotationSpeed = 360.f;
	usePositionSlide = true;
	useRotationSlide = true;
	positionPredictionTime = 1.f;
}

MeleeAttackStrongSlideData : AIActionSlideData
{
	duration = 1.f;
	target = "AIActionTarget.CombatTarget";
	distance = 4.f;
	positionSpeed = 5.f;
	offsetToTarget = 1.f;
	rotationSpeed = 360.f;
	usePositionSlide = true;
	useRotationSlide = true;
	positionPredictionTime = 1.f;
}

MeleeAttackChargeSlideData : AIActionSlideData
{
	duration = 1.f;
	target = "AIActionTarget.CombatTarget";
	distance = 5.f;
	positionSpeed = 5.f;
	offsetToTarget = 1.f;
	rotationSpeed = 360.f;
	usePositionSlide = true;
	useRotationSlide = true;
	positionPredictionTime = 1.f;
}

MeleeJumpAttackCooldownCondition : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.JumpAttackCooldown"
	];
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.TargetAbove4m"
			];
		} : AIActionOR;
	};
}

SetJumpAttackCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.JumpAttackCooldown"
			];
		} : AISubActionStartCooldown
	];
}

JumpAttackCooldown : AIActionCooldown
{
	name = "JumpAttackCooldown";
	duration = 20.f;
}

MeleeChargeJump01Definition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SprintToTargetMeleeSandevistanKurt", "MeleeOneHandedActions.Kurt_SingleMeleeAttackChargeJump01Definition", "MeleeOneHandedActions.Kurt_SingleMeleeAttackChargeJump01RecoverHitDefinition"
	];
}

TauntAfterKD : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.StatusEffectTargetKnockdown"
			];
		} : AIActionAND;
	};
	loop = 
	{
		duration = 1.1f;
	};
	animData = 
	{
		animFeature = "MeleeSupportTaunt";
		animVariation = 0;
		animSlot = 
		{
		};
	};
}

Kurt_FailAttackRangeChargedJump : BaseFailAttack
{
	activationCondition = 
	{
		condition = 
		{
			OR = 
			[
				"Condition.TargetAbove4m"
			];
		} : AIActionOR;
	};
}

PowerfulMeleeAttackCooldownCondition : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.PowerfulMeleeAttackCooldown"
	];
}

SetPowerfulMeleeAttackCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.PowerfulMeleeAttackCooldown"
			];
		} : AISubActionStartCooldown
	];
}

PowerfulMeleeAttackCooldown : AIActionCooldown
{
	name = "PowerfulMeleeAttack";
	duration = 7.f;
}

PlayerNotAbove_1mCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetUpTo1mZDiffFromCombatTarget"
			];
		} : AIActionAND;
	};
}

Taunt_Melee01 : AIAction
{
	loop = 
	{
		duration = 1.5f;
		useDurationFromAnimSlot = false;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	animData = 
	{
		animFeature = "MeleeCombatTaunt";
		animVariation = 1;
		animSlot = 
		{
			loopSlide = "OdaBoss.RotateSlideData";
		};
	};
}

Stagger_Transition01 : AIAction
{
	loop = 
	{
		duration = 2.5f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	animData = 
	{
		animFeature = "KurtPhase2Transition";
		animVariation = 0;
		animSlot = 
		{
			useRootMotion = true;
			usePoseMatching = true;
		};
	};
	subActions = 
	[
		{
			name = "hacks_system_collapse";
		} : AISubActionSpawnFX, 
		{
			name = "hacks_cyberware_malfunction";
		} : AISubActionSpawnFX
	];
}

SandevistanChargeDashFrontR : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityHasSandevistan", "Condition.CalculatePathStraightFullCheckToTarget", "Condition.TargetUpTo1dot4mZDiff"
			];
		} : AIActionAND;
	};
	startup = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow2m"
					];
				} : AIActionOR;
			}
		];
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Move";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "kerenzikov_right";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			multiplier = 5.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	animData = 
	{
		animFeature = "DashSandevistanChargeFrontR";
		animSlot = 
		{
			startupSlide = "DashAndDodgeActions.SandevistanChargeStraightSlideData";
		};
	};
}

SandevistanChargeDashFrontL : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityHasSandevistan", "Condition.CalculatePathStraightFullCheckToTarget", "Condition.TargetUpTo1dot4mZDiff"
			];
		} : AIActionAND;
	};
	startup = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow2m"
					];
				} : AIActionOR;
			}
		];
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			attackDuration = 0.1f;
			attackRange = 1.5f;
			attackTime = 0.f;
			attackName = "Move";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "kerenzikov_left";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			multiplier = 5.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	animData = 
	{
		animFeature = "DashSandevistanChargeFrontL";
		animSlot = 
		{
			startupSlide = "DashAndDodgeActions.SandevistanChargeStraightSlideData";
		};
	};
}

LocomotionKerenzikovRightFront : DashAndDodgeActions.DodgeKerenzikovRightFrontDefinition
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightRightClose", "Condition.NotCalculatePathStraightForwardClose"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.4f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 1.2f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	startupSubActions = [];
	subActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			delay = -1.f;
			cooldowns = 
			[
				"AnimalsBoss.SasquatchDodgeCooldown"
			];
		} : AISubActionStartCooldown, 
		{
			name = "fx_sandevistan_right";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX
	];
}

LocomotionKerenzikovLeftFront : DashAndDodgeActions.DodgeKerenzikovLeftFrontDefinition
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightLeftClose", "Condition.NotCalculatePathStraightForwardClose"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.4f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 1.2f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	startupSubActions = [];
	subActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			delay = -1.f;
			cooldowns = 
			[
				"AnimalsBoss.SasquatchDodgeCooldown"
			];
		} : AISubActionStartCooldown, 
		{
			name = "fx_sandevistan_left";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX
	];
}

SandevistanChargeDashLeft : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityHasSandevistan", "Condition.CalculatePathStraightToTarget", "Condition.CalculatePathStraightFullCheckLeftClose", "Condition.CalculatePathStraightFullCheckFrontLeftClose", "Condition.TargetUpTo1dot4mZDiff", "Condition.TargetAbove5m"
			];
		} : AIActionAND;
	};
	startup = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow3m"
					];
				} : AIActionOR;
			}
		];
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Move";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "kerenzikov_left";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			multiplier = 5.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	animData = 
	{
		animFeature = "DashSandevistanChargeLeft";
		animSlot = 
		{
			startupSlide = "DashAndDodgeActions.SandevistanChargeSlideData";
		};
	};
}

SandevistanChargeDashRight : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AbilityHasSandevistan", "Condition.CalculatePathStraightToTarget", "Condition.CalculatePathStraightFullCheckRightClose", "Condition.CalculatePathStraightFullCheckFrontRightClose", "Condition.TargetUpTo1dot4mZDiff", "Condition.TargetAbove5m"
			];
		} : AIActionAND;
	};
	startup = 
	{
		useDurationFromAnimSlot = false;
		duration = 1.5f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			hitReactionMode = "StaggerMin";
			upperBodyState = "Attack";
		};
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					OR = 
					[
						"Condition.TargetBelow3m"
					];
				} : AIActionOR;
			}
		];
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
			statusEffects = 
			[
				"BaseStatusEffect.Sandevistan"
			];
			remove = true;
			apply = true;
		} : AISubActionStatusEffect, 
		{
			name = "kerenzikov_right";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
		} : AISubActionDisableAimAssist, 
		{
			weaponSlots = 
			[
				"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
			];
			attackDuration = 0.1f;
			attackRange = 2.f;
			attackTime = 0.f;
			attackName = "Move";
			colliderBoxSize = ( 0, 0, 0 );
		} : AISubActionAttackWithWeapon, 
		{
			multiplier = 5.5f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation
	];
	recoverySubActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	animData = 
	{
		animFeature = "DashSandevistanChargeRight";
		animSlot = 
		{
			startupSlide = "DashAndDodgeActions.SandevistanChargeSlideData";
		};
	};
}

DashForwardToTarget : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightToTarget", "Condition.TargetAbove3mPrediction", "Condition.TargetBelow10m", "Condition.TargetIsVisible", "Condition.MinAccuracySharedValue0dot5"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.667;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.TargetBelow3m"
					];
				} : AIActionAND;
			}
		];
	};
	subActions = 
	[
		{
			name = "fx_sandevistan_right";
		} : AISubActionSpawnFX, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX
	];
	loop = 
	{
		duration = 0.2;
	};
	animData = 
	{
		animFeature = "DashForwardLong";
		animSlot = 
		{
			startupSlide = "OdaBoss.DashForwardSlideData";
		};
	};
}

MeleeTauntCooldownCondition : AIAction
{
	cooldowns = 
	[
		"KurtKrauserBoss.MeleeTauntCooldown"
	];
}

SetMeleeTauntCooldown : AIAction
{
	loop = 
	{
		duration = 0.1f;
	};
	subActions = 
	[
		{
			delay = -1.f;
			cooldowns = 
			[
				"KurtKrauserBoss.MeleeTauntCooldown"
			];
		} : AISubActionStartCooldown
	];
}

MeleeTauntCooldown : AIActionCooldown
{
	name = "MeleeTauntCooldown";
	duration = 10.f;
}

MeleeStrongSingle02_TakedownDefinition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SingleMeleeAttackStrong02_TakedownDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong02RecoverMissDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong02RecoverHitDefinition"
	];
}

SingleMeleeAttackStrong02_TakedownDefinition : MeleeActions.SingleMeleeAttackStrong02Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong02_TakedownAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong02";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

SingleMeleeAttackStrong02_TakedownFromIdleDefinition : MeleeActions.SingleMeleeAttackStrong02FromIdleDefinition
{
	startup = 
	{
		duration = 0.933f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	startupSubActions += 
	[
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX
	];
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
		} : KurtMeleeAttackStrong02_TakedownAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong02";
		animVariation = 1;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong02_TakedownAttackData : MeleeStrongSingle02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

MeleeStrongSingle01_TakedownDefinition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.SingleMeleeAttackStrong01_TakedownDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong01RecoverMissDefinition", "KurtKrauserBoss.SingleMeleeAttackStrong01RecoverHitDefinition"
	];
}

SingleMeleeAttackStrong01_TakedownFromIdleDefinition : MeleeActions.SingleMeleeAttackStrong01FromIdleDefinition
{
	startup = 
	{
		duration = 0.833f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	loop = 
	{
		duration = 0.233f;
		changeNPCState = 
		{
			upperBodyState = "Attack";
			hitReactionMode = "StaggerMin";
		};
	};
	startupSubActions += 
	[
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX
	];
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
		} : KurtMeleeAttackStrong01_TakedownFromIdleAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong01";
		animVariation = 1;
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong01_TakedownFromIdleAttackData : MeleeStrongSingle01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 2.f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

SingleMeleeAttackStrong01_TakedownDefinition : MeleeActions.SingleMeleeAttackStrong01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : KurtMeleeAttackStrong01_TakedownAttackData
	];
	animData = 
	{
		animFeature = "SingleMeleeAttackStrong01";
		animSlot = 
		{
			startupSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
			loopSlide = "KurtKrauserBoss.MeleeAttackStrongSlideData";
		};
	};
}

KurtMeleeAttackStrong01_TakedownAttackData : MeleeStrongSingle01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 2.f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

MeleeLightCombo01_TakedownDefinition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.Combo01MeleeAttackLight01_TakedownDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight01RecoverMissDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight02_TakedownDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight02RecoverMissDefinition", "KurtKrauserBoss.Combo01MeleeAttackLight02RecoverHitDefinition"
	];
}

Combo01MeleeAttackLight01_TakedownFromIdleDefinition : KurtKrauserBoss.Combo01MeleeAttackLight01FromIdleDefinition
{
	startupSubActions += 
	[
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX
	];
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
		} : OneHandedCombo01MeleeAttackLight01_TakedownFromIdleAttackData
	];
}

OneHandedCombo01MeleeAttackLight01_TakedownFromIdleAttackData : Combo01MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

Combo01MeleeAttackLight01_TakedownDefinition : KurtKrauserBoss.Combo01MeleeAttackLight01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight01_TakedownAttackData
	];
}

OneHandedCombo01MeleeAttackLight01_TakedownAttackData : Combo01MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

Combo01MeleeAttackLight02_TakedownDefinition : KurtKrauserBoss.Combo01MeleeAttackLight02Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo01MeleeAttackLight02_TakedownAttackData
	];
}

OneHandedCombo01MeleeAttackLight02_TakedownAttackData : Combo01MeleeAttackLight02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

MeleeLightCombo02_TakedownDefinition : AIActionSequence
{
	actions = 
	[
		"KurtKrauserBoss.Combo02MeleeAttackLight01_TakedownDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight01RecoverMissDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight02_TakedownDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight02RecoverMissDefinition", "KurtKrauserBoss.Combo02MeleeAttackLight02RecoverHitDefinition"
	];
}

Combo02MeleeAttackLight01_TakedownFromIdleDefinition : KurtKrauserBoss.Combo02MeleeAttackLight01FromIdleDefinition
{
	loopSubActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
		} : OneHandedCombo02MeleeAttackLight01_TakedownFromIdleAttackData
	];
	startupSubActions += 
	[
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX
	];
}

OneHandedCombo02MeleeAttackLight01_TakedownFromIdleAttackData : Combo02MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 1.5f, 0.3f, 1.f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

Combo02MeleeAttackLight01_TakedownDefinition : KurtKrauserBoss.Combo02MeleeAttackLight01Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight01_TakedownAttackData
	];
}

OneHandedCombo02MeleeAttackLight01_TakedownAttackData : Combo02MeleeAttackLight01AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 1.5f, 0.3f, 1.f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

Combo02MeleeAttackLight02_TakedownDefinition : KurtKrauserBoss.Combo02MeleeAttackLight02Definition
{
	activationCondition = 
	{
	};
	startupSubActions += 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.Invulnerable"
			];
			remove = false;
		} : AISubActionStatusEffect, 
		{
			name = "eye_glow_red";
		} : AISubActionSpawnFX, 
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation
	];
	loopSubActions = 
	[
		{
		} : OneHandedCombo02MeleeAttackLight02_TakedownAttackData
	];
}

OneHandedCombo02MeleeAttackLight02_TakedownAttackData : Combo02MeleeAttackLight02AttackData
{
	weaponSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
	];
	attackDuration = 0.05f;
	attackRange = 3.f;
	attackTime = 0.05f;
	colliderBoxSize = ( 0.75f, 0.3f, 1.5f );
	attack = "NPCAttacks.KurtTakedownAttack02";
}

ReloadLMG : AIAction
{
	startup = 
	{
		duration = 0.5f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Attack";
		};
	};
	loop = 
	{
		duration = 1.9f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Reload";
		};
		toNextPhaseConditionCheckInterval = 0.25f;
		toNextPhaseCondition = 
		[
			{
				condition = 
				{
					AND = 
					[
						"Condition.TargetPOVAbove180deg"
					];
				} : AIActionAND;
			}
		];
	};
	recovery = 
	{
		duration = 0.6f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Reload";
		};
	};
	animData = 
	{
		animFeature = "OdaReload";
		animSlot = 
		{
			startupSlide = "OdaBoss.RotateSlideData";
			loopSlide = "OdaBoss.RotateSlideData";
			recoverySlide = "OdaBoss.RotateSlideData";
		};
	};
}

DashCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow10m", "Condition.TargetBelow180deg", "Condition.TargetIsVisible"
			];
		} : AIActionAND;
	};
}

DodgeKerenzikovBackDefinition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightFullCheckBackClose", "Condition.TargetBelow3mPrediction"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.4f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			multiplier = 1.3f;
			overrideMultiplerWhenPlayerInTimeDilation = 0.75f;
			easeIn = "";
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "kerenzikov_center";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "DodgeBackKerenzikov";
		animSlot = 
		{
			useDynamicObjectsCheck = false;
			startupSlide = "DashAndDodgeActions.StepsSlideData";
			loopSlide = "DashAndDodgeActions.StepsSlideData";
		};
	};
	allowBlendDuration = 0.4f;
}

DodgeKerenzikovLeftFrontDefinition : AIAction
{
	tickets = 
	[
		"AITicketType.Dodge"
	];
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightFullCheckLeftClose", "Condition.TargetPOVRight"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.4f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			multiplier = 1.3f;
			overrideMultiplerWhenPlayerInTimeDilation = 0.75f;
			easeIn = "";
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "kerenzikov_left";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "DodgeLeftKerenzikov";
		weaponOverride = 2;
		animSlot = 
		{
			useDynamicObjectsCheck = false;
			startupSlide = "DashAndDodgeActions.StepsSlideData";
			loopSlide = "DashAndDodgeActions.StepsSlideData";
		};
	};
	allowBlendDuration = 0.4f;
}

DodgeKerenzikovRightFrontDefinition : AIAction
{
	tickets = 
	[
		"AITicketType.Dodge"
	];
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.CalculatePathStraightFullCheckRightClose", "Condition.TargetPOVLeft"
			];
		} : AIActionAND;
	};
	startup = 
	{
		duration = 0.4f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	loop = 
	{
		duration = 1.f;
		changeNPCState = 
		{
			hitReactionMode = "Unstoppable";
			upperBodyState = "Taunt";
		};
	};
	subActions = 
	[
		{
			multiplier = 1.f;
			overrideMultiplerWhenPlayerInTimeDilation = 1.f;
		} : AISubActionApplyTimeDilation, 
		{
		} : AISubActionDisableAimAssist, 
		{
			multiplier = 1.3f;
			overrideMultiplerWhenPlayerInTimeDilation = 0.75f;
			easeIn = "";
			easeOut = "SandevistanEaseOut";
		} : AISubActionApplyTimeDilation, 
		{
			name = "fx_sandevistan_trails";
		} : AISubActionSpawnFX, 
		{
			name = "kerenzikov_right";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "DodgeRightKerenzikov";
		weaponOverride = 2;
		animSlot = 
		{
			useDynamicObjectsCheck = false;
			startupSlide = "DashAndDodgeActions.StepsSlideData";
			loopSlide = "DashAndDodgeActions.StepsSlideData";
		};
	};
	allowBlendDuration = 0.4f;
}

KurtOwnerParryCounterCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AttackOwnerMaxParriesCount2"
			];
		} : AIActionAND;
	};
	loop = 
	{
	};
}

KurtOwnerParryCounterSoftCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.AttackOwnerMaxParriesCount1"
			];
		} : AIActionAND;
	};
	loop = 
	{
	};
}

ResetParryCount : AIAction
{
	loop = 
	{
		duration = 0.1f;
		changeNPCState = 
		{
			locomotionMode = "Static";
			upperBodyState = "Attack";
			hitReactionMode = "UnstoppableTwitchMin";
		};
	};
	subActions = 
	[
		{
			name = "ResetmyAttackParriedCount";
		} : AISubActionQueueAIEvent
	];
}

ParryStaggerBack : AIAction
{
	loop = 
	{
		duration = 3.f;
		changeNPCState = 
		{
			upperBodyState = "Taunt";
			hitReactionMode = "Unstoppable";
		};
	};
	subActions = 
	[
		{
			name = "status_electricity_resistance";
		} : AISubActionSpawnFX
	];
	animData = 
	{
		animFeature = "SE_Staggered";
		animSlot = 
		{
		};
	};
}

Shooting : StatusEffect
{
	fk< StatModifierGroup > duration = "BaseStats.InfiniteDuration";
}

AppearanceSwap_KnifeOn : AIAction
{
	loop = 
	{
		duration = 0.000001f;
	};
	loopSubActions = 
	[
		{
			name = "KnifeOn";
		} : AISubActionQueueAIEvent
	];
}

AppearanceSwap_KnifeOff : AIAction
{
	loop = 
	{
		duration = 0.000001f;
	};
	loopSubActions = 
	[
		{
			name = "KnifeOff";
		} : AISubActionQueueAIEvent
	];
}

ThrowGrenadeBiohazardKurt : ItemHandling.ThrowGrenade
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.ThrowGrenadeCondition"
			];
		} : AIActionAND;
	};
	startupSubActions = 
	[
		{
			delay = 0.25f;
			attachmentSlot = "AttachmentSlots.WeaponLeft";
			itemID = "Items.GrenadeBiohazardRegular";
		} : AISubActionForceEquip
	];
}

ThrowGrenadeKurtCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.HasRangedWeapon", "Condition.MinAccuracyValue0", "Condition.NotIsInWorkspot", "Condition.NotIsUsingOffMeshLink", {
					target = "AIActionTarget.CombatTarget";
					distance = ( 13.f, 35.f );
					coneAngle = ( -1.f, 60.f );
				} : AISpatialCond
			];
		} : AIActionAND;
	};
}

TargetTooCloseCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow6m"
			];
		} : AIActionAND;
	};
}

TargetBelow10mConditionKurt : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetBelow10m"
			];
		} : AIActionAND;
	};
}

NotIsPlayerOnNavmeshCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotIsPlayerOnNavmesh"
			];
		} : AIActionAND;
	};
}

RangedModeConditionKurt : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.NotCalculatePathToTarget"
			];
		} : AIActionAND;
	};
}

SameGroundAsPlayerCondition : AIAction
{
	activationCondition = 
	{
		condition = 
		{
			AND = 
			[
				"Condition.TargetUpTo0dot5mZDiff"
			];
		} : AIActionAND;
	};
}

ChangeAccuracySE : AIAction
{
	loop = 
	{
		duration = 0.0000001f;
	};
	subActions = 
	[
		{
			statusEffects = 
			[
				"BaseStatusEffect.BoostAccuracyStatusEffect"
			];
			apply = true;
		} : AISubActionStatusEffect
	];
}

