Skip to content

Commit f86ac9b

Browse files
committed
revolver sprites, anims
1 parent 0ec49f0 commit f86ac9b

File tree

9 files changed

+67
-23
lines changed

9 files changed

+67
-23
lines changed

Data/Browncoats.rte/Devices/Weapons/Extinction/Extinction.ini

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,10 @@ AddDevice = HDFirearm
216216
SpriteFile = ContentFile
217217
FilePath = Browncoats.rte/Devices/Weapons/Extinction/Extinction.png
218218
IsAnimatedManually = 1
219-
FrameCount = 2
219+
FrameCount = 7
220220
SpriteOffset = Vector
221-
X = -5
222-
Y = -3
221+
X = -10
222+
Y = -4
223223
EntryWound = AEmitter
224224
CopyOf = Dent Metal Device
225225
ExitWound = AEmitter
@@ -241,8 +241,8 @@ AddDevice = HDFirearm
241241
JointStrength = 100
242242
JointStiffness = 0.5
243243
JointOffset = Vector
244-
X = -2
245-
Y = 3
244+
X = -4
245+
Y = 2
246246
DrawAfterParent = 0
247247
OneHanded = 1
248248
DualWieldable = 1
@@ -252,12 +252,12 @@ AddDevice = HDFirearm
252252
OneHandedReloadAngle = 0.4
253253
StanceOffset = Vector
254254
X = 12
255-
Y = 0
255+
Y = 3
256256
SharpStanceOffset = Vector
257-
X = 13
258-
Y = -2
257+
X = 12
258+
Y = 1
259259
SupportOffset = Vector
260-
X = -2
260+
X = -7
261261
Y = 5
262262
SharpLength = 200
263263
Magazine = Magazine
@@ -369,11 +369,11 @@ AddDevice = HDFirearm
369369
ShellEjectAngle = 0
370370
ShellVelVariation = 0.5
371371
MuzzleOffset = Vector
372-
X = 9
373-
Y = -1
372+
X = 12
373+
Y = -2
374374
EjectionOffset = Vector
375-
X = 9
376-
Y = -1
375+
X = -2
376+
Y = 3
377377
AddGib = Gib
378378
GibParticle = MOPixel
379379
CopyOf = Spark Yellow 1

Data/Browncoats.rte/Devices/Weapons/Extinction/Extinction.lua

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function Create(self)
1919
self.loadedShell = false;
2020
self.reloadCycle = false;
2121

22-
self.reloadDelay = 150;
22+
self.reloadDelay = 200;
2323
self.origReloadTime = 900;
2424

2525
self.origStanceOffset = self.StanceOffset;
@@ -61,7 +61,7 @@ function Create(self)
6161
self.InheritedRotAngleTarget = 0;
6262
self.InheritedRotAngleOffset = 0;
6363
self.recoilAngleSize = 0.45;
64-
self.recoilAngleVariation = 0.02;
64+
self.recoilAngleVariation = 0.5;
6565
self.rotationSpeed = 0.1;
6666

6767
self.cockTimer = Timer();
@@ -127,14 +127,15 @@ function Update(self)
127127
self.ammoCounter = self.ammoCounter - 1;
128128
self.shellsToEject = self.shellsToEject + 1;
129129
self.ReloadStartSound = self.reloadStartSound;
130-
self.Frame = 1;
131130
self.cockTimer:Reset();
132131
self.cockDelay = 300;
132+
self.hammerDown = true;
133133
if self.fanFire then
134134
self.cockDelay = 100;
135135
self.ShakeRange = self.fanFireShakeRange;
136136
self.SharpShakeRange = self.fanFireShakeRange;
137137
end
138+
self.Frame = 0;
138139
end
139140
if self.Magazine then
140141

@@ -160,18 +161,22 @@ function Update(self)
160161
end
161162
end
162163

163-
if not self.reloadCycle and self.Frame == 1 then
164+
if not self.reloadCycle and self.hammerDown then
164165
self:Deactivate();
165166
self.delayedFire = false;
167+
166168

167169
if self.cockTimer:IsPastSimMS(self.cockDelay) then
168170
if self.fanFire then
169171
--self.fanFireSound:Play(self.Pos);
170172
else
171173
self.cockSound:Play(self.Pos);
174+
self.rotateAnim = true;
172175
end
176+
self.cockTimer:Reset();
177+
self.rotateAnim = true;
178+
self.hammerDown = false;
173179
self.InheritedRotAngleTarget = 0;
174-
self.Frame = 0;
175180
end
176181
end
177182

@@ -203,14 +208,27 @@ function Update(self)
203208
self:Reload();
204209
end
205210
end
211+
212+
if self.rotateAnim then
213+
local minTime = 0;
214+
local maxTime = self.cockDelay * 0.75;
215+
216+
local factor = math.min(math.max(self.cockTimer.ElapsedSimTimeMS - minTime, 0) / (maxTime - minTime), 1);
217+
218+
self.Frame = math.floor(factor * (4) + 0.5)
219+
if self.Frame == 4 then
220+
self.Frame = 0;
221+
self.rotateAnim = false;
222+
end
223+
end
224+
206225
else
207226

208227
self.cockTimer:Reset();
209-
210-
self.reloadTimer:Reset();
211228

212229
if self.reloadCycle ~= true then
213230
--self.cockDelay = 300;
231+
self.openAnim = true;
214232
self.InheritedRotAngleTarget = 0.1; -- not respected by the game currently
215233
self.ReloadEndSound = self.roundInSound;
216234
self.ReloadStartSound = nil;
@@ -230,21 +248,47 @@ function Update(self)
230248
self.loadedShell = true;
231249

232250
if self.ammoCounter == self.maxAmmoCount or self.prematureCycleEnd then
251+
self.closeAnim = true;
233252
self.ReloadAngle = 0.1;
234253
self.OneHandedReloadAngle = 0.2;
235254
self.loadedShell = false;
236255
self.ReloadEndSound = self.reloadEndSound;
237256
self.reloadCycleEndNext = true;
238-
self.BaseReloadTime = self.reloadDelay;
257+
self.BaseReloadTime = self.reloadDelay * 2;
239258
end
240259

241260
end
242261

262+
if self.openAnim then
263+
local minTime = 0;
264+
local maxTime = 300;
265+
266+
local factor = math.min(math.max(self.reloadTimer.ElapsedSimTimeMS - minTime, 0) / (maxTime - minTime), 1);
267+
268+
self.Frame = 3 + math.floor(factor * (6) + 0.5)
269+
if self.Frame == 6 then
270+
self.openAnim = false;
271+
end
272+
end
273+
274+
if self.closeAnim then
275+
local minTime = 0;
276+
local maxTime = 250;
277+
278+
local factor = math.min(math.max(self.cockTimer.ElapsedSimTimeMS - minTime, 0) / (maxTime - minTime), 1);
279+
280+
self.Frame = 6 - math.floor(factor * (3) + 0.5)
281+
if self.Frame == 4 then
282+
self.Frame = 0;
283+
self.closeAnim = false;
284+
end
285+
end
286+
243287
if self:DoneReloading() then
288+
self.reloadTimer:Reset();
244289
self.fireDelayTimer:Reset();
245290
self.activated = false;
246291
self.delayedFire = false;
247-
248292
end
249293

250294
if self.delayedFire and self.delayedFireTimer:IsPastSimMS(self.delayedFireTimeMS) then
@@ -253,7 +297,7 @@ function Update(self)
253297
self.delayedFirstShot = false;
254298
end
255299

256-
local fire = self:IsActivated() and self.RoundInMagCount > 0 and self.Frame == 0;
300+
local fire = self:IsActivated() and self.RoundInMagCount > 0 and not self.hammerDown;
257301

258302
if self.delayedFirstShot == true then
259303
if self.RoundInMagCount > 0 then
53 Bytes
Loading
52 Bytes
Loading
984 Bytes
Loading
987 Bytes
Loading
987 Bytes
Loading
991 Bytes
Loading
999 Bytes
Loading

0 commit comments

Comments
 (0)