mirror of
https://github.com/edgegamers/Jailbreak.git
synced 2025-12-06 04:42:57 -08:00
Compare commits
33 Commits
400a5171a7
...
4.6.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcb3a939e2 | ||
|
|
c56ae735ca | ||
|
|
9ba38bdbf1 | ||
|
|
80c0943770 | ||
|
|
5d38655914 | ||
|
|
ef3ade9efe | ||
|
|
100f1b4b5d | ||
|
|
675cb22ae6 | ||
|
|
13e260ae7e | ||
|
|
e38a63a507 | ||
|
|
2fda4b2aae | ||
|
|
619a4b0f4b | ||
|
|
fb1affd1bb | ||
|
|
717df13482 | ||
|
|
86543064c5 | ||
|
|
345530feae | ||
|
|
47d529e44c | ||
|
|
0e899c48d7 | ||
|
|
2d9561b4a8 | ||
|
|
6900848ef9 | ||
|
|
b8beac3d14 | ||
|
|
4bde4e8f0a | ||
|
|
1cf95f1b3d | ||
|
|
2182c22e44 | ||
|
|
a2dd074403 | ||
|
|
faeec955f8 | ||
|
|
4e94f724e9 | ||
|
|
b89f2c1b60 | ||
|
|
54e9262b56 | ||
|
|
9a5acc5926 | ||
|
|
9cba0c155d | ||
|
|
dcc4da4ac5 | ||
|
|
6ec15da3cf |
@@ -24,7 +24,7 @@ public class LastRequestFactory(ILastRequestManager manager,
|
||||
guard, false),
|
||||
LRType.ROCK_PAPER_SCISSORS => new RockPaperScissors(plugin, services,
|
||||
prisoner, guard),
|
||||
LRType.COINFLIP => new Coinflip(plugin, services, prisoner, guard),
|
||||
// LRType.COINFLIP => new Coinflip(plugin, services, prisoner, guard),
|
||||
// LRType.RACE => new Race(plugin, manager, prisoner, guard,
|
||||
// services.GetRequiredService<ILRRaceLocale>()),
|
||||
LRType.MAG_FOR_MAG => new BulletForBullet(plugin, services, prisoner,
|
||||
|
||||
@@ -28,12 +28,12 @@ using Jailbreak.Public.Mod.Rainbow;
|
||||
using Jailbreak.Public.Mod.Rebel;
|
||||
using Jailbreak.Public.Mod.Weapon;
|
||||
using Jailbreak.Public.Utils;
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using MStatsShared;
|
||||
|
||||
namespace Jailbreak.LastRequest;
|
||||
//TODO: Fix Various Server Crashes
|
||||
|
||||
public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
: ILastRequestManager, IDamageBlocker {
|
||||
@@ -87,8 +87,8 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
// Both of them are in LR, verify they're in same LR
|
||||
if (victimLR == null) return false;
|
||||
|
||||
if (victimLR.Prisoner.SteamID == attacker.SteamID
|
||||
|| victimLR.Guard.SteamID == attacker.SteamID)
|
||||
if (victimLR.Prisoner.Slot == attacker.Slot
|
||||
|| victimLR.Guard.Slot == attacker.Slot)
|
||||
// The person attacking is the victim's LR participant, allow damage
|
||||
return false;
|
||||
|
||||
@@ -110,8 +110,8 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
stats?.Stats.Add(new LRStat());
|
||||
|
||||
basePlugin.RegisterListener<Listeners.OnEntityParentChanged>(OnDrop);
|
||||
VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Hook(OnTakeDamage,
|
||||
HookMode.Pre);
|
||||
// VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Hook(OnTakeDamage,
|
||||
// HookMode.Pre);
|
||||
VirtualFunctions.CCSPlayer_ItemServices_CanAcquireFunc.Hook(OnCanAcquire,
|
||||
HookMode.Pre);
|
||||
}
|
||||
@@ -120,8 +120,8 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
VirtualFunctions.CCSPlayer_ItemServices_CanAcquireFunc.Unhook(OnCanAcquire,
|
||||
HookMode.Pre);
|
||||
|
||||
VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Unhook(OnTakeDamage,
|
||||
HookMode.Pre);
|
||||
// VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Unhook(OnTakeDamage,
|
||||
// HookMode.Pre);
|
||||
}
|
||||
|
||||
public void DisableLR() { IsLREnabled = false; }
|
||||
@@ -443,14 +443,14 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
}
|
||||
|
||||
private HookResult OnTakeDamage(DynamicHook hook) {
|
||||
var info = hook.GetParam<CTakeDamageInfo>(1);
|
||||
var playerPawn = hook.GetParam<CCSPlayerPawn>(0);
|
||||
var info = hook.GetParam<CTakeDamageInfo>(1);
|
||||
|
||||
var player = playerPawn.Controller.Value?.As<CCSPlayerController>();
|
||||
if (player == null || !player.IsValid) return HookResult.Continue;
|
||||
|
||||
var attackerPawn = info.Attacker;
|
||||
var attacker = attackerPawn.Value?.As<CCSPlayerController>();
|
||||
var attackerPawn = info.Attacker.Value?.As<CCSPlayerPawn>();
|
||||
var attacker = attackerPawn?.As<CCSPlayerController>();
|
||||
|
||||
if (attacker == null || !attacker.IsValid) return HookResult.Continue;
|
||||
|
||||
@@ -459,6 +459,7 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
HookResult.Continue;
|
||||
}
|
||||
|
||||
[UsedImplicitly]
|
||||
[GameEventHandler]
|
||||
public HookResult OnTakeDamage(EventPlayerHurt ev, GameEventInfo info) {
|
||||
var player = ev.Userid;
|
||||
@@ -467,7 +468,7 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
if (!ShouldBlockDamage(player, attacker)) return HookResult.Continue;
|
||||
if (player.PlayerPawn.IsValid) {
|
||||
var playerPawn = player.PlayerPawn.Value!;
|
||||
playerPawn.Health = playerPawn.LastHealth;
|
||||
playerPawn.Health += ev.DmgHealth;
|
||||
}
|
||||
|
||||
info.DontBroadcast = false;
|
||||
@@ -480,6 +481,7 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
foreach (var lr in ActiveLRs.ToList())
|
||||
EndLastRequest(lr, LRResult.TIMED_OUT);
|
||||
|
||||
IsLREnabled = false;
|
||||
return HookResult.Continue;
|
||||
}
|
||||
|
||||
@@ -489,6 +491,10 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
|
||||
IsLREnabled = false;
|
||||
foreach (var player in Utilities.GetPlayers())
|
||||
MenuManager.CloseActiveMenu(player);
|
||||
|
||||
foreach (var lr in ActiveLRs.ToList())
|
||||
EndLastRequest(lr, LRResult.TIMED_OUT);
|
||||
ActiveLRs.Clear();
|
||||
return HookResult.Continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,11 +20,6 @@ public class GunToss(BasePlugin plugin, ILastRequestManager manager,
|
||||
IServiceProvider provider, CCSPlayerController prisoner,
|
||||
CCSPlayerController guard)
|
||||
: TeleportingRequest(plugin, manager, prisoner, guard), IDropListener {
|
||||
private readonly List<BeamLine> guardLines = [], prisonerLines = [];
|
||||
|
||||
private readonly ILRGunTossLocale locale =
|
||||
provider.GetRequiredService<ILRGunTossLocale>();
|
||||
|
||||
/// <summary>
|
||||
/// Null if no one has thrown a gun yet, negative if only one has thrown a gun,
|
||||
/// Positive if both have thrown a gun.
|
||||
@@ -56,11 +51,11 @@ public class GunToss(BasePlugin plugin, ILastRequestManager manager,
|
||||
}
|
||||
|
||||
if (prisonerTossed && guardTossed) bothThrewTick = Server.TickCount;
|
||||
|
||||
|
||||
if (bothThrewTick > 0)
|
||||
Plugin.AddTimer(5, () => {
|
||||
if (State != LRState.ACTIVE) return;
|
||||
Guard.SetHealth(Math.Min(Guard.PlayerPawn.Value!.Health, 100));
|
||||
if (State != LRState.ACTIVE || !Guard.IsValid || !Guard.Pawn.IsValid) return;
|
||||
Guard.SetHealth(Math.Min(Guard.Pawn.Value!.Health, 100));
|
||||
Guard.SetArmor(Math.Min(Guard.PawnArmor, 100));
|
||||
});
|
||||
}
|
||||
@@ -70,7 +65,7 @@ public class GunToss(BasePlugin plugin, ILastRequestManager manager,
|
||||
|
||||
Prisoner.RemoveWeapons();
|
||||
Guard.RemoveWeapons();
|
||||
|
||||
|
||||
Server.NextFrame(() => {
|
||||
if (!Guard.IsValid) return;
|
||||
|
||||
@@ -91,14 +86,7 @@ public class GunToss(BasePlugin plugin, ILastRequestManager manager,
|
||||
Server.RunOnTick(Server.TickCount + 16, () => State = LRState.ACTIVE);
|
||||
}
|
||||
|
||||
public override void OnEnd(LRResult result) {
|
||||
State = LRState.COMPLETED;
|
||||
|
||||
guardLines.ForEach(l => l.Remove());
|
||||
guardLines.Clear();
|
||||
prisonerLines.ForEach(l => l.Remove());
|
||||
prisonerLines.Clear();
|
||||
}
|
||||
public override void OnEnd(LRResult result) { State = LRState.COMPLETED; }
|
||||
|
||||
public override bool PreventEquip(CCSPlayerController player,
|
||||
CCSWeaponBaseVData weapon) {
|
||||
|
||||
@@ -24,7 +24,7 @@ public class SpecialDayFactory(IServiceProvider provider) : ISpecialDayFactory {
|
||||
SDType.NOSCOPE => new NoScopeDay(plugin, provider),
|
||||
SDType.OITC => new OneInTheChamberDay(plugin, provider),
|
||||
//SDType.ROCKETJUMP => new RocketJumpDay(plugin, provider),
|
||||
SDType.SPEEDRUN => new SpeedrunDay(plugin, provider),
|
||||
//SDType.SPEEDRUN => new SpeedrunDay(plugin, provider),
|
||||
SDType.TELEPORT => new TeleportDay(plugin, provider),
|
||||
SDType.WARDAY => new WardayDay(plugin, provider),
|
||||
_ => throw new NotImplementedException()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.330" />
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.342" />
|
||||
<PackageReference Include="JetBrains.Annotations" Version="2024.2.0"/>
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5"/>
|
||||
<ProjectReference Include="..\Jailbreak.Tag\Jailbreak.Tag.csproj"/>
|
||||
|
||||
@@ -7,12 +7,6 @@ namespace Jailbreak.Public.Mod.Damage;
|
||||
/// taking damage.
|
||||
/// </summary>
|
||||
public interface IDamageBlocker {
|
||||
[Obsolete("Do not use the EventPlayerHurt overload.")]
|
||||
bool ShouldBlockDamage(CCSPlayerController victim,
|
||||
CCSPlayerController? attacker, EventPlayerHurt @event) {
|
||||
return ShouldBlockDamage(victim, attacker);
|
||||
}
|
||||
|
||||
bool ShouldBlockDamage(CCSPlayerController victim,
|
||||
CCSPlayerController? attacker);
|
||||
}
|
||||
Reference in New Issue
Block a user