Backported some changes from 1.1 devel.
This commit is contained in:
parent
685b7d6f91
commit
aeabf9272d
154 changed files with 2083 additions and 349 deletions
|
|
@ -455,7 +455,7 @@ Class GrandAmmo : Ammo
|
|||
//$Icon ammo
|
||||
Tag "$T_GRANDAMMO";
|
||||
Inventory.PickupMessage "$T_GRANDAMMO";
|
||||
Stamina 1200000;
|
||||
Stamina -1200000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_GrandAmmo.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 1;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Class GrandLance : SWWMWeapon
|
|||
SWWMWeapon.DropAmmoType "GrandAmmo";
|
||||
GrandLance.ClipCount 5;
|
||||
GrandLance.ClipCount2 500;
|
||||
Stamina 4200000;
|
||||
Stamina -4200000;
|
||||
+SWWMWEAPON.NOFIRSTGIVE;
|
||||
+WEAPON.PRIMARY_USES_BOTH;
|
||||
+WEAPON.EXPLOSIVE;
|
||||
|
|
|
|||
306
zscript/dlc2/swwm_ammoitems_dlc2.zsc
Normal file
306
zscript/dlc2/swwm_ammoitems_dlc2.zsc
Normal file
|
|
@ -0,0 +1,306 @@
|
|||
// All DLC weapon ammo pickups
|
||||
|
||||
Class SparksterBAmmo : Ammo
|
||||
{
|
||||
Mixin SWWMAmmo;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Sparkster Blue Ammo
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_SparkBAmmo.png
|
||||
//$Icon ammo
|
||||
Tag "$T_SPARKBAMMO";
|
||||
Inventory.PickupMessage "$T_SPARKBAMMO";
|
||||
Stamina 16000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_SparkBAmmo.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 8;
|
||||
Ammo.BackpackAmount 1;
|
||||
Ammo.BackpackMaxAmount 24;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Accuracy 70;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
Super.ModifyDropAmount(dropamount);
|
||||
Amount = min(Amount,1);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class SparksterRAmmo : Ammo
|
||||
{
|
||||
Mixin SWWMAmmo;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Sparkster Red Ammo
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_SparkRAmmo.png
|
||||
//$Icon ammo
|
||||
Tag "$T_SPARKRAMMO";
|
||||
Inventory.PickupMessage "$T_SPARKRAMMO";
|
||||
Stamina 18000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_SparkRAmmo.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 8;
|
||||
Ammo.BackpackAmount 1;
|
||||
Ammo.BackpackMaxAmount 24;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Accuracy 75;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
Super.ModifyDropAmount(dropamount);
|
||||
Amount = min(Amount,1);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class SparksterAmmoBundleSpawn : SWWMAmmoSpawner
|
||||
{
|
||||
override void SpawnAmmo()
|
||||
{
|
||||
int bnd = Random[Bundle](2,3);
|
||||
for ( int i=0; i<bnd; i++ )
|
||||
{
|
||||
let a = Spawn(Random[Bundle](0,2)?"SparksterBAmmo":"SparksterRAmmo",Vec3Angle(6,i*(360/bnd)));
|
||||
a.angle = i*(360/bnd);
|
||||
SWWMUtility.TransferItemProp(self,a,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Class SparksterBigAmmoBundleSpawn : SWWMAmmoSpawner
|
||||
{
|
||||
override void SpawnAmmo()
|
||||
{
|
||||
int bnd = Random[Bundle](3,6);
|
||||
for ( int i=0; i<bnd; i++ )
|
||||
{
|
||||
let a = Spawn(Random[Bundle](0,2)?"SparksterBAmmo":"SparksterRAmmo",Vec3Angle(8,i*(360/bnd)));
|
||||
a.angle = i*(360/bnd);
|
||||
SWWMUtility.TransferItemProp(self,a,true);
|
||||
}
|
||||
let a = Spawn(Random[Bundle](0,2)?"SparksterBAmmo":"SparksterRAmmo",pos);
|
||||
a.angle = angle;
|
||||
SWWMUtility.TransferItemProp(self,a,true);
|
||||
}
|
||||
}
|
||||
|
||||
Class MisterRound : MagAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
//$Title Mortal Rifle Round
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_MRRound.png
|
||||
//$Icon ammo
|
||||
Tag "$T_MRROUND";
|
||||
Inventory.PickupMessage "$T_MRROUND";
|
||||
Inventory.Icon "graphics/HUD/Icons/A_MRRound.png";
|
||||
MagAmmo.ParentAmmo "MisterAmmo";
|
||||
MagAmmo.ClipSize 30;
|
||||
Inventory.MaxAmount 40;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class MisterRoundBundleSpawn : SWWMAmmoSpawner
|
||||
{
|
||||
override void SpawnAmmo()
|
||||
{
|
||||
int bnd = Random[Bundle](5,10);
|
||||
for ( int i=0; i<bnd; i++ )
|
||||
{
|
||||
let a = Spawn("MisterRound",Vec3Angle(6,i*(360/bnd)));
|
||||
a.angle = i*(360/bnd);
|
||||
SWWMUtility.TransferItemProp(self,a,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Class MisterAmmo : Ammo
|
||||
{
|
||||
Mixin SWWMAmmo;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Mortal Rifle Mag
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_MRAmmo.png
|
||||
//$Icon ammo
|
||||
Tag "$T_MRAMMO";
|
||||
Inventory.PickupMessage "$T_MRAMMO";
|
||||
Stamina 120000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_MRAmmo.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 2;
|
||||
Ammo.BackpackAmount 0;
|
||||
Ammo.BackpackMaxAmount 6;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Accuracy 90;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
Super.ModifyDropAmount(dropamount);
|
||||
Amount = min(Amount,1);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class MisterGAmmo : Ammo
|
||||
{
|
||||
Mixin SWWMShellAmmo;
|
||||
Mixin SWWMAmmo;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Mortal Rifle Grenade
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_MRGrenade.png
|
||||
//$Icon ammo
|
||||
Tag "$T_MRGRENADE";
|
||||
Stamina 90000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_MRGrenade.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 3;
|
||||
Ammo.BackpackAmount 0;
|
||||
Ammo.BackpackMaxAmount 9;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Accuracy 90;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class MisterGAmmo2 : MisterGAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
//$Title 2x Mortal Rifle Grenades
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_MRGrenade.png
|
||||
//$Icon ammo
|
||||
Inventory.Amount 2;
|
||||
}
|
||||
}
|
||||
Class MisterGAmmo3 : MisterGAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
//$Title 3x Mortal Rifle Grenades
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_MRGrenade.png
|
||||
//$Icon ammo
|
||||
Inventory.Amount 3;
|
||||
}
|
||||
}
|
||||
|
||||
Class UltimatePod : MagAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
//$Title Ultimate Pod
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_UltimatePod.png
|
||||
//$Icon ammo
|
||||
Tag "$T_ULTIMATEPOD";
|
||||
Inventory.PickupMessage "$T_ULTIMATEPOD";
|
||||
Inventory.Icon "graphics/HUD/Icons/A_UltimatePod.png";
|
||||
MagAmmo.ParentAmmo "UltimateAmmo";
|
||||
MagAmmo.ClipSize 4;
|
||||
Inventory.MaxAmount 6;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class UltimateAmmo : Ammo
|
||||
{
|
||||
Mixin SWWMAmmo;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Ultimate Mag
|
||||
//$Group Ammo
|
||||
//$Sprite graphics/HUD/Icons/A_UltimateAmmo.png
|
||||
//$Icon ammo
|
||||
Tag "$T_ULTIMATEAMMO";
|
||||
Inventory.PickupMessage "$T_ULTIMATEAMMO";
|
||||
Stamina -2000000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_UltimateAmmo.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 1;
|
||||
Ammo.BackpackAmount 0;
|
||||
Ammo.BackpackMaxAmount 5;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
Super.ModifyDropAmount(dropamount);
|
||||
Amount = min(Amount,1);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
41
zscript/dlc2/swwm_blueballs.zsc
Normal file
41
zscript/dlc2/swwm_blueballs.zsc
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// Tach-Engine & Nekuratek Sparkster x3 (from UnSX 2)
|
||||
// Slot 6, spawns shared with Hellblazer
|
||||
|
||||
Class ModernSparkster : SWWMWeapon
|
||||
{
|
||||
int clipcount, clipcount2;
|
||||
bool chambered, chambered2;
|
||||
|
||||
Property ClipCount : clipcount;
|
||||
Property ClipCount2 : clipcount2;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Sparkster x3
|
||||
//$Group Weapons
|
||||
//$Sprite graphics/HUD/Icons/W_NewSparkster.png
|
||||
//$Icon weapon
|
||||
Tag "$T_NEWSPARKSTER";
|
||||
Inventory.PickupMessage "$I_NEWSPARKSTER";
|
||||
Obituary "$O_NEWSPARKSTER";
|
||||
Inventory.Icon "graphics/HUD/Icons/W_NewSparkster.png";
|
||||
Weapon.SlotNumber 6;
|
||||
Weapon.SlotPriority 3.;
|
||||
Weapon.SelectionOrder 625;
|
||||
Weapon.AmmoType1 "SparksterBAmmo";
|
||||
Weapon.AmmoGive1 1;
|
||||
Weapon.AmmoType2 "SparksterRAmmo";
|
||||
Weapon.AmmoGive2 1;
|
||||
SWWMWeapon.DropAmmoType "RocketAmmo";
|
||||
ModernSparkster.ClipCount 3;
|
||||
ModernSparkster.ClipCount2 3;
|
||||
Stamina 160000;
|
||||
+SWWMWEAPON.NOFIRSTGIVE;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
1
zscript/dlc2/swwm_blueballs_fx.zsc
Normal file
1
zscript/dlc2/swwm_blueballs_fx.zsc
Normal file
|
|
@ -0,0 +1 @@
|
|||
// Sparkster Carbine projectiles and effects
|
||||
28
zscript/dlc2/swwm_fisto.zsc
Normal file
28
zscript/dlc2/swwm_fisto.zsc
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// Unissix Crafts Hand Of Divine (from Total Madness, the reboot not the original)
|
||||
// Slot 1, spawns shared with Pusher
|
||||
|
||||
Class FistGun : SWWMWeapon
|
||||
{
|
||||
Default
|
||||
{
|
||||
//$Title Hand of Divine
|
||||
//$Group Weapons
|
||||
//$Sprite graphics/HUD/Icons/W_FistGun.png
|
||||
//$Icon weapon
|
||||
Tag "$T_FISTGUN";
|
||||
Inventory.PickupMessage "$T_FISTGUN";
|
||||
Obituary "$O_FISTGUN";
|
||||
Inventory.Icon "graphics/HUD/Icons/W_FistGun.png";
|
||||
Weapon.SlotNumber 1;
|
||||
Weapon.SlotPriority 4.;
|
||||
Weapon.SelectionOrder 1150;
|
||||
Stamina 15000;
|
||||
+WEAPON.MELEEWEAPON;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
1
zscript/dlc2/swwm_fisto_fx.zsc
Normal file
1
zscript/dlc2/swwm_fisto_fx.zsc
Normal file
|
|
@ -0,0 +1 @@
|
|||
// Hand of Divine projectiles and effects
|
||||
41
zscript/dlc2/swwm_mister.zsc
Normal file
41
zscript/dlc2/swwm_mister.zsc
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// Plutoni Inc. Mortal Rifle (from UnSX 2)
|
||||
// Slot 9, spawns shared with Candy Gun
|
||||
|
||||
Class MisterRifle : SWWMWeapon
|
||||
{
|
||||
int clipcount;
|
||||
bool chambered, gchambered;
|
||||
|
||||
Property ClipCount : clipcount;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Mortal Rifle
|
||||
//$Group Weapons
|
||||
//$Sprite graphics/HUD/Icons/W_MortalRifle.png
|
||||
//$Icon weapon
|
||||
Tag "$T_MORTALRIFLE";
|
||||
Inventory.PickupMessage "$T_MORTALRIFLE";
|
||||
Obituary "$O_MORTALRIFLE";
|
||||
Inventory.Icon "graphics/HUD/Icons/W_MortalRifle.png";
|
||||
Weapon.SlotNumber 9;
|
||||
Weapon.SlotPriority 3.;
|
||||
Weapon.SelectionOrder 725;
|
||||
Weapon.AmmoType1 "MisterAmmo";
|
||||
Weapon.AmmoGive1 1;
|
||||
Weapon.AmmoType2 "MisterGAmmo";
|
||||
Weapon.AmmoGive2 1;
|
||||
SWWMWeapon.DropAmmoType "MisterAmmo";
|
||||
MisterRifle.ClipCount 30;
|
||||
Stamina 2100000;
|
||||
+SWWMWEAPON.NOFIRSTGIVE;
|
||||
+WEAPON.EXPLOSIVE;
|
||||
+WEAPON.BFG;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
1
zscript/dlc2/swwm_mister_fx.zsc
Normal file
1
zscript/dlc2/swwm_mister_fx.zsc
Normal file
|
|
@ -0,0 +1 @@
|
|||
// Mortal Rifle projectiles and effects
|
||||
39
zscript/dlc2/swwm_ultimate.zsc
Normal file
39
zscript/dlc2/swwm_ultimate.zsc
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// Nekuratek Rafan-Kos aka "The Ultimate Weapon" (from UnSX 4)
|
||||
// Slot 0, spawns shared with Ynykron Artifact
|
||||
|
||||
Class RafanKos : SWWMWeapon
|
||||
{
|
||||
int clipcount;
|
||||
bool chambered;
|
||||
|
||||
Property ClipCount : clipcount;
|
||||
|
||||
Default
|
||||
{
|
||||
//$Title Rafan-Kos
|
||||
//$Group Weapons
|
||||
//$Sprite graphics/HUD/Icons/W_RafanKos.png
|
||||
//$Icon weapon
|
||||
Tag "$T_RAFANKOS";
|
||||
Inventory.PickupMessage "$T_RAFANKOS";
|
||||
Obituary "$O_RAFANKOS";
|
||||
Inventory.Icon "graphics/HUD/Icons/W_RafanKos.png";
|
||||
Weapon.SlotNumber 0;
|
||||
Weapon.SlotPriority 3.;
|
||||
Weapon.SelectionOrder 7975;
|
||||
Weapon.AmmoType1 "UltimateAmmo";
|
||||
Weapon.AmmoGive1 1;
|
||||
SWWMWeapon.DropAmmoType "UltimateAmmo";
|
||||
RafanKos.ClipCount 4;
|
||||
Stamina -5000000;
|
||||
+SWWMWEAPON.NOFIRSTGIVE;
|
||||
+WEAPON.EXPLOSIVE;
|
||||
+WEAPON.BFG;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
1
zscript/dlc2/swwm_ultimate_fx.zsc
Normal file
1
zscript/dlc2/swwm_ultimate_fx.zsc
Normal file
|
|
@ -0,0 +1 @@
|
|||
// Rafan-Kos projectiles and effects
|
||||
|
|
@ -60,7 +60,7 @@ extend Class SWWMHandler
|
|||
Vector3 safepos;
|
||||
double safeangle;
|
||||
[safepos, safeangle] = level.PickPlayerStart(e.Args[0]);
|
||||
players[e.Args[0]].mo.Teleport(safepos,safeangle,TF_TELEFRAG|TF_FORCED|TF_USESPOTZ);
|
||||
players[e.Args[0]].mo.Teleport(safepos,safeangle,0);
|
||||
}
|
||||
else if ( e.Name ~== "swwmweaponcheat" )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ extend Class SWWMHandler
|
|||
}
|
||||
SWWMCredits.Give(src.player,score);
|
||||
if ( scr ) scr.score = score; // update final score
|
||||
if ( !deathmatch && (level.killed_monsters+1 == level.total_monsters) && !allkills )
|
||||
if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.killed_monsters+1 == level.total_monsters) && !allkills )
|
||||
{
|
||||
allkills = true;
|
||||
SWWMCredits.Give(src.player,1000);
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@ extend Class SWWMHandler
|
|||
if ( !SWWMWeapon(i) ) continue;
|
||||
SWWMWeapon(i).hastravelled = false;
|
||||
}
|
||||
// cap health to 200
|
||||
if ( p.Health > 200 ) p.Health = p.mo.Health = 200;
|
||||
}
|
||||
|
||||
override void PlayerRespawned( PlayerEvent e )
|
||||
|
|
|
|||
|
|
@ -693,29 +693,28 @@ extend Class SWWMHandler
|
|||
else if ( e.Replacee is 'Mana2' ) e.Replacement = 'FabricatorTier2';
|
||||
else if ( e.Replacee is 'Mana3' ) e.Replacement = 'FabricatorTier3';
|
||||
else if ( e.Replacee is 'ArtiBoostMana' ) e.Replacement = 'FabricatorTier4';
|
||||
else if ( (e.Replacee is 'Backpack') || (e.Replacee is 'BagOfHolding') || (e.Replacee is 'ArtiPork') ) e.Replacement = 'HammerspaceEmbiggener';
|
||||
else if ( (e.Replacee is 'FWeaponPiece1') || (e.Replacee is 'FWeaponPiece2')
|
||||
else if ( (e.Replacee is 'Backpack') || (e.Replacee is 'BagOfHolding')
|
||||
|| (e.Replacee is 'FWeaponPiece1') || (e.Replacee is 'FWeaponPiece2')
|
||||
|| (e.Replacee is 'CWeaponPiece1') || (e.Replacee is 'CWeaponPiece3')
|
||||
|| (e.Replacee is 'MWeaponPiece2') || (e.Replacee is 'MWeaponPiece3') ) e.Replacement = 'SWWMNothing';
|
||||
|| (e.Replacee is 'MWeaponPiece2') || (e.Replacee is 'MWeaponPiece3') ) e.Replacement = 'HammerspaceEmbiggener';
|
||||
else if ( e.Replacee is 'ArmorBonus' ) e.Replacement = 'ArmorNuggetItem';
|
||||
else if ( e.Replacee is 'HealthBonus' ) e.Replacement = 'HealthNuggetItem';
|
||||
else if ( (e.Replacee is 'ArtiTimeBomb') || (e.Replacee is 'ArtiBlastRadius') || (e.Replacee is 'ArtiPoisonBag') || (e.Replacee is 'ArtiHealingRadius') ) e.Replacement = (nugflip=!nugflip)?'HealthNuggetBundleSpawn':'ArmorNuggetBundleSpawn';
|
||||
else if ( (e.Replacee is 'HealthBonus') ) e.Replacement = 'HealthNuggetItem';
|
||||
else if ( (e.Replacee is 'Stimpack') || (e.Replacee is 'CrystalVial') ) e.Replacement = 'TetraHealthItem';
|
||||
else if ( (e.Replacee is 'Medikit') || (e.Replacee is 'ArtiHealth') ) e.Replacement = 'CubeHealthItem';
|
||||
else if ( (e.Replacee is 'Soulsphere') || (e.Replacee is 'ArtiSuperHealth') ) e.Replacement = 'RefresherItem';
|
||||
else if ( (e.Replacee is 'Megasphere') || (e.Replacee is 'ArtiEgg') || (e.Replacee is 'ArtiBoostArmor') ) e.Replacement = 'GrilledCheeseSandwich';
|
||||
else if ( (e.Replacee is 'Blursphere') || (e.Replacee is 'ArtiInvisibility') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('Mykradvo',worldonly:true))?'GhostArtifact':'Mykradvo';
|
||||
else if ( (e.Replacee is 'Blursphere') || (e.Replacee is 'ArtiInvisibility') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('Mykradvo',worldonly:true)||!SWWMUtility.CheckNeedsItem('Mykradvo',true))?'GhostArtifact':'Mykradvo';
|
||||
else if ( e.Replacee is 'Radsuit' ) e.Replacement = 'EBarrier';
|
||||
else if ( (e.Replacee is 'ArtiFly') ) e.Replacement = 'GravitySuppressor';
|
||||
else if ( (e.Replacee is 'InvulnerabilitySphere') || (e.Replacee is 'ArtiInvulnerability') || (e.Replacee is 'ArtiInvulnerability2') ) e.Replacement = (deathmatch||Random[Replacements](0,3)||SWWMUtility.ItemExists('Mykradvo',worldonly:true))?'FuckingInvinciball':'Mykradvo';
|
||||
else if ( (e.Replacee is 'Berserk') || (e.Replacee == 'ArtiTomeOfPower') || (e.Replacee == 'ArtiSpeedBoots') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('Mykradvo',worldonly:true))?'Ragekit':'Mykradvo';
|
||||
else if ( (e.Replacee is 'InvulnerabilitySphere') || (e.Replacee is 'ArtiInvulnerability') || (e.Replacee is 'ArtiInvulnerability2') ) e.Replacement = (deathmatch||Random[Replacements](0,3)||SWWMUtility.ItemExists('Mykradvo',worldonly:true)||!SWWMUtility.CheckNeedsItem('Mykradvo',true))?'FuckingInvinciball':'Mykradvo';
|
||||
else if ( (e.Replacee is 'Berserk') || (e.Replacee == 'ArtiTomeOfPower') || (e.Replacee == 'ArtiSpeedBoots') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('Mykradvo',worldonly:true)||!SWWMUtility.CheckNeedsItem('Mykradvo',true))?'Ragekit':'Mykradvo';
|
||||
else if ( (e.Replacee is 'AllMap') || (e.Replacee is 'SuperMap') ) e.Replacement = 'Omnisight';
|
||||
else if ( (e.Replacee is 'Infrared') || (e.Replacee is 'ArtiTorch') ) e.Replacement = 'SWWMLamp';
|
||||
else if ( (e.Replacee is 'GreenArmor') || (e.Replacee is 'SilverShield') || (e.Replacee is 'PlatinumHelm') || (e.Replacee is 'AmuletOfWarding') ) e.Replacement = 'BlastSuitItem';
|
||||
else if ( (e.Replacee is 'BlueArmor') || (e.Replacee is 'EnchantedShield') || (e.Replacee is 'MeshArmor') || (e.Replacee is 'FalconShield') ) e.Replacement = 'WarArmorItem';
|
||||
else if ( (e.Replacee is 'ArtiDarkServant') || (e.Replacee == 'ArtiTeleportOther') ) e.Replacement = 'ChanceboxSpawner';
|
||||
else if ( e.Replacee is 'ArtiTeleport' ) e.Replacement = (gameinfo.GameType&GAME_Hexen)?'ChanceboxSpawner':'SWWMNothing';
|
||||
else if ( (e.Replacee is 'ArtiDarkServant') || (e.Replacee == 'ArtiTeleportOther') || (e.Replacee == 'ArtiPork') ) e.Replacement = 'ChanceboxSpawner';
|
||||
else if ( e.Replacee is 'ArtiTeleport' ) e.Replacement = 'SWWMNothing';
|
||||
else
|
||||
{
|
||||
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
||||
|
|
|
|||
|
|
@ -2,18 +2,17 @@
|
|||
|
||||
extend Class SWWMHandler
|
||||
{
|
||||
static clearscope void ClearAllShaders( PlayerInfo p )
|
||||
static clearscope void ClearAllShaders( PlayerInfo p, bool noscope = false )
|
||||
{
|
||||
Shader.SetEnabled(p,"WaterWarp",false);
|
||||
Shader.SetEnabled(p,"LavaWarp",false);
|
||||
Shader.SetEnabled(p,"SlimeWarp",false);
|
||||
Shader.SetEnabled(p,"ZoomBlur",false);
|
||||
Shader.SetEnabled(p,"SilverScope",false);
|
||||
if ( !noscope ) Shader.SetEnabled(p,"SilverScope",false);
|
||||
Shader.SetEnabled(p,"BarrierShader",false);
|
||||
Shader.SetEnabled(p,"GhostShader",false);
|
||||
Shader.SetEnabled(p,"InvinciShader",false);
|
||||
Shader.SetEnabled(p,"RagekitShader",false);
|
||||
Shader.SetEnabled(p,"RagekitAltShader",false);
|
||||
Shader.SetEnabled(p,"Glitch",false);
|
||||
Shader.SetEnabled(p,"Grain",false);
|
||||
}
|
||||
|
|
@ -22,38 +21,26 @@ extend Class SWWMHandler
|
|||
{
|
||||
PlayerInfo p = players[consoleplayer];
|
||||
let mo = p.mo;
|
||||
if ( !mo ) return;
|
||||
bool pc = (p.camera == mo);
|
||||
if ( !mo || !swwm_shaders || !pc )
|
||||
{
|
||||
if ( !swwm_shaders ) ClearAllShaders(p,true);
|
||||
return;
|
||||
}
|
||||
let rage = RagekitPower(mo.FindInventory("RagekitPower"));
|
||||
if ( pc && rage && swwm_shaders )
|
||||
if ( rage )
|
||||
{
|
||||
if ( swwm_rageshader )
|
||||
{
|
||||
Shader.SetEnabled(p,"RagekitShader",false);
|
||||
Shader.SetEnabled(p,"RagekitAltShader",true);
|
||||
Shader.SetUniform1f(p,"RagekitAltShader","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
double xstrastr = 1.+max(0,rage.lastpulse-(gametic+e.Fractic))/35.;
|
||||
Shader.SetUniform1f(p,"RagekitAltShader","xtrastr",xstrastr**2.);
|
||||
}
|
||||
else
|
||||
{
|
||||
Shader.SetEnabled(p,"RagekitAltShader",false);
|
||||
Shader.SetEnabled(p,"RagekitShader",true);
|
||||
Shader.SetUniform1f(p,"RagekitShader","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
double xstrastr = 1.+max(0,rage.lastpulse-(gametic+e.Fractic))/35.;
|
||||
Shader.SetUniform1f(p,"RagekitShader","xtrastr",xstrastr**2.);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Shader.SetEnabled(p,"RagekitShader",false);
|
||||
Shader.SetEnabled(p,"RagekitAltShader",false);
|
||||
Shader.SetEnabled(p,"RagekitShader",true);
|
||||
Shader.SetUniform1f(p,"RagekitShader","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
double xstrastr = 1.+max(0,rage.lastpulse-(gametic+e.Fractic))/35.;
|
||||
Shader.SetUniform1f(p,"RagekitShader","xtrastr",xstrastr**2.);
|
||||
}
|
||||
else Shader.SetEnabled(p,"RagekitShader",false);
|
||||
let ghost = GhostPower(mo.FindInventory("GhostPower"));
|
||||
if ( pc && ghost && swwm_shaders ) Shader.SetEnabled(p,"GhostShader",true);
|
||||
if ( ghost ) Shader.SetEnabled(p,"GhostShader",true);
|
||||
else Shader.SetEnabled(p,"GhostShader",false);
|
||||
let sunny = InvinciballPower(mo.FindInventory("InvinciballPower"));
|
||||
if ( pc && sunny && swwm_shaders )
|
||||
if ( sunny )
|
||||
{
|
||||
Shader.SetEnabled(p,"InvinciShader",true);
|
||||
double str = max(0,sunny.lastpulse-(gametic+e.Fractic))/35.;
|
||||
|
|
@ -61,82 +48,13 @@ extend Class SWWMHandler
|
|||
}
|
||||
else Shader.SetEnabled(p,"InvinciShader",false);
|
||||
let coat = BarrierPower(mo.FindInventory("BarrierPower"));
|
||||
if ( pc && coat && swwm_shaders )
|
||||
if ( coat )
|
||||
{
|
||||
Shader.SetEnabled(p,"BarrierShader",true);
|
||||
Shader.SetUniform1f(p,"BarrierShader","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
}
|
||||
else Shader.SetEnabled(p,"BarrierShader",false);
|
||||
if ( pc && (mo is 'Demolitionist') && swwm_shaders )
|
||||
{
|
||||
let demo = Demolitionist(mo);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_WATER )
|
||||
{
|
||||
Shader.SetEnabled(p,"WaterWarp",true);
|
||||
Shader.SetUniform1f(p,"WaterWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"WaterWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
|
||||
}
|
||||
else Shader.SetEnabled(p,"WaterWarp",false);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_LAVA )
|
||||
{
|
||||
Shader.SetEnabled(p,"LavaWarp",true);
|
||||
Shader.SetUniform1f(p,"LavaWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"LavaWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
}
|
||||
else Shader.SetEnabled(p,"LavaWarp",false);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_SLIME )
|
||||
{
|
||||
Shader.SetEnabled(p,"SlimeWarp",true);
|
||||
Shader.SetUniform1f(p,"SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"SlimeWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
}
|
||||
else Shader.SetEnabled(p,"SlimeWarp",false);
|
||||
int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80);
|
||||
int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20));
|
||||
double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5);
|
||||
Shader.SetEnabled(p,"Glitch",noiz>0);
|
||||
Shader.SetEnabled(p,"Grain",noiz>0);
|
||||
if ( noiz > 0 )
|
||||
{
|
||||
Shader.SetUniform1f(p,"Glitch","Timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"Grain","Timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"Grain","ni",noiz);
|
||||
noiz = min(lastdmg*.08*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.8);
|
||||
Shader.SetUniform1f(p,"Glitch","str1",noiz);
|
||||
noiz = min(lastdmg*.03*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),3.5);
|
||||
Shader.SetUniform1f(p,"Glitch","str2",noiz);
|
||||
}
|
||||
if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) )
|
||||
{
|
||||
Shader.SetEnabled(p,"ZoomBlur",false);
|
||||
return;
|
||||
}
|
||||
Shader.SetEnabled(p,"ZoomBlur",true);
|
||||
Vector3 vel = demo.vel+demo.dashdir*demo.dashboost;
|
||||
double baumpu = max(0.,(demo.bumptic-(gametic+e.Fractic))/35.);
|
||||
vel += demo.dashdir*baumpu;
|
||||
double spd = vel.length();
|
||||
Vector3 worlddir = vel/spd;
|
||||
Shader.SetUniform1f(p,"ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.));
|
||||
double str = min(spd/40.,15.);
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll);
|
||||
Vector3 reldir = (worlddir dot y, worlddir dot z, worlddir dot x);
|
||||
Vector2 centerspot = (.5+reldir.x*.5,.5+reldir.y*.5);
|
||||
if ( reldir.z < 0 )
|
||||
{
|
||||
centerspot.x = 1.-centerspot.x;
|
||||
centerspot.y = 1.-centerspot.y;
|
||||
str *= -1;
|
||||
}
|
||||
Shader.SetUniform1f(p,"ZoomBlur","Str",str);
|
||||
Shader.SetUniform2f(p,"ZoomBlur","CenterSpot",centerspot);
|
||||
}
|
||||
else
|
||||
if ( !(mo is 'Demolitionist') )
|
||||
{
|
||||
Shader.SetEnabled(p,"WaterWarp",false);
|
||||
Shader.SetEnabled(p,"LavaWarp",false);
|
||||
|
|
@ -144,6 +62,73 @@ extend Class SWWMHandler
|
|||
Shader.SetEnabled(p,"Glitch",false);
|
||||
Shader.SetEnabled(p,"Grain",false);
|
||||
Shader.SetEnabled(p,"ZoomBlur",false);
|
||||
return;
|
||||
}
|
||||
let demo = Demolitionist(mo);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_WATER )
|
||||
{
|
||||
Shader.SetEnabled(p,"WaterWarp",true);
|
||||
Shader.SetUniform1f(p,"WaterWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"WaterWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
|
||||
}
|
||||
else Shader.SetEnabled(p,"WaterWarp",false);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_LAVA )
|
||||
{
|
||||
Shader.SetEnabled(p,"LavaWarp",true);
|
||||
Shader.SetUniform1f(p,"LavaWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"LavaWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
}
|
||||
else Shader.SetEnabled(p,"LavaWarp",false);
|
||||
if ( demo.lastunder == Demolitionist.UNDER_SLIME )
|
||||
{
|
||||
Shader.SetEnabled(p,"SlimeWarp",true);
|
||||
Shader.SetUniform1f(p,"SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"SlimeWarp","dfact",coat?.25:1.);
|
||||
Shader.SetUniform3f(p,"SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
|
||||
}
|
||||
else Shader.SetEnabled(p,"SlimeWarp",false);
|
||||
int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80);
|
||||
int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20));
|
||||
double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5);
|
||||
Shader.SetEnabled(p,"Glitch",noiz>0);
|
||||
Shader.SetEnabled(p,"Grain",noiz>0);
|
||||
if ( noiz > 0 )
|
||||
{
|
||||
Shader.SetUniform1f(p,"Glitch","Timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"Grain","Timer",(gametic+e.FracTic)/GameTicRate);
|
||||
Shader.SetUniform1f(p,"Grain","ni",noiz);
|
||||
noiz = min(lastdmg*.08*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.8);
|
||||
Shader.SetUniform1f(p,"Glitch","str1",noiz);
|
||||
noiz = min(lastdmg*.03*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),3.5);
|
||||
Shader.SetUniform1f(p,"Glitch","str2",noiz);
|
||||
}
|
||||
if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) )
|
||||
{
|
||||
Shader.SetEnabled(p,"ZoomBlur",false);
|
||||
return;
|
||||
}
|
||||
Shader.SetEnabled(p,"ZoomBlur",true);
|
||||
Vector3 vel = demo.vel+demo.dashdir*demo.dashboost;
|
||||
double baumpu = max(0.,(demo.bumptic-(gametic+e.Fractic))/35.);
|
||||
vel += demo.dashdir*baumpu;
|
||||
double spd = vel.length();
|
||||
Vector3 worlddir = vel/spd;
|
||||
Shader.SetUniform1f(p,"ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.));
|
||||
double str = min(spd/40.,15.);
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll);
|
||||
Vector3 reldir = (worlddir dot y, worlddir dot z, worlddir dot x);
|
||||
Vector2 centerspot = (.5+reldir.x*.5,.5+reldir.y*.5);
|
||||
if ( reldir.z < 0 )
|
||||
{
|
||||
centerspot.x = 1.-centerspot.x;
|
||||
centerspot.y = 1.-centerspot.y;
|
||||
str *= -1;
|
||||
}
|
||||
Shader.SetUniform1f(p,"ZoomBlur","Str",str);
|
||||
Shader.SetUniform2f(p,"ZoomBlur","CenterSpot",centerspot);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ extend Class SWWMHandler
|
|||
if ( players[i].itemcount > lastitemcount[i] )
|
||||
{
|
||||
int score = 10*(players[i].itemcount-lastitemcount[i]);
|
||||
if ( !deathmatch && (level.total_items == level.found_items) && !allitems )
|
||||
if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.total_items == level.found_items) && !allitems )
|
||||
{
|
||||
allitems = true;
|
||||
Console.Printf(StringTable.Localize("$SWWM_LASTITEM"),players[i].GetUserName(),500);
|
||||
|
|
@ -128,6 +128,8 @@ extend Class SWWMHandler
|
|||
{
|
||||
// not in DM
|
||||
if ( deathmatch ) return;
|
||||
// not in Hexen, due to its fully hub-based nature
|
||||
if ( gameinfo.gametype&GAME_Hexen ) return;
|
||||
if ( !mapclear && (restartmus > 0) )
|
||||
{
|
||||
restartmus--;
|
||||
|
|
|
|||
|
|
@ -21,14 +21,14 @@ Class RedShell : Ammo
|
|||
Inventory.Icon "graphics/HUD/Icons/A_ShellsNormal.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 30;
|
||||
Ammo.BackpackAmount 3;
|
||||
Ammo.BackpackAmount 2;
|
||||
Ammo.BackpackMaxAmount 80;
|
||||
Ammo.DropAmount 2;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
Accuracy 30;
|
||||
Accuracy 50;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -88,7 +88,7 @@ Class GreenShell : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
Accuracy 35;
|
||||
Accuracy 55;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -147,7 +147,7 @@ Class WhiteShell : Ammo
|
|||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Accuracy 50;
|
||||
Accuracy 70;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -207,7 +207,7 @@ Class BlueShell : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
Accuracy 45;
|
||||
Accuracy 65;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -267,7 +267,7 @@ Class BlackShell : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
Accuracy 60;
|
||||
Accuracy 75;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -327,7 +327,7 @@ Class PurpleShell : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 4;
|
||||
Height 20;
|
||||
Accuracy 40;
|
||||
Accuracy 60;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -484,14 +484,14 @@ Class EvisceratorShell : Ammo
|
|||
Inventory.Icon "graphics/HUD/Icons/A_Eviscerator.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 20;
|
||||
Ammo.BackpackAmount 2;
|
||||
Ammo.BackpackAmount 1;
|
||||
Ammo.BackpackMaxAmount 60;
|
||||
Ammo.DropAmount 1;
|
||||
+FLOATBOB;
|
||||
FloatBobStrength 0.25;
|
||||
Radius 8;
|
||||
Height 22;
|
||||
Accuracy 40;
|
||||
Accuracy 60;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -566,7 +566,7 @@ Class HellblazerMissiles : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 6;
|
||||
Height 22;
|
||||
Accuracy 60;
|
||||
Accuracy 70;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -635,7 +635,7 @@ Class HellblazerCrackshots : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 6;
|
||||
Height 22;
|
||||
Accuracy 70;
|
||||
Accuracy 75;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -760,7 +760,7 @@ Class HellblazerWarheads : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 6;
|
||||
Height 22;
|
||||
Accuracy 90;
|
||||
Accuracy 85;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -820,7 +820,7 @@ Class SparkUnit : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 6;
|
||||
Height 22;
|
||||
Accuracy 50;
|
||||
Accuracy 70;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -879,7 +879,7 @@ Class SilverBulletAmmo : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 10;
|
||||
Height 26;
|
||||
Accuracy 60;
|
||||
Accuracy 75;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -931,7 +931,7 @@ Class SilverBulletAmmo2 : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 10;
|
||||
Height 26;
|
||||
Accuracy 70;
|
||||
Accuracy 80;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -1067,7 +1067,7 @@ Class CandyGunAmmo : Ammo
|
|||
FloatBobStrength 0.25;
|
||||
Radius 6;
|
||||
Height 24;
|
||||
Accuracy 80;
|
||||
Accuracy 90;
|
||||
}
|
||||
override void ModifyDropAmount( int dropamount )
|
||||
{
|
||||
|
|
@ -1186,7 +1186,7 @@ Class YnykronAmmo : Ammo
|
|||
//$Icon ammo
|
||||
Tag "$T_YNYKRONAMMO";
|
||||
Inventory.PickupMessage "$T_YNYKRONAMMO";
|
||||
Stamina 3000000;
|
||||
Stamina -3000000;
|
||||
Inventory.Icon "graphics/HUD/Icons/A_Ynykron.png";
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 1;
|
||||
|
|
|
|||
|
|
@ -18,22 +18,21 @@ Class SWWMShellAmmoSmall : SWWMAmmoSpawner
|
|||
{
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) )
|
||||
return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BundleSpawn';*/
|
||||
switch( Random[Replacements](0,9) )
|
||||
switch( Random[Replacements](0,8) )
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return 'RedShell';
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 'GreenShell';
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
return 'PurpleShell';
|
||||
}
|
||||
// case 9
|
||||
// case 8
|
||||
return 'BlueShell';
|
||||
}
|
||||
}
|
||||
|
|
@ -44,11 +43,10 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner
|
|||
static Class<Actor> PickAmmo( bool notondemand = false )
|
||||
{
|
||||
// shell types (sorted by rarity)
|
||||
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'};
|
||||
static const Class<Actor> bluepool[] = {'BlueShell','BlueShell2','BlueShell4'};
|
||||
static const Class<Actor> redpool[] = {'RedShell','RedShell2'};
|
||||
static const Class<Actor> greenpool[] = {'GreenShell','GreenShell2'};
|
||||
static const Class<Actor> purplepool[] = {'PurpleShell','PurpleShell2'};
|
||||
static const Class<Actor> bluepool[] = {'BlueShell','BlueShell2'};
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) )
|
||||
return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo';*/
|
||||
switch( Random[Replacements](0,20) )
|
||||
|
|
@ -58,28 +56,27 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner
|
|||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
return redpool[Random[Replacements](0,1)];
|
||||
case 5:
|
||||
return redpool[Random[Replacements](0,2)];
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
return greenpool[Random[Replacements](0,1)];
|
||||
case 10:
|
||||
return greenpool[Random[Replacements](0,2)];
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
return purplepool[Random[Replacements](0,1)];
|
||||
case 14:
|
||||
return purplepool[Random[Replacements](0,2)];
|
||||
case 15:
|
||||
case 16:
|
||||
return bluepool[Random[Replacements](0,1)];
|
||||
case 17:
|
||||
return bluepool[Random[Replacements](0,2)];
|
||||
case 18:
|
||||
case 19:
|
||||
return whitepool[Random[Replacements](0,1)];
|
||||
return 'WhiteShell';
|
||||
}
|
||||
// case 20
|
||||
// case 19-20
|
||||
return 'BlackShell';
|
||||
}
|
||||
}
|
||||
|
|
@ -91,7 +88,7 @@ Class SWWMClipAmmoBig : SWWMAmmoSpawner
|
|||
{
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) )
|
||||
return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo';*/
|
||||
return Random[Replacements](0,3)?'EvisceratorShell':'EvisceratorBundleSpawn';
|
||||
return Random[Replacements](0,5)?'EvisceratorShell':'EvisceratorBundleSpawn';
|
||||
}
|
||||
}
|
||||
Class SWWMBlastAmmoSmall : SWWMAmmoSpawner
|
||||
|
|
@ -113,7 +110,7 @@ Class SWWMBlastAmmoBig : SWWMAmmoSpawner
|
|||
{
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) )
|
||||
return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo';*/
|
||||
return 'EvisceratorBundleSpawn';
|
||||
return Random[Replacements](0,2)?'EvisceratorShell':'EvisceratorBundleSpawn';
|
||||
}
|
||||
}
|
||||
Class SWWMRocketAmmoSmall : SWWMAmmoSpawner
|
||||
|
|
@ -122,6 +119,7 @@ Class SWWMRocketAmmoSmall : SWWMAmmoSpawner
|
|||
|
||||
static Class<Actor> PickAmmo( bool notondemand = false )
|
||||
{
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo';*/
|
||||
return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerCrackshots';
|
||||
}
|
||||
|
|
@ -132,6 +130,8 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner
|
|||
|
||||
static Class<Actor> PickAmmo( bool notondemand = false )
|
||||
{
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) )
|
||||
return Random[Replacements](0,2)?'SparksterAmmoBundleSpawn':'SparksterBigAmmoBundleSpawn';*/
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) )
|
||||
return Random[Replacements](0,2)?'QuadravolAmmo':'QuadravolAmmoBundleSpawn';*/
|
||||
switch ( Random[Replacements](0,11) )
|
||||
|
|
@ -141,12 +141,12 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner
|
|||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerMissileBundleSpawn';
|
||||
return Random[Replacements](0,4)?'HellblazerMissiles':'HellblazerMissileBundleSpawn';
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
return Random[Replacements](0,3)?'HellblazerCrackshots':'HellblazerCrackshotBundleSpawn';
|
||||
return Random[Replacements](0,7)?'HellblazerCrackshots':'HellblazerCrackshotBundleSpawn';
|
||||
case 9:
|
||||
case 10:
|
||||
return 'HellblazerRavagers';
|
||||
|
|
@ -166,6 +166,7 @@ Class SWWMCellAmmoSmall : SWWMAmmoSpawner
|
|||
{
|
||||
if ( !Random[Replacements](0,3) )
|
||||
{
|
||||
/*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo';*/
|
||||
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt';*/
|
||||
if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets';
|
||||
}
|
||||
|
|
@ -182,9 +183,19 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner
|
|||
|
||||
static Class<Actor> PickAmmo( bool notondemand = false )
|
||||
{
|
||||
if ( !Random[Replacements](0,3) )
|
||||
{
|
||||
//if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('GrandLance')) && SWWMUtility.CheckNeedsItem('GrandAmmo',true) && !SWWMUtility.ItemExists('GrandAmmo',worldonly:true) && !SWWMUtility.ItemExists('GrandLance',worldonly:true) )
|
||||
// return 'GrandAmmo';
|
||||
//if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) )
|
||||
// return 'UltimateAmmo';
|
||||
if ( (notondemand || SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) )
|
||||
return 'YnykronAmmo';
|
||||
}
|
||||
/*if ( Random[Replacements](0,1) )
|
||||
{
|
||||
if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('EMPCarbine')) ) return Random[Replacements](0,3)?'EMPCoreBundleSpawn':'EMPCore';
|
||||
if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return Random[Replacements](0,2)?'MisterRoundBundleSpawn':'MisterAmmo';
|
||||
if ( notondemand || SWWMUtility.ItemExists('RayKhom') ) return Random[Replacements](0,2)?'RayBoltBundleSpawn':'RayAmmo';
|
||||
}*/
|
||||
if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('SilverBullet')) )
|
||||
|
|
@ -192,8 +203,8 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner
|
|||
if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBulletsBundleSpawn':'SilverBullets2BundleSpawn';
|
||||
return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2';
|
||||
}
|
||||
if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,2)?'CandyGunBulletsBundleSpawn':'CandyGunAmmo';
|
||||
if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBulletsBundleSpawn':'CandyGunAmmo';
|
||||
/*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('BlackfireIgniter')) ) return 'DarkCanister';*/
|
||||
return Random[Replacements](0,2)?'SparkUnit':'SparkUnitBundleSpawn';
|
||||
return Random[Replacements](0,3)?'SparkUnit':'SparkUnitBundleSpawn';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ Class SWWMArmor : Armor abstract
|
|||
if ( (amount <= 0) || DamageTypeDefinition.IgnoreArmor(damageType) || (damage <= 0) )
|
||||
return;
|
||||
SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3);
|
||||
Owner.A_StartSound("armor/hit",CHAN_BODY,CHANF_DEFAULT,clamp(damage*.03,0.,1.),2.5);
|
||||
Owner.A_StartSound("armor/hit",CHAN_DAMAGE,CHANF_OVERLAP,clamp(damage*.03,0.,1.),2.5);
|
||||
saved = HandleDamage(damage,damageType,flags);
|
||||
int healed = max(0,saved-damage);
|
||||
saved = min(saved,damage);
|
||||
|
|
@ -117,7 +117,7 @@ Class SWWMArmor : Armor abstract
|
|||
else shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool();
|
||||
if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse )
|
||||
{
|
||||
if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6);
|
||||
if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6);
|
||||
int tgive = 0;
|
||||
while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) )
|
||||
{
|
||||
|
|
@ -164,7 +164,7 @@ Class SWWMSpareArmor : Inventory abstract
|
|||
let cur = Owner.FindInventory(giveme);
|
||||
if ( !cur || (!pickup && (cur.Amount < cur.MaxAmount)) || (GetDefaultByType(giveme).Amount+cur.Amount <= cur.MaxAmount) )
|
||||
{
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount);
|
||||
SWWMHandler.ArmorFlash(Owner.PlayerNumber());
|
||||
SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor);
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ Class SWWMHealth : Inventory abstract
|
|||
let hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true;
|
||||
}
|
||||
if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
int tgive = 0;
|
||||
bool morethanonce = false;
|
||||
while ( (Amount > 0) && (newdamage > 0) )
|
||||
|
|
|
|||
|
|
@ -723,13 +723,31 @@ Class ChanceboxSpawner : Actor
|
|||
return;
|
||||
}
|
||||
int numbox = 0;
|
||||
let ti = ThinkerIterator.Create("ChanceboxSpawner");
|
||||
ThinkerIterator ti = ThinkerIterator.Create("Chancebox");
|
||||
while ( ti.Next() ) numbox++;
|
||||
ti = ThinkerIterator.Create("Chancebox");
|
||||
while ( ti.Next() ) numbox++;
|
||||
if ( numbox > 3 )
|
||||
if ( numbox >= 3 )
|
||||
{
|
||||
// there's three boxes in the map already (plus ourselves)
|
||||
// there's three boxes in the map already
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
BlockLinesIterator bl = BlockLinesIterator.CreateFromPos(pos,32,32,CurSector);
|
||||
double tbox[4];
|
||||
// top, bottom, left, right
|
||||
tbox[0] = pos.y+32;
|
||||
tbox[1] = pos.y-32;
|
||||
tbox[2] = pos.x-32;
|
||||
tbox[3] = pos.x+32;
|
||||
while ( bl.Next() )
|
||||
{
|
||||
Line l = bl.CurLine;
|
||||
if ( !l ) continue;
|
||||
if ( tbox[2] > l.bbox[3] ) continue;
|
||||
if ( tbox[3] < l.bbox[2] ) continue;
|
||||
if ( tbox[0] < l.bbox[1] ) continue;
|
||||
if ( tbox[1] > l.bbox[0] ) continue;
|
||||
if ( SWWMUtility.BoxOnLineSide(tbox[0],tbox[1],tbox[2],tbox[3],l) != -1 ) continue;
|
||||
// there isn't enough space to spawn a box here
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
|
|
@ -929,7 +947,15 @@ Class Chancebox : Actor
|
|||
// no candidates? just burst into treats
|
||||
if ( Random[Chancebox](0,1) )
|
||||
{
|
||||
let a = Spawn((!Random[Chancebox](0,2)&&SWWMUtility.ItemExists("Spreadgun"))?"GoldShell":(Random[Chancebox](0,1)&&SWWMUtility.ItemExists("Ynykron"))?"YnykronAmmo":"GrilledCheeseSandwich",pos);
|
||||
Class<Inventory> vipammodrop = null;
|
||||
if ( SWWMUtility.ItemExists("Ynykron") && Random[Chancebox](0,1) ) vipammodrop = "YnykronAmmo";
|
||||
//if ( SWWMUtility.ItemExists("GrandLance") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "GrandAmmo";
|
||||
//if ( SWWMUtility.ItemExists("RafanKos") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "UltimateAmmo";
|
||||
if ( SWWMUtility.ItemExists("Spreadgun") && SWWMUtility.CheckNeedsItem("GoldShell",true) && !vipammodrop ) vipammodrop = "GoldShell";
|
||||
Class<Inventory> vipitemdrop = null;
|
||||
if ( SWWMUtility.CheckNeedsItem("Mykradvo",true) && !SWWMUtility.ItemExists("Mykradvo",worldonly:true) && Random[Chancebox](0,1) ) vipitemdrop = "Mykradvo";
|
||||
if ( !vipitemdrop ) vipitemdrop = "GrilledCheeseSandwich";
|
||||
let a = Spawn((!Random[Chancebox](0,2)&&vipammodrop)?vipammodrop:vipitemdrop,pos);
|
||||
a.bDROPPED = false;
|
||||
a.bNOGRAVITY = false;
|
||||
a.vel.z = FRandom[Chancebox](2,4);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ Class RefresherRegen : Powerup
|
|||
if ( !Owner.GiveBody(int(Strength),500) ) return;
|
||||
SWWMScoreObj.Spawn(int(Strength),Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health);
|
||||
SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10);
|
||||
Owner.A_StartSound("powerup/refresher",CHAN_ITEM,CHANF_LOCAL,.4);
|
||||
Owner.A_StartSound("powerup/refresher",CHAN_ITEMEXTRA,CHANF_LOCAL|CHANF_OVERLAP,.4);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
Demolitionist(Owner).lastbump *= 0.99;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ Class GrilledCheeseSandwich : Inventory
|
|||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( Owner.Health > 500 ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
DoTheThing();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -115,7 +115,7 @@ Class GrilledCheeseSandwich : Inventory
|
|||
if ( damageType == 'InstantDeath' )
|
||||
SafeTeleport(); // get out of pits
|
||||
newdamage = 0;
|
||||
if ( (Owner.player == players[consoleplayer]) || bBigPowerup ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( (Owner.player == players[consoleplayer]) || bBigPowerup ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
DoTheThing(true);
|
||||
Amount--;
|
||||
}
|
||||
|
|
@ -135,7 +135,7 @@ Class GrilledCheeseSandwich : Inventory
|
|||
safepos = lastsafepos[4];
|
||||
safeangle = lastsafeangle[4];
|
||||
}
|
||||
Owner.Teleport(safepos,safeangle,TF_TELEFRAG|TF_FORCED|TF_USESPOTZ|TF_NOFOG);
|
||||
Owner.Teleport(safepos,safeangle,0);
|
||||
}
|
||||
override void DoEffect()
|
||||
{
|
||||
|
|
@ -241,6 +241,15 @@ Class GrilledCheeseSandwich : Inventory
|
|||
}
|
||||
}
|
||||
|
||||
Mixin Class SWWMShadedPowerup
|
||||
{
|
||||
override Color GetBlend()
|
||||
{
|
||||
if ( swwm_shaders ) return 0;
|
||||
return Super.GetBlend();
|
||||
}
|
||||
}
|
||||
|
||||
Class GhostSnd : Actor
|
||||
{
|
||||
Default
|
||||
|
|
@ -334,6 +343,8 @@ Class GhostTarget : Actor
|
|||
|
||||
Class GhostPower : PowerInvisibility
|
||||
{
|
||||
Mixin SWWMShadedPowerup;
|
||||
|
||||
Actor snd;
|
||||
|
||||
Default
|
||||
|
|
@ -360,7 +371,7 @@ Class GhostPower : PowerInvisibility
|
|||
{
|
||||
Super.EndEffect();
|
||||
if ( !Owner ) return;
|
||||
Owner.A_StartSound("powerup/ghostend",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/ghostend",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
SWWMHandler.DoFlash(Owner,Color(96,224,192,255),20);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
Demolitionist(Owner).lastbump *= 1.02;
|
||||
|
|
@ -484,7 +495,7 @@ Class GhostArtifact : Inventory
|
|||
override bool Use( bool pickup )
|
||||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
let g = GhostPower(Owner.FindInventory("GhostPower"));
|
||||
if ( g )
|
||||
{
|
||||
|
|
@ -569,6 +580,8 @@ Class GravSnd : Actor
|
|||
|
||||
Class GravityPower : Powerup
|
||||
{
|
||||
Mixin SWWMShadedPowerup;
|
||||
|
||||
Actor snd;
|
||||
|
||||
Default
|
||||
|
|
@ -598,7 +611,7 @@ Class GravityPower : Powerup
|
|||
Owner.bNOGRAVITY = false;
|
||||
if ( Owner.pos.z > Owner.floorz ) Owner.player.centering = true;
|
||||
}
|
||||
Owner.A_StartSound("powerup/gravityend",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/gravityend",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
Demolitionist(Owner).lastbump *= 1.02;
|
||||
if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_GRAVITYS"));
|
||||
|
|
@ -636,7 +649,7 @@ Class GravitySuppressor : Inventory
|
|||
override bool Use( bool pickup )
|
||||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
let g = GravityPower(Owner.FindInventory("GravityPower"));
|
||||
if ( g )
|
||||
{
|
||||
|
|
@ -765,6 +778,8 @@ Class InvinciSnd : Actor
|
|||
|
||||
Class InvinciballPower : Powerup
|
||||
{
|
||||
Mixin SWWMShadedPowerup;
|
||||
|
||||
Actor l, snd;
|
||||
int lasteffect;
|
||||
transient int lastpulse;
|
||||
|
|
@ -804,7 +819,7 @@ Class InvinciballPower : Powerup
|
|||
{
|
||||
Super.EndEffect();
|
||||
if ( !Owner ) return;
|
||||
Owner.A_StartSound("powerup/invinciballend",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/invinciballend",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
SWWMHandler.DoFlash(Owner,Color(96,255,64,0),20);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
Demolitionist(Owner).lastbump *= 1.05;
|
||||
|
|
@ -846,7 +861,7 @@ Class InvinciballPower : Powerup
|
|||
if ( level.maptime > lasteffect+5 )
|
||||
{
|
||||
SWWMHandler.DoFlash(Owner,Color(64,255,64,0),15);
|
||||
Owner.A_StartSound("powerup/invinciballhit",CHAN_POWERUP);
|
||||
Owner.A_StartSound("powerup/invinciballhit",CHAN_POWERUP,CHANF_OVERLAP);
|
||||
lasteffect = level.maptime;
|
||||
lastpulse = max(lastpulse,gametic+20);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
|
|
@ -881,7 +896,7 @@ Class FuckingInvinciball : Inventory
|
|||
override bool Use( bool pickup )
|
||||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
Owner.A_StartSound("misc/sundowner",CHAN_POWERUPEXTRA);
|
||||
let i = InvinciballPower(Owner.FindInventory("InvinciballPower"));
|
||||
if ( i )
|
||||
|
|
@ -1014,6 +1029,8 @@ Class RageSnd : Actor
|
|||
|
||||
Class RagekitPower : Powerup
|
||||
{
|
||||
Mixin SWWMShadedPowerup;
|
||||
|
||||
Actor l, snd;
|
||||
int lasteffect;
|
||||
transient int lastpulse, lastrage;
|
||||
|
|
@ -1071,7 +1088,7 @@ Class RagekitPower : Powerup
|
|||
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40;
|
||||
Owner.A_QuakeEx(2,2,2,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5);
|
||||
lastpulse = max(lastpulse,gametic+10);
|
||||
Demolitionist(Owner).lastbump *= .98;
|
||||
Demolitionist(Owner).lastbump *= .995;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1079,7 +1096,7 @@ Class RagekitPower : Powerup
|
|||
{
|
||||
Super.EndEffect();
|
||||
if ( !Owner ) return;
|
||||
Owner.A_StartSound("powerup/ragekitend",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/ragekitend",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
SWWMHandler.DoFlash(Owner,Color(128,255,0,0),30);
|
||||
Owner.A_QuakeEx(4,4,4,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.);
|
||||
Owner.A_AlertMonsters(2000);
|
||||
|
|
@ -1120,7 +1137,7 @@ Class RagekitPower : Powerup
|
|||
Owner.A_QuakeEx(8,8,8,Random[Rage](3,8),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.);
|
||||
if ( (Owner.player == players[consoleplayer]) && (gametic > lastrage) && (swwm_mutevoice < 2) )
|
||||
lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40;
|
||||
Owner.A_StartSound("powerup/ragekithit",CHAN_POWERUP);
|
||||
Owner.A_StartSound("powerup/ragekithit",CHAN_POWERUP,CHANF_OVERLAP);
|
||||
lasteffect = level.maptime;
|
||||
lastpulse = max(lastpulse,gametic+35);
|
||||
Demolitionist(Owner).lastbump *= .9;
|
||||
|
|
@ -1250,7 +1267,7 @@ Class Omnisight : Inventory
|
|||
{
|
||||
if ( Owner.player == players[consoleplayer] )
|
||||
{
|
||||
Owner.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
// automatically zoom out so the player can know how far this goes
|
||||
CVar.FindCVar('swwm_mm_zoom').SetFloat(2.);
|
||||
}
|
||||
|
|
@ -1268,7 +1285,7 @@ Class Omnisight : Inventory
|
|||
if ( i == consoleplayer )
|
||||
{
|
||||
Console.Printf(StringTable.Localize("$D_OMNISHARE"),Owner.player.GetUserName());
|
||||
players[i].mo.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA);
|
||||
players[i].mo.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
// automatically zoom out so the player can know how far this goes
|
||||
CVar.FindCVar('swwm_mm_zoom').SetFloat(2.);
|
||||
}
|
||||
|
|
@ -1843,7 +1860,7 @@ Class CompanionLamp : Actor
|
|||
{
|
||||
if ( SWWMLamp(master) && SWWMLamp(master).bActive )
|
||||
{
|
||||
A_StartSound("lamp/on",CHAN_ITEMEXTRA);
|
||||
A_StartSound("lamp/on",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
return ResolveState("Active");
|
||||
}
|
||||
return ResolveState(null);
|
||||
|
|
@ -1855,7 +1872,7 @@ Class CompanionLamp : Actor
|
|||
A_Moth();
|
||||
if ( !SWWMLamp(master) || !SWWMLamp(master).bActive )
|
||||
{
|
||||
A_StartSound("lamp/off",CHAN_ITEMEXTRA);
|
||||
A_StartSound("lamp/off",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
return ResolveState("Spawn");
|
||||
}
|
||||
return ResolveState(null);
|
||||
|
|
@ -1970,7 +1987,7 @@ Class SWWMLamp : Inventory
|
|||
bActive = false;
|
||||
bActivated = false;
|
||||
}
|
||||
clearscope bool isBlinking()
|
||||
clearscope bool isBlinking() const
|
||||
{
|
||||
return ( (Charge < 10) && (level.maptime&8) );
|
||||
}
|
||||
|
|
@ -2071,6 +2088,8 @@ Class BarrierSnd : Actor
|
|||
|
||||
Class BarrierPower : PowerIronFeet
|
||||
{
|
||||
Mixin SWWMShadedPowerup;
|
||||
|
||||
Actor snd, l;
|
||||
|
||||
Default
|
||||
|
|
@ -2126,7 +2145,7 @@ Class BarrierPower : PowerIronFeet
|
|||
{
|
||||
Super.EndEffect();
|
||||
if ( !Owner ) return;
|
||||
Owner.A_StartSound("powerup/barrierend",CHAN_ITEMEXTRA);
|
||||
Owner.A_StartSound("powerup/barrierend",CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
if ( Owner is 'Demolitionist' )
|
||||
Demolitionist(Owner).lastbump *= 0.95;
|
||||
if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_BARRIER"));
|
||||
|
|
@ -2151,10 +2170,12 @@ Class EBarrier : Inventory
|
|||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
int terrainwait;
|
||||
|
||||
override bool Use( bool pickup )
|
||||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
let b = BarrierPower(Owner.FindInventory("BarrierPower"));
|
||||
if ( b )
|
||||
{
|
||||
|
|
@ -2185,6 +2206,52 @@ Class EBarrier : Inventory
|
|||
tracer.target = self;
|
||||
tracer.FloatBobPhase = FloatBobPhase;
|
||||
}
|
||||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
// check terrain for auto-use
|
||||
let b = Powerup(Owner.FindInventory("BarrierPower"));
|
||||
if ( b && (b.EffectTics > 5) )
|
||||
{
|
||||
terrainwait = 20;
|
||||
return;
|
||||
}
|
||||
bool damageterrain = false;
|
||||
// check any 3d floors first
|
||||
for ( int i=0; i<Owner.CurSector.Get3DFloorCount(); i++ )
|
||||
{
|
||||
F3DFloor ff = Owner.CurSector.Get3DFloor(i);
|
||||
if ( !(ff.flags&(F3DFloor.FF_EXISTS|F3DFloor.FF_SWIMMABLE)) ) continue;
|
||||
if ( (ff.model.DamageAmount <= 0) || (ff.model.damageinterval <= 0) ) continue;
|
||||
if ( ff.top.ZAtPoint(Owner.pos.xy) <= Owner.pos.z ) continue;
|
||||
if ( ff.bottom.ZAtPoint(Owner.pos.xy) >= (Owner.pos.z+Owner.Height) ) continue;
|
||||
damageterrain = true;
|
||||
break;
|
||||
}
|
||||
if ( !damageterrain && (Owner.pos.z <= Owner.floorz) )
|
||||
{
|
||||
if ( (Owner.floorsector.damageamount > 0) && (Owner.floorsector.damageinterval > 0) ) damageterrain = true;
|
||||
else
|
||||
{
|
||||
let t = Owner.GetFloorTerrain();
|
||||
if ( t && (t.DamageAmount > 0) && (t.DamageTimeMask > 0) )
|
||||
damageterrain = true;
|
||||
}
|
||||
}
|
||||
if ( !damageterrain )
|
||||
{
|
||||
terrainwait = max(0,terrainwait-1);
|
||||
return;
|
||||
}
|
||||
else terrainwait++;
|
||||
if ( terrainwait <= 20 ) return;
|
||||
terrainwait = 0;
|
||||
bool shouldautouse = false;
|
||||
if ( swwm_enforceautousebarrier == 1 ) shouldautouse = true;
|
||||
else if ( swwm_enforceautousebarrier == -1 ) shouldautouse = false;
|
||||
else shouldautouse = CVar.GetCVar('swwm_autousebarrier',Owner.player).GetBool();
|
||||
if ( shouldautouse ) Owner.UseInventory(self);
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
|
|
@ -2760,7 +2827,7 @@ Class Mykradvo : Inventory
|
|||
override bool Use( bool pickup )
|
||||
{
|
||||
if ( pickup && !deathmatch ) return false;
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA);
|
||||
if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP);
|
||||
Vector3 spawnpos = Owner.Vec3Angle(15,Owner.angle,Owner.Height*.7);
|
||||
if ( !FindTargets(Owner) )
|
||||
{
|
||||
|
|
@ -2807,7 +2874,7 @@ Class Mykradvo : Inventory
|
|||
s.pitch = pt;
|
||||
s.ReactionTime += Random[ExploS](-2,2);
|
||||
}
|
||||
A_StartSound("mykradvo/smallarc",CHAN_WEAPON);
|
||||
A_StartSound("mykradvo/smallarc",CHAN_WEAPON,CHANF_OVERLAP,attenuation:3.);
|
||||
A_SetTics(Random[Mykradvo](10,50));
|
||||
}
|
||||
|
||||
|
|
@ -2872,13 +2939,13 @@ Class Mykradvo : Inventory
|
|||
//$Sprite graphics/HUD/Icons/I_Mykradvo.png
|
||||
//$Icon powerup
|
||||
Tag "$T_MYKRADVO";
|
||||
Stamina 1200000;
|
||||
Stamina -1200000;
|
||||
Inventory.Icon "graphics/HUD/Icons/I_Mykradvo.png";
|
||||
Inventory.PickupSound "misc/p_pkup";
|
||||
Inventory.UseSound "mykradvo/arc";
|
||||
Inventory.PickupMessage "$T_MYKRADVO";
|
||||
Inventory.MaxAmount 5;
|
||||
Inventory.InterHubAmount 5;
|
||||
Inventory.MaxAmount 3;
|
||||
Inventory.InterHubAmount 3;
|
||||
Inventory.PickupFlash "SWWMPurplePickupFlash";
|
||||
+INVENTORY.ALWAYSPICKUP;
|
||||
+INVENTORY.AUTOACTIVATE;
|
||||
|
|
@ -2908,7 +2975,7 @@ Class MykradvoX : GhostArtifactX
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_StartSound("powerup/mykradvoamb",CHAN_VOICE,CHANF_LOOP);
|
||||
A_StartSound("powerup/mykradvoamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.);
|
||||
}
|
||||
override void Tick()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3203,15 +3203,14 @@ Class DemolitionistMenu : GenericMenu
|
|||
else if ( (invlist[i].Amount > 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag());
|
||||
else str = invlist[i].GetTag();
|
||||
int clscol = Font.CR_WHITE;
|
||||
if ( invlist[i] is 'Weapon' ) clscol = Font.CR_GOLD;
|
||||
else if ( invlist[i] is 'MagAmmo' ) clscol = Font.CR_TAN;
|
||||
if ( invlist[i] is 'Weapon' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPGold'):Font.CR_GOLD;
|
||||
else if ( invlist[i] is 'MagAmmo' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPTan'):Font.CR_TAN;
|
||||
else if ( (invlist[i] is 'BackpackItem') || (invlist[i] is 'HammerspaceEmbiggener') ) clscol = Font.CR_DARKBROWN;
|
||||
else if ( invlist[i] is 'Ammo' ) clscol = Font.CR_BROWN;
|
||||
else if ( (invlist[i] is 'PowerupGiver') || (invlist[i] is 'AmmoFabricator') || invlist[i].bBIGPOWERUP ) clscol = Font.CR_PURPLE;
|
||||
else if ( invlist[i] is 'Ammo' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPBrown'):Font.CR_BROWN;
|
||||
else if ( (invlist[i] is 'PowerupGiver') || (invlist[i] is 'AmmoFabricator') || invlist[i].bBIGPOWERUP ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPPurple'):Font.CR_PURPLE;
|
||||
else if ( (invlist[i] is 'Health') || (invlist[i] is 'HealthPickup') || (invlist[i] is 'SWWMHealth') ) clscol = Font.CR_RED;
|
||||
else if ( (invlist[i] is 'Armor') || (invlist[i] is 'SWWMSpareArmor') ) clscol = Font.CR_GREEN;
|
||||
else if ( invlist[i] is 'PuzzleItem' ) clscol = Font.CR_LIGHTBLUE;
|
||||
else if ( invlist[i] is 'SWWMCollectible' ) clscol = Font.CR_FIRE;
|
||||
Screen.DrawText(fnt,clscol,origin.x+xx,origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(i!=sel0)?Color(96,0,0,0):Color(0,0,0,0));
|
||||
yy += 16;
|
||||
if ( yy >= 370 )
|
||||
|
|
@ -3263,15 +3262,14 @@ Class DemolitionistMenu : GenericMenu
|
|||
else if ( (invlist[i].Amount > 1) || (!(invlist[i] is 'PuzzleItem') && !(invlist[i] is 'Weapon') && (invlist[i].MaxAmount > 1)) ) str = String.Format("%dx %s",invlist[i].Amount,invlist[i].GetTag());
|
||||
else str = invlist[i].GetTag();
|
||||
int clscol = Font.CR_WHITE;
|
||||
if ( invlist[i] is 'Weapon' ) clscol = Font.CR_GOLD;
|
||||
else if ( invlist[i] is 'MagAmmo' ) clscol = Font.CR_TAN;
|
||||
if ( invlist[i] is 'Weapon' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPGold'):Font.CR_GOLD;
|
||||
else if ( invlist[i] is 'MagAmmo' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPTan'):Font.CR_TAN;
|
||||
else if ( (invlist[i] is 'BackpackItem') || (invlist[i] is 'HammerspaceEmbiggener') ) clscol = Font.CR_DARKBROWN;
|
||||
else if ( invlist[i] is 'Ammo' ) clscol = Font.CR_BROWN;
|
||||
else if ( (invlist[i] is 'PowerupGiver') || (invlist[i] is 'AmmoFabricator') || invlist[i].bBIGPOWERUP ) clscol = Font.CR_PURPLE;
|
||||
else if ( invlist[i] is 'Ammo' ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPBrown'):Font.CR_BROWN;
|
||||
else if ( (invlist[i] is 'PowerupGiver') || (invlist[i] is 'AmmoFabricator') || invlist[i].bBIGPOWERUP ) clscol = SWWMUtility.IsVIPItem(invlist[i])?Font.FindFontColor('VIPPurple'):Font.CR_PURPLE;
|
||||
else if ( (invlist[i] is 'Health') || (invlist[i] is 'HealthPickup') || (invlist[i] is 'SWWMHealth') ) clscol = Font.CR_RED;
|
||||
else if ( (invlist[i] is 'Armor') || (invlist[i] is 'SWWMSpareArmor') ) clscol = Font.CR_GREEN;
|
||||
else if ( invlist[i] is 'PuzzleItem' ) clscol = Font.CR_LIGHTBLUE;
|
||||
else if ( invlist[i] is 'SWWMCollectible' ) clscol = Font.CR_FIRE;
|
||||
Screen.DrawText(fnt,clscol,origin.x+xx,origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(i!=sel1)?Color(96,0,0,0):Color(0,0,0,0));
|
||||
yy += 16;
|
||||
if ( yy >= 370 )
|
||||
|
|
@ -3464,11 +3462,11 @@ Class DemolitionistMenu : GenericMenu
|
|||
else if ( (storeunits[i] > 1) || (storelist[i] is 'Ammo') ) str = String.Format("%dx %s",storeunits[i],def.GetTag());
|
||||
else str = def.GetTag();
|
||||
int clscol = Font.CR_WHITE;
|
||||
if ( storelist[i] is 'Weapon' ) clscol = Font.CR_GOLD;
|
||||
else if ( storelist[i] is 'MagAmmo' ) clscol = Font.CR_TAN;
|
||||
if ( storelist[i] is 'Weapon' ) clscol = SWWMUtility.IsVIPItemClass(storelist[i])?Font.FindFontColor('VIPGold'):Font.CR_GOLD;
|
||||
else if ( storelist[i] is 'MagAmmo' ) clscol = SWWMUtility.IsVIPItemClass(storelist[i])?Font.FindFontColor('VIPTan'):Font.CR_TAN;
|
||||
else if ( (storelist[i] is 'BackpackItem') || (storelist[i] is 'HammerspaceEmbiggener') ) clscol = Font.CR_DARKBROWN;
|
||||
else if ( storelist[i] is 'Ammo' ) clscol = Font.CR_BROWN;
|
||||
else if ( (storelist[i] is 'PowerupGiver') || (storelist[i] is 'AmmoFabricator') || def.bBIGPOWERUP ) clscol = Font.CR_PURPLE;
|
||||
else if ( storelist[i] is 'Ammo' ) clscol = SWWMUtility.IsVIPItemClass(storelist[i])?Font.FindFontColor('VIPBrown'):Font.CR_BROWN;
|
||||
else if ( (storelist[i] is 'PowerupGiver') || (storelist[i] is 'AmmoFabricator') || def.bBIGPOWERUP ) clscol = SWWMUtility.IsVIPItemClass(storelist[i])?Font.FindFontColor('VIPPurple'):Font.CR_PURPLE;
|
||||
else if ( (storelist[i] is 'Health') || (storelist[i] is 'HealthPickup') || (storelist[i] is 'SWWMHealth') ) clscol = Font.CR_RED;
|
||||
else if ( (storelist[i] is 'Armor') || (storelist[i] is 'SWWMSpareArmor') ) clscol = Font.CR_GREEN;
|
||||
Screen.DrawText(fnt,clscol,origin.x+xx,origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(i!=sel0)?Color(96,0,0,0):Color(0,0,0,0));
|
||||
|
|
|
|||
|
|
@ -121,10 +121,11 @@ Class SWWMStatScreen : StatusScreen abstract
|
|||
{
|
||||
// skip DLC tips for now
|
||||
if ( (i >= 59) && (i <= 68) ) continue;
|
||||
if ( (i >= 130) && (i <= 139) ) continue;
|
||||
ents.Push(i);
|
||||
}
|
||||
// account for skipped dlc tips (important, will crash otherwise)
|
||||
maxtip -= 10;
|
||||
maxtip -= 20;
|
||||
if ( pdata.lasttip.Size() >= maxtip )
|
||||
{
|
||||
// exclude last one, start over
|
||||
|
|
|
|||
|
|
@ -612,6 +612,8 @@ Class mkFlyingGib : Actor
|
|||
{
|
||||
A_Bleed();
|
||||
A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP);
|
||||
// oops we got squished
|
||||
if ( floorz >= ceilingz ) ExplodeMissile(null,null);
|
||||
}
|
||||
Goto Spawn;
|
||||
Death:
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ Class Demolitionist : PlayerPawn
|
|||
let type = (class<Ammo>)(AllActorClasses[i]);
|
||||
if ( !type || (type.GetParentClass() != "Ammo") )
|
||||
continue;
|
||||
// Only give if it's for a valid weapon, unless using "give everything"
|
||||
// Only give if it's for a valid weapon
|
||||
bool isvalid = false;
|
||||
for ( int j=0; j<validweapons.Size(); j++ )
|
||||
{
|
||||
|
|
@ -189,7 +189,7 @@ Class Demolitionist : PlayerPawn
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ( !isvalid && (giveall != ALL_YESYES) ) continue;
|
||||
if ( !isvalid ) continue;
|
||||
let ammoitem = FindInventory(type);
|
||||
if ( !ammoitem )
|
||||
{
|
||||
|
|
@ -207,19 +207,12 @@ Class Demolitionist : PlayerPawn
|
|||
if ( !type || (type.GetParentClass() != "MagAmmo") )
|
||||
continue;
|
||||
let pamo = GetDefaultByType(type).ParentAmmo;
|
||||
// Only give if it's for a valid weapon, unless using "give everything"
|
||||
// Only give if it's for a valid weapon
|
||||
bool isvalid = false;
|
||||
for ( int j=0; j<AllActorClasses.Size(); j++ )
|
||||
for ( int j=0; j<validweapons.Size(); j++ )
|
||||
{
|
||||
let type2 = (class<Weapon>)(AllActorClasses[j]);
|
||||
if ( !type2 ) continue;
|
||||
let rep = GetReplacement(type2);
|
||||
if ( (rep != type2) && !(rep is "DehackedPickup") ) continue;
|
||||
readonly<Weapon> weap = GetDefaultByType(type2);
|
||||
if ( !player.weapons.LocateWeapon(type2) || weap.bCheatNotWeapon || !weap.CanPickup(self) ) continue;
|
||||
let ready = weap.FindState("Ready");
|
||||
if ( !ready || !ready.ValidateSpriteFrame() ) continue;
|
||||
if ( (type2 is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(pamo) )
|
||||
readonly<Weapon> weap = GetDefaultByType(validweapons[j]);
|
||||
if ( (validweapons[j] is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(pamo) )
|
||||
{
|
||||
isvalid = true;
|
||||
break;
|
||||
|
|
@ -230,7 +223,7 @@ Class Demolitionist : PlayerPawn
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ( !isvalid && (giveall != ALL_YESYES) ) continue;
|
||||
if ( !isvalid ) continue;
|
||||
let magitem = FindInventory(type);
|
||||
if ( !magitem )
|
||||
{
|
||||
|
|
@ -341,6 +334,9 @@ Class Demolitionist : PlayerPawn
|
|||
{
|
||||
let type = (class<Inventory>)(AllActorClasses[i]);
|
||||
if ( !type ) continue;
|
||||
let rep = GetReplacement(type);
|
||||
// don't give replaced items
|
||||
if ( rep != type ) continue;
|
||||
// no fabricators before hexen
|
||||
if ( !(gameinfo.gametype&GAME_HEXEN) && (type is 'AmmoFabricator') ) continue;
|
||||
// no barriers outside doom
|
||||
|
|
@ -381,6 +377,7 @@ Class Demolitionist : PlayerPawn
|
|||
SWWMCollectible(item).propagated = true; // no score or anims
|
||||
if ( !item.CallTryPickup(self) ) item.Destroy();
|
||||
}
|
||||
if ( !giveall ) return;
|
||||
}
|
||||
if ( giveall ) return;
|
||||
let type = name;
|
||||
|
|
@ -882,6 +879,7 @@ Class Demolitionist : PlayerPawn
|
|||
{
|
||||
if ( !FindInventory("GrilledCheeseSafeguard") && !(healtimer%5) )
|
||||
A_SetHealth(health-1);
|
||||
if ( health <= 500 ) healcooldown = 20;
|
||||
}
|
||||
else if ( health > 200 )
|
||||
{
|
||||
|
|
@ -2515,7 +2513,7 @@ Class Demolitionist : PlayerPawn
|
|||
int score = 100;
|
||||
// last secret (this is called before counting it up, so have to subtract)
|
||||
let hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
if ( !deathmatch && (level.found_secrets == level.total_secrets-1) && (!hnd || !hnd.allsecrets) )
|
||||
if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.found_secrets == level.total_secrets-1) && (!hnd || !hnd.allsecrets) )
|
||||
{
|
||||
if ( hnd ) hnd.allsecrets = true;
|
||||
score = 1000;
|
||||
|
|
|
|||
|
|
@ -1538,6 +1538,7 @@ Class SWWMUtility
|
|||
if ( StringTable.Localize("$SWWM_SELLEXTRA_FEM") == "SWWM_SELLEXTRA_FEM" )
|
||||
return false;
|
||||
if ( i is 'DeepImpact' ) return true;
|
||||
if ( i is 'FistGun' ) return true;
|
||||
if ( i is 'ExplodiumGun' ) return true;
|
||||
if ( i is 'Wallbuster' ) return true;
|
||||
if ( i is 'HeavyMahSheenGun' ) return true;
|
||||
|
|
@ -1547,6 +1548,7 @@ Class SWWMUtility
|
|||
if ( i is 'CandyGun' ) return true;
|
||||
if ( i is 'RayKhom' ) return true;
|
||||
if ( i is 'GrandLance' ) return true;
|
||||
if ( i is 'RayKhom' ) return true;
|
||||
if ( i is 'HealthNuggetItem' ) return true;
|
||||
if ( i is 'ArmorNuggetItem' ) return true;
|
||||
if ( i is 'WarArmor' ) return true;
|
||||
|
|
@ -1651,9 +1653,9 @@ Class SWWMUtility
|
|||
return true;
|
||||
if ( target is 'SWWMCollectible' )
|
||||
return true;
|
||||
if ( (target is 'Ynykron') || (target is 'GrandLance') )
|
||||
if ( (target is 'Ynykron') || (target is 'GrandLance') || (target is 'RayKhom') )
|
||||
return true;
|
||||
if ( (target is 'GoldShell') || (target is 'YnykronAmmo') || (target is 'GrandAmmo') || (target is 'GrandSpear') )
|
||||
if ( (target is 'GoldShell') || (target is 'YnykronAmmo') || (target is 'GrandAmmo') || (target is 'GrandSpear') || (target is 'UltimatePod') || (target is 'UltimateAmmo') )
|
||||
return true;
|
||||
if ( target is 'Mykradvo' )
|
||||
return true;
|
||||
|
|
@ -1662,6 +1664,18 @@ Class SWWMUtility
|
|||
return false;
|
||||
}
|
||||
|
||||
// used by the store
|
||||
static bool IsVipItemClass( Class<Actor> target )
|
||||
{
|
||||
if ( (target is 'Ynykron') || (target is 'GrandLance') || (target is 'RayKhom') )
|
||||
return true;
|
||||
if ( (target is 'GoldShell') || (target is 'YnykronAmmo') || (target is 'GrandAmmo') || (target is 'GrandSpear') || (target is 'UltimatePod') || (target is 'UltimateAmmo') )
|
||||
return true;
|
||||
if ( target is 'Mykradvo' )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool IsScoreItem( Actor target )
|
||||
{
|
||||
if ( target is 'Key' )
|
||||
|
|
@ -1735,12 +1749,20 @@ Class SWWMUtility
|
|||
if ( CheckNeedsItem(b) ) return b;
|
||||
return Random[Replacements](weight,0)?a:b;
|
||||
}
|
||||
static private Class<Inventory> PickTrio( Class<Inventory> a, Class<Inventory> b, Class<Inventory> c, int weight1 = 1, int weight2 = 1 )
|
||||
{
|
||||
if ( CheckNeedsItem(a) ) return a;
|
||||
if ( CheckNeedsItem(b) ) return b;
|
||||
if ( CheckNeedsItem(c) ) return c;
|
||||
return Random[Replacements](weight1,0)?a:Random[Replacements](weight2,0)?b:c;
|
||||
}
|
||||
|
||||
static Class<Inventory> PickSWWMSlot1()
|
||||
{
|
||||
if ( CheckNeedsItem('ExplodiumGun',true) && Random[Replacements](0,1) ) return 'ExplodiumGun';
|
||||
/*if ( CheckNeedsItem('PlasmaBlast',true) && Random[Replacements](0,1) ) return 'PlasmaBlast';
|
||||
return PickPair('PusherWeapon','ItamexHammer');*/
|
||||
//if ( CheckNeedsItem('PlasmaBlast',true) && Random[Replacements](0,1) ) return 'PlasmaBlast';
|
||||
//return PickTrio('PusherWeapon','ItamexHammer','FistGun');
|
||||
//return PickPair('PusherWeapon','ItamexHammer');
|
||||
return 'PusherWeapon';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot2()
|
||||
|
|
@ -1765,6 +1787,7 @@ Class SWWMUtility
|
|||
}
|
||||
static Class<Inventory> PickSWWMSlot6()
|
||||
{
|
||||
//return PickTrip('Hellblazer','Quadravol','ModernSparkster');
|
||||
//return PickPair('Hellblazer','Quadravol');
|
||||
return 'Hellblazer';
|
||||
}
|
||||
|
|
@ -1780,23 +1803,41 @@ Class SWWMUtility
|
|||
}
|
||||
static Class<Inventory> PickSWWMSlot9()
|
||||
{
|
||||
//return PickTrio('CandyGun','RayKhom','MisterRifle');
|
||||
//return PickPair('CandyGun','RayKhom');
|
||||
return 'CandyGun';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot0()
|
||||
{
|
||||
//return PickPair('Ynykron','GrandLance');
|
||||
return 'Ynykron';
|
||||
/*if ( !CheckNeedsItem('Ynykron') )
|
||||
{
|
||||
if ( !CheckNeedsItem('GrandLance') )
|
||||
{
|
||||
if ( !CheckNeedsItem('RafanKos') )
|
||||
return PickSWWMSlot9();
|
||||
return 'RafanKos';
|
||||
}
|
||||
if ( !CheckNeedsItem('RafanKos') )
|
||||
return 'GrandLance';
|
||||
return PickPair('GrandLance','RafanKos');
|
||||
}
|
||||
return PickTrio('Ynykron','GrandLance','RafanKos');*/
|
||||
/*if ( !CheckNeedsItem('Ynykron') )
|
||||
{
|
||||
if ( !CheckNeedsItem('GrandLance') )
|
||||
return PickSWWMSlot9();
|
||||
return 'GrandLance';
|
||||
}
|
||||
return PickPair('Ynykron','GrandLance');*/
|
||||
return !CheckNeedsItem('Ynykron')?'CandyGun':'Ynykron';
|
||||
}
|
||||
static Class<Inventory> PickDoomSlot6()
|
||||
{
|
||||
//return PickPair(PickSWWMSlot7(),PickSWWMSlot8(),2);
|
||||
return PickPair('Sparkster','SilverBullet',2);
|
||||
return PickPair(PickSWWMSlot7(),PickSWWMSlot8(),2);
|
||||
}
|
||||
static Class<Inventory> PickDoomSlot7()
|
||||
{
|
||||
//return PickPair(PickSWWMSlot9(),PickSWWMSlot0(),2);
|
||||
return PickPair('CandyGun','Ynykron',2);
|
||||
return PickPair(PickSWWMSlot9(),PickSWWMSlot0(),2);
|
||||
}
|
||||
static Class<Inventory> PickHereticSlot3() // also used for Doom 1
|
||||
{
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@ Class HellblazerMissile : Actor
|
|||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
A_SprayDecal("BigRocketBlast",50);
|
||||
A_SetScale(4.5);
|
||||
SWWMUtility.DoExplosion(self,250,320000,200,90);
|
||||
SWWMUtility.DoExplosion(self,150,320000,200,90);
|
||||
A_NoGravity();
|
||||
A_QuakeEx(5,5,5,15,0,1500,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollIntensity:.8);
|
||||
A_StopSound(CHAN_BODY);
|
||||
|
|
@ -431,7 +431,7 @@ Class HellblazerCrackshot : HellblazerMissile
|
|||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
A_SprayDecal("BigRocketBlast",50);
|
||||
A_SetScale(3.);
|
||||
SWWMUtility.DoExplosion(self,200,320000,160,60);
|
||||
SWWMUtility.DoExplosion(self,120,320000,160,60);
|
||||
A_NoGravity();
|
||||
A_QuakeEx(4,4,4,12,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:400,rollIntensity:.6);
|
||||
A_StopSound(CHAN_BODY);
|
||||
|
|
@ -502,7 +502,7 @@ Class HellblazerRavager : HellblazerMissile
|
|||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
A_SprayDecal("HugeRocketBlast",50);
|
||||
A_SetScale(8.);
|
||||
SWWMUtility.DoExplosion(self,400,320000,300,120);
|
||||
SWWMUtility.DoExplosion(self,250,320000,300,120);
|
||||
A_NoGravity();
|
||||
A_QuakeEx(6,6,6,30,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:800,rollIntensity:1.);
|
||||
A_StopSound(CHAN_BODY);
|
||||
|
|
@ -895,7 +895,7 @@ Class HellblazerClusterMini : HellblazerMissile2
|
|||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
A_SprayDecal("BigRocketBlast",50);
|
||||
A_SetScale(2.5);
|
||||
SWWMUtility.DoExplosion(self,50,200000,150,60);
|
||||
SWWMUtility.DoExplosion(self,30,200000,150,60);
|
||||
A_NoGravity();
|
||||
A_QuakeEx(4,4,4,12,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:400,rollIntensity:.6);
|
||||
A_StopSound(CHAN_BODY);
|
||||
|
|
|
|||
|
|
@ -515,7 +515,7 @@ Class Wallbuster : SWWMWeapon
|
|||
// slug
|
||||
if ( !sst ) sst = new("SpreadSlugTracer");
|
||||
sst.ignoreme = self;
|
||||
sst.penetration = 200.;
|
||||
sst.penetration = 150.;
|
||||
a = FRandom[Wallbuster](0,360);
|
||||
s = FRandom[Wallbuster](0,.002);
|
||||
dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit();
|
||||
|
|
@ -606,7 +606,7 @@ Class Wallbuster : SWWMWeapon
|
|||
if ( !st ) st = new("SpreadgunTracer");
|
||||
st.ignoreme = self;
|
||||
// attempt to uniformize expected damage while reducing traces (mainly for performance)
|
||||
int expecteddmg = 150;
|
||||
int expecteddmg = 100;
|
||||
int numshot = max(21-howmany,5);
|
||||
int individualdmg = int(ceil(expecteddmg/double(numshot)));
|
||||
for ( int j=0; j<numshot; j++ )
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ Class Eviscerator : SWWMWeapon
|
|||
[x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4*y-5*z);
|
||||
int trail = CVar.GetCVar('swwm_funtrails',player).GetInt();
|
||||
for ( int i=0; i<40; i++ )
|
||||
for ( int i=0; i<20; i++ )
|
||||
{
|
||||
a = FRandom[Eviscerator](0,360);
|
||||
s = FRandom[Eviscerator](0,invoker.extended?.06:.3);
|
||||
|
|
|
|||
|
|
@ -480,8 +480,8 @@ Class EvisceratorProj : Actor
|
|||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
A_SprayDecal("BigRocketBlast",50);
|
||||
A_NoGravity();
|
||||
A_SetScale(3.5);
|
||||
SWWMUtility.DoExplosion(self,80,120000,200,80);
|
||||
A_SetScale(3.);
|
||||
SWWMUtility.DoExplosion(self,80,120000,150,80);
|
||||
A_QuakeEx(6,6,6,20,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.7);
|
||||
A_StartSound("eviscerator/shell",CHAN_WEAPON,attenuation:.5);
|
||||
A_StartSound("eviscerator/shell",CHAN_VOICE,attenuation:.3);
|
||||
|
|
@ -504,7 +504,7 @@ Class EvisceratorProj : Actor
|
|||
}
|
||||
int trail = 0;
|
||||
if ( target && target.player ) trail = CVar.GetCVar('swwm_funtrails',target.player).GetInt();
|
||||
for ( int i=0; i<40; i++ )
|
||||
for ( int i=0; i<20; i++ )
|
||||
{
|
||||
p = EvisceratorChunk(Spawn("EvisceratorChunk",level.Vec3Offset(pos,spawnofs)));
|
||||
p.bHITOWNER = true;
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ Class Ynykron : SWWMWeapon
|
|||
Weapon.SlotNumber 0;
|
||||
Weapon.SelectionOrder 9000;
|
||||
Weapon.UpSound "ynykron/select";
|
||||
Stamina 5000000;
|
||||
Stamina -5000000;
|
||||
Weapon.AmmoType1 "YnykronAmmo";
|
||||
Weapon.AmmoGive1 1;
|
||||
SWWMWeapon.DropAmmoType "YnykronAmmo";
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ Class Spreadgun : SWWMWeapon
|
|||
case 1:
|
||||
sst = new("SpreadSlugTracer");
|
||||
sst.ignoreme = self;
|
||||
sst.penetration = 150.;
|
||||
sst.penetration = 120.;
|
||||
a = FRandom[Spreadgun](0,360);
|
||||
s = FRandom[Spreadgun](0,.01);
|
||||
dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit();
|
||||
|
|
@ -632,7 +632,7 @@ Class Spreadgun : SWWMWeapon
|
|||
st.shootthroughlist.Clear();
|
||||
st.waterhitlist.Clear();
|
||||
st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,TRACE_HitSky);
|
||||
ProcessTraceHit(st,origin,dir,6,7000,bc:5);
|
||||
ProcessTraceHit(st,origin,dir,4,7000,bc:5);
|
||||
}
|
||||
for ( int i=0; i<16; i++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ Class DragonBreathArm : Actor
|
|||
let p = Spawn("DragonBreathPuff",pos);
|
||||
p.alpha *= .6+.4*(ReactionTime/20.);
|
||||
p.scale *= 3.5-2.5*(ReactionTime/20.);
|
||||
SWWMUtility.DoExplosion(self,4+(reactiontime/2),1000+200*reactiontime,120+5*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target);
|
||||
SWWMUtility.DoExplosion(self,4+(reactiontime/2),1000+200*reactiontime,90+5*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target);
|
||||
double spd = vel.length();
|
||||
vel = (vel*.4+(FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2))).unit()*spd;
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5);
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@ Class BiosparkBall : Actor
|
|||
{
|
||||
A_StopSound(CHAN_VOICE);
|
||||
A_AlertMonsters(swwm_uncapalert?0:5000);
|
||||
SWWMUtility.DoExplosion(self,60,20000,150,80,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,50,20000,150,80,flags:DE_HOWL);
|
||||
A_QuakeEx(6,6,6,16,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.8);
|
||||
A_StartSound("biospark/hit",CHAN_ITEM,attenuation:.8);
|
||||
A_StartSound("biospark/hit",CHAN_WEAPON,attenuation:.6);
|
||||
|
|
@ -598,7 +598,7 @@ Class BiosparkBall : Actor
|
|||
if ( special1 > 30 ) return;
|
||||
double factor = (30-special1)/30.;
|
||||
double invfct = 1.-factor;
|
||||
SWWMUtility.DoExplosion(self,20*factor,0.,150*invfct,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,15*factor,0.,150*invfct,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,0,-5000*factor,300*invfct);
|
||||
int numpt = int(Random[ExploS](16,32)*factor);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -709,7 +709,7 @@ Class BiosparkBeamImpact : Actor
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters(swwm_uncapalert?0:2000);
|
||||
SWWMUtility.DoExplosion(self,50,20000,100,40,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,40,20000,100,40,flags:DE_HOWL);
|
||||
A_QuakeEx(3,3,3,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.4);
|
||||
A_StartSound("biospark/beamhit",CHAN_ITEM,attenuation:1.1);
|
||||
A_StartSound("biospark/beamhit",CHAN_WEAPON,attenuation:.8);
|
||||
|
|
@ -762,7 +762,7 @@ Class BiosparkBeamImpact : Actor
|
|||
if ( special1 > 30 ) return;
|
||||
double factor = (30-special1)/30.;
|
||||
double invfct = 1.-factor;
|
||||
SWWMUtility.DoExplosion(self,15*factor,0.,50*invfct,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,10*factor,0.,50*invfct,flags:DE_HOWL);
|
||||
SWWMUtility.DoExplosion(self,0.,-5000*factor,100*invfct);
|
||||
int numpt = int(Random[ExploS](8,16)*factor);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
|
|||
|
|
@ -498,7 +498,7 @@ Class ExplodiumBulletImpact : Actor
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters(swwm_uncapalert?0:3000);
|
||||
SWWMUtility.DoExplosion(self,20,80000,90,40,DE_EXTRAZTHRUST);
|
||||
SWWMUtility.DoExplosion(self,20,40000,70,40,DE_EXTRAZTHRUST);
|
||||
A_QuakeEx(4,4,4,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2);
|
||||
A_StartSound("explodium/hit",CHAN_VOICE,attenuation:.6);
|
||||
A_StartSound("explodium/hit",CHAN_WEAPON,attenuation:.3);
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ Class CandyPop : Actor
|
|||
Spawn:
|
||||
BLPF B 3 NoDelay
|
||||
{
|
||||
SWWMUtility.DoExplosion(self,500,60000,250,60);
|
||||
SWWMUtility.DoExplosion(self,500,60000,180,60);
|
||||
Scale *= FRandom[ExploS](0.6,1.8);
|
||||
Scale.x *= RandomPick[ExploS](-1,1);
|
||||
Scale.y *= RandomPick[ExploS](-1,1);
|
||||
|
|
@ -318,7 +318,7 @@ Class TinyCandyPop : CandyPop
|
|||
Spawn:
|
||||
BLPF B 3 NoDelay
|
||||
{
|
||||
SWWMUtility.DoExplosion(self,200,32000,100,20);
|
||||
SWWMUtility.DoExplosion(self,200,32000,60,20);
|
||||
Scale *= FRandom[ExploS](0.6,1.8);
|
||||
Scale.x *= RandomPick[ExploS](-1,1);
|
||||
Scale.y *= RandomPick[ExploS](-1,1);
|
||||
|
|
@ -801,7 +801,7 @@ Class CandyBulletImpact : Actor
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters(swwm_uncapalert?0:9000);
|
||||
SWWMUtility.DoExplosion(self,900,48000,250,80,DE_EXTRAZTHRUST);
|
||||
SWWMUtility.DoExplosion(self,900,48000,150,80,DE_EXTRAZTHRUST);
|
||||
A_QuakeEx(6,6,6,15,0,300,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:0.2);
|
||||
A_StartSound("candygun/hit",CHAN_VOICE,attenuation:.25);
|
||||
A_StartSound("candygun/hit",CHAN_WEAPON,attenuation:.5);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue