Remove 8+ size variants of shells. Allow dropping of 2/4 golden shells.
Use overlays for Eviscerator casing eject, add random offsets like with Explodium Gun. Fix Candy Gun not being consistent with new animation changes of Explodium Gun. Fix Explodium Gun not showing the loaded bullet when checking the chamber. Give random offsets to Silver Bullet ejection overlays. Some small texture wrangling. Add projectile models for Silver Bullet (this will be used in the future). Remove InterHubAmount from MagAmmo classes (not needed as this property is only used by items with the INVBAR flag). Reduce BackpackMaxAmount of Ynykron Ammo to 3. Adjust how Chanceboxes randomize their "dud" probability. Tweak some of the Chancebox drops. Set DROPPED flag to false for all Chancebox drops, so they don't get crushed. Add 25% Crush damage factor to Demolitionist (in a future update, will try to make it so crushers have a chance to break while touching the player).
|
|
@ -20,6 +20,8 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after
|
|||
- Manarock *("A delicacy for gods, but instantly deadly for mortals")*
|
||||
- Rubber Duck *("Is this some kind of convoluted joke from those two?")*
|
||||
* ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff**
|
||||
* **Crusher breaking *(if possible)***
|
||||
* **Replace all hitscan with *"light projectiles"***
|
||||
* **Leaning and a lot of other stuff involving ViewAngles and ViewPos**
|
||||
* **Crouch sliding *(+ proper crouch dashing)***
|
||||
* **Expand third person animations**
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r276 \cu(Sun 14 Feb 21:24:00 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r276 \cu(2021-02-14 21:24:00)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r277 \cu(Mon 15 Feb 23:46:04 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r277 \cu(2021-02-15 23:46:04)\c-";
|
||||
|
|
|
|||
178
modeldef.ammo
|
|
@ -3,8 +3,7 @@ Model "RedShell"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Normal.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -17,8 +16,7 @@ Model "RedShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Normal.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -30,47 +28,7 @@ Model "RedShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "RedShell8"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Eight_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "RedShell12"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Twelve_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "RedShell16"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Sixteen_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Normal.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Normal.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -83,8 +41,7 @@ Model "GreenShell"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Slug.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Slug.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -97,8 +54,7 @@ Model "GreenShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Slug.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Slug.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -110,48 +66,19 @@ Model "GreenShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Slug.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Slug.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "GreenShell8"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Eight_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Slug.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "GreenShell12"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Twelve_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Slug.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
|
||||
Model "WhiteShell"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Dragon.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Dragon.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -164,8 +91,7 @@ Model "WhiteShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Dragon.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Dragon.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -177,21 +103,7 @@ Model "WhiteShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Dragon.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "WhiteShell8"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Eight_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Dragon.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Dragon.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -204,8 +116,7 @@ Model "BlueShell"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Kinylum.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Kinylum.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -218,8 +129,7 @@ Model "BlueShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Kinylum.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Kinylum.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -231,35 +141,19 @@ Model "BlueShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Kinylum.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Kinylum.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "BlueShell8"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Eight_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Kinylum.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
|
||||
Model "BlackShell"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Fuck.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Fuck.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -272,8 +166,7 @@ Model "BlackShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Fuck.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Fuck.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -285,8 +178,7 @@ Model "BlackShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Fuck.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Fuck.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -299,8 +191,7 @@ Model "PurpleShell"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Ball.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Ball.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -313,8 +204,7 @@ Model "PurpleShell2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Ball.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Ball.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -326,8 +216,7 @@ Model "PurpleShell4"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Ball.png"
|
||||
SurfaceSkin 0 1 "silvermap.png"
|
||||
Skin 0 "Shell_Ball.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
|
@ -340,8 +229,7 @@ Model "GoldShell"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_One_d.3d"
|
||||
SurfaceSkin 0 0 "Shell_Gold.png"
|
||||
SurfaceSkin 0 1 "goldmap.png"
|
||||
Skin 0 "Shell_Gold.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
@ -349,6 +237,30 @@ Model "GoldShell"
|
|||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "GoldShell2"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Two_d.3d"
|
||||
Skin 0 "Shell_Gold.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
Model "GoldShell4"
|
||||
{
|
||||
Path "models"
|
||||
|
||||
Model 0 "ShellAmmo_Four_d.3d"
|
||||
Skin 0 "Shell_Gold.png"
|
||||
Scale 0.024 0.024 0.024
|
||||
ZOffset 16
|
||||
ROTATING
|
||||
|
||||
FrameIndex XZW1 A 0 0
|
||||
}
|
||||
|
||||
Model "EvisceratorShell"
|
||||
{
|
||||
|
|
@ -574,8 +486,8 @@ Model "CandyGunBullets"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ExplodiumBullet_d.3d"
|
||||
SurfaceSkin 0 0 "BooletCandy.png"
|
||||
SurfaceSkin 0 1 "CandyCasing_Boolet.png"
|
||||
SurfaceSkin 0 0 "CandyBullet.png"
|
||||
SurfaceSkin 0 1 "CandyCasing.png"
|
||||
Scale 0.02 0.02 0.02
|
||||
PitchOffset 30
|
||||
ZOffset 16
|
||||
|
|
|
|||
|
|
@ -165,7 +165,6 @@ Model "CandyGun"
|
|||
FrameIndex XZW2 G 1 10
|
||||
FrameIndex XZW2 H 1 11
|
||||
// Fire
|
||||
SurfaceSkin 1 4 "CandyCasing.png" // show casing
|
||||
FrameIndex XZW2 I 1 13
|
||||
FrameIndex XZW2 J 1 14
|
||||
FrameIndex XZW2 K 1 15
|
||||
|
|
@ -175,9 +174,9 @@ Model "CandyGun"
|
|||
FrameIndex XZW2 O 1 19
|
||||
FrameIndex XZW2 P 1 20
|
||||
FrameIndex XZW2 Q 1 21
|
||||
// unused
|
||||
FrameIndex XZW2 R 1 22
|
||||
FrameIndex XZW2 S 1 23
|
||||
SurfaceSkin 1 4 "" // hide casing
|
||||
// Reload (Part 1)
|
||||
FrameIndex XZW2 T 1 25
|
||||
FrameIndex XZW2 U 1 26
|
||||
|
|
@ -414,4 +413,21 @@ Model "CandyGun"
|
|||
FrameIndex XZWB X 1 152
|
||||
FrameIndex XZWB Y 1 153
|
||||
FrameIndex XZWB Z 1 154
|
||||
// Casing
|
||||
SurfaceSkin 1 0 ""
|
||||
SurfaceSkin 1 1 ""
|
||||
SurfaceSkin 1 2 ""
|
||||
SurfaceSkin 1 3 ""
|
||||
SurfaceSkin 1 4 "CandyCasing_Used.png"
|
||||
SurfaceSkin 1 5 ""
|
||||
FrameIndex XZWC A 1 14
|
||||
FrameIndex XZWC B 1 15
|
||||
FrameIndex XZWC C 1 16
|
||||
FrameIndex XZWC D 1 17
|
||||
FrameIndex XZWC E 1 18
|
||||
FrameIndex XZWC F 1 19
|
||||
FrameIndex XZWC G 1 20
|
||||
FrameIndex XZWC H 1 21
|
||||
FrameIndex XZWC I 1 22
|
||||
FrameIndex XZWC J 1 23
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,6 @@ Model "Eviscerator"
|
|||
FrameIndex XZW3 Q 1 44
|
||||
FrameIndex XZW3 R 1 45
|
||||
// Eject
|
||||
SurfaceSkin 1 4 "EvisceratorShell.png"
|
||||
FrameIndex XZW3 S 1 47
|
||||
FrameIndex XZW3 T 1 48
|
||||
FrameIndex XZW3 U 1 49
|
||||
|
|
@ -215,7 +214,6 @@ Model "Eviscerator"
|
|||
FrameIndex XZW4 G 1 61
|
||||
FrameIndex XZW4 H 1 62
|
||||
FrameIndex XZW4 I 1 63
|
||||
SurfaceSkin 1 4 ""
|
||||
// Switch
|
||||
FrameIndex XZW4 J 1 65
|
||||
FrameIndex XZW4 K 1 66
|
||||
|
|
@ -282,7 +280,6 @@ Model "Eviscerator"
|
|||
FrameIndex XZW6 P 1 125
|
||||
FrameIndex XZW6 Q 1 126
|
||||
// Eject
|
||||
SurfaceSkin 1 4 "EvisceratorShell.png"
|
||||
FrameIndex XZW6 R 1 128
|
||||
FrameIndex XZW6 S 1 129
|
||||
FrameIndex XZW6 T 1 130
|
||||
|
|
@ -300,7 +297,6 @@ Model "Eviscerator"
|
|||
FrameIndex XZW7 F 1 142
|
||||
FrameIndex XZW7 G 1 143
|
||||
FrameIndex XZW7 H 1 144
|
||||
SurfaceSkin 1 4 ""
|
||||
// Switch
|
||||
FrameIndex XZW7 I 1 146
|
||||
FrameIndex XZW7 J 1 147
|
||||
|
|
@ -407,4 +403,20 @@ Model "Eviscerator"
|
|||
FrameIndex XZWB A 1 247
|
||||
FrameIndex XZWB B 1 248
|
||||
FrameIndex XZWB C 1 249
|
||||
// Casing Ejected
|
||||
SurfaceSkin 1 0 ""
|
||||
SurfaceSkin 1 1 ""
|
||||
SurfaceSkin 1 2 ""
|
||||
SurfaceSkin 1 3 ""
|
||||
SurfaceSkin 1 4 "EvisceratorShell.png"
|
||||
FrameIndex XZWB D 1 51
|
||||
FrameIndex XZWB E 1 52
|
||||
FrameIndex XZWB F 1 53
|
||||
FrameIndex XZWB G 1 54
|
||||
FrameIndex XZWB H 1 55
|
||||
FrameIndex XZWB I 1 56
|
||||
FrameIndex XZWB J 1 57
|
||||
FrameIndex XZWB K 1 58
|
||||
FrameIndex XZWB L 1 59
|
||||
FrameIndex XZWB M 1 60
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ Model "ExplodiumCasing"
|
|||
Path "models"
|
||||
|
||||
Model 0 "ExplodiumCasing_d.3d"
|
||||
Skin 0 "ExplodiumCasing.png"
|
||||
Skin 0 "ExplodiumCasing_Used.png"
|
||||
Scale 0.03 0.03 0.03
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
|
|
@ -89,10 +89,6 @@ Model "ExplodiumGun"
|
|||
FrameIndex XZWZ J 2 0
|
||||
}
|
||||
|
||||
Model "ExplodiumGun"
|
||||
{
|
||||
}
|
||||
|
||||
Model "ExplodiumGun"
|
||||
{
|
||||
Path "models"
|
||||
|
|
@ -262,6 +258,7 @@ Model "ExplodiumGun"
|
|||
FrameIndex XZW6 Z 1 121
|
||||
SurfaceSkin 1 5 "ExplodiumGun.png" // show mag
|
||||
// Check Bullet
|
||||
SurfaceSkin 1 4 "ExplodiumCasing.png" // show casing
|
||||
FrameIndex XZW7 A 1 157
|
||||
FrameIndex XZW7 B 1 158
|
||||
FrameIndex XZW7 C 1 159
|
||||
|
|
@ -281,6 +278,7 @@ Model "ExplodiumGun"
|
|||
FrameIndex XZW7 Q 1 173
|
||||
FrameIndex XZW7 R 1 174
|
||||
FrameIndex XZW7 S 1 175
|
||||
SurfaceSkin 1 4 "" // hide casing
|
||||
// Melee
|
||||
FrameIndex XZW7 T 1 177
|
||||
FrameIndex XZW7 U 1 178
|
||||
|
|
@ -345,7 +343,7 @@ Model "ExplodiumGun"
|
|||
SurfaceSkin 1 1 ""
|
||||
SurfaceSkin 1 2 ""
|
||||
SurfaceSkin 1 3 ""
|
||||
SurfaceSkin 1 4 "ExplodiumCasing.png"
|
||||
SurfaceSkin 1 4 "ExplodiumCasing_Used.png"
|
||||
SurfaceSkin 1 5 ""
|
||||
FrameIndex XZWA A 1 14
|
||||
FrameIndex XZWA B 1 15
|
||||
|
|
|
|||
|
|
@ -374,7 +374,7 @@ Model "DualExplodiumGun"
|
|||
SurfaceSkin 1 1 ""
|
||||
SurfaceSkin 1 2 ""
|
||||
SurfaceSkin 1 3 ""
|
||||
SurfaceSkin 1 4 "ExplodiumCasing.png"
|
||||
SurfaceSkin 1 4 "ExplodiumCasing_Used.png"
|
||||
SurfaceSkin 1 5 ""
|
||||
// RIGHT
|
||||
Model 1 "ExplodiumGun1st_d.3d"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ Model "SilverBulletCasing"
|
|||
Path "models"
|
||||
|
||||
Model 0 "SilverbulletCase_d.3d"
|
||||
Skin 0 "SilverbulletBullet.png"
|
||||
Skin 0 "SilverbulletBullet_Used.png"
|
||||
Scale 0.04 0.04 0.04
|
||||
AngleOffset 90
|
||||
USEACTORPITCH
|
||||
|
|
@ -18,7 +18,7 @@ Model "SilverBulletCasing2"
|
|||
Path "models"
|
||||
|
||||
Model 0 "SilverbulletCase_FCB_d.3d"
|
||||
Skin 0 "SilverbulletBullet_FCB.png"
|
||||
Skin 0 "SilverbulletBullet_FCB_Used.png"
|
||||
Scale 0.04 0.04 0.04
|
||||
AngleOffset 90
|
||||
USEACTORPITCH
|
||||
|
|
@ -104,7 +104,7 @@ Model "SilverBullet"
|
|||
DONTCULLBACKFACES
|
||||
|
||||
// Casing (XSB)
|
||||
SurfaceSkin 2 5 "SilverbulletBullet.png"
|
||||
SurfaceSkin 2 5 "SilverbulletBullet_Used.png"
|
||||
FrameIndex XZW7 D 2 30
|
||||
FrameIndex XZW7 E 2 31
|
||||
FrameIndex XZW7 F 2 32
|
||||
|
|
@ -118,7 +118,7 @@ Model "SilverBullet"
|
|||
FrameIndex XZW7 N 2 40
|
||||
FrameIndex XZW7 O 2 41
|
||||
// Casing (FCB)
|
||||
SurfaceSkin 2 5 "SilverbulletBullet_FCB.png"
|
||||
SurfaceSkin 2 5 "SilverbulletBullet_FCB_Used.png"
|
||||
FrameIndex XZWD D 2 30
|
||||
FrameIndex XZWD E 2 31
|
||||
FrameIndex XZWD F 2 32
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ Model "CorrosiveFlechette"
|
|||
Path "models"
|
||||
|
||||
Model 0 "Boolet_a.3d"
|
||||
Skin 0 "Flech.png"
|
||||
Skin 0 "Boolet_Flech.png"
|
||||
Scale 0.01 0.001 0.001
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
|
|
|
|||
BIN
models/Boolet_Candy.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
models/Boolet_Explodium.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
BIN
models/CandyCasing_Used.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
BIN
models/ExplodiumCasing_Used.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 8 KiB |
BIN
models/SilverbulletBullet_FCB_Used.png
Normal file
|
After Width: | Height: | Size: 8 KiB |
BIN
models/SilverbulletBullet_Used.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
models/SilverbulletProjectile_a.3d
Normal file
BIN
models/SilverbulletProjectile_d.3d
Normal file
|
|
@ -284,7 +284,6 @@ Class RayBolt : MagAmmo
|
|||
MagAmmo.ParentAmmo "RayAmmo";
|
||||
MagAmmo.ClipSize 20;
|
||||
Inventory.MaxAmount 25;
|
||||
Inventory.InterHubAmount 25;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
}
|
||||
|
|
@ -396,7 +395,6 @@ Class GrandSpear : MagAmmo
|
|||
MagAmmo.ParentAmmo "GrandAmmo";
|
||||
MagAmmo.ClipSize 5;
|
||||
Inventory.MaxAmount 8;
|
||||
Inventory.InterHubAmount 8;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -417,7 +417,6 @@ Class RedShell2 : RedShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class RedShell4 : RedShell
|
||||
|
|
@ -426,34 +425,6 @@ Class RedShell4 : RedShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class RedShell8 : RedShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 8;
|
||||
Radius 8;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class RedShell12 : RedShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 12;
|
||||
Radius 10;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class RedShell16 : RedShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 16;
|
||||
Radius 10;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -492,7 +463,6 @@ Class GreenShell2 : GreenShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class GreenShell4 : GreenShell
|
||||
|
|
@ -501,25 +471,6 @@ Class GreenShell4 : GreenShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class GreenShell8 : GreenShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 8;
|
||||
Radius 8;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class GreenShell12 : GreenShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 12;
|
||||
Radius 10;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -543,7 +494,6 @@ Class WhiteShell : Ammo
|
|||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -558,7 +508,6 @@ Class WhiteShell2 : WhiteShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class WhiteShell4 : WhiteShell
|
||||
|
|
@ -567,16 +516,6 @@ Class WhiteShell4 : WhiteShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class WhiteShell8 : WhiteShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 8;
|
||||
Radius 8;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -615,7 +554,6 @@ Class BlueShell2 : BlueShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class BlueShell4 : BlueShell
|
||||
|
|
@ -624,16 +562,6 @@ Class BlueShell4 : BlueShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class BlueShell8 : BlueShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 8;
|
||||
Radius 8;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -672,7 +600,6 @@ Class BlackShell2 : BlackShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class BlackShell4 : BlackShell
|
||||
|
|
@ -681,7 +608,6 @@ Class BlackShell4 : BlackShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -720,7 +646,6 @@ Class PurpleShell2 : PurpleShell
|
|||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
Class PurpleShell4 : PurpleShell
|
||||
|
|
@ -729,7 +654,6 @@ Class PurpleShell4 : PurpleShell
|
|||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
Height 20;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -777,7 +701,7 @@ Class GoldShell : Ammo
|
|||
action void A_GoldShellTrail()
|
||||
{
|
||||
if ( Random[Goldy](0,2) ) return;
|
||||
Spawn("GoldShellSparkle",Vec3Offset(FRandom[Goldy](-2,2),FRandom[Goldy](-2,2),FRandom[Goldy](10,18)));
|
||||
Spawn("GoldShellSparkle",Vec3Offset(FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](10,18)));
|
||||
}
|
||||
|
||||
Default
|
||||
|
|
@ -803,6 +727,22 @@ Class GoldShell : Ammo
|
|||
Wait;
|
||||
}
|
||||
}
|
||||
Class GoldShell2 : GoldShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 2;
|
||||
Radius 6;
|
||||
}
|
||||
}
|
||||
Class GoldShell4 : GoldShell
|
||||
{
|
||||
Default
|
||||
{
|
||||
Inventory.Amount 4;
|
||||
Radius 6;
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Eviscerator ammo
|
||||
|
|
@ -1231,7 +1171,6 @@ Class SilverBullets : MagAmmo
|
|||
MagAmmo.ParentAmmo "SilverBulletAmmo";
|
||||
MagAmmo.ClipSize 5;
|
||||
Inventory.MaxAmount 8;
|
||||
Inventory.InterHubAmount 8;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
|
|
@ -1254,7 +1193,6 @@ Class SilverBullets2 : MagAmmo
|
|||
MagAmmo.ParentAmmo "SilverBulletAmmo2";
|
||||
MagAmmo.ClipSize 5;
|
||||
Inventory.MaxAmount 8;
|
||||
Inventory.InterHubAmount 8;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
|
|
@ -1373,7 +1311,6 @@ Class CandyGunBullets : MagAmmo
|
|||
MagAmmo.ParentAmmo "CandyGunAmmo";
|
||||
MagAmmo.ClipSize 7;
|
||||
Inventory.MaxAmount 10;
|
||||
Inventory.InterHubAmount 10;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 2;
|
||||
|
|
@ -1461,7 +1398,7 @@ Class YnykronAmmo : Ammo
|
|||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 1;
|
||||
Ammo.BackpackAmount 0;
|
||||
Ammo.BackpackMaxAmount 4;
|
||||
Ammo.BackpackMaxAmount 3;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
|
|
|
|||
|
|
@ -705,6 +705,7 @@ Class EvisceratorCasing : SWWMCasing
|
|||
|
||||
Class Eviscerator : SWWMWeapon
|
||||
{
|
||||
double casex, casey;
|
||||
bool isfiring;
|
||||
// barrel is extended
|
||||
bool extended;
|
||||
|
|
@ -1024,7 +1025,13 @@ Class Eviscerator : SWWMWeapon
|
|||
XZW2 A 4;
|
||||
XZW3 STUV 2;
|
||||
XZW3 W 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW3 X 1 A_Overlay(-9999,"EjectSmoke");
|
||||
XZW3 X 1
|
||||
{
|
||||
int layer = PSP_WEAPON+1;
|
||||
while ( player.FindPSprite(layer) ) layer++;
|
||||
A_Overlay(layer,"EjectCasing");
|
||||
A_Overlay(-9999,"EjectSmoke");
|
||||
}
|
||||
XZW3 YZ 1;
|
||||
XZW4 AB 1;
|
||||
XZW4 C 1
|
||||
|
|
@ -1039,7 +1046,13 @@ Class Eviscerator : SWWMWeapon
|
|||
XZW4 Z 4;
|
||||
XZW6 RSTU 2;
|
||||
XZW6 V 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW6 W 1 A_Overlay(-9999,"EjectSmoke");
|
||||
XZW6 W 1
|
||||
{
|
||||
int layer = PSP_WEAPON+1;
|
||||
while ( player.FindPSprite(layer) ) layer++;
|
||||
A_Overlay(layer,"EjectCasing");
|
||||
A_Overlay(-9999,"EjectSmoke");
|
||||
}
|
||||
XZW6 XYZ 1;
|
||||
XZW7 A 1;
|
||||
XZW7 B 1
|
||||
|
|
@ -1050,6 +1063,16 @@ Class Eviscerator : SWWMWeapon
|
|||
XZW7 CDE 1;
|
||||
XZW7 FGH 2;
|
||||
Goto ReadyExt;
|
||||
EjectCasing:
|
||||
XZWB D 1
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Eviscerator](-2.,2.);
|
||||
invoker.casey = FRandom[Eviscerator](-2.,2.);
|
||||
}
|
||||
XZWB EFGHIJKLM 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 1 A_EvisceratorEject();
|
||||
Stop;
|
||||
EjectSmoke:
|
||||
TNT1 A 1 A_EvisceratorCasingSmoke((10,2,-3));
|
||||
TNT1 A 1 A_EvisceratorCasingSmoke((10,-1,-2));
|
||||
|
|
@ -1059,7 +1082,6 @@ Class Eviscerator : SWWMWeapon
|
|||
TNT1 A 1 A_EvisceratorCasingSmoke((10,-8.5,-5));
|
||||
TNT1 A 1 A_EvisceratorCasingSmoke((10,-10,-9));
|
||||
TNT1 A 1 A_EvisceratorCasingSmoke((10,-11,-14));
|
||||
TNT1 A 1 A_EvisceratorEject();
|
||||
Stop;
|
||||
AltFire:
|
||||
XZW2 A 2
|
||||
|
|
|
|||
|
|
@ -929,7 +929,8 @@ Class CBoxLight : SpotLightAttenuated
|
|||
// Collectible box (recycling of discarded "chance box" item)
|
||||
Class Chancebox : Actor
|
||||
{
|
||||
bool dud;
|
||||
bool dud; // if true, cannot drop a collectible
|
||||
bool chanceinit; // internal state has been initialized
|
||||
|
||||
static void SpawnChanceboxes()
|
||||
{
|
||||
|
|
@ -1077,19 +1078,19 @@ Class Chancebox : Actor
|
|||
if ( Random[Chancebox](0,1) )
|
||||
{
|
||||
let a = Spawn(!Random[Chancebox](0,2)?"GoldShell":(Random[Chancebox](0,1)||(gameinfo.gametype&GAME_Strife))?"GrilledCheeseSandwich":"YnykronAmmo",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
}
|
||||
else if ( !Random[Chancebox](0,2) )
|
||||
{
|
||||
for ( int i=0; i<=12; i++ )
|
||||
for ( int i=0; i<=6; i++ )
|
||||
{
|
||||
let a = Spawn((i==0)?"CandyGun":"CandyGunBullets",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
if ( i > 0 ) a.vel.xy = (cos(i*30),sin(i*30))*FRandom[Chancebox](1,2);
|
||||
if ( i > 0 ) a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](1,2);
|
||||
}
|
||||
}
|
||||
else if ( !Random[Chancebox](0,2) )
|
||||
|
|
@ -1097,7 +1098,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
let a = Spawn("SilverBullets2",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2);
|
||||
|
|
@ -1105,7 +1106,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<6; i++ )
|
||||
{
|
||||
let a = Spawn("SilverBullets",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](3,4);
|
||||
|
|
@ -1114,13 +1115,13 @@ Class Chancebox : Actor
|
|||
else if ( Random[Chancebox](0,1) )
|
||||
{
|
||||
let a = Spawn("HellblazerWarheads",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
a = Spawn("HellblazerRavagers",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2);
|
||||
|
|
@ -1128,7 +1129,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<5; i++ )
|
||||
{
|
||||
a = Spawn("HellblazerCrackshots",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](3,4);
|
||||
|
|
@ -1136,7 +1137,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<8; i++ )
|
||||
{
|
||||
a = Spawn("HellblazerMissiles",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*45),sin(i*45))*FRandom[Chancebox](5,6);
|
||||
|
|
@ -1145,13 +1146,13 @@ Class Chancebox : Actor
|
|||
else if ( Random[Chancebox](0,1) )
|
||||
{
|
||||
let a = Spawn("BlackShell",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
a = Spawn("BlueShell",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2);
|
||||
|
|
@ -1159,7 +1160,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<8; i++ )
|
||||
{
|
||||
a = Spawn((i%2)?"WhiteShell":"PurpleShell",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](3,4);
|
||||
|
|
@ -1167,7 +1168,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<12; i++ )
|
||||
{
|
||||
a = Spawn((i%2)?"RedShell":"GreenShell",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
a.vel.xy = (cos(i*30),sin(i*30))*FRandom[Chancebox](5,6);
|
||||
|
|
@ -1175,10 +1176,10 @@ Class Chancebox : Actor
|
|||
}
|
||||
else if ( Random[Chancebox](0,1) )
|
||||
{
|
||||
for ( int i=0; i<100; i++ )
|
||||
for ( int i=0; i<20; i++ )
|
||||
{
|
||||
let a = Spawn("HealthNuggetItem",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,8);
|
||||
a.vel.xy = (cos(i*3.6),sin(i*3.6))*FRandom[Chancebox](1,8);
|
||||
|
|
@ -1189,7 +1190,7 @@ Class Chancebox : Actor
|
|||
for ( int i=0; i<=15; i++ )
|
||||
{
|
||||
let a = Spawn((i==0)?"RefresherItem":(i%3)?"HealthNuggetItem":"ArmorNuggetItem",pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
if ( i > 0 ) a.vel.xy = (cos(i*24),sin(i*24))*FRandom[Chancebox](1,2);
|
||||
|
|
@ -1200,7 +1201,7 @@ Class Chancebox : Actor
|
|||
{
|
||||
// pop one at random
|
||||
let a = Spawn(candidates[Random[Chancebox](0,candidates.Size()-1)],pos);
|
||||
a.bDROPPED = true;
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
}
|
||||
|
|
@ -1236,15 +1237,33 @@ Class Chancebox : Actor
|
|||
double rang = user.player?PlayerPawn(user.player.mo).UseRange:(user.Height/2);
|
||||
if ( abs(diff.z) > rang ) return false;
|
||||
if ( CurState != FindState("Spawn") ) return false;
|
||||
if ( !dud )
|
||||
if ( !chanceinit )
|
||||
{
|
||||
if ( !Random[Chancebox](0,2) )
|
||||
int col = 0;
|
||||
let ti = ThinkerIterator.Create("SWWMCollectible");
|
||||
SWWMCollectible c;
|
||||
while ( c = SWWMCollectible(ti.Next()) ) col++;
|
||||
int tcol = 0;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
let c = (Class<SWWMCollectible>)(AllActorClasses[i]);
|
||||
if ( !c || (c == 'SWWMCollectible') ) continue;
|
||||
let def = GetDefaultByType(c);
|
||||
// check that we can collect it in this IWAD
|
||||
if ( !(gameinfo.gametype&def.avail) ) continue;
|
||||
tcol++;
|
||||
}
|
||||
int alldudchance = 5-(4*col)/tcol; // chance for all boxes to be duds (no collectibles)
|
||||
if ( (col > 0) && !Random[Chancebox](0,alldudchance) )
|
||||
{
|
||||
// all boxes are duds
|
||||
let ti = ThinkerIterator.Create("Chancebox");
|
||||
Chancebox c;
|
||||
while ( c = Chancebox(ti.Next()) )
|
||||
{
|
||||
c.chanceinit = true;
|
||||
c.dud = true;
|
||||
}
|
||||
}
|
||||
else if ( Random[Chancebox](0,2) )
|
||||
{
|
||||
|
|
@ -1265,12 +1284,21 @@ Class Chancebox : Actor
|
|||
// the others are duds
|
||||
let ti = ThinkerIterator.Create("Chancebox");
|
||||
Chancebox c;
|
||||
bool onemore = !Random[Chancebox](0,2); // unless...
|
||||
while ( c = Chancebox(ti.Next()) )
|
||||
{
|
||||
if ( c == self ) continue;
|
||||
c.dud = true; // we found one, the others just drop goodies
|
||||
if ( (c == self) || c.chanceinit ) continue;
|
||||
c.chanceinit = true;
|
||||
if ( onemore )
|
||||
{
|
||||
onemore = false;
|
||||
// this one isn't a dud either (wow, how lucky)
|
||||
c.dud = false;
|
||||
}
|
||||
else c.dud = true; // this one's a dud
|
||||
}
|
||||
}
|
||||
chanceinit = true;
|
||||
}
|
||||
if ( bCOUNTITEM )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2372,7 +2372,7 @@ Class SWWMHandler : EventHandler
|
|||
// respect final replacements
|
||||
if ( e.IsFinal ) return;
|
||||
// shell types (sorted by rarity
|
||||
static const Class<Actor> redpool[] = {"RedShell","RedShell2","RedShell4","RedShell8"};
|
||||
static const Class<Actor> redpool[] = {"RedShell","RedShell2","RedShell4"};
|
||||
static const Class<Actor> greenpool[] = {"GreenShell","GreenShell2","GreenShell4"};
|
||||
static const Class<Actor> whitepool[] = {"WhiteShell","WhiteShell2"};
|
||||
static const Class<Actor> purplepool[] = {"PurpleShell","PurpleShell2","PurpleShell4"};
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ Class Demolitionist : PlayerPawn
|
|||
DamageFactor "Poison", 0.;
|
||||
DamageFactor "PoisonCloud", 0.;
|
||||
DamageFactor "Falling", 0.;
|
||||
DamageFactor "Crush", .25;
|
||||
Demolitionist.DashFuel 240.;
|
||||
+NOBLOOD;
|
||||
+DONTGIB;
|
||||
|
|
|
|||
|
|
@ -891,6 +891,7 @@ Class CandyGun : SWWMWeapon
|
|||
{
|
||||
int clipcount;
|
||||
bool chambered;
|
||||
double casex, casey;
|
||||
transient ui TextureID WeaponBox;
|
||||
transient ui Font TewiFont;
|
||||
bool tospecial;
|
||||
|
|
@ -1249,9 +1250,26 @@ Class CandyGun : SWWMWeapon
|
|||
Wait;
|
||||
Fire:
|
||||
XZW2 A 1 A_Schutt();
|
||||
XZW2 IJKLMNOPQR 1;
|
||||
XZW2 S 2 A_DropCasing();
|
||||
XZW2 I 1;
|
||||
XZW2 J 1
|
||||
{
|
||||
int layer = PSP_WEAPON+1;
|
||||
while ( player.FindPSprite(layer) ) layer++;
|
||||
A_Overlay(layer,"Casing");
|
||||
}
|
||||
XZW2 KLMNOP 1;
|
||||
XZW2 Q 2;
|
||||
Goto Ready;
|
||||
Casing:
|
||||
XZWC A 1
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Explodium](-1.,5.);
|
||||
invoker.casey = FRandom[Explodium](-2.,1.);
|
||||
}
|
||||
XZWC BCDEFGHIJ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 1 A_DropCasing();
|
||||
Stop;
|
||||
AltFire:
|
||||
XZW2 A 2
|
||||
{
|
||||
|
|
|
|||
|
|
@ -648,6 +648,7 @@ Class SilverBullet : SWWMWeapon
|
|||
bool chambered, fired;
|
||||
bool fcbchambered, fcbloaded, fcbselected;
|
||||
int clipcount;
|
||||
double casex, casey;
|
||||
|
||||
transient ui TextureID WeaponBox[2], ZoomBar, BulletIcon[2], AmmoIcon[2];
|
||||
transient ui Font TewiFont;
|
||||
|
|
@ -1133,7 +1134,7 @@ Class SilverBullet : SWWMWeapon
|
|||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
vel += x*min(1.,invoker.specialf1)*(600./Mass);
|
||||
A_OverlayAlpha(PSP_WEAPON+2,clamp(invoker.specialf1*3.,0.,1.));
|
||||
A_OverlayAlpha(PSP_WEAPON+1,clamp(invoker.specialf1*3.,0.,1.));
|
||||
if ( Random[SilverBullet](0,int(invoker.specialf1*2)) )
|
||||
self.DamageMobj(invoker,self,1,'jet');
|
||||
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),-x*10-z*10);
|
||||
|
|
@ -1321,9 +1322,9 @@ Class SilverBullet : SWWMWeapon
|
|||
TNT1 A 0
|
||||
{
|
||||
A_StartSound("silverbullet/jet",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_Overlay(PSP_WEAPON+2,"JetSmoke");
|
||||
A_OverlayFlags(PSP_WEAPON+2,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true);
|
||||
A_OverlayRenderStyle(PSP_WEAPON+2,STYLE_Add);
|
||||
A_Overlay(PSP_WEAPON+1,"JetSmoke");
|
||||
A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true);
|
||||
A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add);
|
||||
}
|
||||
TNT1 A 1
|
||||
{
|
||||
|
|
@ -1359,15 +1360,17 @@ Class SilverBullet : SWWMWeapon
|
|||
A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
if ( invoker.chambered )
|
||||
{
|
||||
int layer = PSP_WEAPON+2;
|
||||
while ( player.FindPSprite(layer) ) layer++;
|
||||
if ( invoker.fired )
|
||||
{
|
||||
if ( invoker.fcbchambered ) A_Overlay(PSP_WEAPON+1,"Casing2");
|
||||
else A_Overlay(PSP_WEAPON+1,"Casing");
|
||||
if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2");
|
||||
else A_Overlay(layer,"Casing");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( invoker.fcbchambered ) A_Overlay(PSP_WEAPON+1,"Bullet2");
|
||||
else A_Overlay(PSP_WEAPON+1,"Bullet");
|
||||
if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2");
|
||||
else A_Overlay(layer,"Bullet");
|
||||
}
|
||||
}
|
||||
invoker.fired = false;
|
||||
|
|
@ -1389,15 +1392,17 @@ Class SilverBullet : SWWMWeapon
|
|||
A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
if ( invoker.chambered )
|
||||
{
|
||||
int layer = PSP_WEAPON+2;
|
||||
while ( player.FindPSprite(layer) ) layer++;
|
||||
if ( invoker.fired )
|
||||
{
|
||||
if ( invoker.fcbchambered ) A_Overlay(PSP_WEAPON+1,"Casing2");
|
||||
else A_Overlay(PSP_WEAPON+1,"Casing");
|
||||
if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2");
|
||||
else A_Overlay(layer,"Casing");
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( invoker.fcbchambered ) A_Overlay(PSP_WEAPON+1,"Bullet2");
|
||||
else A_Overlay(PSP_WEAPON+1,"Bullet");
|
||||
if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2");
|
||||
else A_Overlay(layer,"Bullet");
|
||||
}
|
||||
}
|
||||
invoker.fired = false;
|
||||
|
|
@ -1411,24 +1416,48 @@ Class SilverBullet : SWWMWeapon
|
|||
XZW9 JKLMNOPQR 2;
|
||||
Goto Ready2;
|
||||
Casing:
|
||||
XZW7 DE 2;
|
||||
XZW7 FGHIJKLMNO 1;
|
||||
XZW7 D 2
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Silverbullet](-2.,2.);
|
||||
invoker.casey = FRandom[Silverbullet](-2.,2.);
|
||||
}
|
||||
XZW7 E 2;
|
||||
XZW7 FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 0 A_DropCasing();
|
||||
Stop;
|
||||
Casing2:
|
||||
XZWD DE 2;
|
||||
XZWD FGHIJKLMNO 1;
|
||||
XZWD D 2
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Silverbullet](-2.,2.);
|
||||
invoker.casey = FRandom[Silverbullet](-2.,2.);
|
||||
}
|
||||
XZWD E 2;
|
||||
XZWD FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 0 A_DropCasing(true);
|
||||
Stop;
|
||||
Bullet:
|
||||
XZWD PQ 2;
|
||||
XZWD RSTUVWXYZ 1;
|
||||
XZWE A 1;
|
||||
XZWD P 2
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Silverbullet](-2.,2.);
|
||||
invoker.casey = FRandom[Silverbullet](-2.,2.);
|
||||
}
|
||||
XZWD Q 2;
|
||||
XZWD RSTUVWXYZ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
XZWE A 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 0 A_DropBullet();
|
||||
Stop;
|
||||
Bullet2:
|
||||
XZWE BC 2;
|
||||
XZWE DEFGHIJKLM 1;
|
||||
XZWE B 2
|
||||
{
|
||||
A_OverlayOffset(OverlayID(),0,0);
|
||||
invoker.casex = FRandom[Silverbullet](-2.,2.);
|
||||
invoker.casey = FRandom[Silverbullet](-2.,2.);
|
||||
}
|
||||
XZWE C 2;
|
||||
XZWE DEFGHIJKLM 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE);
|
||||
TNT1 A 0 A_DropBullet(true);
|
||||
Stop;
|
||||
ZoomFire:
|
||||
|
|
|
|||