diff --git a/modeldef.pulse b/modeldef.pulse index 42a5bbc..34c85a4 100644 --- a/modeldef.pulse +++ b/modeldef.pulse @@ -9,6 +9,148 @@ Model "PulseAmmo" FrameIndex PAMO A 0 0 } +Model "PulseBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "pbolt0.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT A 0 0 +} +Model "PulseBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "pbolt1.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT B 0 0 +} +Model "PulseBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "pbolt2.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT C 0 0 +} +Model "PulseBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "pbolt3.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT D 0 0 +} +Model "PulseBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "pbolt4.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT E 0 0 +} + +Model "StarterBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "sbolt0.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT A 0 0 +} +Model "StarterBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "sbolt1.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT B 0 0 +} +Model "StarterBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "sbolt2.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT C 0 0 +} +Model "StarterBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "sbolt3.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT D 0 0 +} +Model "StarterBolt" +{ + Path "models" + Model 0 "PBolt_d.3d" + Skin 0 "sbolt4.png" + Offset 20.25 0 0 + Scale 0.2025 0.10125 0.1215 + AngleOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex PBLT E 0 0 +} + Model "PulseGun" { Path "models" diff --git a/models/PBolt_a.3d b/models/PBolt_a.3d new file mode 100644 index 0000000..6a726c3 Binary files /dev/null and b/models/PBolt_a.3d differ diff --git a/models/PBolt_d.3d b/models/PBolt_d.3d new file mode 100644 index 0000000..b63b0d1 Binary files /dev/null and b/models/PBolt_d.3d differ diff --git a/models/pbolt0.png b/models/pbolt0.png new file mode 100644 index 0000000..de7ce7f Binary files /dev/null and b/models/pbolt0.png differ diff --git a/models/pbolt1.png b/models/pbolt1.png new file mode 100644 index 0000000..312e3a1 Binary files /dev/null and b/models/pbolt1.png differ diff --git a/models/pbolt2.png b/models/pbolt2.png new file mode 100644 index 0000000..974813f Binary files /dev/null and b/models/pbolt2.png differ diff --git a/models/pbolt3.png b/models/pbolt3.png new file mode 100644 index 0000000..398b3e3 Binary files /dev/null and b/models/pbolt3.png differ diff --git a/models/pbolt4.png b/models/pbolt4.png new file mode 100644 index 0000000..c2b57fa Binary files /dev/null and b/models/pbolt4.png differ diff --git a/models/sbolt0.png b/models/sbolt0.png new file mode 100644 index 0000000..9ecf551 Binary files /dev/null and b/models/sbolt0.png differ diff --git a/models/sbolt1.png b/models/sbolt1.png new file mode 100644 index 0000000..cfd622f Binary files /dev/null and b/models/sbolt1.png differ diff --git a/models/sbolt2.png b/models/sbolt2.png new file mode 100644 index 0000000..fe911d3 Binary files /dev/null and b/models/sbolt2.png differ diff --git a/models/sbolt3.png b/models/sbolt3.png new file mode 100644 index 0000000..c6cec48 Binary files /dev/null and b/models/sbolt3.png differ diff --git a/models/sbolt4.png b/models/sbolt4.png new file mode 100644 index 0000000..39a05db Binary files /dev/null and b/models/sbolt4.png differ diff --git a/sprites/PCAPA0.png b/sprites/PCAPA0.png new file mode 100644 index 0000000..f8e1da4 Binary files /dev/null and b/sprites/PCAPA0.png differ diff --git a/sprites/PCAPB0.png b/sprites/PCAPB0.png new file mode 100644 index 0000000..143bc8d Binary files /dev/null and b/sprites/PCAPB0.png differ diff --git a/sprites/PCAPC0.png b/sprites/PCAPC0.png new file mode 100644 index 0000000..66fdf94 Binary files /dev/null and b/sprites/PCAPC0.png differ diff --git a/sprites/PCAPD0.png b/sprites/PCAPD0.png new file mode 100644 index 0000000..7c64a64 Binary files /dev/null and b/sprites/PCAPD0.png differ diff --git a/sprites/PHITA0.png b/sprites/PHITA0.png new file mode 100644 index 0000000..a6d422c Binary files /dev/null and b/sprites/PHITA0.png differ diff --git a/sprites/PHITB0.png b/sprites/PHITB0.png new file mode 100644 index 0000000..3292ac2 Binary files /dev/null and b/sprites/PHITB0.png differ diff --git a/sprites/PHITC0.png b/sprites/PHITC0.png new file mode 100644 index 0000000..e3027c5 Binary files /dev/null and b/sprites/PHITC0.png differ diff --git a/sprites/PHITD0.png b/sprites/PHITD0.png new file mode 100644 index 0000000..47d9939 Binary files /dev/null and b/sprites/PHITD0.png differ diff --git a/textures.pulse b/textures.pulse index 1af89c0..db94b6c 100644 --- a/textures.pulse +++ b/textures.pulse @@ -186,3 +186,8 @@ Sprite "PGF2L0",1,1{} Sprite "PGF2M0",1,1{} Sprite "PGF2N0",1,1{} Sprite "PMUZA0",1,1{} +Sprite "PBLTA0",1,1{} +Sprite "PBLTB0",1,1{} +Sprite "PBLTC0",1,1{} +Sprite "PBLTD0",1,1{} +Sprite "PBLTE0",1,1{} diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index ddace81..2c63897 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -27,7 +27,7 @@ Class BioAmmo : Ammo Inventory.MaxAmount 100; Ammo.BackpackAmount 50; Ammo.BackpackMaxAmount 100; - Ammo.DropAmount 25; + Ammo.DropAmount 10; } States { diff --git a/zscript/chainsaw.zsc b/zscript/chainsaw.zsc index fb03288..b12a108 100644 --- a/zscript/chainsaw.zsc +++ b/zscript/chainsaw.zsc @@ -1,3 +1,12 @@ +Class Tier1Weapon : RandomSpawner2 replaces Chainsaw +{ + Default + { + DropItem "UTChainsaw", 255, 1; + DropItem "Enforcer", 255, 1; + } +} + Class SawImpact : Actor { Default @@ -39,7 +48,7 @@ Class SawImpact : Actor } } -Class UTChainsaw : UTWeapon replaces Chainsaw +Class UTChainsaw : UTWeapon { double sawcnt; diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index 2463aa2..b84d42c 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -8,7 +8,7 @@ Class UTRocketAmmo : Ammo Inventory.MaxAmount 48; Ammo.BackpackAmount 12; Ammo.BackpackMaxAmount 48; - Ammo.DropAmount 12; + Ammo.DropAmount 3; } States { diff --git a/zscript/enforcer.zsc b/zscript/enforcer.zsc index ea46c2b..0673633 100644 --- a/zscript/enforcer.zsc +++ b/zscript/enforcer.zsc @@ -5,7 +5,7 @@ Class EClip : MiniAmmo replaces Clip Tag "Clip"; // "Large Bullets" in UT, but I think that's an oversight, since it's the same as the Minigun ammo Inventory.PickupMessage "You picked up a Clip."; Inventory.Amount 20; - Ammo.DropAmount 20; + Ammo.DropAmount 5; } States { diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index 7f46831..33ff75c 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -34,7 +34,7 @@ Class FlakAmmo : Ammo Inventory.MaxAmount 50; Ammo.BackpackAmount 20; Ammo.BackpackMaxAmount 50; - Ammo.DropAmount 10; + Ammo.DropAmount 5; } States { diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index e45b472..3295ec0 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -34,7 +34,7 @@ Class MiniAmmo : Ammo Inventory.MaxAmount 199; Ammo.BackpackAmount 100; Ammo.BackpackMaxAmount 199; - Ammo.DropAmount 50; + Ammo.DropAmount 20; } States { diff --git a/zscript/powerups.zsc b/zscript/powerups.zsc index 8f4048c..54ab5d5 100644 --- a/zscript/powerups.zsc +++ b/zscript/powerups.zsc @@ -214,6 +214,11 @@ Class PowerUTInvisibility : PowerInvisibility Super.EndEffect(); PrintPickupMessage(true,"Invisibility has worn off."); } + override bool isBlinking() + { + // don't cause blinking, it bugs out models + return false; + } } Class UTInvisibility : PowerupGiver replaces BlurSphere diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index 3f79509..0625a41 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -26,7 +26,7 @@ Class PulseAmmo : Ammo Inventory.MaxAmount 199; Ammo.BackpackAmount 50; Ammo.BackpackMaxAmount 199; - Ammo.DropAmount 25; + Ammo.DropAmount 10; } States { @@ -150,19 +150,18 @@ Class PulseBoltLight : DynamicLight Default { DynamicLight.Type "Point"; - Args 64,255,0,50; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - args[LIGHT_INTENSITY] = Random[Pulse](50,60); + Args 32,128,0,40; } override void Tick() { Super.Tick(); - if ( globalfreeze || level.frozen ) return; - if ( lived ) Destroy(); - lived = true; + if ( !target ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + args[LIGHT_INTENSITY] = Random[Pulse](30,50); } } @@ -188,19 +187,62 @@ Class PulseBoltTracer : LineTracer } } +Class PulseBoltCap : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOGRAVITY; + +NOCLIP; + +DONTSPLASH; + Scale 0.25; + } + States + { + Spawn: + PCAP ABCD 1 Bright; + Loop; + } +} + +Class PulseBoltHit : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOGRAVITY; + +NOCLIP; + +DONTSPLASH; + Scale 0.25; + } + States + { + Spawn: + PHIT ABCD 1 Bright; + Loop; + } +} + Class PulseBolt : Actor { + const beamsize = 40.5; + PulseBoltTracer t; double accdamage; int lasthit; Actor damagedactor; - double beamsize; Actor weffect; - double phase; + int position; + PulseBolt next; override void OnDestroy() { Super.OnDestroy(); + if ( next ) next.Destroy(); if ( weffect ) weffect.Destroy(); } override void PostBeginPlay() @@ -208,49 +250,11 @@ Class PulseBolt : Actor Super.PostBeginPlay(); t = new("PulseBoltTracer"); t.ignore = target; - beamsize = 40; + let l = Spawn("PulseBoltLight",pos); + l.target = self; } - override void Tick() + void CheckBeam( Vector3 x ) { - Super.Tick(); - if ( globalfreeze || level.frozen ) return; - if ( !target ) - { - Destroy(); - return; - } - phase += 10; - // update beam - int numpt; - Vector3 x, y, z; - Vector3 origin; - if ( target.player ) - { - [x, y, z] = Matrix4.GetAxes(target.pitch,target.angle,target.roll); - origin = (0,0,target.player.viewz-target.pos.z)+5.0*x+3.0*y-1.5*z; - } - else origin = (0,0,target.missileheight); - SetOrigin(target.Vec3Offset(origin.x,origin.y,origin.z),true); - A_SetAngle(target.angle,SPF_INTERPOLATE); - A_SetPitch(target.BulletSlope(),SPF_INTERPOLATE); - // draw beam - [x, y, z] = Matrix4.GetAxes(pitch,angle,roll); - for ( double i=0; i<=beamsize; i+=0.5 ) - { - origin = Level.Vec3Diff(pos,pos+x*i - +sin(i*0.834-phase)*y*0.1435*min(1,(i*0.1)**.5) - +sin(i*0.836-phase)*y*0.1342*min(1,(i*0.1)**.5) - +sin(i*0.843-phase)*z*0.1463*min(1,(i*0.1)**.5) - +sin(i*0.863-phase)*z*0.1345*min(1,(i*0.1)**.5)); - A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,1,FRandom[Pulse](0.6,1.2),0,origin.x,origin.y,origin.z,0,0,0,0,0,0,2); - A_SpawnParticle("40FF00",SPF_FULLBRIGHT,1,FRandom[Pulse](2.4,4.8),0,origin.x,origin.y,origin.z,0,0,0,0,0,0,.1); - } - for ( int i=50; i= 19 ) { - Vector3 pvel = (t.Results.HitVector+(FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5))).unit()*FRandom[Pulse](2,4); - A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](20,40),FRandom[Pulse](2.4,4.8),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1); - A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](30,50),FRandom[Pulse](4.8,7.2),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1); + int numpt = Random[Pulse](5,10)*!Random[Pulse](0,5); + for ( int i=0; i 4 ) frame = 0; + CheckBeam(x); } } @@ -354,7 +434,6 @@ Class PulseGun : UTWeapon invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(32,128,255,128),1); A_AlertMonsters(); - A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05); Vector3 x, y, z; [x, y, z] = Matrix4.GetAxes(pitch,angle,roll); Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.5*y-2.4*z; @@ -416,7 +495,7 @@ Class PulseGun : UTWeapon action void A_StartBeam() { A_PlaySound("pulse/bolt",CHAN_WEAPON,1.0,true); - invoker.beam = Spawn("PulseBolt",pos); + invoker.beam = Spawn("StarterBolt",pos); invoker.beam.target = self; } action void A_StopBeam() diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index 2d41fa1..e66e37d 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -8,7 +8,7 @@ Class RipperAmmo : Ammo Inventory.MaxAmount 75; Ammo.BackpackAmount 50; Ammo.BackpackMaxAmount 75; - Ammo.DropAmount 25; + Ammo.DropAmount 10; } States { diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index 6beaf6e..858779d 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -8,7 +8,7 @@ Class ShockAmmo : Ammo Inventory.MaxAmount 50; Ammo.BackpackAmount 20; Ammo.BackpackMaxAmount 50; - Ammo.DropAmount 10; + Ammo.DropAmount 5; } States { @@ -998,7 +998,7 @@ Class EnhancedShockAmmo : Ammo Inventory.MaxAmount 25; Ammo.BackpackAmount 0; Ammo.BackpackMaxAmount 25; - Ammo.DropAmount 5; + Ammo.DropAmount 2; } States { diff --git a/zscript/sniperrifle.zsc b/zscript/sniperrifle.zsc index feed105..43550c9 100644 --- a/zscript/sniperrifle.zsc +++ b/zscript/sniperrifle.zsc @@ -8,7 +8,7 @@ Class RifleAmmo : Ammo Inventory.MaxAmount 50; Ammo.BackpackAmount 20; Ammo.BackpackMaxAmount 50; - Ammo.DropAmount 10; + Ammo.DropAmount 5; } States {