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

Commit 73a97b7

Browse files
committed
Techion Pulse Shot refactor
1 parent d621979 commit 73a97b7

File tree

4 files changed

+25
-60
lines changed

4 files changed

+25
-60
lines changed

Techion.rte/Devices/Shared.ini

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ AddEffect = AEmitter
123123

124124

125125
AddEffect = MOPixel
126-
PresetName = Techion Pulse Shot Trail Glow
126+
PresetName = Particle Techion Pulse Shot Trail Glow
127127
Mass = 0
128128
LifeTime = 500
129129
RestThreshold = -500
@@ -145,13 +145,6 @@ AddEffect = MOPixel
145145
EffectStopStrength = 0.0
146146

147147

148-
AddEffect = MOPixel
149-
CopyOf = Techion Pulse Shot Trail Glow
150-
PresetName = Techion Pulse Shot Trail Glow Small
151-
ScreenEffect = ContentFile
152-
FilePath = Base.rte/Effects/Glows/BlueSmall.png
153-
154-
155148
AddParticle = MOPixel
156149
PresetName = Particle Techion Pulse Shot
157150
ScriptPath = Techion.rte/Devices/Shared/Scripts/PulseShot.lua

Techion.rte/Devices/Shared/Scripts/PulseShot.lua

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function Create(self)
44
--Check backward (second argument) on the first frame as the projectile might be bouncing off something immediately
55
PulsarDissipate(self, true);
66

7-
self.trailPar = CreateMOPixel("Techion Pulse Shot Trail Glow");
7+
self.trailPar = CreateMOPixel(self.PresetName .. " Trail Glow", "Techion.rte");
88
self.trailPar.Pos = self.Pos - (self.Vel * rte.PxTravelledPerFrame);
99
self.trailPar.Vel = self.Vel * 0.1;
1010
self.trailPar.Lifetime = 60;
@@ -15,27 +15,27 @@ function Update(self)
1515
if self.explosion then
1616
self.ToDelete = true;
1717
else
18-
PulsarDissipate(self, false);
18+
if PulsarDissipate(self, false) == false then
19+
self.EffectRotAngle = self.Vel.AbsRadAngle;
20+
end
1921
if self.trailPar and MovableMan:IsParticle(self.trailPar) then
20-
self.trailPar.Pos = self.Pos - Vector(self.Vel.X, self.Vel.Y):SetMagnitude(6);
22+
self.trailPar.Pos = self.Pos - Vector(self.Vel.X, self.Vel.Y):SetMagnitude(self.TrailLength - 1);
2123
self.trailPar.Vel = self.Vel * 0.5;
2224
self.trailPar.Lifetime = self.Age + TimerMan.DeltaTimeMS;
2325
else
2426
self.trailPar = nil;
2527
end
2628
end
27-
self.EffectRotAngle = self.Vel.AbsRadAngle;
2829
end
2930
function PulsarDissipate(self, inverted)
3031
self.lastVel = self.lastVel or Vector(self.Vel.X, self.Vel.Y);
3132

3233
local trace = inverted and Vector(-self.Vel.X, -self.Vel.Y):SetMagnitude(GetPPM()) or Vector(self.Vel.X, self.Vel.Y):SetMagnitude(self.Vel.Magnitude * rte.PxTravelledPerFrame + 1);
33-
local hit;
34-
local hitPos = Vector();
34+
local hit = false;
35+
local hitPos = Vector(self.Pos.X, self.Pos.Y);
3536
local skipPx = math.sqrt(self.Vel.Magnitude) * 0.5;
3637

37-
local moid = SceneMan:CastObstacleRay(self.Pos, trace, hitPos, Vector(), self.ID, self.Team, rte.airID, skipPx) >= 0
38-
and SceneMan:GetMOIDPixel(hitPos.X, hitPos.Y) or self.HitWhatMOID;
38+
local moid = SceneMan:CastObstacleRay(self.Pos, trace, hitPos, Vector(), self.ID, self.Team, rte.airID, skipPx) >= 0 and SceneMan:GetMOIDPixel(hitPos.X, hitPos.Y) or self.HitWhatMOID;
3939

4040
if moid ~= rte.NoMOID then
4141
local mo = MovableMan:GetMOFromID(moid);
@@ -53,9 +53,11 @@ function PulsarDissipate(self, inverted)
5353
local penetration = self.Mass * self.Sharpness * self.Vel.Magnitude;
5454
if SceneMan:GetMaterialFromID(SceneMan:GetTerrMatter(hitPos.X, hitPos.Y)).StructuralIntegrity > penetration then
5555
hit = true;
56+
elseif self.Vel.Magnitude < self.lastVel.Magnitude * 0.5 then
57+
hit = true;
5658
end
5759
end
58-
if hit or math.abs(math.sin(self.Vel.AbsRadAngle - self.lastVel.AbsRadAngle)) > 0.1 or self.Vel.Magnitude < self.lastVel.Magnitude * 0.5 then
60+
if hit then
5961
local offset = Vector(self.Vel.X, self.Vel.Y):SetMagnitude(skipPx);
6062
self.explosion = CreateAEmitter("Techion.rte/Laser Dissipate Effect");
6163
self.explosion.Pos = hitPos - offset;
@@ -65,6 +67,8 @@ function PulsarDissipate(self, inverted)
6567
MovableMan:AddParticle(self.explosion);
6668
end
6769
self.lastVel = Vector(self.Vel.X, self.Vel.Y);
70+
71+
return hit;
6872
end
6973
--[[ To-do: Use this system instead
7074
function OnCollideWithMO(self, mo, parentMO)
Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
function Create(self)
22

3-
self.disintegrationStrength = 50;
43
self.adjustmentAmount = 1;
54

65
self.delayTimer = Timer();
76

8-
self.target = null;
97
local longDist = 800;
108
local shortDist = 98;
11-
9+
--To-do: fix this garbage targeting system?
1210
for i = 1, MovableMan:GetMOIDCount() - 1 do
1311
local mo = MovableMan:GetMOFromID(i);
1412
if mo and (mo.Team ~= self.Team or mo.ClassName == "TDExplosive" or mo.ClassName == "MOSRotating" or (mo.ClassName == "AEmitter" and mo.RootID == moCheck)) then
@@ -39,37 +37,14 @@ function Create(self)
3937
end
4038
end
4139
end
42-
self.lastVel = Vector(self.Vel.X, self.Vel.Y);
43-
PulsarDissipate(self, true);
44-
45-
self.trailPar = CreateMOPixel("Techion Pulse Shot Trail Glow Small");
46-
self.trailPar.Pos = self.Pos - (self.Vel * rte.PxTravelledPerFrame);
47-
self.trailPar.Vel = self.Vel * 0.1;
48-
self.trailPar.Lifetime = 60;
49-
MovableMan:AddParticle(self.trailPar);
5040
end
5141
function Update(self)
52-
self.lastVel = Vector(self.Vel.X, self.Vel.Y);
53-
if self.delayTimer:IsPastSimMS(25) and self.target ~= null and self.target.ID ~= rte.NoMOID then
42+
if self.delayTimer:IsPastSimMS(25) and self.target and self.target.ID ~= rte.NoMOID then
5443
local checkVel = SceneMan:ShortestDistance(self.Pos, self.target.Pos, SceneMan.SceneWrapsX);
5544
checkVel = checkVel:SetMagnitude(checkVel.Magnitude - self.target.Radius);
5645
if SceneMan:CastStrengthRay(self.Pos, checkVel, 0, Vector(), 3, rte.airID, SceneMan.SceneWrapsX) == false then
5746
local aimVel = Vector(self.Vel.X, self.Vel.Y):SetMagnitude(1) + SceneMan:ShortestDistance(self.Pos, self.target.Pos, SceneMan.SceneWrapsX):SetMagnitude(self.adjustmentAmount);
5847
self.Vel = Vector(self.Vel.Magnitude, 0):RadRotate(aimVel.AbsRadAngle);
5948
end
6049
end
61-
self.ToSettle = false;
62-
if self.explosion then
63-
self.ToDelete = true;
64-
else
65-
PulsarDissipate(self, false);
66-
if self.trailPar and MovableMan:IsParticle(self.trailPar) then
67-
self.trailPar.Pos = self.Pos - Vector(self.Vel.X, self.Vel.Y):SetMagnitude(3);
68-
self.trailPar.Vel = self.Vel * 0.5;
69-
self.trailPar.Lifetime = self.Age + TimerMan.DeltaTimeMS;
70-
else
71-
self.trailPar = nil;
72-
end
73-
end
74-
self.EffectRotAngle = self.Vel.AbsRadAngle;
7550
end

Techion.rte/Devices/Weapons/MicroPulsar/MicroPulsar.ini

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22
// Micro Pulsar Effects
33

44

5+
AddEffect = MOPixel
6+
CopyOf = Particle Techion Pulse Shot Trail Glow
7+
PresetName = Particle Techion Micro Pulsar Trail Glow
8+
ScreenEffect = ContentFile
9+
FilePath = Base.rte/Effects/Glows/BlueSmall.png
10+
11+
512
AddParticle = MOPixel
13+
CopyOf = Particle Techion Pulse Shot
614
PresetName = Particle Techion Micro Pulsar
715
ScriptPath = Techion.rte/Devices/Weapons/MicroPulsar/HomingPulsarShot.lua
8-
Mass = 0.01
9-
RestThreshold = -1
10-
LifeTime = 500
11-
Sharpness = 1
12-
HitsMOs = 0
13-
GetsHitByMOs = 0
14-
GlobalAccScalar = 0.1
15-
Color = Color
16-
R = 255
17-
G = 255
18-
B = 255
16+
//HitsMOs = 0
1917
Atom = Atom
2018
Material = Material
2119
CopyOf = Air
@@ -26,11 +24,6 @@ AddParticle = MOPixel
2624
TrailLength = 4
2725
ScreenEffect = ContentFile
2826
FilePath = Techion.rte/Devices/Shared/Glows/PulseShotGlowShort.png
29-
EffectAlwaysShows = 1
30-
EffectStartTime = 1
31-
EffectStopTime = 500
32-
EffectStartStrength = 1.0
33-
EffectStopStrength = 0.6
3427

3528

3629
///////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)