Skip to content

Commit 504f331

Browse files
committed
implement ejectors and casings for thunderer
1 parent 43f3ea3 commit 504f331

File tree

4 files changed

+89
-1
lines changed

4 files changed

+89
-1
lines changed

Data/Browncoats.rte/Actors/Turrets/Thunderer/Thunderer.ini

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,66 @@
1+
AddAmmo = AEmitter
2+
PresetName = Casing Browncoat AA-50
3+
Mass = 0.2
4+
HitsMOs = 0
5+
GetsHitByMOs = 0
6+
SpriteFile = ContentFile
7+
FilePath = Browncoats.rte/Actors/Turrets/Thunderer/ThundererCasing.png
8+
FrameCount = 1
9+
SpriteOffset = Vector
10+
X = -3
11+
Y = -2
12+
AtomGroup = AtomGroup
13+
AutoGenerate = 1
14+
Material = Material
15+
CopyOf = Bullet Casing
16+
Resolution = 2
17+
Depth = 0
18+
DeepGroup = AtomGroup
19+
AutoGenerate = 1
20+
Material = Material
21+
CopyOf = Bullet Casing
22+
Resolution = 4
23+
Depth = 1
24+
DeepCheck = 0
25+
AngularVel = 6
26+
EmissionOffset = Vector
27+
X = 2
28+
Y = 0
29+
AddEmission = Emission
30+
EmittedParticle = MOSParticle
31+
CopyOf = Tiny Smoke Ball 1
32+
ParticlesPerMinute = 2000
33+
LifeVariation = 0.30
34+
StopTimeMS = 250
35+
Spread = 3.1
36+
MaxVelocity = 1
37+
MinVelocity = 0
38+
PushesEmitter = 0
39+
AddEmission = Emission
40+
EmittedParticle = MOSParticle
41+
CopyOf = Tiny Smoke Ball 1
42+
ParticlesPerMinute = 1000
43+
LifeVariation = 0.30
44+
StartTimeMS = 250
45+
StopTimeMS = 500
46+
Spread = 3.1
47+
MaxVelocity = 1
48+
MinVelocity = 0
49+
PushesEmitter = 0
50+
AddEmission = Emission
51+
EmittedParticle = MOSParticle
52+
CopyOf = Tiny Smoke Ball 1
53+
ParticlesPerMinute = 500
54+
LifeVariation = 0.30
55+
StartTimeMS = 500
56+
StopTimeMS = 1000
57+
Spread = 3.1
58+
MaxVelocity = 1
59+
MinVelocity = 0
60+
PushesEmitter = 0
61+
EmissionEnabled = 1
62+
EmissionsIgnoreThis = 1
63+
164
AddEffect = MOSRotating
265
PresetName = Flak Shell Browncoat AA-50
366
Mass = 3

Data/Browncoats.rte/Actors/Turrets/Thunderer/ThundererBase.lua

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ function Create(self)
1818
end
1919
end
2020

21-
function Update(self)
21+
function ThreadedUpdate(self)
2222
-- keep anything from moving us
2323
self.Pos = self.pinPos;
24+
25+
if not self.Turret or self.Turret.MountedDevice.PresetName == "" then -- for some reason, turrets return a null Entity rather than just nil if they have no mounted device
26+
self:GibThis();
27+
end
2428
end
873 Bytes
Loading

Data/Browncoats.rte/Actors/Turrets/Thunderer/ThundererGun.lua

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ function OnFire(self)
1111

1212
self.animTimer:Reset();
1313
self.firingAnim = true;
14+
15+
local casing = self.Casing:Clone();
16+
casing.Pos = self.Pos + (self.currentBarrel == 1 and self.bottomEjectorOffset or self.topEjectorOffset);
17+
casing.Vel = self.Vel + Vector(0, self.currentBarrel == 1 and 5 or -5):RadRotate(self.RotAngle);
18+
casing.Team = self.Team;
19+
casing.RotAngle = self.RotAngle;
20+
casing.HFlipped = self.HFlipped;
21+
casing.AngularVel = self.currentBarrel == 1 and math.random(-3, -5) or math.random(3, 5);
22+
MovableMan:AddParticle(casing);
1423
end
1524

1625
function OnReload(self)
@@ -34,6 +43,7 @@ function Create(self)
3443

3544
self.servoMoving = false;
3645

46+
self.Casing= CreateAEmitter("Casing Browncoat AA-50", "Browncoats.rte");
3747
self.Shot = CreateAEmitter("Browncoat AA-50 Shot", "Browncoats.rte");
3848

3949
self.firingAnim = false;
@@ -46,6 +56,9 @@ function Create(self)
4656
self.topMuzzleOffset = Vector(55, -8);
4757
self.bottomMuzzleOffset = Vector(55, 6);
4858

59+
self.topEjectorOffset = Vector(12, -10);
60+
self.bottomEjectorOffset = Vector(12, 13);
61+
4962
self.MuzzleOffset = self.topMuzzleOffset;
5063

5164
for att in self.Attachables do
@@ -54,6 +67,12 @@ function Create(self)
5467
elseif string.find(att.PresetName, "Barrel Bottom") then
5568
self.bottomBarrel = ToAttachable(att);
5669
end
70+
-- TODO undo this reversing after theyre fixed in ini
71+
if string.find(att.PresetName, "Ejector Bottom") then
72+
self.topEjector = ToAttachable(att);
73+
elseif string.find(att.PresetName, "Ejector Top") then
74+
self.bottomEjector = ToAttachable(att);
75+
end
5776
end
5877

5978
self.reloadSmokeTimer = Timer();
@@ -142,8 +161,10 @@ function Update(self)
142161
self.Frame = self.currentBaseFrame + frameNum;
143162

144163
local barrel = self.currentBarrel == 0 and self.bottomBarrel or self.topBarrel;
164+
local ejector = self.currentBarrel == 0 and self.bottomEjector or self.topEjector;
145165
local jointOffsetX = 10 * math.sin(progress * math.pi);
146166
barrel.JointOffset = Vector(jointOffsetX, 0);
167+
ejector.JointOffset = Vector(jointOffsetX, 0);
147168
if progress == 1 then
148169
self.MuzzleOffset = self.currentBarrel == 0 and self.bottomMuzzleOffset or self.topMuzzleOffset;
149170
barrel.JointOffset = Vector();

0 commit comments

Comments
 (0)