Ejemplo n.º 1
0
    private static bool GetStaminaUsage_Prefix(Attack __instance, Humanoid ___m_character, float ___m_attackStamina, ItemDrop.ItemData ___m_weapon, ref float __result)
    {
        if (Player.m_localPlayer == null || (UnityEngine.Object)Player.m_localPlayer != (UnityEngine.Object)___m_character)
        {
            // Do default logic for non-local players
            return(true);
        }

        if ((double)___m_attackStamina <= 0.0)
        {
            __result = 0.0f;
            return(false);
        }

        double attackStamina = (double)___m_attackStamina;

        EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine);
        float interpFactor = easeFunc(1f, BetterStaminaPlugin.weaponMaxSkillAttackStaminaCost.Value, ___m_character.GetSkillFactor(___m_weapon.m_shared.m_skillType));

        __result = (float)(attackStamina * interpFactor);

        if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value)
        {
            string callingMethodName = new StackFrame(2).GetMethod().Name;
            if (callingMethodName.Contains("Update"))
            {
                float originalStaminaReduction = (float)(attackStamina * (1f - BetterStaminaPlugin.weaponMaxSkillAttackStaminaCost.Value /*0.330000013113022 */) * (double)___m_character.GetSkillFactor(___m_weapon.m_shared.m_skillType));
                float originalCalculation      = (float)(attackStamina - originalStaminaReduction);
                BetterStaminaPlugin.DebugLog($"Attack.GetStaminaUsage(): Cost - {__result}; Original: {originalCalculation}; Custom: {__result}; skill: {___m_character.GetSkillFactor(___m_weapon.m_shared.m_skillType)}({___m_weapon.m_shared.m_skillType});");
            }
        }

        // Skip original function
        return(false);
    }
Ejemplo n.º 2
0
    private static bool HammerStamina_Prefix(Player __instance, ref float v)
    {
        if (__instance.GetRightItem() != null)
        {
            string name = __instance.GetRightItem().m_shared.m_name;
            string callingMethodName = new StackFrame(2).GetMethod().Name;

            if (callingMethodName.Contains("Repair") || callingMethodName.Contains("UpdatePlacement"))
            {
                if (name == "$item_hammer" && BetterStaminaPlugin.removeHammerStaminaCost.Value ||
                    name == "$item_hoe" && BetterStaminaPlugin.removeHoeStaminaCost.Value ||
                    name == "$item_cultivator" && BetterStaminaPlugin.removeCultivatorStaminaCost.Value)
                {
                    v = 0.0f;
                }
            }
        }

        return(true);
    }