Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit b1a58dc

Browse files
committed
Prevent sticky explosives from potentially latching onto the user
1 parent 8c67e64 commit b1a58dc

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

Base.rte/Devices/Explosives/RemoteExplosive/RemoteExplosiveSet.lua

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,24 @@ end
5252
function RemoteExplosiveStick(self)
5353

5454
if self.actionPhase == 0 then
55+
local checkVec = Vector(self.Vel.X, self.Vel.Y + 1):SetMagnitude(math.max(self.Vel.Magnitude * rte.PxTravelledPerFrame, self.Radius));
56+
--Find a user to ignore hits with
57+
if not self.userID then
58+
self.userID = rte.NoMOID;
59+
local moCheck = SceneMan:CastMORay(self.Pos, checkVec * (-2), self.ID, -1, rte.airID, true, 1);
60+
if moCheck ~= rte.NoMOID then
61+
local rootID = MovableMan:GetMOFromID(moCheck).RootID;
62+
if rootID ~= rte.NoMOID then
63+
self.userID = rootID;
64+
end
65+
end
66+
end
5567
local rayHitPos = Vector();
5668
local rayHit = false;
57-
local checkVec = Vector(self.Vel.X, self.Vel.Y + 1):SetMagnitude(math.max(self.Vel.Magnitude * rte.PxTravelledPerFrame, self.Radius));
5869
for i = 1, 2 do
5970
local checkPos = self.Pos + (checkVec/i);
6071
local checkPix = SceneMan:GetMOIDPixel(checkPos.X, checkPos.Y);
61-
if checkPix ~= rte.NoMOID then
72+
if checkPix ~= rte.NoMOID and MovableMan:GetMOFromID(checkPix).RootID ~= self.userID then
6273
checkPos = checkPos + SceneMan:ShortestDistance(checkPos, self.Pos, SceneMan.SceneWrapsX):SetMagnitude(ToMOSprite(self):GetSpriteWidth() * 0.5 - 1);
6374
self.target = ToMOSRotating(MovableMan:GetMOFromID(checkPix));
6475
self.stickPosition = SceneMan:ShortestDistance(self.target.Pos, checkPos, SceneMan.SceneWrapsX);

0 commit comments

Comments
 (0)