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); }
public Rotation(BaseEvent be, Character caster, Environment environment) { this.be = be; this.caster = caster; this.environment = environment; ra = (RotationAction)be.ShowAction(); Entity entity = caster.GameObject().GetComponent <EntityReference>().Entity; movementComponent = entity.GetComponent <MovementComponent>(); TimelineTrigger timelineTrigger = (TimelineTrigger)be.ShowTrigger(); duration = ra.ShowDurationInSeconds(timelineTrigger.ShowScaleTime()); interpolationMethod = ra.ShowInterpolation(); interpolator = EasingFunctions.GetEasingFunction(interpolationMethod); movingDirection = ra.ShowMovingDirection(); mode = ra.mode.ShowRotationMode(); switch (mode) { case RotationAction.RotationMode.Delta: deltaRotationMode = (RotationAction.DeltaRotationMode)ra.mode; break; case RotationAction.RotationMode.Destination: destinationRotationMode = (RotationAction.DestinationRotationMode)ra.mode; break; } }
public void smoothBlend(float targetOpacity, float blendDuration, EasingFunction easingFunction) { changingOpacity = true; this.targetOpacity = targetOpacity; this.blendDuration = blendDuration; this.currentTime = 0.0f; startOpacity = workingAlpha; easeFunc = EasingFunctions.GetEasingFunction(easingFunction); }
public static float GetSwimmingStaminaDrain(float drainMax, float drainMin, float skillFactor, Player playerInst) { if (Player.m_localPlayer != null && (UnityEngine.Object)Player.m_localPlayer == (UnityEngine.Object)playerInst) { EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(BetterStaminaPlugin.swimMaxStaminaCost.Value, BetterStaminaPlugin.swimMinStaminaCost.Value, skillFactor); if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value) { BetterStaminaPlugin.DebugLog($"SwimStamina: Usage change: {Mathf.Lerp(drainMax, drainMin, skillFactor)} - {interpFactor}; skill: {playerInst.GetSkillFactor(Skills.SkillType.Swim)};"); } return(interpFactor); } return(Mathf.Lerp(drainMax, drainMin, skillFactor)); }
public static float GetUpdatedHoldBowStaminaDrain(float weaponStaminaDrain, Player playerInst) { if (Player.m_localPlayer != null && (UnityEngine.Object)Player.m_localPlayer == (UnityEngine.Object)playerInst) { EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(1f, BetterStaminaPlugin.bowMaxSkillHoldStaminaCost.Value, playerInst.GetSkillFactor(Skills.SkillType.Bows)); float newWeaponStaminaDrain = weaponStaminaDrain * interpFactor; if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value) { BetterStaminaPlugin.DebugLog($"BowHoldStamina: Usage change: {weaponStaminaDrain} - {newWeaponStaminaDrain}; Mathf.Lerp: {Mathf.Lerp(1f, BetterStaminaPlugin.bowMaxSkillHoldStaminaCost.Value, playerInst.GetSkillFactor(Skills.SkillType.Blocking))}; Custom: {interpFactor}; skill: {playerInst.GetSkillFactor(Skills.SkillType.Bows)};"); } return(newWeaponStaminaDrain); } return(weaponStaminaDrain); }
private static void OnJump_Prefix(Player __instance, Skills ___m_skills) { defaultJumpStaminaUsage = __instance.m_jumpStaminaUsage; if (Player.m_localPlayer == null || (UnityEngine.Object)Player.m_localPlayer != (UnityEngine.Object)__instance) { return; } EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(1f, BetterStaminaPlugin.jumpMaxSkillStaminaCost.Value, ___m_skills.GetSkillFactor(Skills.SkillType.Jump)); __instance.m_jumpStaminaUsage = __instance.m_jumpStaminaUsage * interpFactor; if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value) { BetterStaminaPlugin.DebugLog($"OnJump: Usage change: {defaultJumpStaminaUsage} - {__instance.m_jumpStaminaUsage}; Mathf.Lerp: {Mathf.Lerp(1f, BetterStaminaPlugin.jumpMaxSkillStaminaCost.Value, ___m_skills.GetSkillFactor(Skills.SkillType.Jump))}; Custom: {interpFactor}; skill: {___m_skills.GetSkillFactor(Skills.SkillType.Jump)};"); } }
private static void UpdateDodge_Prefix(Player __instance, Skills ___m_skills, float ___m_queuedDodgeTimer) { defaultStaminaUsage = __instance.m_dodgeStaminaUsage; if (Player.m_localPlayer == null || (UnityEngine.Object)Player.m_localPlayer != (UnityEngine.Object)__instance) { return; } EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(1f, BetterStaminaPlugin.dodgeMaxSkillStaminaCost.Value, ___m_skills.GetSkillFactor(Skills.SkillType.Jump)); __instance.m_dodgeStaminaUsage = __instance.m_dodgeStaminaUsage * interpFactor; if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value && (double)___m_queuedDodgeTimer > 0.0 && __instance.IsOnGround() && (!__instance.IsDead() && !__instance.InAttack()) && (!__instance.IsEncumbered() && !__instance.InDodge())) { BetterStaminaPlugin.DebugLog($"UpdateDoge: Usage change: {defaultStaminaUsage} - {__instance.m_dodgeStaminaUsage}; Mathf.Lerp: {Mathf.Lerp(1f, BetterStaminaPlugin.dodgeMaxSkillStaminaCost.Value, ___m_skills.GetSkillFactor(Skills.SkillType.Jump))}; Custom: {interpFactor}; skill: {___m_skills.GetSkillFactor(Skills.SkillType.Jump)};"); } }
public RagdollModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity, Camera camera, SkillId skillId, Environment environment, CollectionOfInteractions modifierInteractionCollection, WallHitConfig wallHitConfig, float damageScale, ProjectileComponent projectile) : base(info, casterEntity, targetEntity, environment, modifierInteractionCollection) { this.casterEntity = casterEntity; this.targetEntity = targetEntity; this.camera = camera; this.skillId = skillId; this.environment = environment; this.whc = wallHitConfig; this.damageScale = damageScale; this.projectile = projectile; this.info = (RagdollInfo)info; easingFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Functions.EaseOutQuad); CalculateDurations(this.info); switch (this.info.RagdollModifierConfig.ShowAnimationProfile()) { case BlastModifierConfig.AnimationProfile.Far: animProfile = new FarAnimProfile(); break; case BlastModifierConfig.AnimationProfile.High: animProfile = new HighAnimProfile(); break; case BlastModifierConfig.AnimationProfile.Medium: animProfile = new MediumAnimProfile(); break; } targetCharacter = targetEntity.GetComponent <SkillComponent>().Character; StatsComponent casterStatsComponent = casterEntity.GetComponent <StatsComponent>(); characterStats = casterStatsComponent.CharacterStats; //DLog.Log("RagdollModifier: state: " + state); }
private static void BlockAttack_Prefix(Humanoid __instance) { if (Player.m_localPlayer != null && (UnityEngine.Object)Player.m_localPlayer == (UnityEngine.Object)__instance) { defaultBlockStaminaDrain = __instance.m_blockStaminaDrain; Skills playerSkills = (Skills)BetterStaminaPlugin.playerSkillsField.GetValue(Player.m_localPlayer); if (playerSkills == null) { return; } EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(1f, BetterStaminaPlugin.blockMaxSkillStaminaCost.Value, playerSkills.GetSkillFactor(Skills.SkillType.Blocking)); __instance.m_blockStaminaDrain = __instance.m_blockStaminaDrain * interpFactor; if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value) { BetterStaminaPlugin.DebugLog($"BlockAttack: Usage change: {defaultBlockStaminaDrain} - {__instance.m_blockStaminaDrain}; Mathf.Lerp: {Mathf.Lerp(1f, BetterStaminaPlugin.blockMaxSkillStaminaCost.Value, playerSkills.GetSkillFactor(Skills.SkillType.Blocking))}; Custom: {interpFactor}; skill: {playerSkills.GetSkillFactor(Skills.SkillType.Blocking)};"); } } }
public static float GetRunStaminaSkillFactor(float drainMax, float drainMin, float skillFactor, Player playerInst) { drainMin = BetterStaminaPlugin.runMaxSkillStaminaCost.Value; if (Player.m_localPlayer != null && (UnityEngine.Object)Player.m_localPlayer == (UnityEngine.Object)playerInst) { if (playerInst.GetCurrentWeapon() != null) { drainMin = BetterStaminaPlugin.runWithWeapMaxSkillStaminaCost.Value; } EasingFunctions.Function easeFunc = EasingFunctions.GetEasingFunction(EasingFunctions.Ease.EaseOutSine); float interpFactor = easeFunc(drainMax, drainMin, skillFactor); if (BetterStaminaPlugin.enableSkillStaminaLogging != null && BetterStaminaPlugin.enableSkillStaminaLogging.Value) { BetterStaminaPlugin.DebugLog($"RunStamina: Skill factor change: {Mathf.Lerp(drainMax, drainMin, skillFactor)} - {interpFactor}"); } return(interpFactor); } return(Mathf.Lerp(drainMax, drainMin, skillFactor)); }
private void SetDashFunctions() { _dashFunction = EasingFunctions.GetEasingFunction(dashEasingFunction); _dashDerivativeFunction = EasingFunctions.GetEasingFunctionDerivative(dashEasingFunction); _currentDashEasingFunction = dashEasingFunction; }