Accidentally implemented Demolisher.
Additional adjustments.
This commit is contained in:
parent
225ffcc1e9
commit
6196e04160
28 changed files with 622 additions and 18 deletions
|
|
@ -311,15 +311,17 @@ but that's a story for another time (and mod).
|
||||||
|
|
||||||
## Demolisher
|
## Demolisher
|
||||||
|
|
||||||
The signature handgun wielded by the Archangels, who lead the Bigman tribes
|
The Demolisher is the crowning achievement of Bigman gunsmithing. Built with
|
||||||
living in the southern swamplands of Na Pali. Firing highly explosive, massive
|
the finest metals available on Na Pali, and engineered with love for one and
|
||||||
bullets, this truly is a force to be reckoned with.
|
only one thing: EXPLOSIONS.
|
||||||
|
|
||||||
Primary fire: Single explosive shot, high recoil.
|
Primary fire: Single explosive shot, high recoil.
|
||||||
|
|
||||||
Secondary fire: Rapid fire. A puny little human like you stands no chance
|
Secondary fire: Rapid fire. A puny little human like you stands no chance
|
||||||
against its recoil.
|
against its recoil.
|
||||||
|
|
||||||
|
Magazine holds 4 shots.
|
||||||
|
|
||||||
## Autocannon
|
## Autocannon
|
||||||
|
|
||||||
A barely portable weapon. Usually these are mounted on ships, you know...
|
A barely portable weapon. Usually these are mounted on ships, you know...
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ Doom Tournament (currently the devel branch is required).
|
||||||
- Dual Protomags
|
- Dual Protomags
|
||||||
- Quadshot (slot 3) (replaces shotguns)
|
- Quadshot (slot 3) (replaces shotguns)
|
||||||
- Peacemaker (slot 8) (rare spawn in backpacks)
|
- Peacemaker (slot 8) (rare spawn in backpacks)
|
||||||
|
- Demolisher (slot 9) (replaces bfg9000)
|
||||||
- Backpack (replaces backpack, identical to Doom Tournament version)
|
- Backpack (replaces backpack, identical to Doom Tournament version)
|
||||||
- Unreal 1 HUD
|
- Unreal 1 HUD
|
||||||
- Translator (has to be spawned in, since it would only be useful for mappers)
|
- Translator (has to be spawned in, since it would only be useful for mappers)
|
||||||
|
|
@ -72,7 +73,6 @@ Doom Tournament (currently the devel branch is required).
|
||||||
- Fireblaster (slot 5) (replaces rocket launcher)
|
- Fireblaster (slot 5) (replaces rocket launcher)
|
||||||
- Flamethrower (slot 6) (replaces plasma rifle)
|
- Flamethrower (slot 6) (replaces plasma rifle)
|
||||||
- Impaler (slot 7) (replaces plasma rifle)
|
- Impaler (slot 7) (replaces plasma rifle)
|
||||||
- Demolisher (slot 9) (replaces bfg9000)
|
|
||||||
- Autocannon (slot 0) (replaces bfg9000)
|
- Autocannon (slot 0) (replaces bfg9000)
|
||||||
|
|
||||||
## Planned
|
## Planned
|
||||||
|
|
|
||||||
|
|
@ -87,5 +87,3 @@ server bool sting_bhold = false; // biorifle can be held fully loaded
|
||||||
server bool sting_razoraim = false; // razorjack alt follows aim instead of
|
server bool sting_razoraim = false; // razorjack alt follows aim instead of
|
||||||
// being steered by player rotation
|
// being steered by player rotation
|
||||||
server bool sting_biosplash = false; // biorifle alt splashes like in ut
|
server bool sting_biosplash = false; // biorifle alt splashes like in ut
|
||||||
server bool sting_impalerauto = false; // impaler reloads automatically after
|
|
||||||
// primary fire
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ Model "UCasing"
|
||||||
ZOffset 1
|
ZOffset 1
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
DONTCULLBACKFACES
|
|
||||||
USEROTATIONCENTER
|
USEROTATIONCENTER
|
||||||
Rotation-Center 0 0 1
|
Rotation-Center 0 0 1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ Model "BCasing"
|
||||||
ZOffset 1
|
ZOffset 1
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
DONTCULLBACKFACES
|
|
||||||
USEROTATIONCENTER
|
USEROTATIONCENTER
|
||||||
Rotation-Center 0 0 1
|
Rotation-Center 0 0 1
|
||||||
|
|
||||||
|
|
@ -42,7 +41,6 @@ Model "BCasing2"
|
||||||
ZOffset 1
|
ZOffset 1
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
DONTCULLBACKFACES
|
|
||||||
USEROTATIONCENTER
|
USEROTATIONCENTER
|
||||||
Rotation-Center 0 0 1
|
Rotation-Center 0 0 1
|
||||||
|
|
||||||
|
|
|
||||||
215
modeldef.biggun
215
modeldef.biggun
|
|
@ -27,6 +27,30 @@ Model "BigAmmo3"
|
||||||
FrameIndex BIGA A 0 0
|
FrameIndex BIGA A 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model "FatRing"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "FatRing_d.3d"
|
||||||
|
Skin 0 "JRingEx1.png"
|
||||||
|
PitchOffset 90
|
||||||
|
Scale 1.2 1.0 1.0
|
||||||
|
DONTCULLBACKFACES
|
||||||
|
USEACTORPITCH
|
||||||
|
USEACTORROLL
|
||||||
|
|
||||||
|
FrameIndex FATR A 0 0
|
||||||
|
FrameIndex FATR B 0 1
|
||||||
|
FrameIndex FATR C 0 2
|
||||||
|
FrameIndex FATR D 0 3
|
||||||
|
FrameIndex FATR E 0 4
|
||||||
|
FrameIndex FATR F 0 5
|
||||||
|
FrameIndex FATR G 0 6
|
||||||
|
FrameIndex FATR H 0 7
|
||||||
|
FrameIndex FATR I 0 8
|
||||||
|
FrameIndex FATR J 0 9
|
||||||
|
FrameIndex FATR K 0 10
|
||||||
|
}
|
||||||
|
|
||||||
Model "BigGun"
|
Model "BigGun"
|
||||||
{
|
{
|
||||||
Path "models"
|
Path "models"
|
||||||
|
|
@ -42,3 +66,194 @@ Model "BigGun"
|
||||||
ROTATING
|
ROTATING
|
||||||
FrameIndex BIGP A 1 0
|
FrameIndex BIGP A 1 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model "BigCasing"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "BigGShellC_d.3d"
|
||||||
|
Skin 0 "Jclip1.png"
|
||||||
|
Scale 0.12 0.1 0.1
|
||||||
|
PitchOffset 90
|
||||||
|
Offset 3 0 2
|
||||||
|
USEACTORPITCH
|
||||||
|
USEACTORROLL
|
||||||
|
USEROTATIONCENTER
|
||||||
|
Rotation-Center 0 0 2
|
||||||
|
|
||||||
|
FrameIndex PCAS A 0 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Model "BigGun"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 2 "Flat_d.3d"
|
||||||
|
Skin 2 "BigMuz.png"
|
||||||
|
AngleOffset 90
|
||||||
|
PitchOffset 90
|
||||||
|
Scale 0.2 0.2 0.2
|
||||||
|
Offset 25 -60 -5
|
||||||
|
|
||||||
|
FrameIndex BGMF A 2 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Model "BigGun"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "BigGun_d.3d"
|
||||||
|
SurfaceSkin 0 0 "JBigGun1.png"
|
||||||
|
SurfaceSkin 0 1 "Automa1.png"
|
||||||
|
AngleOffset -85
|
||||||
|
Scale 0.2 -0.1 0.2
|
||||||
|
Offset 7 -10 -3
|
||||||
|
|
||||||
|
// Still
|
||||||
|
FrameIndex BIGI A 0 0
|
||||||
|
// Down
|
||||||
|
FrameIndex BIGD A 0 1
|
||||||
|
FrameIndex BIGD B 0 2
|
||||||
|
FrameIndex BIGD C 0 3
|
||||||
|
FrameIndex BIGD D 0 4
|
||||||
|
FrameIndex BIGD E 0 5
|
||||||
|
FrameIndex BIGD F 0 6
|
||||||
|
FrameIndex BIGD G 0 7
|
||||||
|
FrameIndex BIGD H 0 8
|
||||||
|
FrameIndex BIGD I 0 9
|
||||||
|
FrameIndex BIGD J 0 10
|
||||||
|
FrameIndex BIGD K 0 11
|
||||||
|
// Select
|
||||||
|
FrameIndex BIGS A 0 11
|
||||||
|
FrameIndex BIGS B 0 12
|
||||||
|
FrameIndex BIGS C 0 13
|
||||||
|
FrameIndex BIGS D 0 14
|
||||||
|
FrameIndex BIGS E 0 15
|
||||||
|
FrameIndex BIGS F 0 16
|
||||||
|
FrameIndex BIGS G 0 17
|
||||||
|
FrameIndex BIGS H 0 18
|
||||||
|
FrameIndex BIGS I 0 19
|
||||||
|
// Twiddle1
|
||||||
|
FrameIndex BIGW A 0 20
|
||||||
|
FrameIndex BIGW B 0 21
|
||||||
|
FrameIndex BIGW C 0 22
|
||||||
|
FrameIndex BIGW D 0 23
|
||||||
|
FrameIndex BIGW E 0 24
|
||||||
|
FrameIndex BIGW F 0 25
|
||||||
|
FrameIndex BIGW G 0 26
|
||||||
|
FrameIndex BIGW H 0 27
|
||||||
|
FrameIndex BIGW I 0 28
|
||||||
|
FrameIndex BIGW J 0 29
|
||||||
|
FrameIndex BIGW K 0 30
|
||||||
|
FrameIndex BIGW L 0 31
|
||||||
|
FrameIndex BIGW M 0 32
|
||||||
|
FrameIndex BIGW N 0 33
|
||||||
|
FrameIndex BIGW O 0 34
|
||||||
|
// Twiddle2
|
||||||
|
FrameIndex BIGT A 0 35
|
||||||
|
FrameIndex BIGT B 0 36
|
||||||
|
FrameIndex BIGT C 0 37
|
||||||
|
FrameIndex BIGT D 0 38
|
||||||
|
FrameIndex BIGT E 0 39
|
||||||
|
FrameIndex BIGT F 0 40
|
||||||
|
FrameIndex BIGT G 0 41
|
||||||
|
FrameIndex BIGT H 0 42
|
||||||
|
FrameIndex BIGT I 0 43
|
||||||
|
FrameIndex BIGT J 0 44
|
||||||
|
FrameIndex BIGT K 0 45
|
||||||
|
FrameIndex BIGT L 0 46
|
||||||
|
FrameIndex BIGT M 0 47
|
||||||
|
FrameIndex BIGT N 0 48
|
||||||
|
FrameIndex BIGT O 0 49
|
||||||
|
FrameIndex BIGT P 0 50
|
||||||
|
FrameIndex BIGT Q 0 51
|
||||||
|
FrameIndex BIGT R 0 52
|
||||||
|
FrameIndex BIGT S 0 53
|
||||||
|
FrameIndex BIGT T 0 54
|
||||||
|
FrameIndex BIGT U 0 55
|
||||||
|
FrameIndex BIGT V 0 56
|
||||||
|
FrameIndex BIGT W 0 57
|
||||||
|
FrameIndex BIGT X 0 58
|
||||||
|
FrameIndex BIGT Y 0 59
|
||||||
|
// PreFire
|
||||||
|
FrameIndex BIGF A 0 60
|
||||||
|
FrameIndex BIGF B 0 61
|
||||||
|
// Fire
|
||||||
|
FrameIndex BIGF C 0 62
|
||||||
|
FrameIndex BIGF D 0 63
|
||||||
|
FrameIndex BIGF E 0 64
|
||||||
|
FrameIndex BIGF F 0 65
|
||||||
|
FrameIndex BIGF G 0 66
|
||||||
|
FrameIndex BIGF H 0 67
|
||||||
|
FrameIndex BIGF I 0 68
|
||||||
|
FrameIndex BIGF J 0 69
|
||||||
|
FrameIndex BIGF K 0 70
|
||||||
|
FrameIndex BIGF L 0 71
|
||||||
|
// EndFire
|
||||||
|
FrameIndex BIGF M 0 72
|
||||||
|
FrameIndex BIGF N 0 73
|
||||||
|
FrameIndex BIGF O 0 74
|
||||||
|
FrameIndex BIGF P 0 75
|
||||||
|
// Reload
|
||||||
|
FrameIndex BIGR A 0 76
|
||||||
|
FrameIndex BIGR B 0 77
|
||||||
|
FrameIndex BIGR C 0 78
|
||||||
|
FrameIndex BIGR D 0 79
|
||||||
|
FrameIndex BIGR E 0 80
|
||||||
|
FrameIndex BIGR F 0 81
|
||||||
|
FrameIndex BIGR G 0 82
|
||||||
|
FrameIndex BIGR H 0 83
|
||||||
|
FrameIndex BIGR I 0 84
|
||||||
|
FrameIndex BIGR J 0 85
|
||||||
|
FrameIndex BIGR K 0 86
|
||||||
|
FrameIndex BIGR L 0 87
|
||||||
|
FrameIndex BIGR M 0 88 // punch
|
||||||
|
FrameIndex BIGR N 0 89
|
||||||
|
FrameIndex BIGR O 0 90
|
||||||
|
FrameIndex BIGR P 0 91
|
||||||
|
FrameIndex BIGR Q 0 92
|
||||||
|
FrameIndex BIGR R 0 93
|
||||||
|
FrameIndex BIGR S 0 94
|
||||||
|
FrameIndex BIGR T 0 95
|
||||||
|
FrameIndex BIGR U 0 96
|
||||||
|
FrameIndex BIGR V 0 97
|
||||||
|
FrameIndex BIGR W 0 98
|
||||||
|
FrameIndex BIGR X 0 99 // drop
|
||||||
|
FrameIndex BIGR Y 0 100
|
||||||
|
FrameIndex BIGR Z 0 101
|
||||||
|
FrameIndex BIGR [ 0 102
|
||||||
|
FrameIndex BIGR \ 0 103
|
||||||
|
FrameIndex BIGR ] 0 104
|
||||||
|
FrameIndex BIR2 A 0 105
|
||||||
|
FrameIndex BIR2 B 0 106
|
||||||
|
FrameIndex BIR2 C 0 107
|
||||||
|
FrameIndex BIR2 D 0 108
|
||||||
|
FrameIndex BIR2 E 0 109
|
||||||
|
FrameIndex BIR2 F 0 110
|
||||||
|
FrameIndex BIR2 G 0 111 // load
|
||||||
|
FrameIndex BIR2 H 0 112
|
||||||
|
FrameIndex BIR2 I 0 113
|
||||||
|
FrameIndex BIR2 J 0 114
|
||||||
|
FrameIndex BIR2 K 0 115
|
||||||
|
FrameIndex BIR2 L 0 116
|
||||||
|
FrameIndex BIR2 M 0 117
|
||||||
|
FrameIndex BIR2 N 0 118
|
||||||
|
FrameIndex BIR2 O 0 119
|
||||||
|
FrameIndex BIR2 P 0 120 // reselect
|
||||||
|
FrameIndex BIR2 Q 0 121
|
||||||
|
FrameIndex BIR2 R 0 122
|
||||||
|
FrameIndex BIR2 S 0 123
|
||||||
|
FrameIndex BIR2 T 0 124
|
||||||
|
FrameIndex BIR2 U 0 125
|
||||||
|
FrameIndex BIR2 V 0 126
|
||||||
|
FrameIndex BIR2 W 0 127
|
||||||
|
FrameIndex BIR2 X 0 128
|
||||||
|
FrameIndex BIR2 Y 0 129
|
||||||
|
FrameIndex BIR2 Z 0 130
|
||||||
|
FrameIndex BIR2 [ 0 131
|
||||||
|
FrameIndex BIR2 \ 0 132
|
||||||
|
FrameIndex BIR2 ] 0 133
|
||||||
|
FrameIndex BIR3 A 0 134
|
||||||
|
FrameIndex BIR3 B 0 135
|
||||||
|
FrameIndex BIR3 C 0 136
|
||||||
|
FrameIndex BIR3 D 0 137
|
||||||
|
FrameIndex BIR3 E 0 138
|
||||||
|
FrameIndex BIR3 F 0 139
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ Model "QCasing"
|
||||||
ZOffset 1
|
ZOffset 1
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
DONTCULLBACKFACES
|
|
||||||
USEROTATIONCENTER
|
USEROTATIONCENTER
|
||||||
Rotation-Center 0 0 1
|
Rotation-Center 0 0 1
|
||||||
|
|
||||||
|
|
|
||||||
BIN
models/BigGMag_a.3d
Normal file
BIN
models/BigGMag_a.3d
Normal file
Binary file not shown.
BIN
models/BigGMag_d.3d
Normal file
BIN
models/BigGMag_d.3d
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
models/FatRing_a.3d
Normal file
BIN
models/FatRing_a.3d
Normal file
Binary file not shown.
BIN
models/FatRing_d.3d
Normal file
BIN
models/FatRing_d.3d
Normal file
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 120 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 120 KiB |
BIN
models/JRingex1.png
Normal file
BIN
models/JRingex1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
|
|
@ -284,6 +284,14 @@ impaler/altfire impboltl
|
||||||
impaler/hit imphit
|
impaler/hit imphit
|
||||||
impaler/beam ele04
|
impaler/beam ele04
|
||||||
|
|
||||||
|
big/select bigmsel
|
||||||
|
big/fire bigmfire
|
||||||
|
big/dry bigmdryf
|
||||||
|
big/punch bigmejct
|
||||||
|
big/reload bigmrelo
|
||||||
|
big/shell bigmshel
|
||||||
|
big/blast bigmhit
|
||||||
|
|
||||||
translator/event transa3
|
translator/event transa3
|
||||||
|
|
||||||
detector/start detact
|
detector/start detact
|
||||||
|
|
|
||||||
BIN
sounds/BigMDryF.ogg
Normal file
BIN
sounds/BigMDryF.ogg
Normal file
Binary file not shown.
BIN
sounds/BigMEjct.ogg
Normal file
BIN
sounds/BigMEjct.ogg
Normal file
Binary file not shown.
BIN
sounds/BigMRelo.ogg
Normal file
BIN
sounds/BigMRelo.ogg
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +1,4 @@
|
||||||
Sprite "BIGAA0",1,1{}
|
Sprite "BIGAA0",1,1{}
|
||||||
Sprite "BIGPA0",1,1{}
|
Sprite "BIGPA0",1,1{}
|
||||||
Sprite "BIGSA0",1,1{}
|
Sprite "BIGSA0",1,1{}
|
||||||
|
Sprite "FATRA0",1,1{}
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ Class BigAmmo : Ammo
|
||||||
Inventory.Icon "I_BigM";
|
Inventory.Icon "I_BigM";
|
||||||
Inventory.PickupMessage "";
|
Inventory.PickupMessage "";
|
||||||
Inventory.Amount 10;
|
Inventory.Amount 10;
|
||||||
Inventory.MaxAmount 30;
|
Inventory.MaxAmount 12;
|
||||||
Ammo.BackpackAmount 0;
|
Ammo.BackpackAmount 0;
|
||||||
Ammo.BackpackMaxAmount 60;
|
Ammo.BackpackMaxAmount 24;
|
||||||
Ammo.DropAmount 10;
|
Ammo.DropAmount 10;
|
||||||
Inventory.RespawnTics 2100;
|
Inventory.RespawnTics 2100;
|
||||||
+INVENTORY.IGNORESKILL;
|
+INVENTORY.IGNORESKILL;
|
||||||
|
|
@ -90,8 +90,88 @@ Class BigAmmo3 : BigAmmo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Class FatRing : Actor
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
RenderStyle "Add";
|
||||||
|
+NOGRAVITY;
|
||||||
|
+NOBLOCKMAP;
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( isFrozen() ) return;
|
||||||
|
A_FadeOut(1/21.,0);
|
||||||
|
}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
FATR ABCDEFGHIJK 2 Bright;
|
||||||
|
Stop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Class BigBlast : Actor
|
Class BigBlast : Actor
|
||||||
{
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
RenderStyle "Add";
|
||||||
|
DamageType 'BigShot';
|
||||||
|
Scale 2.;
|
||||||
|
+NOGRAVITY;
|
||||||
|
+NOBLOCKMAP;
|
||||||
|
+NODAMAGETHRUST;
|
||||||
|
+FORCERADIUSDMG;
|
||||||
|
+FORCEXYBILLBOARD;
|
||||||
|
}
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
A_Explode(200,250);
|
||||||
|
A_QuakeEx(4,4,4,10,0,400,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:0.2);
|
||||||
|
A_PlaySound("big/blast",CHAN_VOICE,pitch:FRandom[BigGun](0.8,1.2));
|
||||||
|
UTMainHandler.DoBlast(self,250,80000);
|
||||||
|
let r = Spawn("FatRing",pos);
|
||||||
|
r.angle = angle;
|
||||||
|
r.pitch = pitch;
|
||||||
|
r.roll = FRandom[ExploS](0,360);
|
||||||
|
r.scale *= FRandom[ExploS](0.8,1.1);
|
||||||
|
Scale *= FRandom[ExploS](0.8,1.1);
|
||||||
|
Scale.x *= RandomPick[ExploS](-1,1);
|
||||||
|
Scale.y *= RandomPick[ExploS](-1,1);
|
||||||
|
int numpt = Random[ExploS](30,40);
|
||||||
|
for ( int i=0; i<numpt; i++ )
|
||||||
|
{
|
||||||
|
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,4);
|
||||||
|
let s = Spawn("UTSmoke",pos);
|
||||||
|
s.vel = pvel;
|
||||||
|
s.scale *= FRandom[ExploS](0.9,4.0);
|
||||||
|
s.SetShade(Color(1,1,1)*Random[ExploS](128,255));
|
||||||
|
}
|
||||||
|
numpt = Random[ExploS](20,25);
|
||||||
|
for ( int i=0; i<numpt; i++ )
|
||||||
|
{
|
||||||
|
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](2,6);
|
||||||
|
let s = Spawn("UTSpark",pos);
|
||||||
|
s.vel = pvel;
|
||||||
|
}
|
||||||
|
numpt = Random[ExploS](30,40);
|
||||||
|
for ( int i=0; i<numpt; i++ )
|
||||||
|
{
|
||||||
|
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](2,12);
|
||||||
|
let s = Spawn("UTChip",pos);
|
||||||
|
s.vel = pvel;
|
||||||
|
s.scale *= FRandom[ExploS](0.9,2.7);
|
||||||
|
}
|
||||||
|
Spawn("FlareXLight",pos);
|
||||||
|
}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BGXP ABCDEFGH 4 Bright;
|
||||||
|
Stop;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class HitListEntry
|
Class HitListEntry
|
||||||
|
|
@ -103,20 +183,54 @@ Class HitListEntry
|
||||||
|
|
||||||
Class BigTracer : LineTracer
|
Class BigTracer : LineTracer
|
||||||
{
|
{
|
||||||
|
Actor ignoreme;
|
||||||
Array<HitListEntry> hitlist;
|
Array<HitListEntry> hitlist;
|
||||||
double penetration; // please don't laugh
|
double penetration; // please don't laugh
|
||||||
|
|
||||||
|
override ETraceStatus TraceCallback()
|
||||||
|
{
|
||||||
|
if ( Results.HitType == TRACE_HitActor )
|
||||||
|
{
|
||||||
|
if ( Results.HitActor == ignoreme ) return TRACE_Skip;
|
||||||
|
if ( Results.HitActor.bSHOOTABLE )
|
||||||
|
{
|
||||||
|
let ent = new("HitListEntry");
|
||||||
|
ent.hitactor = Results.HitActor;
|
||||||
|
ent.hitlocation = Results.HitPos;
|
||||||
|
ent.x = Results.HitVector;
|
||||||
|
ent.hitdamage = min(Results.HitActor.health,int(penetration));
|
||||||
|
hitlist.Push(ent);
|
||||||
|
penetration -= ent.hitdamage*.3;
|
||||||
|
if ( penetration <= 0 ) return TRACE_Abort;
|
||||||
|
return TRACE_Skip;
|
||||||
|
}
|
||||||
|
return TRACE_Skip;
|
||||||
|
}
|
||||||
|
else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) )
|
||||||
|
{
|
||||||
|
if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) )
|
||||||
|
return TRACE_Stop;
|
||||||
|
return TRACE_Skip;
|
||||||
|
}
|
||||||
|
return TRACE_Stop;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class BigCasing : UTCasing
|
Class BigCasing : UTCasing
|
||||||
{
|
{
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
BounceSound "big/bounce"; // much heavier sound
|
BounceSound "big/shell"; // much heavier sound
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class BigGun : UnrealWeapon
|
Class BigGun : UnrealWeapon
|
||||||
{
|
{
|
||||||
|
int ClipCount;
|
||||||
|
BigTracer t;
|
||||||
|
|
||||||
|
property ClipCount : ClipCount;
|
||||||
|
|
||||||
override bool TryPickup( in out Actor toucher )
|
override bool TryPickup( in out Actor toucher )
|
||||||
{
|
{
|
||||||
if ( !sting_dubious ) return false; // not allowed
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
|
@ -158,9 +272,128 @@ Class BigGun : UnrealWeapon
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
override int, int, bool, bool GetClipAmount()
|
||||||
|
{
|
||||||
|
return ClipCount, -1, (ClipCount<2), false;
|
||||||
|
}
|
||||||
|
override bool CheckAmmo( int fireMode, bool autoSwitch, bool requireAmmo, int ammocount )
|
||||||
|
{
|
||||||
|
if ( ClipCount > 0 ) return true;
|
||||||
|
return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount);
|
||||||
|
}
|
||||||
|
action void A_Eject()
|
||||||
|
{
|
||||||
|
Vector3 x, y, z;
|
||||||
|
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||||
|
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),4*x+y*12-z*4);
|
||||||
|
let c = Spawn("BigCasing",origin);
|
||||||
|
c.vel = x*FRandom[Junk](-1.5,1.5)+y*FRandom[Junk](2,4)+z*FRandom[Junk](-1,2);
|
||||||
|
}
|
||||||
|
action void A_BigFire( bool bAlt = false )
|
||||||
|
{
|
||||||
|
Weapon weap = Weapon(invoker);
|
||||||
|
if ( !weap ) return;
|
||||||
|
if ( invoker.clipcount <= 0 ) return;
|
||||||
|
invoker.clipcount--;
|
||||||
|
A_PlaySound("big/fire",CHAN_WEAPON);
|
||||||
|
A_AlertMonsters();
|
||||||
|
A_Overlay(-2,"MuzzleFlash");
|
||||||
|
A_OverlayFlags(-2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true);
|
||||||
|
A_OverlayRenderstyle(-2,STYLE_Add);
|
||||||
|
invoker.FireEffect();
|
||||||
|
UTMainHandler.DoFlash(self,Color(32,255,128,0),1);
|
||||||
|
A_QuakeEx(2,2,2,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollintensity:0.12);
|
||||||
|
for ( int i=0; i<6; i++ )
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.04,-0.2),FRandom[BigGun](-0.2,0.2)),FRandom[BigGun](6,9),FRandom[BigGun](-0.2,0.8),Random[BigGun](2,4),SWING_Spring,Random[BigGun](3,6),FRandom[BigGun](1.5,2.3));
|
||||||
|
Vector3 x, y, z, x2, y2, z2;
|
||||||
|
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||||
|
vel -= x*(player.onground?9.5:2.5);
|
||||||
|
vel.z += (player.onground?2.8:.25);
|
||||||
|
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+y*5-z*1);
|
||||||
|
[x2, y2, z2] = dt_CoordUtil.GetAxes(BulletSlope(),angle,roll);
|
||||||
|
double a = FRandom[BigGun](0,360), s = FRandom[BigGun](0,bAlt?0.2:0.05);
|
||||||
|
Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit();
|
||||||
|
if ( !invoker.t ) invoker.t = new("BigTracer");
|
||||||
|
invoker.t.ignoreme = self;
|
||||||
|
invoker.t.hitlist.Clear();
|
||||||
|
invoker.t.penetration = 1000.;
|
||||||
|
invoker.t.Trace(origin,level.PointInSector(origin.xy),dir,10000.,0);
|
||||||
|
for ( int i=0; i<invoker.t.hitlist.Size(); i++ )
|
||||||
|
{
|
||||||
|
let l = invoker.t.hitlist[i];
|
||||||
|
l.hitactor.DamageMobj(invoker,self,l.hitdamage,'BigShot',DMG_THRUSTLESS);
|
||||||
|
UTMainHandler.DoKnockback(l.hitactor,l.x,90000.);
|
||||||
|
let b = Spawn("BigBlast",l.hitlocation-l.x*8.);
|
||||||
|
b.angle = atan2(l.x.y,l.x.x);
|
||||||
|
b.pitch = asin(-l.x.z);
|
||||||
|
}
|
||||||
|
if ( invoker.t.Results.HitType != TRACE_HitNone )
|
||||||
|
{
|
||||||
|
Vector3 hitnormal = -invoker.t.Results.HitVector;
|
||||||
|
if ( invoker.t.Results.HitType == TRACE_HitFloor )
|
||||||
|
{
|
||||||
|
if ( invoker.t.Results.FFloor ) hitnormal = -invoker.t.Results.FFloor.top.Normal;
|
||||||
|
else hitnormal = invoker.t.Results.HitSector.floorplane.Normal;
|
||||||
|
}
|
||||||
|
else if ( invoker.t.Results.HitType == TRACE_HitCeiling )
|
||||||
|
{
|
||||||
|
if ( invoker.t.Results.FFloor ) hitnormal = -invoker.t.Results.FFloor.bottom.Normal;
|
||||||
|
else hitnormal = invoker.t.Results.HitSector.ceilingplane.Normal;
|
||||||
|
}
|
||||||
|
else if ( invoker.t.Results.HitType == TRACE_HitWall )
|
||||||
|
{
|
||||||
|
hitnormal = (-invoker.t.Results.HitLine.delta.y,invoker.t.Results.HitLine.delta.x,0).unit();
|
||||||
|
if ( !invoker.t.Results.Side ) hitnormal *= -1;
|
||||||
|
}
|
||||||
|
let b = Spawn("BigBlast",invoker.t.Results.HitPos+hitnormal*8.);
|
||||||
|
b.angle = atan2(hitnormal.y,hitnormal.x);
|
||||||
|
b.pitch = asin(-hitnormal.z);
|
||||||
|
if ( invoker.t.Results.HitLine ) invoker.t.Results.HitLine.RemoteActivate(self,invoker.t.Results.Side,SPAC_Impact,invoker.t.Results.HitPos);
|
||||||
|
}
|
||||||
|
int numpt = 50;
|
||||||
|
for ( int i=0; i<numpt; i++ )
|
||||||
|
{
|
||||||
|
let s = Spawn("UTStaticViewSmoke",origin);
|
||||||
|
UTViewSmoke(s).ofs = (10,5,-1);
|
||||||
|
UTViewSmoke(s).vvel += (FRandom[BigGun](-0.05,0.5),FRandom[BigGun](-0.3,0.3),FRandom[BigGun](-0.3,0.3));
|
||||||
|
s.target = self;
|
||||||
|
s.scale *= 1.5;
|
||||||
|
s.alpha *= 0.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
action void A_BigRefire( statelabel flash = null )
|
||||||
|
{
|
||||||
|
Weapon weap = Weapon(invoker);
|
||||||
|
if ( !weap || !player ) return;
|
||||||
|
if ( invoker.clipcount <= 0 )
|
||||||
|
{
|
||||||
|
A_ClearRefire();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
A_Refire(flash);
|
||||||
|
}
|
||||||
|
action bool A_BigCheckForReload( bool bDryFire = false )
|
||||||
|
{
|
||||||
|
let weap = Weapon(invoker);
|
||||||
|
if ( invoker.clipcount <= 0 )
|
||||||
|
{
|
||||||
|
if ( weap.Ammo1.Amount > 0 )
|
||||||
|
{
|
||||||
|
player.SetPSprite(PSP_WEAPON,invoker.FindState("Reload"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if ( bDryFire )
|
||||||
|
{
|
||||||
|
player.SetPSprite(PSP_WEAPON,invoker.FindState("DryFire"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_BIGGUN";
|
Tag "$T_BIGGUN";
|
||||||
|
Obituary "$O_BIGGUN";
|
||||||
Inventory.PickupMessage "$I_BIGGUN";
|
Inventory.PickupMessage "$I_BIGGUN";
|
||||||
Weapon.UpSound "big/select";
|
Weapon.UpSound "big/select";
|
||||||
Weapon.SlotNumber 9;
|
Weapon.SlotNumber 9;
|
||||||
|
|
@ -170,11 +403,12 @@ Class BigGun : UnrealWeapon
|
||||||
Weapon.AmmoUse 1;
|
Weapon.AmmoUse 1;
|
||||||
Weapon.AmmoType2 "BigAmmo";
|
Weapon.AmmoType2 "BigAmmo";
|
||||||
Weapon.AmmoUse2 1;
|
Weapon.AmmoUse2 1;
|
||||||
Weapon.AmmoGive 10;
|
Weapon.AmmoGive 4;
|
||||||
Inventory.RespawnTics 2100;
|
Inventory.RespawnTics 2100;
|
||||||
+INVENTORY.IGNORESKILL;
|
+INVENTORY.IGNORESKILL;
|
||||||
+WEAPON.NOAUTOFIRE;
|
UTWeapon.DropAmmo 4;
|
||||||
UTWeapon.DropAmmo 5;
|
BigGun.ClipCount 4;
|
||||||
|
+EXTREMEDEATH;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
@ -183,5 +417,156 @@ Class BigGun : UnrealWeapon
|
||||||
Stop;
|
Stop;
|
||||||
BIGP B -1;
|
BIGP B -1;
|
||||||
Stop;
|
Stop;
|
||||||
|
Select:
|
||||||
|
BIGS A 1 A_Raise(int.max);
|
||||||
|
Wait;
|
||||||
|
Ready:
|
||||||
|
BIGS A 0
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.3,-0.2),FRandom[BigGun](0.4,0.5)),3,0,6,SWING_Spring,2,1.8);
|
||||||
|
}
|
||||||
|
BIGS ABC 2 A_WeaponReady(WRF_NOFIRE);
|
||||||
|
BIGS D 0
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.2,0.3),FRandom[BigGun](-0.8,-1.2)),3,0,6,SWING_Spring,2,2.0);
|
||||||
|
}
|
||||||
|
BIGS DEFGHI 2 A_WeaponReady(WRF_NOFIRE);
|
||||||
|
Goto Idle;
|
||||||
|
Dummy:
|
||||||
|
TNT1 A 1
|
||||||
|
{
|
||||||
|
A_CheckReload();
|
||||||
|
if ( !A_BigCheckForReload() )
|
||||||
|
{
|
||||||
|
if ( (invoker.clipCount < invoker.default.clipcount) && (invoker.Ammo1.Amount > 0) )
|
||||||
|
A_WeaponReady(WRF_ALLOWRELOAD);
|
||||||
|
else A_WeaponReady();
|
||||||
|
}
|
||||||
|
}
Wait;
|
||||||
|
Idle:
|
||||||
|
BIGI A 0 A_Overlay(-9999,"Dummy");
|
||||||
|
BIGI A 20 A_Jump(80,"Twiddle1","Twiddle1","Twiddle2");
|
||||||
|
Wait;
|
||||||
|
Twiddle1:
|
||||||
|
BIGW A 3
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.2,-0.3),FRandom[BigGun](0.2,0.3)),2,0,12,SWING_Spring,5,2);
|
||||||
|
}
|
||||||
|
BIGW BCDEFGHIJKLMNO 3;
|
||||||
|
Goto Idle;
|
||||||
|
Twiddle2:
|
||||||
|
BIGT A 2
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.2,-0.3),FRandom[BigGun](0.2,0.3)),3,0,6,SWING_Spring,5,2);
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.2,-0.3),FRandom[BigGun](-0.4,-0.6)),4,0,12,SWING_Spring,6,1.4);
|
||||||
|
}
|
||||||
|
BIGT BCDEFGHIJKLMNOP 2;
|
||||||
|
BIGT Q 2
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.3,-0.2),FRandom[BigGun](0.4,0.5)),3,0,6,SWING_Spring,2,1.5);
|
||||||
|
}
|
||||||
|
BIGT RSTUVWXY 2;
|
||||||
|
Goto Idle;
|
||||||
|
Fire:
|
||||||
|
BIGF A 0
|
||||||
|
{
|
||||||
|
if ( !A_BigCheckForReload(true) )
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
}
|
||||||
|
BIGF AB 2;
|
||||||
|
BIGF C 2 A_BigFire();
|
||||||
|
BIGF DEF 2;
|
||||||
|
BIGF G 2 A_Eject();
|
||||||
|
BIGF HIJKLMNOP 2;
|
||||||
|
Goto Idle;
|
||||||
|
AltFire:
|
||||||
|
BIGF A 0
|
||||||
|
{
|
||||||
|
if ( !A_BigCheckForReload(true) )
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
}
|
||||||
|
BIGF AB 3;
|
||||||
|
Goto AltHold;
|
||||||
|
AltHold:
|
||||||
|
BIGF C 1 A_BigFire();
|
||||||
|
BIGF DEF 1;
|
||||||
|
BIGF G 1 A_Eject();
|
||||||
|
BIGF HIJK 1;
|
||||||
|
BIGF L 0 A_BigRefire(1);
|
||||||
|
Goto AltRelease;
|
||||||
|
BIGF L 1;
|
||||||
|
Goto AltHold;
|
||||||
|
AltRelease:
|
||||||
|
BIGF LMNOP 3;
|
||||||
|
Goto Idle;
|
||||||
|
DryFire:
|
||||||
|
BIGF A 0 A_Overlay(-9999,"Null");
|
||||||
|
BIGF AB 2;
|
||||||
|
BIGF C 2
|
||||||
|
{
|
||||||
|
A_PlaySound("big/dry",CHAN_WEAPON,Dampener.Active(self)?.3:1.);
|
||||||
|
if ( !Dampener.Active(self) ) A_AlertMonsters();
|
||||||
|
}
|
||||||
|
BIGF LMNOP 2;
|
||||||
|
Goto Idle;
|
||||||
|
Reload:
|
||||||
|
BIGR A 0
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.7,0.3),FRandom[BigGun](0.4,0.3)),3,0,10,SWING_Spring,70,0.8);
|
||||||
|
}
|
||||||
|
BIGR ABCDEFGHIJKL 2;
|
||||||
|
BIGR M 2
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.3,0.4),FRandom[BigGun](0.6,0.8)),6,0,3,SWING_Spring,2,3);
|
||||||
|
invoker.special1 = min(invoker.ammo1.amount,invoker.default.clipcount)-invoker.clipcount;
|
||||||
|
invoker.clipcount = -1;
|
||||||
|
A_QuakeEx(2,2,2,5,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollintensity:0.18);
|
||||||
|
A_PlaySound("big/punch",CHAN_WEAPON,Dampener.Active(self)?.3:1.);
|
||||||
|
}
|
||||||
|
BIGR NOPQRSTUVWXYZ[\] 2;
|
||||||
|
BIR2 ABCDEF 2;
|
||||||
|
BIR2 G 2
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.2,0.3),FRandom[BigGun](0.3,0.5)),6,0,3,SWING_Spring,2,3);
|
||||||
|
invoker.clipcount = min(invoker.ammo1.amount,invoker.default.clipcount);
|
||||||
|
invoker.Ammo1.Amount -= invoker.special1;
|
||||||
|
A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollintensity:0.12);
|
||||||
|
A_PlaySound("big/reload",CHAN_WEAPON,Dampener.Active(self)?.3:1.);
|
||||||
|
}
|
||||||
|
BIR2 HIJKL 2;
|
||||||
|
BIR2 M 2
|
||||||
|
{
|
||||||
|
invoker.PlayUpSound(self);
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.3,-0.2),FRandom[BigGun](0.4,0.5)),3,0,6,SWING_Spring,2,1.5);
|
||||||
|
}
|
||||||
|
BIR2 NOP 2;
|
||||||
|
BIR2 Q 2
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.2,0.3),FRandom[BigGun](-0.8,-1.2)),3,0,6,SWING_Spring,2,1.5);
|
||||||
|
}
|
||||||
|
BIR2 RSTUVWXYZ[\] 2;
|
||||||
|
BIR3 ABCDEF 2;
|
||||||
|
Goto Idle;
|
||||||
|
Deselect:
|
||||||
|
BIGD A 1
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](0.2,0.3),FRandom[BigGun](-0.8,-1.2)),3,0,6,SWING_Spring,2,1.5);
|
||||||
|
}
|
||||||
|
BIGD BC 1;
|
||||||
|
BIGD D 1
|
||||||
|
{
|
||||||
|
UTMainHandler.DoSwing(self,(FRandom[BigGun](-0.3,-0.2),FRandom[BigGun](0.4,0.5)),3,0,6,SWING_Spring,2,1.5);
}
|
||||||
|
BIGD EFGHIJK 1;
|
||||||
|
BIGD K 1 A_Lower(int.max);
|
||||||
|
Wait;
|
||||||
|
MuzzleFlash:
|
||||||
|
BGMF A 2 Bright
|
||||||
|
{
|
||||||
|
let l = Spawn("SniperLight",pos);
|
||||||
|
l.target = self;
|
||||||
|
}
|
||||||
|
Stop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,6 @@ Class QuadShot : UnrealWeapon
|
||||||
[x2, y2, z2] = dt_CoordUtil.GetAxes(BulletSlope(),angle,roll);
|
[x2, y2, z2] = dt_CoordUtil.GetAxes(BulletSlope(),angle,roll);
|
||||||
double a, s;
|
double a, s;
|
||||||
Vector3 dir;
|
Vector3 dir;
|
||||||
FLineTraceData d;
|
|
||||||
if ( bAlt )
|
if ( bAlt )
|
||||||
{
|
{
|
||||||
A_QuakeEx(1,1,1,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12);
|
A_QuakeEx(1,1,1,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12);
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ Class UPlayer : UTPlayer
|
||||||
dsp.pendingupgrade = 4;
|
dsp.pendingupgrade = 4;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dsp.upgradelevel = 4;
|
dsp.pendingupgrade = dsp.upgradelevel = 4;
|
||||||
dsp.MainUse = min(6,dsp.upgradelevel+1);
|
dsp.MainUse = min(6,dsp.upgradelevel+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue