static void Postfix(MWS_ChargeUp __instance) { if (Controllers.mainControllerPose.GetVelocity().magnitude > 0.5f) { Collider[] enemyColliders = Physics.OverlapSphere(__instance.m_weapon.ModelData.m_damageRefAttack.position, VRHammer.hammerSizeMult * .75f, LayerManager.MASK_ENEMY_DAMAGABLE); bool shouldReleaseCharge = enemyColliders.Length > 0; if (GTFO_VR_Plugin.DEBUG_ENABLED) { if (VRConfig.configDebugShowHammerHitbox.Value) { DebugDraw3D.DrawSphere(__instance.m_weapon.ModelData.m_damageRefAttack.position, VRHammer.hammerSizeMult * .75f, ColorExt.Blue(0.2f)); DebugDraw3D.DrawSphere(__instance.m_weapon.ModelData.m_damageRefAttack.position, VRHammer.hammerSizeMult * .25f, ColorExt.Red(0.2f)); } } if (Controllers.mainControllerPose.GetVelocity().magnitude > 1.6f) { Collider[] staticColliders = Physics.OverlapSphere(__instance.m_weapon.ModelData.m_damageRefAttack.position, VRHammer.hammerSizeMult * .25f, LayerManager.MASK_MELEE_ATTACK_TARGETS_WITH_STATIC); shouldReleaseCharge = shouldReleaseCharge || staticColliders.Length > 0; } if (shouldReleaseCharge) { __instance.OnChargeupRelease(); } } }
private static void Prefix(MWS_ChargeUp __instance) { float progress = Mathf.Min(__instance.m_elapsed / __instance.m_maxDamageTime, 1f); if (progress >= 1 && !fullChargeEventFired) { HammerEvents.HammerFullyCharged(); fullChargeEventFired = true; } if (progress >= .5f && !halfChargeEventFired) { HammerEvents.HammerHalfCharged(); halfChargeEventFired = true; } }
private static void Prefix(MWS_ChargeUp __instance) { InjectHammerChargeEvents.fullChargeEventFired = false; InjectHammerChargeEvents.halfChargeEventFired = false; }