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

Commit b2b7ca7

Browse files
committed
Changed gatling weapons' spin scripts to be a little better. This work ultimately needs to be redone in source though.
1 parent 5e785a8 commit b2b7ca7

File tree

3 files changed

+46
-34
lines changed

3 files changed

+46
-34
lines changed
Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
function Create(self)
22
self.origActivationDelay = self.ActivationDelay;
3-
self.origDeactivationDelay = self.DeactivationDelay;
4-
self.spinTimer = Timer();
3+
self.spinDownTimer = Timer();
4+
self.currentlySpinningDown = false;
55
end
66
function Update(self)
7-
if self.FiredFrame then
8-
self.ActivationDelay = 0;
9-
self.DeactivationDelay = self.origDeactivationDelay * 9;
10-
self.spinTimer:Reset();
11-
elseif self.RoundInMagCount == 0 or self.spinTimer:IsPastSimMS(self.DeactivationDelay * 0.9) then
7+
if not self.currentlySpinningDown and not self:IsActivated() and not self:IsReloading() and self.ActiveSound:IsBeingPlayed() then
8+
self.spinDownTimer:Reset();
9+
self.currentlySpinningDown = true;
10+
self.activationDelay = self.origActivationDelay;
11+
elseif (self.currentlySpinningDown and self.spinDownTimer:IsPastSimMS(self.DeactivationDelay)) or self:IsReloading() then
1212
self.ActivationDelay = self.origActivationDelay;
13-
self.DeactivationDelay = self.origDeactivationDelay;
13+
self.currentlySpinningDown = false;
14+
elseif self.currentlySpinningDown and self:IsActivated() then
15+
self.ActivationDelay = self.origActivationDelay * self.spinDownTimer.ElapsedSimTimeMS / self.DeactivationDelay;
16+
self.currentlySpinningDown = false;
1417
end
1518
end
Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,30 @@
11
function Create(self)
22
self.origActivationDelay = self.ActivationDelay;
3-
self.origDeactivationDelay = self.DeactivationDelay;
3+
self.spinDownTimer = Timer();
4+
self.currentlySpinningDown = false;
5+
46
self.maxRateOfFire = self.RateOfFire;
57
self.minRateOfFire = self.maxRateOfFire * 0.5;
68
self.RateOfFire = self.minRateOfFire;
79
self.increasePerShot = 1.05;
810
self.decreasePerFrame = 0.99;
9-
self.spinTimer = Timer();
1011
end
1112
function Update(self)
13+
if not self.currentlySpinningDown and not self:IsActivated() and not self:IsReloading() and self.ActiveSound:IsBeingPlayed() then
14+
self.spinDownTimer:Reset();
15+
self.currentlySpinningDown = true;
16+
self.activationDelay = self.origActivationDelay;
17+
elseif (self.currentlySpinningDown and self.spinDownTimer:IsPastSimMS(self.DeactivationDelay)) or self:IsReloading() then
18+
self.ActivationDelay = self.origActivationDelay;
19+
self.currentlySpinningDown = false;
20+
elseif self.currentlySpinningDown and self:IsActivated() then
21+
self.ActivationDelay = self.origActivationDelay * self.spinDownTimer.ElapsedSimTimeMS / self.DeactivationDelay;
22+
self.currentlySpinningDown = false;
23+
end
24+
1225
if self.FiredFrame then
1326
self.RateOfFire = math.min(self.RateOfFire * self.increasePerShot, self.maxRateOfFire);
14-
self.ActivationDelay = 0;
15-
self.DeactivationDelay = self.origDeactivationDelay * 9;
16-
self.spinTimer:Reset();
17-
else
18-
if not self:IsActivated() then
19-
self.RateOfFire = math.max(self.RateOfFire * self.decreasePerFrame, self.minRateOfFire);
20-
end
21-
if self.RoundInMagCount == 0 or self.spinTimer:IsPastSimMS(self.DeactivationDelay * 0.9) then
22-
self.ActivationDelay = self.origActivationDelay;
23-
self.DeactivationDelay = self.origDeactivationDelay;
24-
end
27+
elseif not self:IsActivated() then
28+
self.RateOfFire = math.max(self.RateOfFire * self.decreasePerFrame, self.minRateOfFire);
2529
end
2630
end
Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
function Create(self)
2-
self.dinSound = false;
3-
42
self.origActivationDelay = self.ActivationDelay;
5-
self.origDeactivationDelay = self.DeactivationDelay;
6-
self.spinTimer = Timer();
3+
self.spinDownTimer = Timer();
4+
self.currentlySpinningDown = false;
5+
6+
self.dingSound = false;
7+
self.ejectEffect = CreateAEmitter("Techion Giga Pulsar Magazine Eject Effect", "Techion.rte");
78
end
89
function Update(self)
10+
if not self.currentlySpinningDown and not self:IsActivated() and not self:IsReloading() and self.ActiveSound:IsBeingPlayed() then
11+
self.spinDownTimer:Reset();
12+
self.currentlySpinningDown = true;
13+
self.activationDelay = self.origActivationDelay;
14+
elseif (self.currentlySpinningDown and self.spinDownTimer:IsPastSimMS(self.DeactivationDelay)) or self:IsReloading() then
15+
self.ActivationDelay = self.origActivationDelay;
16+
self.currentlySpinningDown = false;
17+
elseif self.currentlySpinningDown and self:IsActivated() then
18+
self.ActivationDelay = self.origActivationDelay * self.spinDownTimer.ElapsedSimTimeMS / self.DeactivationDelay;
19+
self.currentlySpinningDown = false;
20+
end
21+
922
if self.Magazine then
1023
self.lastMag = self.Magazine;
1124
self.dingSound = false;
@@ -18,7 +31,7 @@ function Update(self)
1831
self.lastMag.Sharpness = 1;
1932
self.lastMag.Vel = self.lastMag.Vel + Vector(-10 * self.FlipFactor, 0):RadRotate(self.RotAngle);
2033

21-
local effect = CreateAEmitter("Techion Giga Pulsar Magazine Eject Effect", "Techion.rte");
34+
local effect = self.ejectEffect:Clone();
2235
effect.Pos = self.lastMag.Pos;
2336
effect.RotAngle = self.RotAngle;
2437
effect.HFlipped = self.HFlipped;
@@ -27,12 +40,4 @@ function Update(self)
2740
end
2841
self.dingSound = true;
2942
end
30-
if self.FiredFrame then
31-
self.ActivationDelay = 0;
32-
self.DeactivationDelay = self.origDeactivationDelay * 5;
33-
self.spinTimer:Reset();
34-
elseif self.RoundInMagCount == 0 or self.spinTimer:IsPastSimMS(self.DeactivationDelay * 0.9) then
35-
self.ActivationDelay = self.origActivationDelay;
36-
self.DeactivationDelay = self.origDeactivationDelay;
37-
end
3843
end

0 commit comments

Comments
 (0)