Skip to content
This repository has been archived by the owner on Sep 24, 2019. It is now read-only.

Commit

Permalink
Fix godmode flag
Browse files Browse the repository at this point in the history
  • Loading branch information
Trojaner committed Jul 10, 2016
1 parent 3c53dc9 commit 648e843
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Model/Flag/Flag.cs
Expand Up @@ -13,7 +13,7 @@ namespace Safezone.Model.Flag
public abstract class Flag
{
public SafeZone SafeZone { get; internal set; }
private static readonly Dictionary<string, Type> RegisteredFlags = new Dictionary<string, Type>();
internal static readonly Dictionary<string, Type> RegisteredFlags = new Dictionary<string, Type>();
public string Name;
private object _value;

Expand Down
19 changes: 16 additions & 3 deletions Model/Flag/Impl/GodmodeFlag.cs
Expand Up @@ -23,7 +23,14 @@ public override void UpdateState(List<UnturnedPlayer> players)

public override void OnSafeZoneEnter(UnturnedPlayer player)
{
_lastHealth.Add(player.CSteamID.m_SteamID, player.Health);
if (!_lastHealth.ContainsKey(player.CSteamID.m_SteamID))
{
_lastHealth.Add(player.CSteamID.m_SteamID, player.Health);
}
else
{
_lastHealth[player.CSteamID.m_SteamID] = player.Health;
}
if (!GetValue<bool>(SafeZone.GetGroup(player))) return;
EnableGodMode(player);
}
Expand All @@ -33,6 +40,7 @@ public override void OnSafeZoneLeave(UnturnedPlayer player)
if (!GetValue<bool>(SafeZone.GetGroup(player))) return;
DisableGodMode(player);

if (!_lastHealth.ContainsKey(player.CSteamID.m_SteamID)) return;
var health = _lastHealth[player.CSteamID.m_SteamID];
var currentHealth = player.Health;
if (currentHealth < health)
Expand All @@ -43,6 +51,7 @@ public override void OnSafeZoneLeave(UnturnedPlayer player)
{
player.Damage((byte)(currentHealth - health), Vector3.zero, EDeathCause.KILL, ELimb.SPINE, CSteamID.Nil);
}
_lastHealth.Remove(player.CSteamID.m_SteamID);
}

private void EnableGodMode(IRocketPlayer player)
Expand All @@ -55,6 +64,7 @@ private void EnableGodMode(IRocketPlayer player)
var unturnedPlayer = (UnturnedPlayer)player;
//Safe current godmode state and restore it later when the player leaves the safezone
//this is for e.g. players who enter with /god safezones
if (_godModeStates.ContainsKey(id)) _godModeStates.Remove(id);
_godModeStates.Add(id, unturnedPlayer.Features.GodMode);
unturnedPlayer.Features.GodMode = true;
}
Expand All @@ -71,15 +81,18 @@ private void DisableGodMode(IRocketPlayer player)
try
{
//Try to restore previous godmode state
unturnedPlayer.Features.GodMode = _godModeStates[id];
var val = _godModeStates.ContainsKey(id) && _godModeStates[id];
unturnedPlayer.Features.GodMode = val;
}
catch (Exception ex)
{
//Something went wrong??
Logger.LogException(ex);
unturnedPlayer.Features.GodMode = false;
}
_godModeStates.Remove(id);

if(_godModeStates.ContainsKey(id))
_godModeStates.Remove(id);
}
}
}
1 change: 1 addition & 0 deletions SafeZonePlugin.cs
Expand Up @@ -82,6 +82,7 @@ protected override void Unload()
StopListening();
Instance = null;
SafeZoneType.RegistereTypes?.Clear();
Flag.RegisteredFlags.Clear();
}


Expand Down

0 comments on commit 648e843

Please sign in to comment.