Revert "Fix Grenade Bounce Detection"

This reverts commit 619a4b0f4b.
This commit is contained in:
ShookEagle
2025-11-24 07:32:11 -06:00
parent 675cb22ae6
commit 100f1b4b5d

View File

@@ -19,7 +19,6 @@ using Jailbreak.Public.Utils;
using Vector = CounterStrikeSharp.API.Modules.Utils.Vector;
namespace Jailbreak.SpecialDay.SpecialDays;
public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
: AbstractSpecialDay(plugin, provider), ISpecialDayMessageProvider {
public static readonly FakeConVar<float> CV_BULLET_SPEED = new(
@@ -75,8 +74,9 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
private const int GE_FIRE_BULLETS_ID = 452;
private readonly MemoryFunctionVoid<CBaseGrenade, CBaseEntity>
bounce = new("48 83 BE ? ? ? ? ? 74");
// Thank you https://github.com/ipsvn/cs2-Rocketjump/tree/master
private readonly MemoryFunctionVoid<nint, nint> touch =
new("55 48 89 E5 41 54 49 89 F4 53 48 8B 87");
private readonly HashSet<CCSPlayerPawn> jumping = [];
private Dictionary<ulong, float> nextNova = new();
@@ -91,7 +91,7 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
public override void Setup() {
Plugin.HookUserMessage(GE_FIRE_BULLETS_ID, fireBulletsUmHook);
bounce.Hook(CBaseGrenade_Bounce, HookMode.Pre);
touch.Hook(CBaseEntity_Touch, HookMode.Pre);
Plugin.RegisterEventHandler<EventWeaponFire>(onWeaponFire);
VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Hook(onHurt, HookMode.Pre);
Plugin.RegisterListener<Listeners.OnTick>(onTick);
@@ -113,20 +113,19 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
player.GiveNamedItem("weapon_knife");
player.GiveNamedItem("weapon_nova");
}
base.Execute();
}
override protected HookResult OnEnd(EventRoundEnd ev, GameEventInfo info) {
Plugin.UnhookUserMessage(GE_FIRE_BULLETS_ID, fireBulletsUmHook);
bounce.Unhook(CBaseGrenade_Bounce, HookMode.Pre);
touch.Unhook(CBaseEntity_Touch, HookMode.Pre);
Plugin.DeregisterEventHandler<EventWeaponFire>(onWeaponFire);
VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Unhook(onHurt, HookMode.Pre);
Plugin.RemoveListener<Listeners.OnTick>(onTick);
// Delay to avoid mutation during hook execution
Server.NextFrameAsync(() => { jumping.Clear(); });
return base.OnEnd(ev, info);
}
@@ -146,8 +145,8 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
/// This is prefered b/c using a raycast would require custom logic for:
/// -Damage radius simulation, Entity filtering, Visual/audio, feedback Manual hit registration
/// </summary>
private HookResult CBaseGrenade_Bounce(DynamicHook hook) {
var projectile = hook.GetParam<CBaseGrenade>(0);
private HookResult CBaseEntity_Touch(DynamicHook hook) {
var projectile = hook.GetParam<CHEGrenadeProjectile>(0);
if (projectile.DesignerName != "hegrenade_projectile")
return HookResult.Continue;
@@ -160,10 +159,9 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
if (bulletOrigin == null || pawnOrigin == null) return HookResult.Continue;
var eyeOrigin = owner.GetEyeOrigin();
var distance = Vector3.Distance(bulletOrigin.ToVec3(), pawnOrigin.ToVec3());
projectile.DetonateTime = 0f;
projectile.NextThinkTick = Server.TickCount + 1;
var distance = Vector3.Distance(bulletOrigin.ToVec3(), pawnOrigin.ToVec3());
projectile.DetonateTime = 0f;
doJump(owner, distance, bulletOrigin.ToVec3(), eyeOrigin);
return HookResult.Handled;
@@ -183,7 +181,7 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
var now = Server.CurrentTime;
if (nextNova.TryGetValue(sid, out var next) && now < next)
return HookResult.Continue;
return HookResult.Continue;
nextNova[sid] = now + 0.82f;
@@ -317,7 +315,7 @@ public class RocketJumpDay(BasePlugin plugin, IServiceProvider provider)
ConVarValues["ff_damage_reduction_grenade_self"] = 0f;
ConVarValues["sv_falldamage_scale"] = 0f;
}
public override float FreezeTime(CCSPlayerController player) { return 1; }
}
}