Upload from upload_mods.ps1
This commit is contained in:
67
Scripts/Items/ModularActions/ActionModuleDynamicGraze.cs
Normal file
67
Scripts/Items/ModularActions/ActionModuleDynamicGraze.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using HarmonyLib;
|
||||
using KFCommonUtilityLib.Scripts.Attributes;
|
||||
using KFCommonUtilityLib.Scripts.StaticManagers;
|
||||
|
||||
[TypeTarget(typeof(ItemActionDynamic))]
|
||||
public class ActionModuleDynamicGraze
|
||||
{
|
||||
private string dynamicSoundStart = null;
|
||||
|
||||
[HarmonyPatch(nameof(ItemAction.ExecuteAction)), MethodTargetPrefix]
|
||||
private bool Prefix_ExecuteAction(ItemActionDynamic __instance, ItemActionData _actionData, bool _bReleased, out (bool executed, string originalSound) __state)
|
||||
{
|
||||
if (!_bReleased && !string.IsNullOrEmpty(dynamicSoundStart) && _actionData.invData.holdingEntity is EntityPlayerLocal player)
|
||||
{
|
||||
var targets = AnimationRiggingManager.GetRigTargetsFromPlayer(player);
|
||||
if (targets && !targets.Destroyed && targets.IsAnimationSet)
|
||||
{
|
||||
__state = (true, __instance.soundStart);
|
||||
__instance.soundStart = dynamicSoundStart;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
__state = (false, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPatch(nameof(ItemAction.ExecuteAction)), MethodTargetPostfix]
|
||||
private void Postfix_ExecuteAction(ItemActionDynamic __instance, (bool executed, string originalSound) __state)
|
||||
{
|
||||
if (__state.executed)
|
||||
{
|
||||
__instance.soundStart = __state.originalSound;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(nameof(ItemAction.OnHoldingUpdate)), MethodTargetPrefix]
|
||||
private bool Prefix_OnHoldingUpdate(ItemActionDynamic __instance, ItemActionData _actionData, out (bool executed, bool useGrazeCast) __state)
|
||||
{
|
||||
if (_actionData.invData.holdingEntity is EntityPlayerLocal player)
|
||||
{
|
||||
var targets = AnimationRiggingManager.GetRigTargetsFromPlayer(player);
|
||||
if (targets && !targets.Destroyed && targets.ItemCurrent)
|
||||
{
|
||||
__state = (true, __instance.UseGrazingHits);
|
||||
__instance.UseGrazingHits = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
__state = (false, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPatch(nameof(ItemAction.OnHoldingUpdate)), MethodTargetPostfix]
|
||||
private void Postfix_OnHoldingUpdate(ItemActionDynamic __instance, (bool executed, bool useGrazeCast) __state)
|
||||
{
|
||||
if (__state.executed)
|
||||
{
|
||||
__instance.UseGrazingHits = __state.useGrazeCast;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(nameof(ItemAction.ReadFrom)), MethodTargetPostfix]
|
||||
private void Postfix_ReadFrom(DynamicProperties _props)
|
||||
{
|
||||
_props.ParseString("DynamicSoundStart", ref dynamicSoundStart);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user