private static bool Prefix(BearSpearItem __instance, BaseAi ___m_HitAi, ref float ___m_HitDamage, ref float ___m_HitBleedOutMinutes, LocalizedDamage ___m_LocalizedDamage, Vector3 ___m_HitPosition, Vector3 ___m_HitSourcePosition, GearItem ___m_GearItem) { var settings = nonStroyBearspearSettings.Instance; if (!___m_HitAi) { return(false); } if (GameManager.GetPlayerStruggleComponent().GetBearSpearStruggleOutcome() == BearSpearStruggleOutcome.Failed) { ___m_HitDamage = ___m_HitDamage * settings.Damagefailed; ___m_HitBleedOutMinutes = ___m_HitDamage * settings.Bleedfailed; } else { ___m_HitDamage = ___m_HitDamage * settings.DamageSuccess; ___m_HitBleedOutMinutes = ___m_HitDamage * settings.BleedSuccess; } if (___m_LocalizedDamage) { ___m_HitAi.SetupDamageForAnim(___m_HitPosition, ___m_HitSourcePosition, ___m_LocalizedDamage); } ___m_HitAi.ApplyDamage(___m_HitDamage, ___m_HitBleedOutMinutes, DamageSource.Player, string.Empty); if (___m_GearItem) { ___m_GearItem.DegradeOnUse(); } if (___m_GearItem.IsWornOut()) { AccessTools.Method(typeof(BearSpearItem), "Break").Invoke(__instance, null); } return(false); }
private static void Postfix(BaseAi __instance) { if (!(bool)__instance.m_BearHuntAiRedux) { PlayerManager playerManagerComponent = GameManager.GetPlayerManagerComponent(); if ((bool)playerManagerComponent.m_ItemInHands) { BearSpearItem bearSpearItem = playerManagerComponent.m_ItemInHands.m_BearSpearItem; if ((bool)bearSpearItem && bearSpearItem.IsRaised()) { bearSpearItem.UpdateCollision(__instance); } } } }