Skip to content

Commit

Permalink
HS-1024: fix bugs wrt statuses that allow detection of traps
Browse files Browse the repository at this point in the history
  • Loading branch information
baughj committed Jan 16, 2024
1 parent a5ee019 commit 9d772b4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
16 changes: 15 additions & 1 deletion hybrasyl/Objects/Creature.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1227,7 +1227,15 @@ public bool ApplyStatus(ICreatureStatus status, bool sendUpdates = true)
}
if (!_currentStatuses.TryAdd(status.Icon, status))
return false;
if (this is User u && sendUpdates) u.SendStatusUpdate(status);
if (this is User u)
{
if (sendUpdates)
u.SendStatusUpdate(status);

foreach (var reactor in Map.EntityTree.GetObjects(GetViewport()).OfType<Reactor>())
if (reactor.VisibleToStatuses?.Contains(status.Name) ?? false)
reactor.ShowTo(this);
}

status.OnStart(sendUpdates);
if (sendUpdates)
Expand Down Expand Up @@ -1268,6 +1276,12 @@ public bool RemoveStatus(ushort icon, bool onEnd = true)
if (!_currentStatuses.TryRemove(icon, out status)) return false;
_removeStatus(status, onEnd);
UpdateAttributes(StatUpdateFlags.Full);
if (this is User u)
{
foreach (var reactor in Map.EntityTree.GetObjects(GetViewport()).OfType<Reactor>())
if (reactor.VisibleToStatuses?.Contains(status.Name) ?? false)
reactor.AoiDeparture(this);
}
return true;
}

Expand Down
1 change: 1 addition & 0 deletions hybrasyl/Objects/MapObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ public List<VisibleObject> GetTileContents(int x1, int y1)

public List<Creature> GetCreatures(int x1, int y1) => GetTileContents(x1, y1).OfType<Creature>().ToList();


public bool IsCreatureAt(int x1, int y1)
{
return GetTileContents(x1, y1).Any(predicate: x => x is Creature);
Expand Down
17 changes: 12 additions & 5 deletions hybrasyl/Objects/Reactor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ public class Reactor : VisibleObject, IPursuitable
public string ScriptName;
public CreatureSnapshot Caster;

private bool VisibleToGroup;
private bool VisibleToOwner;
private List<string> VisibleToCookies;
private List<string> VisibleToStatuses;
public bool VisibleToGroup;
public bool VisibleToOwner;
public List<string> VisibleToCookies;
public List<string> VisibleToStatuses;

public Reactor(Xml.Objects.Reactor reactor)
{
Expand Down Expand Up @@ -143,7 +143,7 @@ public bool VisibleTo(IVisible obj)
if (VisibleToOwner && user.Name == Caster.Name) return true;
if (VisibleToGroup && casterObj != null && (casterObj.Group?.Contains(user) ?? false)) return true;
if (VisibleToCookies.Any(x => user.HasCookie(x))) return true;
if (user.Statuses.Any(x => VisibleToStatuses.Contains(x.Name))) return true;
if (user.CurrentStatusInfo.Any(x => VisibleToStatuses.Contains(x.Name))) return true;

return false;
}
Expand Down Expand Up @@ -249,6 +249,13 @@ public override void AoiDeparture(VisibleObject obj)
base.AoiDeparture(obj);
if (!Ready) return;
Script.ExecuteFunction("AoiDeparture", GetBaseEnvironment(obj));
if (obj is User u)
{
var removePacket = new ServerPacket(0x0E);
removePacket.WriteUInt32(Id);
u.Enqueue(removePacket);
}

}

public virtual void OnDrop(VisibleObject obj, VisibleObject dropped)
Expand Down

0 comments on commit 9d772b4

Please sign in to comment.