Add distant item glows.
|
|
@ -101,6 +101,7 @@ nosave int swwm_numcolor_hp = 7; // font color for health numbers (default: blu
|
|||
nosave int swwm_numcolor_ap = 3; // font color for armor numbers (default: green)
|
||||
server int swwm_drlaskill = 3; // [DRLA Monsters] skill setting for monster spawns
|
||||
nosave bool swwm_itemsparkles = false; // visual aid for low visibility items
|
||||
nosave bool swwm_itemglows = false; // distant items glow
|
||||
server bool swwm_singlefirst = false; // single weapons are selected before dual ones, has to be a server cvar due to limitations
|
||||
nosave bool swwm_uniqstats = false; // only list stats from the same map once, rather than for each single visit
|
||||
nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - no filter, 1 - obscure text, 2 - don't show
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@ SWWM_BUTTSFX = "Clapping Buttcheeks";
|
|||
SWWM_ONDEMANDAMMO = "On Demand Ammo Placement";
|
||||
SWWM_BUMP = "FOV Bump Strength";
|
||||
SWWM_ENGINE = "Engine";
|
||||
SWWM_ITEMGLOWS = "Distant Items Glow";
|
||||
SWWM_MMTITLE = "Minimap Settings";
|
||||
SWWM_MM_ENABLE = "Show Minimap";
|
||||
SWWM_MM_ROTATE = "Rotate Minimap";
|
||||
|
|
@ -336,6 +337,7 @@ TOOLTIP_SWWM_BUTTSFX = "The Demolitionist's buttcheeks will VERY AUDIBLY clap up
|
|||
TOOLTIP_SWWM_ONDEMANDAMMO = "Only ammo for weapons that are currently available (either in the player's inventory or in the map) will spawn in the map. May cause long load times on large maps.";
|
||||
TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of the FOV is from weapon recoil and other actions.";
|
||||
TOOLTIP_SWWM_ENGINE = "Don't touch this.";
|
||||
TOOLTIP_SWWM_ITEMGLOWS = "If enabled, items that are far away from the player will display a shimmering glow (requires a map restart to take full effect).";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter.";
|
||||
TOOLTIP_SWWM_MM_ROTATE = "Rotates the minimap view.";
|
||||
TOOLTIP_SWWM_MM_GRID = "Shows a 128x128 grid on the minimap.";
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ SWWM_BUTTSFX = "Azote de Nalgas";
|
|||
SWWM_ONDEMANDAMMO = "Colocar Munición por Demanda";
|
||||
SWWM_BUMP = "Intensidad de Sacudida de FOV";
|
||||
SWWM_ENGINE = "Motor";
|
||||
SWWM_ITEMGLOWS = "Los Ítems Lejanos Brillan";
|
||||
SWWM_MMTITLE = "Opciones de Minimapa";
|
||||
SWWM_MM_ENABLE = "Mostrar Minimapa";
|
||||
SWWM_MM_ROTATE = "Rotar Minimapa";
|
||||
|
|
@ -335,6 +336,7 @@ TOOLTIP_SWWM_BUTTSFX = "Las nalgas de la Demolicionista emitiran un azote MUY SO
|
|||
TOOLTIP_SWWM_ONDEMANDAMMO = "Solo coloca en el mapa munición para armas que estén actualmente disponibles (tanto en el inventario del jugador como en el mapa). Puede causar tiempos de carga largos en mapas grandes.";
|
||||
TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV por el retroceso de armas y otras acciones.";
|
||||
TOOLTIP_SWWM_ENGINE = "No toques esto.";
|
||||
TOOLTIP_SWWM_ITEMGLOWS = "Al activar, los ítems que se encuentren lejos del jugador mostrarán un ligero destello (requiere un reinicio del mapa para tener efecto completamente).";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación.";
|
||||
TOOLTIP_SWWM_MM_ROTATE = "Gira la vista del minimapa.";
|
||||
TOOLTIP_SWWM_MM_GRID = "Muestra una cuadrícula de 128x128 en el minimapa.";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r573 \cu(Fri 9 Jul 11:29:37 CEST 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r573 \cu(2021-07-09 11:29:37)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r574 \cu(Fri 9 Jul 13:21:28 CEST 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r574 \cu(2021-07-09 13:21:28)\c-";
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ OptionMenu "SWWMOptionMenu"
|
|||
Option "$SWWM_SHADOWS", "swwm_shadows", "YesNo"
|
||||
ScaleSlider "$SWWM_SHADOWDIST", "swwm_shadowdist", -1, 4000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
|
||||
Option "$SWWM_ITEMSPARKLES", "swwm_itemsparkles", "YesNo"
|
||||
Option "$SWWM_ITEMGLOWS", "swwm_itemglows", "YesNo"
|
||||
Option "$SWWM_BLOOD", "swwm_blood", "YesNo"
|
||||
ScaleSlider "$SWWM_MAXBLOOD", "swwm_maxblood", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
|
||||
ScaleSlider "$SWWM_MAXGIBS", "swwm_maxgibs", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
|
||||
|
|
|
|||
BIN
sprites/BLPSA0.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
sprites/BLPSB0.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
sprites/BLPSC0.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
sprites/BLPSD0.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
sprites/BLPSE0.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
sprites/BLPSF0.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
sprites/BLPSG0.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
sprites/BLPSH0.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
|
@ -195,60 +195,64 @@ extend Class SWWMHandler
|
|||
return;
|
||||
}
|
||||
// dump the values of all mod RNGs (might help someday to track down what desyncs)
|
||||
Console.Printf("\cxSWWM GZ RNG dump for player %d (\c-%s\cx):\c-",consoleplayer,players[consoleplayer].GetUserName());
|
||||
Console.Printf("bdscreen: %08x",Random2[bdscreen]());
|
||||
Console.Printf("Blood: %08x",Random2[Blood]());
|
||||
Console.Printf("Boolet: %08x",Random2[Boolet]());
|
||||
Console.Printf("BrainExplode: %08x",Random2[BrainExplode]());
|
||||
Console.Printf("Bundle: %08x",Random2[Bundle]());
|
||||
Console.Printf("Candy: %08x",Random2[Candy]());
|
||||
Console.Printf("Chancebox: %08x",Random2[Chancebox]());
|
||||
Console.Printf("ClientSparkles: %08x",Random2[ClientSparkles]());
|
||||
Console.Printf("Corrode: %08x",Random2[Corrode]());
|
||||
Console.Printf("DemoLines: %08x",Random2[DemoLines]());
|
||||
Console.Printf("DropChance: %08x",Random2[DropChance]());
|
||||
Console.Printf("DoBlast: %08x",Random2[DoBlast]());
|
||||
Console.Printf("Eviscerator: %08x",Random2[Eviscerator]());
|
||||
Console.Printf("Explodium: %08x",Random2[Explodium]());
|
||||
Console.Printf("ExploS: %08x",Random2[ExploS]());
|
||||
Console.Printf("ExtraMissiles: %08x",Random2[ExtraMissiles]());
|
||||
Console.Printf("FInTheChat: %08x",Random2[FInTheChat]());
|
||||
Console.Printf("FlameT: %08x",Random2[FlameT]());
|
||||
Console.Printf("Flicker: %08x",Random2[Flicker]());
|
||||
Console.Printf("FunTags: %08x",Random2[FunTags]());
|
||||
Console.Printf("Gesture: %08x",Random2[Gesture]());
|
||||
Console.Printf("Gibs: %08x",Random2[Gibs]());
|
||||
Console.Printf("GoldDrop: %08x",Random2[GoldDrop]());
|
||||
Console.Printf("Goldy: %08x",Random2[Goldy]());
|
||||
Console.Printf("GunFlash: %08x",Random2[GunFlash]());
|
||||
Console.Printf("hdscreen: %08x",Random2[hdscreen]());
|
||||
Console.Printf("Hellblazer: %08x",Random2[Hellblazer]());
|
||||
Console.Printf("HudStuff: %08x",Random2[HudStuff]());
|
||||
Console.Printf("Impact: %08x",Random2[Impact]());
|
||||
Console.Printf("InterArt: %08x",Random2[InterArt]());
|
||||
Console.Printf("Invinciball: %08x",Random2[Invinciball]());
|
||||
Console.Printf("Junk: %08x",Random2[Junk]());
|
||||
Console.Printf("Moth: %08x",Random2[Moth]());
|
||||
Console.Printf("Nugget: %08x",Random2[Nugget]());
|
||||
Console.Printf("Parry: %08x",Random2[Parry]());
|
||||
Console.Printf("Ponch: %08x",Random2[Ponch]());
|
||||
Console.Printf("Puff: %08x",Random2[Puff]());
|
||||
Console.Printf("Pusher: %08x",Random2[Pusher]());
|
||||
Console.Printf("Rage: %08x",Random2[Rage]());
|
||||
Console.Printf("Replacements: %08x",Random2[Replacements]());
|
||||
Console.Printf("ScoreBits: %08x",Random2[ScoreBits]());
|
||||
Console.Printf("ShellDrop: %08x",Random2[ShellDrop]());
|
||||
Console.Printf("Shivers: %08x",Random2[Shivers]());
|
||||
Console.Printf("Silverbullet: %08x",Random2[Silverbullet]());
|
||||
Console.Printf("SpareShells: %08x",Random2[SpareShells]());
|
||||
Console.Printf("Sparkster: %08x",Random2[Sparkster]());
|
||||
Console.Printf("Spread: %08x",Random2[Spread]());
|
||||
Console.Printf("Spreadgun: %08x",Random2[Spreadgun]());
|
||||
Console.Printf("TUID: %08x",Random2[TUID]());
|
||||
Console.Printf("UIStuff: %08x",Random2[UIStuff]());
|
||||
Console.Printf("Wallbuster: %08x",Random2[Wallbuster]());
|
||||
Console.Printf("WallbusterMenu: %08x",Random2[WallbusterMenu]());
|
||||
Console.Printf("Ynykron: %08x",Random2[Ynykron]());
|
||||
String msg = String.Format("\cxSWWM GZ RNG dump for player %d (\c-%s\cx):\c-",consoleplayer,players[consoleplayer].GetUserName());
|
||||
msg.AppendFormat("\n\n\cfPlay RNG (will cause desyncs if mismatched):\c-\n");
|
||||
msg.AppendFormat("\nBlood: %08x",Random2[Blood]());
|
||||
msg.AppendFormat("\nBoolet: %08x",Random2[Boolet]());
|
||||
msg.AppendFormat("\nBundle: %08x",Random2[Bundle]());
|
||||
msg.AppendFormat("\nCandy: %08x",Random2[Candy]());
|
||||
msg.AppendFormat("\nChancebox: %08x",Random2[Chancebox]());
|
||||
msg.AppendFormat("\nCorrode: %08x",Random2[Corrode]());
|
||||
msg.AppendFormat("\nDemolitionist: %08x",Random2[Demolitionist]());
|
||||
msg.AppendFormat("\nDoBlast: %08x",Random2[DoBlast]());
|
||||
msg.AppendFormat("\nDropChance: %08x",Random2[DropChance]());
|
||||
msg.AppendFormat("\nEviscerator: %08x",Random2[Eviscerator]());
|
||||
msg.AppendFormat("\nExplodium: %08x",Random2[Explodium]());
|
||||
msg.AppendFormat("\nExploS: %08x",Random2[ExploS]());
|
||||
msg.AppendFormat("\nExtraMissiles: %08x",Random2[ExtraMissiles]());
|
||||
msg.AppendFormat("\nFlameT: %08x",Random2[FlameT]());
|
||||
msg.AppendFormat("\nFlicker: %08x",Random2[Flicker]());
|
||||
msg.AppendFormat("\nGesture: %08x",Random2[Gesture]());
|
||||
msg.AppendFormat("\nGibs: %08x",Random2[Gibs]());
|
||||
msg.AppendFormat("\nGoldDrop: %08x",Random2[GoldDrop]());
|
||||
msg.AppendFormat("\nGoldy: %08x",Random2[Goldy]());
|
||||
msg.AppendFormat("\nGunFlash: %08x",Random2[GunFlash]());
|
||||
msg.AppendFormat("\nHellblazer: %08x",Random2[Hellblazer]());
|
||||
msg.AppendFormat("\nImpact: %08x",Random2[Impact]());
|
||||
msg.AppendFormat("\nInvinciball: %08x",Random2[Invinciball]());
|
||||
msg.AppendFormat("\nJunk: %08x",Random2[Junk]());
|
||||
msg.AppendFormat("\nMoth: %08x",Random2[Moth]());
|
||||
msg.AppendFormat("\nMykradvo: %08x",Random2[Mykradvo]());
|
||||
msg.AppendFormat("\nNugget: %08x",Random2[Nugget]());
|
||||
msg.AppendFormat("\nParry: %08x",Random2[Parry]());
|
||||
msg.AppendFormat("\nPonch: %08x",Random2[Ponch]());
|
||||
msg.AppendFormat("\nPuff: %08x",Random2[Puff]());
|
||||
msg.AppendFormat("\nPusher: %08x",Random2[Pusher]());
|
||||
msg.AppendFormat("\nRage: %08x",Random2[Rage]());
|
||||
msg.AppendFormat("\nReplacements: %08x",Random2[Replacements]());
|
||||
msg.AppendFormat("\nShellDrop: %08x",Random2[ShellDrop]());
|
||||
msg.AppendFormat("\nShivers: %08x",Random2[Shivers]());
|
||||
msg.AppendFormat("\nSilverbullet: %08x",Random2[Silverbullet]());
|
||||
msg.AppendFormat("\nSpareShells: %08x",Random2[SpareShells]());
|
||||
msg.AppendFormat("\nSparkster: %08x",Random2[Sparkster]());
|
||||
msg.AppendFormat("\nSpread: %08x",Random2[Spread]());
|
||||
msg.AppendFormat("\nSpreadgun: %08x",Random2[Spreadgun]());
|
||||
msg.AppendFormat("\nWallbuster: %08x",Random2[Wallbuster]());
|
||||
msg.AppendFormat("\nYnykron: %08x",Random2[Ynykron]());
|
||||
msg.AppendFormat("\n\n\cfUI RNG (should not cause desyncs if mismatched):\c-\n");
|
||||
msg.AppendFormat("\nbdscreen: %08x [UI]",Random2[bdscreen]());
|
||||
msg.AppendFormat("\nClientSparkles: %08x [UI]",Random2[ClientSparkles]());
|
||||
msg.AppendFormat("\nDemoLines: %08x [UI]",Random2[DemoLines]());
|
||||
msg.AppendFormat("\nFInTheChat: %08x [UI]",Random2[FInTheChat]());
|
||||
msg.AppendFormat("\nFunTags: %08x [UI]",Random2[FunTags]());
|
||||
msg.AppendFormat("\nhdscreen: %08x [UI]",Random2[hdscreen]());
|
||||
msg.AppendFormat("\nHudStuff: %08x [UI]",Random2[HudStuff]());
|
||||
msg.AppendFormat("\nInterArt: %08x [UI]",Random2[InterArt]());
|
||||
msg.AppendFormat("\nScoreBits: %08x [UI]",Random2[ScoreBits]());
|
||||
msg.AppendFormat("\nTUID: %08x [UI]",Random2[TUID]());
|
||||
msg.AppendFormat("\nUIStuff: %08x [UI]",Random2[UIStuff]());
|
||||
msg.AppendFormat("\nWallbusterMenu: %08x [UI]",Random2[WallbusterMenu]());
|
||||
Console.Printf(msg);
|
||||
return;
|
||||
}
|
||||
else if ( e.Name ~== "swwmprofilehandler" )
|
||||
|
|
|
|||
|
|
@ -248,7 +248,15 @@ extend Class SWWMHandler
|
|||
d.bNOGRAVITY = e.Thing.bNOGRAVITY;
|
||||
}
|
||||
if ( e.Thing is 'Inventory' )
|
||||
{
|
||||
CopyFloatBob(e.Thing);
|
||||
if ( (Inventory(e.Thing).PickupFlash is 'SWWMPickupFlash') && swwm_itemglows )
|
||||
{
|
||||
let p = Actor.Spawn(Inventory(e.Thing).PickupFlash,e.Thing.Vec3Offset(0,0,16));
|
||||
p.target = e.Thing;
|
||||
p.SetStateLabel("Pickup");
|
||||
}
|
||||
}
|
||||
if ( swwm_doomfall && e.Thing.bISMONSTER )
|
||||
e.Thing.bFALLDAMAGE = true;
|
||||
if ( e.Thing is 'Key' )
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
int midtic, midtype;
|
||||
|
||||
bool koraxhack;
|
||||
int ignoremsg;
|
||||
|
||||
double minimapzoom, oldminimapzoom;
|
||||
// minimap constants
|
||||
|
|
@ -180,18 +179,11 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
|
||||
override bool ProcessNotify( EPrintLevel printlevel, String outline )
|
||||
{
|
||||
if ( ignoremsg )
|
||||
{
|
||||
ignoremsg--;
|
||||
return true;
|
||||
}
|
||||
// this ignoring stuff has to be a thing until we can set printlevels directly
|
||||
if ( outline.Left(21) == "SWWMHandler profiling" )
|
||||
return true;
|
||||
if ( outline.left(18) == "\cxSWWM GZ RNG dump" )
|
||||
{
|
||||
ignoremsg = 52;
|
||||
return true;
|
||||
}
|
||||
if ( koraxhack )
|
||||
{
|
||||
// treat as chat message
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ Class AmmoFabricator : Inventory abstract
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
int budget, pertype, maxunitprice;
|
||||
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ Class SWWMSpareArmor : Inventory abstract
|
|||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
Class<SWWMArmor> giveme;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ Class SWWMHealth : Inventory abstract
|
|||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
// can't use the Health class for whatever reason
|
||||
// nice parser you got there I guess?
|
||||
|
|
|
|||
|
|
@ -165,6 +165,22 @@ Class SWWMRespawnTimer : Actor
|
|||
}
|
||||
}
|
||||
|
||||
Mixin Class SWWMPickupGlow
|
||||
{
|
||||
override Inventory CreateTossable( int amt )
|
||||
{
|
||||
let ret = Super.CreateTossable(amt);
|
||||
// reattach our glow if we became a pickup
|
||||
if ( (ret == self) && (PickupFlash is 'SWWMPickupFlash') && swwm_itemglows )
|
||||
{
|
||||
let p = Spawn(PickupFlash,Vec3Offset(0,0,16));
|
||||
p.target = self;
|
||||
p.SetStateLabel("Pickup");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
Mixin Class SWWMRespawn
|
||||
{
|
||||
override void Hide()
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ Class GrilledCheeseSandwich : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
// for falling off cliffs and others
|
||||
// last 5 seconds of safe positions
|
||||
|
|
@ -452,6 +453,7 @@ Class GhostArtifact : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
Default
|
||||
{
|
||||
|
|
@ -629,6 +631,7 @@ Class GravitySuppressor : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
override bool Use( bool pickup )
|
||||
{
|
||||
|
|
@ -867,6 +870,7 @@ Class FuckingInvinciball : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
override Inventory CreateCopy( Actor other )
|
||||
{
|
||||
|
|
@ -1154,6 +1158,7 @@ Class Ragekit : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
override bool Use( bool pickup )
|
||||
{
|
||||
|
|
@ -1864,6 +1869,7 @@ Class SWWMLamp : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
bool bActive, bActivated;
|
||||
TextureID OnIcon;
|
||||
|
|
@ -2143,6 +2149,7 @@ Class EBarrier : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
override bool Use( bool pickup )
|
||||
{
|
||||
|
|
@ -2686,6 +2693,7 @@ Class Mykradvo : Inventory
|
|||
Mixin SWWMOverlapPickupSound;
|
||||
Mixin SWWMUseToPickup;
|
||||
Mixin SWWMRespawn;
|
||||
Mixin SWWMPickupGlow;
|
||||
|
||||
Actor ringa[2];
|
||||
|
||||
|
|
|
|||
|
|
@ -1029,31 +1029,53 @@ Class SWWMPickupFlash : Actor
|
|||
Super.PostBeginPlay();
|
||||
frame = Args[0];
|
||||
}
|
||||
action void A_Sparkle()
|
||||
{
|
||||
// offset up
|
||||
SetOrigin(Vec3Offset(0,0,16),false);
|
||||
roll = FRandom[ExploS](0,360);
|
||||
scale *= FRandom[ExploS](.9,1.1);
|
||||
scale.x *= RandomPick[ExploS](-1,1);
|
||||
scale.y *= RandomPick[ExploS](-1,1);
|
||||
int numpt = Random[ExploS](8,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](.3,8);
|
||||
let s = Spawn("SWWMSmallSmoke",pos);
|
||||
s.vel = pvel;
|
||||
s.SetShade(Color(Args[1],Args[2],Args[3])*Random[ExploS](64,85));
|
||||
s.A_SetRenderStyle(s.alpha,STYLE_AddShaded);
|
||||
s.scale *= 3.;
|
||||
s.alpha *= .5;
|
||||
}
|
||||
}
|
||||
action void A_Shimmer()
|
||||
{
|
||||
if ( !target || Inventory(target).Owner )
|
||||
{
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( target.bINVISIBLE )
|
||||
{
|
||||
bINVISIBLE = true;
|
||||
return;
|
||||
}
|
||||
else if ( bINVISIBLE ) bINVISIBLE = false;
|
||||
SetOrigin(target.Vec3Offset(0,0,16+target.GetBobOffset()),true);
|
||||
A_SetScale(FRandom[ClientSparkles](.9,1.1)*(max(target.radius,target.height)/16.));
|
||||
alpha = FRandom[ClientSparkles](.9,1.)*clamp((max(0,Distance3DSquared(players[consoleplayer].Camera)-40000.)/160000000.)**.25,0.,1.);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPF # 1 Bright NoDelay
|
||||
{
|
||||
// offset up
|
||||
SetOrigin(Vec3Offset(0,0,16),false);
|
||||
roll = FRandom[ExploS](0,360);
|
||||
scale *= FRandom[ExploS](0.9,1.1);
|
||||
scale.x *= RandomPick[ExploS](-1,1);
|
||||
scale.y *= RandomPick[ExploS](-1,1);
|
||||
int numpt = Random[ExploS](8,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](.3,8);
|
||||
let s = Spawn("SWWMSmallSmoke",pos);
|
||||
s.vel = pvel;
|
||||
s.SetShade(Color(Args[1],Args[2],Args[3])*Random[ExploS](64,85));
|
||||
s.A_SetRenderStyle(s.alpha,STYLE_AddShaded);
|
||||
s.scale *= 3.;
|
||||
s.alpha *= .5;
|
||||
}
|
||||
}
|
||||
BLPF # 0 Bright;
|
||||
BLPF # 1 Bright A_Sparkle();
|
||||
BLPF # 1 Bright A_FadeOut(.2);
|
||||
Wait;
|
||||
Pickup:
|
||||
BLPS # 1 Bright A_Shimmer();
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
Class SWWMPinkPickupFlash : SWWMPickupFlash
|
||||
|
|
|
|||
|
|
@ -404,7 +404,15 @@ Class SWWMWeapon : Weapon abstract
|
|||
// disallow dropping if weapon isn't ready for switching
|
||||
if ( (Owner.player.ReadyWeapon == self) && (!(Owner.player.WeaponState&WF_WEAPONSWITCHOK) || (Owner.player.WeaponState&WF_DISABLESWITCH)) )
|
||||
return null;
|
||||
return Super.CreateTossable(amt);
|
||||
let ret = Super.CreateTossable(amt);
|
||||
// reattach our glow if we became a pickup
|
||||
if ( (ret == self) && (PickupFlash is 'SWWMPickupFlash') && swwm_itemglows )
|
||||
{
|
||||
let p = Spawn(PickupFlash,Vec3Offset(0,0,16));
|
||||
p.target = self;
|
||||
p.SetStateLabel("Pickup");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
Default
|
||||
{
|
||||
|
|
|
|||
|
|
@ -231,17 +231,27 @@ Class ExplodiumGun : SWWMWeapon
|
|||
|
||||
override Inventory CreateTossable( int amt )
|
||||
{
|
||||
// disallow dropping if weapon isn't ready for switching
|
||||
if ( (Owner.player.ReadyWeapon == self) && (!(Owner.player.WeaponState&WF_WEAPONSWITCHOK) || (Owner.player.WeaponState&WF_DISABLESWITCH)) )
|
||||
return null;
|
||||
let copy = ExplodiumGun(Inventory.CreateTossable(1));
|
||||
if ( !copy ) return null;
|
||||
// destroy sister weapon if we're removing ourselves
|
||||
if ( copy == self )
|
||||
{
|
||||
copy.preinit = true; // need this in case we get picked up again out of order
|
||||
preinit = true; // need this in case we get picked up again out of order
|
||||
if ( SisterWeapon )
|
||||
{
|
||||
SisterWeapon.SisterWeapon = null;
|
||||
SisterWeapon.Destroy();
|
||||
}
|
||||
// reattach our glow if we became a pickup
|
||||
if ( (PickupFlash is 'SWWMPickupFlash') && swwm_itemglows )
|
||||
{
|
||||
let p = Spawn(PickupFlash,Vec3Offset(0,0,16));
|
||||
p.target = self;
|
||||
p.SetStateLabel("Pickup");
|
||||
}
|
||||
}
|
||||
else if ( SisterWeapon )
|
||||
{
|
||||
|
|
|
|||