Content update for NetEntities (#18935)
This commit is contained in:
@@ -74,7 +74,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
{
|
||||
if (weapon.Attacking)
|
||||
{
|
||||
RaisePredictiveEvent(new StopAttackEvent(weaponUid));
|
||||
RaisePredictiveEvent(new StopAttackEvent(GetNetEntity(weaponUid)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
target = screen.GetClickedEntity(mousePos);
|
||||
}
|
||||
|
||||
EntityManager.RaisePredictiveEvent(new DisarmAttackEvent(target, coordinates));
|
||||
EntityManager.RaisePredictiveEvent(new DisarmAttackEvent(GetNetEntity(target), GetNetCoordinates(coordinates)));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
target = screen.GetClickedEntity(mousePos);
|
||||
}
|
||||
|
||||
RaisePredictiveEvent(new LightAttackEvent(target, weaponUid, coordinates));
|
||||
RaisePredictiveEvent(new LightAttackEvent(GetNetEntity(target), GetNetEntity(weaponUid), GetNetCoordinates(coordinates)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,15 +182,17 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
return false;
|
||||
}
|
||||
|
||||
var target = GetEntity(ev.Target);
|
||||
|
||||
// They need to either have hands...
|
||||
if (!HasComp<HandsComponent>(ev.Target!.Value))
|
||||
if (!HasComp<HandsComponent>(target!.Value))
|
||||
{
|
||||
// or just be able to be shoved over.
|
||||
if (TryComp<StatusEffectsComponent>(ev.Target!.Value, out var status) && status.AllowedEffects.Contains("KnockedDown"))
|
||||
if (TryComp<StatusEffectsComponent>(target, out var status) && status.AllowedEffects.Contains("KnockedDown"))
|
||||
return true;
|
||||
|
||||
if (Timing.IsFirstTimePredicted && HasComp<MobStateComponent>(ev.Target.Value))
|
||||
PopupSystem.PopupEntity(Loc.GetString("disarm-action-disarmable", ("targetName", ev.Target.Value)), ev.Target.Value);
|
||||
if (Timing.IsFirstTimePredicted && HasComp<MobStateComponent>(target.Value))
|
||||
PopupSystem.PopupEntity(Loc.GetString("disarm-action-disarmable", ("targetName", target.Value)), target.Value);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -222,14 +224,16 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
|
||||
// This should really be improved. GetEntitiesInArc uses pos instead of bounding boxes.
|
||||
// Server will validate it with InRangeUnobstructed.
|
||||
var entities = ArcRayCast(userPos, direction.ToWorldAngle(), component.Angle, distance, userXform.MapID, user).ToList();
|
||||
RaisePredictiveEvent(new HeavyAttackEvent(meleeUid, entities.GetRange(0, Math.Min(MaxTargets, entities.Count)), coordinates));
|
||||
var entities = GetNetEntityList(ArcRayCast(userPos, direction.ToWorldAngle(), component.Angle, distance, userXform.MapID, user).ToList());
|
||||
RaisePredictiveEvent(new HeavyAttackEvent(GetNetEntity(meleeUid), entities.GetRange(0, Math.Min(MaxTargets, entities.Count)), GetNetCoordinates(coordinates)));
|
||||
}
|
||||
|
||||
private void OnMeleeLunge(MeleeLungeEvent ev)
|
||||
{
|
||||
var ent = GetEntity(ev.Entity);
|
||||
|
||||
// Entity might not have been sent by PVS.
|
||||
if (Exists(ev.Entity))
|
||||
DoLunge(ev.Entity, ev.Angle, ev.LocalPos, ev.Animation);
|
||||
if (Exists(ent))
|
||||
DoLunge(ent, ev.Angle, ev.LocalPos, ev.Animation);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user