diff --git a/brightmaps/JShockCore_2.png b/brightmaps/JShockCore_2.png new file mode 100644 index 0000000..0a38d1e Binary files /dev/null and b/brightmaps/JShockCore_2.png differ diff --git a/gldefs.txt b/gldefs.txt index aa0bb1b..6f3f7f2 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -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" diff --git a/modeldef.ges b/modeldef.ges index 70af1f1..878ce21 100644 --- a/modeldef.ges +++ b/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" { diff --git a/modeldef.shock b/modeldef.shock index 764ed80..c18c72c 100644 --- a/modeldef.shock +++ b/modeldef.shock @@ -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" { diff --git a/models/JShockCore_2.png b/models/JShockCore_2.png new file mode 100644 index 0000000..2c5fc1f Binary files /dev/null and b/models/JShockCore_2.png differ diff --git a/zscript/armoritems.zsc b/zscript/armoritems.zsc index 29d12da..f0aaece 100644 --- a/zscript/armoritems.zsc +++ b/zscript/armoritems.zsc @@ -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; diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index a1efc22..6a91cd8 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -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 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 { diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index ef42152..f058cc2 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -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 ) { diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index b1aff62..2a903d6 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -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; diff --git a/zscript/sniperrifle.zsc b/zscript/sniperrifle.zsc index 64345c9..35aa0ab 100644 --- a/zscript/sniperrifle.zsc +++ b/zscript/sniperrifle.zsc @@ -155,6 +155,7 @@ Class SniperRifle : UTWeapon Weapon.AmmoUse2 1; Weapon.AmmoGive 8; Weapon.Kickback 250; + UTWeapon.DropAmmo 2; } States { diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index 0cfba37..54ede08 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -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; } diff --git a/zscript/uthud.zsc b/zscript/uthud.zsc index 05fbeb0..3a478a5 100644 --- a/zscript/uthud.zsc +++ b/zscript/uthud.zsc @@ -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(); diff --git a/zscript/warheadlauncher.zsc b/zscript/warheadlauncher.zsc index f86bdbc..2a14054 100644 --- a/zscript/warheadlauncher.zsc +++ b/zscript/warheadlauncher.zsc @@ -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 {