From 4ea4eb0e3bb1cd6efe125e5f2330261672a56097 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Mon, 27 Aug 2018 20:15:23 +0200 Subject: [PATCH] Migrate replacements to CheckReplacement. Added support for bridge actors on Biorifle (may be a bit glitchy). Corrected air movement, added UT jump height, set dodge height to actual UT value. --- textures.ges | 2 + zscript/armoritems.zsc | 8 +-- zscript/biorifle.zsc | 139 +++++++++++++++++++++++++++++------- zscript/chainsaw.zsc | 9 --- zscript/enforcer.zsc | 4 +- zscript/flakcannon.zsc | 26 ------- zscript/healitems.zsc | 8 +-- zscript/impacthammer.zsc | 2 +- zscript/minigun.zsc | 27 ------- zscript/powerups.zsc | 12 ++-- zscript/pulsegun.zsc | 18 ----- zscript/shockrifle.zsc | 2 +- zscript/utcommon.zsc | 138 +++++++++++++++++++++++++++++------ zscript/warheadlauncher.zsc | 2 +- 14 files changed, 251 insertions(+), 146 deletions(-) diff --git a/textures.ges b/textures.ges index 6a1367d..8c9530d 100644 --- a/textures.ges +++ b/textures.ges @@ -54,6 +54,8 @@ Sprite "GELXI0",1,1{} Sprite "GELXJ0",1,1{} Sprite "GELXK0",1,1{} Sprite "GELXL0",1,1{} +Sprite "BIOPA0",1,1{} +Sprite "BIOPB0",1,1{} Sprite "BIOSA0",1,1{} Sprite "BIOSB0",1,1{} Sprite "BIOSC0",1,1{} diff --git a/zscript/armoritems.zsc b/zscript/armoritems.zsc index 933abf7..24f9ba5 100644 --- a/zscript/armoritems.zsc +++ b/zscript/armoritems.zsc @@ -26,7 +26,7 @@ Class UTArmor : Armor } } -Class UTArmorBonus : UTArmor replaces ArmorBonus +Class UTArmorBonus : UTArmor { override void AbsorbDamage( int damage, Name damageType, out int newdamage ) { @@ -53,7 +53,7 @@ Class UTArmorBonus : UTArmor replaces ArmorBonus } } -Class UTThighPads : UTArmor replaces GreenArmor +Class UTThighPads : UTArmor { override bool HandlePickup( Inventory item ) { @@ -92,7 +92,7 @@ Class UTThighPads : UTArmor replaces GreenArmor } } -Class UTBodyArmor : UTArmor replaces BlueArmor +Class UTBodyArmor : UTArmor { override bool HandlePickup( Inventory item ) { @@ -131,7 +131,7 @@ Class UTBodyArmor : UTArmor replaces BlueArmor } } -Class UTShieldBelt : UTArmor replaces Megasphere +Class UTShieldBelt : UTArmor { override void AbsorbDamage( int damage, Name damageType, out int newdamage ) { diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index 86c96d6..9bf3e6e 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -1,30 +1,3 @@ -Class Tier3Ammo : RandomSpawner2 replaces Shell -{ - Default - { - DropItem "BioAmmo2", 255, 1; - DropItem "ShockAmmo2", 255, 1; - } -} -Class Tier3Ammo2 : RandomSpawner2 replaces ShellBox -{ - Default - { - DropItem "BioAmmo", 255, 1; - DropItem "ShockAmmo", 255, 1; - } -} - -Class Tier3Weapon : RandomSpawner2 replaces Shotgun -{ - Default - { - DropItem "BioRifle", 255, 1; - DropItem "ShockRifle", 255, 1; - } -} -Class Tier3Weapon2 : Tier3Weapon replaces SuperShotgun {} - Class BioAmmo : Ammo { Default @@ -214,6 +187,9 @@ Class BioGel : Actor double atz; double rollvel, pitchvel, yawvel; Vector3 normal; + Actor atbridge; + bool onbridge; + Vector3 atbridgeofs; override void PostBeginPlay() { @@ -253,6 +229,15 @@ Class BioGel : Actor } if ( deadtimer > -2 ) { + if ( onbridge ) // attempt to follow the movement of the bridge (if it's moving) + { + if ( atbridge ) + { + if ( !Warp(atbridge,atbridgeofs.x,atbridgeofs.y,atbridgeofs.z,0,WARPF_ABSOLUTEOFFSET|WARPF_USECALLERANGLE|WARPF_COPYINTERPOLATION) ) + deadtimer = min(deadtimer,0); + } + else deadtimer = min(deadtimer,0); + } if ( atline ) // attempt to follow the movement of the line { if ( atpart == 1 ) @@ -376,6 +361,105 @@ Class BioGel : Actor hittype = HIT_CEILING; else hittype = HIT_FLOOR; } + else if ( tracer && tracer.bACTLIKEBRIDGE ) + { + atbridge = tracer; + onbridge = true; + if ( (pos.x+radius) <= (atbridge.pos.x-atbridge.radius) ) + { + // west side + normal = (-1,0,0); + SetOrigin((atbridge.pos.x-atbridge.radius,pos.y,pos.z),false); + atbridgeofs = pos-atbridge.pos; + angle = 180; + pitch = 0; + roll = 180; // otherwise it slides upwards (UT changes roll like this too) + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_WALL; + } + else if ( (pos.x-radius) >= (atbridge.pos.x+atbridge.radius) ) + { + // east side + normal = (1,0,0); + SetOrigin((atbridge.pos.x+atbridge.radius,pos.y,pos.z),false); + atbridgeofs = pos-atbridge.pos; + angle = 0; + pitch = 0; + roll = 180; // otherwise it slides upwards (UT changes roll like this too) + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_WALL; + } + else if ( (pos.y+radius) <= (atbridge.pos.y-atbridge.radius) ) + { + // north side + normal = (0,-1,0); + SetOrigin((pos.x,atbridge.pos.y-atbridge.radius,pos.z),false); + atbridgeofs = pos-atbridge.pos; + angle = 270; + pitch = 0; + roll = 180; // otherwise it slides upwards (UT changes roll like this too) + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_WALL; + } + else if ( (pos.y-radius) >= (atbridge.pos.y+atbridge.radius) ) + { + // south side + normal = (0,1,0); + SetOrigin((pos.x,atbridge.pos.y+atbridge.radius,pos.z),false); + atbridgeofs = pos-atbridge.pos; + angle = 90; + pitch = 0; + roll = 180; // otherwise it slides upwards (UT changes roll like this too) + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_WALL; + } + else if ( pos.z >= (atbridge.pos.z+atbridge.height) ) + { + // top of actor + normal = (0,0,1); + SetOrigin((pos.x,pos.y,atbridge.pos.z+atbridge.height),false); + atbridgeofs = pos-atbridge.pos; + pitch = -90; + angle = 0; + roll = FRandom[GES](0,360); + hittype = HIT_FLOOR; + } + else if ( (pos.z+height) <= atbridge.pos.z ) + { + // bottom of actor + normal = (0,0,-1); + SetOrigin((pos.x,pos.y,atbridge.pos.z),false); + pitch = 90; + angle = 0; + roll = FRandom[GES](0,360); + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_CEILING; + } + else + { + // inside of actor, just shove to the top or bottom based on our Z velocity + if ( vel.z <= 0 ) + { + normal = (0,0,1); + SetOrigin((pos.x,pos.y,atbridge.pos.z+atbridge.height),false); + atbridgeofs = pos-atbridge.pos; + pitch = -90; + angle = 0; + roll = FRandom[GES](0,360); + hittype = HIT_FLOOR; + } + else + { + normal = (0,0,-1); + SetOrigin((pos.x,pos.y,atbridge.pos.z),false); + pitch = 90; + angle = 0; + roll = FRandom[GES](0,360); + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_CEILING; + } + } + } else { SetStateLabel("XDeath"); @@ -453,6 +537,7 @@ Class BioGel : Actor +FORCEXYBILLBOARD; +MOVEWITHSECTOR; +NODAMAGETHRUST; + +HITTRACER; } States { diff --git a/zscript/chainsaw.zsc b/zscript/chainsaw.zsc index c1964d9..ba1d06d 100644 --- a/zscript/chainsaw.zsc +++ b/zscript/chainsaw.zsc @@ -1,12 +1,3 @@ -Class Tier1Weapon : RandomSpawner2 replaces Chainsaw -{ - Default - { - DropItem "UTChainsaw", 255, 1; - DropItem "Enforcer", 255, 1; - } -} - Class SawImpact : Actor { Default diff --git a/zscript/enforcer.zsc b/zscript/enforcer.zsc index d9d2ad2..2c98d62 100644 --- a/zscript/enforcer.zsc +++ b/zscript/enforcer.zsc @@ -1,4 +1,4 @@ -Class EClip : MiniAmmo replaces Clip +Class EClip : MiniAmmo { Default { @@ -155,7 +155,7 @@ Class UTCasing : Actor } } -Class Enforcer : UTWeapon replaces Pistol +Class Enforcer : UTWeapon { int ClipCount, SlaveClipCount; bool SlaveActive, SlaveDown, SlaveReload, SlaveAltFire; diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index 4ac6de6..02e4211 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -1,29 +1,3 @@ -Class Tier5Ammo : RandomSpawner2 replaces RocketAmmo -{ - Default - { - DropItem "FlakAmmo2", 255, 1; - DropItem "UTRocketAmmo2", 255, 1; - } -} -Class Tier5Ammo2 : RandomSpawner2 replaces RocketBox -{ - Default - { - DropItem "FlakAmmo", 255, 1; - DropItem "UTRocketAmmo", 255, 1; - } -} - -Class Tier5Weapon : RandomSpawner2 replaces RocketLauncher -{ - Default - { - DropItem "FlakCannon", 255, 1; - DropItem "UTRocketLauncher", 255, 1; - } -} - Class FlakAmmo : Ammo { Default diff --git a/zscript/healitems.zsc b/zscript/healitems.zsc index ab7369d..2f41b1f 100644 --- a/zscript/healitems.zsc +++ b/zscript/healitems.zsc @@ -1,4 +1,4 @@ -Class UTHealthPack : Health replaces Soulsphere +Class UTHealthPack : Health { Default { @@ -21,7 +21,7 @@ Class UTHealthPack : Health replaces Soulsphere } } -Class UTHealthBox : Health replaces Medikit +Class UTHealthBox : Health { Default { @@ -38,7 +38,7 @@ Class UTHealthBox : Health replaces Medikit } } -Class UTMedBox : Health replaces Stimpack +Class UTMedBox : Health { Default { @@ -56,7 +56,7 @@ Class UTMedBox : Health replaces Stimpack } } -Class UTHealthBonus : Health replaces HealthBonus +Class UTHealthBonus : Health { Default { diff --git a/zscript/impacthammer.zsc b/zscript/impacthammer.zsc index ff9a12f..b8de009 100644 --- a/zscript/impacthammer.zsc +++ b/zscript/impacthammer.zsc @@ -39,7 +39,7 @@ Class HammerImpact : Actor } } -Class ImpactHammer : UTWeapon replaces Fist +Class ImpactHammer : UTWeapon { double chargesize, count; diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index 1bb5340..ee1ca37 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -1,30 +1,3 @@ -Class Tier6Ammo : RandomSpawner2 replaces Cell -{ - Default - { - DropItem "EClip", 255, 1; - DropItem "RifleAmmo2", 255, 1; - } -} -Class Tier6Ammo2 : RandomSpawner2 replaces CellPack -{ - Default - { - DropItem "MiniAmmo", 255, 6; - DropItem "RifleAmmo", 255, 6; - DropItem "WarheadAmmo", 255, 1; - } -} - -Class Tier6Weapon : RandomSpawner2 replaces PlasmaRifle -{ - Default - { - DropItem "Minigun", 255, 1; - DropItem "SniperRifle", 255, 1; - } -} - Class MiniAmmo : Ammo { Default diff --git a/zscript/powerups.zsc b/zscript/powerups.zsc index ffad00c..13eff03 100644 --- a/zscript/powerups.zsc +++ b/zscript/powerups.zsc @@ -1,4 +1,4 @@ -Class UDamage : PowerupGiver replaces Berserk +Class UDamage : PowerupGiver { Default { @@ -100,7 +100,7 @@ Class DamageAmplifier : Powerup } // Backpack that only gives ammo for valid weapons -Class UTBackpack : BackpackItem replaces Backpack +Class UTBackpack : BackpackItem { override Inventory CreateCopy( Actor other ) { @@ -219,7 +219,7 @@ Class PowerUTInvisibility : PowerInvisibility } } -Class UTInvisibility : PowerupGiver replaces BlurSphere +Class UTInvisibility : PowerupGiver { Default { @@ -280,7 +280,7 @@ Class UTInvisibilityX : Actor } } -Class UTMapRevealer : MapRevealer replaces Allmap +Class UTMapRevealer : MapRevealer { Default { @@ -299,7 +299,7 @@ Class UTMapRevealer : MapRevealer replaces Allmap } } -Class UTJumpBoots : Inventory replaces RadSuit +Class UTJumpBoots : Inventory { Default { @@ -383,7 +383,7 @@ Class PowerJumpBoots_IronFeet : PowerIronFeet } } -Class Searchlight : Inventory replaces Infrared +Class Searchlight : Inventory { Actor lt[3]; int ticcnt; diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index b6cdd04..7862dc7 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -1,21 +1,3 @@ -Class Tier4Ammo : RandomSpawner2 replaces ClipBox -{ - Default - { - DropItem "PulseAmmo", 255, 1; - DropItem "RipperAmmo", 255, 1; - } -} - -Class Tier4Weapon : RandomSpawner2 replaces Chaingun -{ - Default - { - DropItem "PulseGun", 255, 1; - DropItem "Ripper2", 255, 1; - } -} - Class PulseAmmo : Ammo { Default diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index c8008fa..56cd688 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -1162,7 +1162,7 @@ Class ViewSuperShockSpark : ViewShockSpark } } -Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere +Class EnhancedShockRifle : UTWeapon { override void PostBeginPlay() { diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index d7e7ffd..11042eb 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -15,8 +15,9 @@ Class UTPlayer : DoomPlayer const walkfactor = 0.3; const utaircontrol = 0.35; const groundspeed_doomish = 600.; - const fluidfriction = 1.2; const terminalvelocity = 2500.; + const dodgez = 210.; + const utjumpz = 325.; Default { @@ -278,7 +279,7 @@ Class UTPlayer : DoomPlayer { if ( doomspeed.GetBool() ) vel += dodge.unit()*(groundspeed_doomish*1.5)/TICRATE; else vel += dodge.unit()*(groundspeed*1.5)/TICRATE; - vel.z += jumpz*0.5; + vel.z += dodgez/TICRATE; bOnMobj = false; if ( !(player.cheats&CF_PREDICTING) ) A_PlaySound("*jump",CHAN_BODY); @@ -333,20 +334,22 @@ Class UTPlayer : DoomPlayer acceleration = acceleration.unit()*maxaccel; Vector2 dir = (0,0); if ( vel.xy.length() > double.epsilon ) dir = vel.xy.unit(); - if ( acceleration.length() <= double.epsilon ) - { - Vector2 oldvel = vel.xy; - vel.xy = vel.xy - (2 * dir) * vel.xy.length() * fluidfriction/TICRATE; - if ( oldvel dot vel.xy < 0.0 ) vel.xy *= 0; - } - else + if ( acceleration.length() > double.epsilon ) { Vector2 acceldir = acceleration.unit(); acceleration = acceldir * Min(acceleration.length(), accelrate/TICRATE); - vel.xy = vel.xy - (dir - acceldir) * vel.xy.length() * fluidfriction/TICRATE; } acceleration *= doomaircontrol.GetBool()?level.aircontrol:utaircontrol; - vel.xy = vel.xy + acceleration/TICRATE; + double maxvel; + if ( doomspeed.GetBool() ) maxvel = (groundspeed_doomish*fs)/TICRATE; + else maxvel = (groundspeed*fs)/TICRATE; + // if new velocity is higher than ground speed, steer but don't increase it + if ( (vel.xy+acceleration/TICRATE).length() > maxvel ) + { + double vsiz = vel.xy.length(); + vel.xy = (vel.xy+acceleration/TICRATE).unit()*vsiz; + } + else vel.xy = vel.xy+acceleration/TICRATE; if ( vel.length() > terminalvelocity/TICRATE ) vel = vel.unit()*(terminalvelocity/TICRATE); player.vel *= 0; } @@ -395,6 +398,7 @@ Class UTPlayer : DoomPlayer override void CheckJump() { if ( !utmovement ) utmovement = CVar.GetCVar('flak_utmovement'); + if ( !doomspeed ) doomspeed = CVar.GetCVar('flak_doomspeed'); if ( !utmovement.GetBool() ) { Super.CheckJump(); @@ -407,7 +411,9 @@ Class UTPlayer : DoomPlayer else if ( bNoGravity ) Vel.z = 3.; else if ( level.IsJumpingAllowed() && player.onground && (player.jumpTics == 0) && (last_jump_held < gametic-1) ) { - double jumpvelz = JumpZ; + double jumpvelz; + if ( doomspeed.GetBool() ) jumpvelz = jumpz; + else jumpvelz = utjumpz/TICRATE; double jumpfac = 0; for ( let p = Inv; p != null; p = p.Inv ) { @@ -627,7 +633,7 @@ Class UTItemLight : DynamicLight } } -Class UTTeleportFog : Actor replaces TeleportFog +Class UTTeleportFog : Actor { Default { @@ -651,7 +657,7 @@ Class UTTeleportFog : Actor replaces TeleportFog } } -Class UTItemFog : Actor replaces ItemFog +Class UTItemFog : Actor { Default { @@ -1000,7 +1006,7 @@ Class UTStaticViewSmoke : UTViewSmoke } } -Class UTRedSkull : RedSkull replaces RedSkull +Class UTRedSkull : RedSkull { Default { @@ -1016,7 +1022,7 @@ Class UTRedSkull : RedSkull replaces RedSkull } } -Class UTGoldSkull : YellowSkull replaces YellowSkull +Class UTGoldSkull : YellowSkull { Default { @@ -1032,7 +1038,7 @@ Class UTGoldSkull : YellowSkull replaces YellowSkull } } -Class UTBlueSkull : BlueSkull replaces BlueSkull +Class UTBlueSkull : BlueSkull { Default { @@ -1048,7 +1054,7 @@ Class UTBlueSkull : BlueSkull replaces BlueSkull } } -Class UTRedKey : RedCard replaces RedCard +Class UTRedKey : RedCard { Default { @@ -1064,7 +1070,7 @@ Class UTRedKey : RedCard replaces RedCard } } -Class UTGoldKey : YellowCard replaces YellowCard +Class UTGoldKey : YellowCard { Default { @@ -1080,7 +1086,7 @@ Class UTGoldKey : YellowCard replaces YellowCard } } -Class UTBlueKey : BlueCard replaces BlueCard +Class UTBlueKey : BlueCard { Default { @@ -1137,6 +1143,98 @@ Class UTMainHandler : StaticEventHandler Array flashes; transient CVar nobosstelefrag; + override void CheckReplacement( ReplaceEvent e ) + { + if ( e.Replacee == 'Chainsaw' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'UTChainsaw'; + else e.Replacement = 'Enforcer'; + } + else if ( e.Replacee == 'Fist' ) e.Replacement = 'ImpactHammer'; + else if ( e.Replacee == 'Pistol' ) e.Replacement = 'Enforcer'; + else if ( (e.Replacee == 'Shotgun') || (e.Replacee == 'SuperShotgun') ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'BioRifle'; + else e.Replacement = 'ShockRifle'; + } + else if ( e.Replacee == 'Chaingun' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'PulseGun'; + else e.Replacement = 'Ripper2'; + } + else if ( e.Replacee == 'RocketLauncher' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'FlakCannon'; + else e.Replacement = 'UTRocketLauncher'; + } + else if ( e.Replacee == 'PlasmaRifle' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'Minigun'; + else e.Replacement = 'SniperRifle'; + } + else if ( e.Replacee == 'BFG9000' ) e.Replacement = 'WarheadLauncher'; + else if ( e.Replacee == 'Clip' ) e.Replacement = 'EClip'; + else if ( e.Replacee == 'ClipBox' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'PulseAmmo'; + else e.Replacement = 'RipperAmmo'; + } + else if ( e.Replacee == 'Shell' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'BioAmmo2'; + else e.Replacement = 'ShockAmmo2'; + } + else if ( e.Replacee == 'ShellBox' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'BioAmmo'; + else e.Replacement = 'ShockAmmo'; + } + else if ( e.Replacee == 'RocketAmmo' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'FlakAmmo2'; + else e.Replacement = 'UTRocketAmmo2'; + } + else if ( e.Replacee == 'RocketBox' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'FlakAmmo'; + else e.Replacement = 'UTRocketAmmo'; + } + else if ( e.Replacee == 'Cell' ) + { + if ( Random[Replacements](0,1) ) e.Replacement = 'EClip'; + else e.Replacement = 'RifleAmmo2'; + } + else if ( e.Replacee == 'CellPack' ) + { + if ( !Random[Replacements](0,5) ) e.Replacement = 'WarheadAmmo'; + else if ( Random[Replacements](0,1) ) e.Replacement = 'MiniAmmo'; + else e.Replacement = 'RifleAmmo'; + } + else if ( e.Replacee == 'InvulnerabilitySphere' ) e.Replacement = 'EnhancedShockRifle'; + else if ( e.Replacee == 'Berserk' ) e.Replacement = 'UDamage'; + else if ( e.Replacee == 'Soulsphere' ) e.Replacement = 'UTHealthPack'; + else if ( e.Replacee == 'Megasphere' ) e.Replacement = 'UTShieldBelt'; + else if ( e.Replacee == 'Allmap' ) e.Replacement = 'UTMapRevealer'; + else if ( e.Replacee == 'BlurSphere' ) e.Replacement = 'UTInvisibility'; + else if ( e.Replacee == 'Infrared' ) e.Replacement = 'Searchlight'; + else if ( e.Replacee == 'RadSuit' ) e.Replacement = 'UTJumpBoots'; + else if ( e.Replacee == 'Backpack' ) e.Replacement = 'UTBackpack'; + else if ( e.Replacee == 'ArmorBonus' ) e.Replacement = 'UTArmorBonus'; + else if ( e.Replacee == 'HealthBonus' ) e.Replacement = 'UTHealthBonus'; + else if ( e.Replacee == 'GreenArmor' ) e.Replacement = 'UTThighPads'; + else if ( e.Replacee == 'BlueArmor' ) e.Replacement = 'UTBodyArmor'; + else if ( e.Replacee == 'Stimpack' ) e.Replacement = 'UTMedBox'; + else if ( e.Replacee == 'Medikit' ) e.Replacement = 'UTHealthBox'; + else if ( e.Replacee == 'RedCard' ) e.Replacement = 'UTRedKey'; + else if ( e.Replacee == 'BlueCard' ) e.Replacement = 'UTBlueKey'; + else if ( e.Replacee == 'YellowCard' ) e.Replacement = 'UTGoldKey'; + else if ( e.Replacee == 'RedSkull' ) e.Replacement = 'UTRedSkull'; + else if ( e.Replacee == 'BlueSkull' ) e.Replacement = 'UTBlueSkull'; + else if ( e.Replacee == 'YellowSkull' ) e.Replacement = 'UTGoldSkull'; + else if ( e.Replacee == 'TeleportFog' ) e.Replacement = 'UTTeleportFog'; + else if ( e.Replacee == 'ItemFog' ) e.Replacement = 'UTItemFog'; + } + private Actor AddLight( Vector3 pos, Color col, int radius ) { Actor l = Actor.Spawn("PointLightAttenuated",pos); diff --git a/zscript/warheadlauncher.zsc b/zscript/warheadlauncher.zsc index 534a8f4..e0cc08c 100644 --- a/zscript/warheadlauncher.zsc +++ b/zscript/warheadlauncher.zsc @@ -609,7 +609,7 @@ Class RedeemerHUDHandler : EventHandler } } -Class WarheadLauncher : UTWeapon replaces BFG9000 +Class WarheadLauncher : UTWeapon { transient CVar noswitchdeemer; Actor guided;