Added lesser variants to shock core and biorifle ammo for balance.
Added "dropped ammo" properties to all weapons, also for balance. Silence warnings about floating point truncation.
This commit is contained in:
parent
884bbab247
commit
569ef037ec
20 changed files with 154 additions and 72 deletions
BIN
brightmaps/JShockCore_2.png
Normal file
BIN
brightmaps/JShockCore_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 674 B |
|
|
@ -126,6 +126,14 @@ HardwareShader Texture "models/JShockCore.png"
|
|||
{
|
||||
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
||||
}
|
||||
/*Brightmap Texture "models/JShockCore_2.png"
|
||||
{
|
||||
Map "brightmaps/JShockCore_2.png"
|
||||
}*/
|
||||
HardwareShader Texture "models/JShockCore_2.png"
|
||||
{
|
||||
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
||||
}
|
||||
/*Brightmap Texture "models/SASMD_t.png"
|
||||
{
|
||||
Map "brightmaps/ASMD_t.png"
|
||||
|
|
|
|||
12
modeldef.ges
12
modeldef.ges
|
|
@ -10,6 +10,18 @@ Model "BioAmmo"
|
|||
|
||||
FrameIndex BIOA A 0 0
|
||||
}
|
||||
Model "BioAmmo2"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "BioAmmoM_d.3d"
|
||||
Skin 0 "Jbammo1.png"
|
||||
Scale 0.08 0.096 0.08
|
||||
PitchOffset 180
|
||||
RollOffset 90
|
||||
ZOffset 4
|
||||
|
||||
FrameIndex BIOA A 0 0
|
||||
}
|
||||
|
||||
Model "BioGel"
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,6 +8,16 @@ Model "ShockAmmo"
|
|||
|
||||
FrameIndex SHOA A 0 0
|
||||
}
|
||||
Model "ShockAmmo2"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "ShockCoreM_d.3d"
|
||||
Skin 0 "JShockCore_2.png"
|
||||
Scale 0.11 0.11 0.132
|
||||
ZOffset 12
|
||||
|
||||
FrameIndex SHOA A 0 0
|
||||
}
|
||||
|
||||
Model "EnhancedShockAmmo"
|
||||
{
|
||||
|
|
|
|||
BIN
models/JShockCore_2.png
Normal file
BIN
models/JShockCore_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
|
|
@ -15,7 +15,7 @@ Class UTArmor : Armor
|
|||
int saved;
|
||||
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) )
|
||||
{
|
||||
saved = damage*absorb/100.;
|
||||
saved = int(damage*absorb/100.);
|
||||
if ( amount <= saved ) saved = amount;
|
||||
newdamage -= saved;
|
||||
amount -= saved;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ Class Tier3Ammo : RandomSpawner2 replaces Shell
|
|||
{
|
||||
Default
|
||||
{
|
||||
DropItem "BioAmmo", 255, 1;
|
||||
DropItem "ShockAmmo", 255, 1;
|
||||
DropItem "BioAmmo2", 255, 1;
|
||||
DropItem "ShockAmmo2", 255, 1;
|
||||
}
|
||||
}
|
||||
Class Tier3Ammo2 : Tier3Ammo replaces ShellBox {}
|
||||
|
|
@ -37,6 +37,24 @@ Class BioAmmo : Ammo
|
|||
}
|
||||
}
|
||||
|
||||
Class BioAmmo2 : BioAmmo // small variant
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "Biosludge Ammo";
|
||||
Inventory.PickupMessage "You picked up the Small Biosludge Ammo.";
|
||||
Inventory.Amount 10;
|
||||
Ammo.DropAmount 5;
|
||||
Scale 0.5;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BIOA A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class BioSpark : Actor
|
||||
{
|
||||
Default
|
||||
|
|
@ -139,7 +157,7 @@ Class BioLight : DynamicLight
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
args[LIGHT_INTENSITY] = 8*target.Scale.x;
|
||||
args[LIGHT_INTENSITY] = int(8*target.Scale.x);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -161,9 +179,9 @@ Class BioXLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 64*lifetime;
|
||||
args[LIGHT_GREEN] = 255*lifetime;
|
||||
args[LIGHT_BLUE] = 48*lifetime;
|
||||
args[LIGHT_RED] = int(64*lifetime);
|
||||
args[LIGHT_GREEN] = int(255*lifetime);
|
||||
args[LIGHT_BLUE] = int(48*lifetime);
|
||||
lifetime -= 0.05;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -187,7 +205,7 @@ Class BioGel : Actor
|
|||
int atplane;
|
||||
Sector atsector;
|
||||
double atz;
|
||||
int rollvel, pitchvel, yawvel;
|
||||
double rollvel, pitchvel, yawvel;
|
||||
Vector3 normal;
|
||||
|
||||
override void PostBeginPlay()
|
||||
|
|
@ -252,7 +270,7 @@ Class BioGel : Actor
|
|||
}
|
||||
if ( !InStateSequence(CurState,FindState("XDeath")) && ((!bNOGRAVITY && !Random[GES](0,2)) || !Random[GES](0,10)) )
|
||||
{
|
||||
int numpt = Min(20,Scale.x*2)+Random[GES](-1,1);
|
||||
int numpt = Min(20,int(Scale.x*2))+Random[GES](-1,1);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[GES](-1,1),FRandom[GES](-1,1),FRandom[GES](-1,1)).unit()*FRandom[GES](1,3);
|
||||
|
|
@ -355,7 +373,7 @@ Class BioGel : Actor
|
|||
}
|
||||
A_PlaySound("ges/hit");
|
||||
A_SprayDecal("BioSplat",-172);
|
||||
int numpt = Min(100,Scale.x*10)+Random[GES](-5,5);
|
||||
int numpt = Min(100,int(Scale.x*10))+Random[GES](-5,5);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (normal+(FRandom[GES](-.8,.8),FRandom[GES](-.8,.8),FRandom[GES](-.8,.8))).unit()*FRandom[GES](3,6);
|
||||
|
|
@ -381,19 +399,19 @@ Class BioGel : Actor
|
|||
if ( invoker.l ) invoker.l.Destroy();
|
||||
if ( invoker.b ) invoker.b.Destroy();
|
||||
let s = Spawn("BioXLight",pos);
|
||||
s.args[3] *= Scale.x;
|
||||
s.args[3] = int(s.args[3]*Scale.x);
|
||||
invoker.deadtimer = -2;
|
||||
if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos);
|
||||
A_Explode(Random[GES](20,40)*Scale.x,Min(150,Scale.x*25));
|
||||
A_Explode(int(Random[GES](20,40)*Scale.x),Min(150,int(Scale.x*25)));
|
||||
A_PlaySound("ges/explode",CHAN_VOICE);
|
||||
int numpt = Min(300,Scale.x*30)+Random[GES](-10,10);
|
||||
int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[GES](-1,1),FRandom[GES](-1,1),FRandom[GES](-1,1)).unit()*FRandom[GES](3,12);
|
||||
let s = Spawn("BioSpark",pos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
numpt = Min(100,Scale.x*10)+Random[GES](-4,4);
|
||||
numpt = Min(100,int(Scale.x*10))+Random[GES](-4,4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[GES](-1,1),FRandom[GES](-1,1),FRandom[GES](-1,1)).unit()*FRandom[GES](1.2,2.4);
|
||||
|
|
@ -487,7 +505,7 @@ Class BioGlob : BioGel
|
|||
override void AlignSelf()
|
||||
{
|
||||
Super.AlignSelf();
|
||||
if ( !bAMBUSH ) numsplash = 2*Scale.x-1;
|
||||
if ( !bAMBUSH ) numsplash = int(2*Scale.x)-1;
|
||||
}
|
||||
override void Tick()
|
||||
{
|
||||
|
|
@ -536,7 +554,7 @@ Class BioRifle : UTWeapon
|
|||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(48,0,255,0),1);
|
||||
A_AlertMonsters();
|
||||
if ( alt ) A_QuakeEx(1+0.5*invoker.charge,1+0.5*invoker.charge,1+0.5*invoker.charge,5+1.2*invoker.charge,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05+0.01*invoker.charge);
|
||||
if ( alt ) A_QuakeEx(1+int(0.5*invoker.charge),1+int(0.5*invoker.charge),1+int(0.5*invoker.charge),5+int(1.2*invoker.charge),0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05+0.01*invoker.charge);
|
||||
else A_QuakeEx(1,1,1,5,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
|
||||
Vector3 x, y, z;
|
||||
double a, s;
|
||||
|
|
@ -593,6 +611,7 @@ Class BioRifle : UTWeapon
|
|||
Weapon.AmmoType2 "BioAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 25;
|
||||
UTWeapon.DropAmmo 5;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -413,6 +413,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
Weapon.AmmoType2 "UTRocketAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 6;
|
||||
UTWeapon.DropAmmo 3;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ Class BulletImpact : Actor
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
A_SprayDecal("Pock",-20);
|
||||
int numpt = Random[Enforcer](5,10)*scale.x*4;
|
||||
int numpt = int(Random[Enforcer](5,10)*scale.x*4);
|
||||
Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch));
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
@ -62,14 +62,14 @@ Class BulletImpact : Actor
|
|||
s.vel = pvel;
|
||||
s.SetShade(Color(1,1,1)*Random[Enforcer](128,192));
|
||||
}
|
||||
numpt = Random[Enforcer](3,8)*scale.x*4;
|
||||
numpt = int(Random[Enforcer](3,8)*scale.x*4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[Enforcer](-1,1),FRandom[Enforcer](-1,1),FRandom[Enforcer](-1,1)).unit()*FRandom[Enforcer](2,8);
|
||||
let s = Spawn("UTSpark",pos+x*2);
|
||||
s.vel = pvel;
|
||||
}
|
||||
numpt = Random[Enforcer](2,5)*scale.x*4;
|
||||
numpt = int(Random[Enforcer](2,5)*scale.x*4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[Enforcer](-1,1),FRandom[Enforcer](-1,1),FRandom[Enforcer](-1,1)).unit()*FRandom[Enforcer](2,8);
|
||||
|
|
@ -386,6 +386,7 @@ Class Enforcer : UTWeapon replaces Pistol
|
|||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 30;
|
||||
Weapon.Kickback 180;
|
||||
UTWeapon.DropAmmo 10;
|
||||
Enforcer.ClipCount 20;
|
||||
Enforcer.SlaveClipCount 20;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,9 +77,9 @@ Class ChunkLight : DynamicLight
|
|||
return;
|
||||
}
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 255*(10-target.frame)*0.1;
|
||||
args[LIGHT_GREEN] = 224*(10-target.frame)*0.1;
|
||||
args[LIGHT_BLUE] = 128*(10-target.frame)*0.1;
|
||||
args[LIGHT_RED] = int(255*(10-target.frame)*0.1);
|
||||
args[LIGHT_GREEN] = int(224*(10-target.frame)*0.1);
|
||||
args[LIGHT_BLUE] = int(128*(10-target.frame)*0.1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -345,9 +345,9 @@ Class SlugLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 255*lifetime;
|
||||
args[LIGHT_GREEN] = 224*lifetime;
|
||||
args[LIGHT_BLUE] = 128*lifetime;
|
||||
args[LIGHT_RED] = int(255*lifetime);
|
||||
args[LIGHT_GREEN] = int(224*lifetime);
|
||||
args[LIGHT_BLUE] = int(128*lifetime);
|
||||
lifetime -= 0.05;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -577,6 +577,7 @@ Class FlakCannon : UTWeapon
|
|||
Weapon.AmmoType2 "FlakAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 10;
|
||||
UTWeapon.DropAmmo 5;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
invoker.count = 0;
|
||||
A_AlertMonsters();
|
||||
}
|
||||
A_QuakeEx(clamp(invoker.chargesize*3,0,3),clamp(invoker.chargesize*3,0,3),clamp(invoker.chargesize*3,0,3),amt+1,0,96,"",QF_RELATIVE,rollIntensity:clamp(invoker.chargesize*0.3,0,0.3));
|
||||
A_QuakeEx(clamp(int(invoker.chargesize*3),0,3),clamp(int(invoker.chargesize*3),0,3),clamp(int(invoker.chargesize*3),0,3),amt+1,0,96,"",QF_RELATIVE,rollIntensity:clamp(invoker.chargesize*0.3,0,0.3));
|
||||
}
|
||||
action void A_FireBlast()
|
||||
{
|
||||
|
|
@ -75,7 +75,7 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
LineTrace(angle,80,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
|
||||
if ( d.HitType == TRACE_HitActor )
|
||||
{
|
||||
int dmg = Random[Impact](60,80)*realcharge;
|
||||
int dmg = int(Random[Impact](60,80)*realcharge);
|
||||
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge;
|
||||
if ( d.HitActor.bNOBLOOD )
|
||||
|
|
@ -93,7 +93,7 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
else if ( d.HitType != TRACE_HitNone )
|
||||
{
|
||||
realcharge = max(1.0,realcharge);
|
||||
int dmg = Random[Impact](16,24)*realcharge; // It's a flat damage of 36 on UT, but I think it's more fair for it to scale
|
||||
int dmg = int(Random[Impact](16,24)*realcharge); // It's a flat damage of 36 on UT, but I think it's more fair for it to scale
|
||||
dmg = DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
TraceBleed(dmg,invoker);
|
||||
vel -= x*(1200/mass)*realcharge;
|
||||
|
|
@ -102,7 +102,7 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
p.pitch = asin(-d.HitDir.z);
|
||||
if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4);
|
||||
}
|
||||
A_QuakeEx(realcharge*6,realcharge*6,realcharge*6,16,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:realcharge*0.2);
|
||||
A_QuakeEx(int(realcharge*6),int(realcharge*6),int(realcharge*6),16,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:realcharge*0.2);
|
||||
realcharge = max(1.0,realcharge);
|
||||
int numpt = Random[Impact](5,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -137,13 +137,13 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
double dscale = d.Distance/180.;
|
||||
if ( d.HitType == TRACE_HitActor )
|
||||
{
|
||||
int dmg = Random[Impact](25,35)*dscale;
|
||||
int dmg = int(Random[Impact](25,35)*dscale);
|
||||
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
d.HitActor.vel = x*(500/d.HitActor.mass)*dscale;
|
||||
}
|
||||
else if ( d.HitType != TRACE_HitNone )
|
||||
{
|
||||
int dmg = Random[Impact](16,24)*dscale;
|
||||
int dmg = int(Random[Impact](16,24)*dscale);
|
||||
dmg = DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
vel -= x*(600/mass)*dscale;
|
||||
if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4);
|
||||
|
|
|
|||
|
|
@ -215,6 +215,7 @@ Class Minigun : UTWeapon
|
|||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 50;
|
||||
Weapon.Kickback 180;
|
||||
UTWeapon.DropAmmo 20;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -454,9 +454,9 @@ Class mkLight : DynamicLight
|
|||
else SetOrigin(target.vec3Offset(0,0,target.height*0.75),true);
|
||||
A_SetAngle(target.angle,SPF_INTERPOLATE);
|
||||
A_SetPitch(target.pitch,SPF_INTERPOLATE);
|
||||
args[LIGHT_RED] = GetDefaultByType(GetClass()).args[LIGHT_RED]*clamp(Inventory(master).amount/40.,0.,1.);
|
||||
args[LIGHT_GREEN] = GetDefaultByType(GetClass()).args[LIGHT_GREEN]*clamp(Inventory(master).amount/40.,0.,1.);
|
||||
args[LIGHT_BLUE] = GetDefaultByType(GetClass()).args[LIGHT_BLUE]*clamp(Inventory(master).amount/40.,0.,1.);
|
||||
args[LIGHT_RED] = int(GetDefaultByType(GetClass()).args[LIGHT_RED]*clamp(Inventory(master).amount/40.,0.,1.));
|
||||
args[LIGHT_GREEN] = int(GetDefaultByType(GetClass()).args[LIGHT_GREEN]*clamp(Inventory(master).amount/40.,0.,1.));
|
||||
args[LIGHT_BLUE] = int(GetDefaultByType(GetClass()).args[LIGHT_BLUE]*clamp(Inventory(master).amount/40.,0.,1.));
|
||||
bDORMANT = (target.health <= 0);
|
||||
if ( Inventory(target) && target.bInvisible ) bDORMANT = true;
|
||||
// alert monsters hit by the light
|
||||
|
|
@ -501,9 +501,9 @@ Class mkLight3 : DynamicLight
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
args[LIGHT_RED] = GetDefaultByType(GetClass()).args[LIGHT_RED]*clamp(Inventory(master).amount/40,0.,1.);
|
||||
args[LIGHT_GREEN] = GetDefaultByType(GetClass()).args[LIGHT_GREEN]*clamp(Inventory(master).amount/40,0.,1.);
|
||||
args[LIGHT_BLUE] = GetDefaultByType(GetClass()).args[LIGHT_BLUE]*clamp(Inventory(master).amount/40,0.,1.);
|
||||
args[LIGHT_RED] = int(GetDefaultByType(GetClass()).args[LIGHT_RED]*clamp(Inventory(master).amount/40,0.,1.));
|
||||
args[LIGHT_GREEN] = int(GetDefaultByType(GetClass()).args[LIGHT_GREEN]*clamp(Inventory(master).amount/40,0.,1.));
|
||||
args[LIGHT_BLUE] = int(GetDefaultByType(GetClass()).args[LIGHT_BLUE]*clamp(Inventory(master).amount/40,0.,1.));
|
||||
SetOrigin(target.vec3Offset(0,0,target.height*0.5),true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ Class PulseBallLight : DynamicLight
|
|||
return;
|
||||
}
|
||||
SetOrigin(target.pos,true);
|
||||
args[LIGHT_INTENSITY] = 10+sin(gametic*80+pulseofs)*5;
|
||||
args[LIGHT_INTENSITY] = 10+int(sin(gametic*80+pulseofs)*5);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -168,8 +168,8 @@ Class PulseExplLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 64*lifetime;
|
||||
args[LIGHT_GREEN] = 255*lifetime;
|
||||
args[LIGHT_RED] = int(64*lifetime);
|
||||
args[LIGHT_GREEN] = int(255*lifetime);
|
||||
lifetime -= 1./ReactionTime;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -391,12 +391,12 @@ Class PulseBolt : Actor
|
|||
if ( !damagedactor )
|
||||
{
|
||||
accdamage = min(0.5*(level.time-lasthit),0.1);
|
||||
t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
t.Results.HitActor.DamageMobj(self,target,int(Random[Pulse](70,80)*accdamage),'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
accdamage = 0;
|
||||
}
|
||||
else if ( t.Results.HitActor != damagedactor )
|
||||
{
|
||||
t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
t.Results.HitActor.DamageMobj(self,target,int(Random[Pulse](70,80)*accdamage),'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
accdamage = 0;
|
||||
}
|
||||
lasthit = level.time;
|
||||
|
|
@ -404,7 +404,7 @@ Class PulseBolt : Actor
|
|||
accdamage += 1./TICRATE;
|
||||
if ( accdamage > 0.22 )
|
||||
{
|
||||
t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
t.Results.HitActor.DamageMobj(self,target,int(Random[Pulse](70,80)*accdamage),'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
accdamage = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -446,7 +446,7 @@ Class PulseBolt : Actor
|
|||
}
|
||||
else if ( damagedactor )
|
||||
{
|
||||
damagedactor.DamageMobj(self,target,Random[Pulse](65,75)*accdamage,'zapped');
|
||||
damagedactor.DamageMobj(self,target,int(Random[Pulse](65,75)*accdamage),'zapped');
|
||||
accdamage = 0;
|
||||
damagedactor = null;
|
||||
}
|
||||
|
|
@ -716,6 +716,7 @@ Class PulseGun : UTWeapon
|
|||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 60;
|
||||
PulseGun.ClipCount 50;
|
||||
UTWeapon.DropAmmo 15;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -171,9 +171,9 @@ Class Razor2AltLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 255*lifetime;
|
||||
args[LIGHT_GREEN] = 240*lifetime;
|
||||
args[LIGHT_BLUE] = 224*lifetime;
|
||||
args[LIGHT_RED] = int(255*lifetime);
|
||||
args[LIGHT_GREEN] = int(240*lifetime);
|
||||
args[LIGHT_BLUE] = int(224*lifetime);
|
||||
lifetime -= 0.05;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -258,6 +258,7 @@ Class Ripper2 : UTWeapon
|
|||
Weapon.AmmoType2 "RipperAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 15;
|
||||
UTWeapon.DropAmmo 5;
|
||||
}
|
||||
action void A_RazorFire( bool alt = false )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,6 +18,23 @@ Class ShockAmmo : Ammo
|
|||
}
|
||||
}
|
||||
|
||||
Class ShockAmmo2 : ShockAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "Used Shock Core";
|
||||
Inventory.PickupMessage "You picked up a used Shock Core.";
|
||||
Inventory.Amount 3;
|
||||
Ammo.DropAmount 3;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
SHOA A -1;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class ShockBeamTracer : LineTracer
|
||||
{
|
||||
Actor owner, ignore, lasthit;
|
||||
|
|
@ -728,9 +745,9 @@ Class ShockExplLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 160*lifetime;
|
||||
args[LIGHT_GREEN] = 128*lifetime;
|
||||
args[LIGHT_BLUE] = 255*lifetime;
|
||||
args[LIGHT_RED] = int(160*lifetime);
|
||||
args[LIGHT_GREEN] = int(128*lifetime);
|
||||
args[LIGHT_BLUE] = int(255*lifetime);
|
||||
lifetime -= 1./ReactionTime;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -754,9 +771,9 @@ Class SuperShockExplLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 255*lifetime;
|
||||
args[LIGHT_GREEN] = 160*lifetime;
|
||||
args[LIGHT_BLUE] = 128*lifetime;
|
||||
args[LIGHT_RED] = int(255*lifetime);
|
||||
args[LIGHT_GREEN] = int(160*lifetime);
|
||||
args[LIGHT_BLUE] = int(128*lifetime);
|
||||
lifetime -= 1./ReactionTime;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -1046,6 +1063,7 @@ Class ShockRifle : UTWeapon
|
|||
Weapon.AmmoType2 "ShockAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 20;
|
||||
UTWeapon.DropAmmo 5;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -1218,6 +1236,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
|
|||
Weapon.AmmoType2 "EnhancedShockAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 25;
|
||||
UTWeapon.DropAmmo 5;
|
||||
+WEAPON.AMMO_OPTIONAL;
|
||||
+WEAPON.ALT_AMMO_OPTIONAL;
|
||||
+WEAPON.CHEATNOTWEAPON;
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ Class SniperRifle : UTWeapon
|
|||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 8;
|
||||
Weapon.Kickback 250;
|
||||
UTWeapon.DropAmmo 2;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
|
|
@ -197,12 +197,18 @@ Class RandomSpawner2 : RandomSpawner
|
|||
{
|
||||
spawned.SetState(spawned.ResolveState("Spawn")+1);
|
||||
Inventory(spawned).bALWAYSPICKUP = true;
|
||||
if ( UTWeapon(spawned).DropAmmo > 0 )
|
||||
Weapon(spawned).AmmoGive1 = min(UTWeapon(spawned).DropAmmo,Weapon(spawned).AmmoGive1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Class UTWeapon : Weapon
|
||||
{
|
||||
int DropAmmo;
|
||||
|
||||
Property DropAmmo: DropAmmo;
|
||||
|
||||
// Drawstuffs under HUD
|
||||
virtual ui void PreRender( double lbottom ) {}
|
||||
// Drawstuffs over HUD
|
||||
|
|
@ -272,9 +278,9 @@ Class UTTeleportLight : DynamicLight
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
args[LIGHT_RED] = 128*alpha;
|
||||
args[LIGHT_GREEN] = 160*alpha;
|
||||
args[LIGHT_BLUE] = 255*alpha;
|
||||
args[LIGHT_RED] = int(128*alpha);
|
||||
args[LIGHT_GREEN] = int(160*alpha);
|
||||
args[LIGHT_BLUE] = int(255*alpha);
|
||||
args[LIGHT_INTENSITY] = Random[Tele](10,14)*8;
|
||||
alpha -= 1./35;
|
||||
}
|
||||
|
|
@ -295,9 +301,9 @@ Class UTItemLight : DynamicLight
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
args[LIGHT_RED] = 255*alpha;
|
||||
args[LIGHT_GREEN] = 224*alpha;
|
||||
args[LIGHT_BLUE] = 160*alpha;
|
||||
args[LIGHT_RED] = int(255*alpha);
|
||||
args[LIGHT_GREEN] = int(224*alpha);
|
||||
args[LIGHT_BLUE] = int(160*alpha);
|
||||
args[LIGHT_INTENSITY] = Random[Tele](6,8)*8;
|
||||
alpha -= 3./35;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -300,18 +300,18 @@ Class UTHud : BaseStatusBar
|
|||
if ( CPlayer.GetGender() == 1 )
|
||||
{
|
||||
UTDrawTintedTex(Woman[0],hudsize*statussize,min(opacity,15),dollcolor);
|
||||
if ( a ) UTDrawTintedTex(Woman[1],hudsize*statussize,min(opacity,15)*(a.Amount/double(a.MaxAmount)),dollcolor);
|
||||
if ( t ) UTDrawTintedTex(Woman[2],hudsize*statussize,min(opacity,15)*(t.Amount/double(t.MaxAmount)),dollcolor);
|
||||
if ( j ) UTDrawTintedTex(Woman[3],hudsize*statussize,min(opacity,15)*(j.Amount/double(j.MaxAmount)),dollcolor);
|
||||
if ( s ) UTDrawTintedTex(Woman[4],hudsize*statussize,min(opacity,15)*(s.Amount/double(s.MaxAmount)),GoldColor);
|
||||
if ( a ) UTDrawTintedTex(Woman[1],hudsize*statussize,int(min(opacity,15)*(a.Amount/double(a.MaxAmount))),dollcolor);
|
||||
if ( t ) UTDrawTintedTex(Woman[2],hudsize*statussize,int(min(opacity,15)*(t.Amount/double(t.MaxAmount))),dollcolor);
|
||||
if ( j ) UTDrawTintedTex(Woman[3],hudsize*statussize,int(min(opacity,15)*(j.Amount/double(j.MaxAmount))),dollcolor);
|
||||
if ( s ) UTDrawTintedTex(Woman[4],hudsize*statussize,int(min(opacity,15)*(s.Amount/double(s.MaxAmount))),GoldColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
UTDrawTintedTex(Man[0],hudsize*statussize,min(opacity,15),dollcolor);
|
||||
if ( a ) UTDrawTintedTex(Man[1],hudsize*statussize,min(opacity,15)*(a.Amount/double(a.MaxAmount)),dollcolor);
|
||||
if ( t ) UTDrawTintedTex(Man[2],hudsize*statussize,min(opacity,15)*(t.Amount/double(t.MaxAmount)),dollcolor);
|
||||
if ( j ) UTDrawTintedTex(Man[3],hudsize*statussize,min(opacity,15)*(j.Amount/double(j.MaxAmount)),dollcolor);
|
||||
if ( s ) UTDrawTintedTex(Man[4],hudsize*statussize,min(opacity,15)*(s.Amount/double(s.MaxAmount)),GoldColor);
|
||||
if ( a ) UTDrawTintedTex(Man[1],hudsize*statussize,int(min(opacity,15)*(a.Amount/double(a.MaxAmount))),dollcolor);
|
||||
if ( t ) UTDrawTintedTex(Man[2],hudsize*statussize,int(min(opacity,15)*(t.Amount/double(t.MaxAmount))),dollcolor);
|
||||
if ( j ) UTDrawTintedTex(Man[3],hudsize*statussize,int(min(opacity,15)*(j.Amount/double(j.MaxAmount))),dollcolor);
|
||||
if ( s ) UTDrawTintedTex(Man[4],hudsize*statussize,int(min(opacity,15)*(s.Amount/double(s.MaxAmount))),GoldColor);
|
||||
}
|
||||
}
|
||||
DrawColor = WhiteColor;
|
||||
|
|
@ -617,7 +617,7 @@ Class UTHud : BaseStatusBar
|
|||
}
|
||||
int protrusion = GetProtrusion(swidth/hres);
|
||||
[tmp,tmp,hres] = StatusbarToRealCoords(0,0,protrusion);
|
||||
width += (swidth-hres)/scale.X;
|
||||
width += int((swidth-hres)/scale.X);
|
||||
if ( am_showtime )
|
||||
{
|
||||
printtext = level.TimeFormatted();
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ Class ShockWave : Actor
|
|||
if ( (dist > olddmgradius) || (dir dot a.vel < 0) )
|
||||
{
|
||||
if ( !a.bDONTTHRUST ) a.vel += dir*((moscale+20)/a.mass);
|
||||
a.DamageMobj(self,target,moscale,'RedeemerDeath',DMG_THRUSTLESS);
|
||||
a.DamageMobj(self,target,int(moscale),'RedeemerDeath',DMG_THRUSTLESS);
|
||||
}
|
||||
}
|
||||
olddmgradius = dmgradius;
|
||||
|
|
@ -163,9 +163,9 @@ Class WarheadExplodLight : DynamicLight
|
|||
{
|
||||
Super.Tick();
|
||||
if ( globalfreeze || level.frozen ) return;
|
||||
args[LIGHT_RED] = 255*lifetime;
|
||||
args[LIGHT_GREEN] = 192*lifetime;
|
||||
args[LIGHT_BLUE] = 128*lifetime;
|
||||
args[LIGHT_RED] = int(255*lifetime);
|
||||
args[LIGHT_GREEN] = int(192*lifetime);
|
||||
args[LIGHT_BLUE] = int(128*lifetime);
|
||||
lifetime -= 1./ReactionTime;
|
||||
if ( lifetime <= 0 ) Destroy();
|
||||
}
|
||||
|
|
@ -663,6 +663,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
|
|||
Inventory.RespawnTics 2100;
|
||||
+INVENTORY.ALWAYSPICKUP;
|
||||
+WEAPON.NOAUTOFIRE;
|
||||
UTWeapon.DropAmmo 1;
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue