Oh man the amount of stuff I've done today:
- Implemented Biospark Carbine secondary + combo. - Added a "check out gun" anim when the Biospark Carbine is fully loaded and you press reload, just like the Hellblazer. - First person gestures. - Replaced "yeah I ban him" gesture with a wave, more useful. - Random stuff. - Made it so you can pick up unimplemented weapons (but can't use them). - Various tiny tweaks here and there.
This commit is contained in:
parent
0dc36b59c9
commit
cab0940723
45 changed files with 1420 additions and 98 deletions
|
|
@ -233,7 +233,7 @@ Class HellblazerMissile : Actor
|
|||
while ( bt.Next() )
|
||||
{
|
||||
let t = bt.Thing;
|
||||
if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || t.IsFriend(target) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),bNOGRAVITY?50:90) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue;
|
||||
if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),bNOGRAVITY?50:90) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue;
|
||||
deto++;
|
||||
break;
|
||||
}
|
||||
|
|
@ -862,7 +862,7 @@ Class HellblazerClusterMini : HellblazerMissile
|
|||
while ( bt.Next() )
|
||||
{
|
||||
let t = bt.Thing;
|
||||
if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || t.IsFriend(target) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),80) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue;
|
||||
if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),80) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue;
|
||||
deto++;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,22 @@ Class Wallbuster : SWWMWeapon
|
|||
return false;
|
||||
}
|
||||
|
||||
// leave these while it's still unimplemented
|
||||
override bool ReportHUDAmmo()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( other.player == players[consoleplayer] )
|
||||
Console.Printf("\cgWALLBUSTER NOT IMPLEMENTED\c-");
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$T_WALLBUSTER";
|
||||
|
|
@ -32,5 +48,21 @@ Class Wallbuster : SWWMWeapon
|
|||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
Select:
|
||||
TNT1 A 1
|
||||
{
|
||||
Console.Printf("\cgWALLBUSTER NOT IMPLEMENTED\c-");
|
||||
A_FullRaise();
|
||||
}
|
||||
Goto Ready;
|
||||
Ready:
|
||||
TNT1 A 1 A_WeaponReady();
|
||||
Wait;
|
||||
Fire:
|
||||
TNT1 A 1;
|
||||
Goto Ready;
|
||||
Deselect:
|
||||
TNT1 A -1 A_FullLower();
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -897,7 +897,7 @@ Class SWWMSmoke : Actor
|
|||
if ( isFrozen() ) return;
|
||||
vel *= 0.96;
|
||||
vel.z += 0.01;
|
||||
if ( waterlevel > 0 )
|
||||
if ( (waterlevel > 0) && !bAMBUSH )
|
||||
{
|
||||
let b = Spawn("SWWMBubble",pos);
|
||||
b.scale *= abs(scale.x);
|
||||
|
|
@ -969,7 +969,7 @@ Class SWWMViewSmoke : SWWMSmoke
|
|||
ofs += vvel;
|
||||
vvel *= 0.96;
|
||||
vvel.z += 0.01;
|
||||
if ( waterlevel > 0 ) Destroy();
|
||||
if ( (waterlevel > 0) && !bAMBUSH ) Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2457,13 +2457,13 @@ Class SWWMHandler : EventHandler
|
|||
switch ( e.Args[0] )
|
||||
{
|
||||
case 1:
|
||||
if ( mo.FindState("Approve") ) mo.SetStateLabel("Approve");
|
||||
SWWMGesture.SetGesture(mo,1);
|
||||
break;
|
||||
case 2:
|
||||
if ( mo.FindState("Victory") ) mo.SetStateLabel("Victory");
|
||||
SWWMGesture.SetGesture(mo,2);
|
||||
break;
|
||||
default:
|
||||
if ( mo.FindState("Taunt") ) mo.SetStateLabel("Taunt");
|
||||
SWWMGesture.SetGesture(mo,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -588,7 +588,7 @@ Class Eviscerator : SWWMWeapon
|
|||
A_ZoomFactor(1.);
|
||||
A_SWWMFlash();
|
||||
SWWMHandler.DoFlash(self,Color(64,255,224,96),3);
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(4500);
|
||||
A_Recoil(2.);
|
||||
Vector3 x, y, z, x2, y2, z2, dir, origin;
|
||||
double a, s;
|
||||
|
|
@ -645,7 +645,7 @@ Class Eviscerator : SWWMWeapon
|
|||
A_ZoomFactor(1.);
|
||||
A_SWWMFlash();
|
||||
SWWMHandler.DoFlash(self,Color(16,255,224,96),3);
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(4000);
|
||||
A_Recoil(2.2);
|
||||
Vector3 x, y, z, x2, y2, z2, dir, origin;
|
||||
double a, s;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,22 @@ Class Ynykron : SWWMWeapon
|
|||
|
||||
Property ClipCount : clipcount;
|
||||
|
||||
// leave these while it's still unimplemented
|
||||
override bool ReportHUDAmmo()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( other.player == players[consoleplayer] )
|
||||
Console.Printf("\cgYNYKRON ARTIFACT NOT IMPLEMENTED\c-");
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$T_YNYKRON";
|
||||
|
|
@ -25,5 +41,21 @@ Class Ynykron : SWWMWeapon
|
|||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
Select:
|
||||
TNT1 A 1
|
||||
{
|
||||
Console.Printf("\cgYNYKRON ARTIFACT NOT IMPLEMENTED\c-");
|
||||
A_FullRaise();
|
||||
}
|
||||
Goto Ready;
|
||||
Ready:
|
||||
TNT1 A 1 A_WeaponReady();
|
||||
Wait;
|
||||
Fire:
|
||||
TNT1 A 1;
|
||||
Goto Ready;
|
||||
Deselect:
|
||||
TNT1 A -1 A_FullLower();
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ Class AirBullet : FastProjectile
|
|||
}
|
||||
void A_Splode()
|
||||
{
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(8000);
|
||||
A_QuakeEx(6,6,6,20,0,250,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.);
|
||||
A_StartSound("deepimpact/bullethit",CHAN_VOICE,CHANF_DEFAULT,1.,.3);
|
||||
A_SprayDecal("ImpactMark");
|
||||
|
|
@ -350,7 +350,7 @@ Class DeepImpact : SWWMWeapon
|
|||
A_QuakeEx(6,6,6,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.7);
|
||||
A_Recoil(4.);
|
||||
A_StartSound("deepimpact/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.5);
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(8000);
|
||||
invoker.clipcount = 0;
|
||||
Vector3 x, y, z, x2, y2, z2;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
|
|
|
|||
|
|
@ -298,10 +298,11 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
}
|
||||
}
|
||||
}
|
||||
else trackers.Clear();
|
||||
// update floating scores, adding the scorenums first, then the damnums
|
||||
int total_sz = 0;
|
||||
if ( scorenums.GetBool() ) total_sz += hnd.scorenums_cnt;
|
||||
if ( healthnums.GetBool() ) total_sz += min(50,hnd.damnums_cnt);
|
||||
if ( healthnums.GetBool() ) total_sz += min(100,hnd.damnums_cnt);
|
||||
if ( scoreobjs.Size() != total_sz )
|
||||
scoreobjs.Resize(total_sz);
|
||||
int i = 0;
|
||||
|
|
|
|||
|
|
@ -496,7 +496,7 @@ Class Demolitionist : PlayerPawn
|
|||
s.special1 = int(-lastvelz);
|
||||
ReactionTime = 17;
|
||||
A_Stop();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(2500);
|
||||
if ( player == players[consoleplayer] )
|
||||
{
|
||||
A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP);
|
||||
|
|
@ -973,7 +973,7 @@ Class Demolitionist : PlayerPawn
|
|||
s.special1 = 30;
|
||||
ReactionTime = 17;
|
||||
A_Stop();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(2500);
|
||||
if ( player == players[consoleplayer] )
|
||||
{
|
||||
A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP);
|
||||
|
|
@ -1203,7 +1203,7 @@ Class Demolitionist : PlayerPawn
|
|||
if ( !player ) return;
|
||||
// add lore if any
|
||||
SWWMLoreLibrary.Add(player,item.GetClassName());
|
||||
if ( (item is 'Weapon') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() )
|
||||
if ( (item is 'Weapon') && !(item is 'SWWMGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() )
|
||||
SWWMHandler.AddOneliner("getweapon",2);
|
||||
if ( (item is 'Key') && !key_reentrant )
|
||||
{
|
||||
|
|
@ -1390,7 +1390,7 @@ Class Demolitionist : PlayerPawn
|
|||
DashEnd:
|
||||
XZW4 TUVWX 2;
|
||||
Goto Spawn+1;
|
||||
Taunt:
|
||||
Wave:
|
||||
#### # 3;
|
||||
XZW4 YZ 3;
|
||||
XZW5 ABCDEFGHIJKLM 3;
|
||||
|
|
@ -1778,3 +1778,105 @@ Class CastDemolitionist : Actor
|
|||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
// First person gestures
|
||||
Class SWWMGesture : SWWMWeapon
|
||||
{
|
||||
Weapon formerweapon;
|
||||
int whichgesture;
|
||||
bool deaded;
|
||||
int gonect;
|
||||
|
||||
static void SetGesture( PlayerPawn mo, int which = 0 )
|
||||
{
|
||||
if ( (mo.player.ReadyWeapon is 'SWWMGesture') || (mo.player.PendingWeapon is 'SWWMGesture') ) return; // already gesturing
|
||||
SWWMGesture w = SWWMGesture(mo.FindInventory("SWWMGesture"));
|
||||
if ( !w )
|
||||
{
|
||||
w = SWWMGesture(Spawn("SWWMGesture"));
|
||||
mo.AddInventory(w);
|
||||
}
|
||||
if ( mo.player.PendingWeapon != WP_NOCHANGE ) w.formerweapon = mo.player.PendingWeapon;
|
||||
else w.formerweapon = mo.player.ReadyWeapon;
|
||||
w.whichgesture = which;
|
||||
mo.player.PendingWeapon = w;
|
||||
}
|
||||
|
||||
action void A_CallPlayerGesture( statelabel st )
|
||||
{
|
||||
if ( invoker.Owner.FindState(st) && (invoker.Owner.Health > 0) )
|
||||
invoker.Owner.SetStateLabel(st);
|
||||
}
|
||||
|
||||
action void A_FinishGesture()
|
||||
{
|
||||
player.PendingWeapon = invoker.formerweapon;
|
||||
player.SetPSprite(PSP_WEAPON,ResolveState("Deselect"));
|
||||
}
|
||||
|
||||
override void OwnerDied()
|
||||
{
|
||||
Super.OwnerDied();
|
||||
deaded = true;
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
+WEAPON.CHEATNOTWEAPON;
|
||||
+INVENTORY.UNDROPPABLE;
|
||||
+INVENTORY.UNTOSSABLE;
|
||||
+INVENTORY.UNCLEARABLE;
|
||||
}
|
||||
States
|
||||
{
|
||||
Select:
|
||||
TNT1 A 1
|
||||
{
|
||||
A_FullRaise();
|
||||
if ( invoker.deaded ) A_FinishGesture();
|
||||
}
|
||||
Goto Ready;
|
||||
Ready:
|
||||
TNT1 A 1
|
||||
{
|
||||
if ( invoker.whichgesture == 1 ) return ResolveState("Approve");
|
||||
if ( invoker.whichgesture == 2 ) return ResolveState("Victory");
|
||||
return ResolveState("Wave");
|
||||
}
|
||||
Wait;
|
||||
Fire:
|
||||
TNT1 A 1;
|
||||
Goto Ready;
|
||||
Wave:
|
||||
TNT1 A 3 A_CallPlayerGesture("Wave");
|
||||
XZW1 AB 3;
|
||||
XZW1 C 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW1 DEFGHIJ 3;
|
||||
XZW1 K 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW1 LMNO 3;
|
||||
TNT1 A -1 A_FinishGesture();
|
||||
Stop;
|
||||
Approve:
|
||||
TNT1 A 3 A_CallPlayerGesture("Approve");
|
||||
XZW1 PQ 3;
|
||||
XZW1 R 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW1 STUVWX 3;
|
||||
XZW1 Y 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW1 Z 3;
|
||||
XZW2 ABCDEF 3;
|
||||
TNT1 A -1 A_FinishGesture();
|
||||
Stop;
|
||||
Victory:
|
||||
TNT1 A 3 A_CallPlayerGesture("Victory");
|
||||
XZW2 GH 3;
|
||||
XZW2 I 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW2 JKLMNOPQ 3;
|
||||
XZW2 R 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW2 STUVWXY 3;
|
||||
TNT1 A -1 A_FinishGesture();
|
||||
Stop;
|
||||
Deselect:
|
||||
TNT1 A -1 A_FullLower();
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -564,7 +564,7 @@ Class SaltImpact : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(6000);
|
||||
SWWMHandler.DoBlast(self,120,15000);
|
||||
A_Explode(25,120);
|
||||
A_QuakeEx(3,3,3,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2);
|
||||
|
|
@ -1555,7 +1555,7 @@ Class GoldenImpact : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(40000);
|
||||
SWWMHandler.DoBlast(self,200,120000);
|
||||
A_Explode(7777,200);
|
||||
A_QuakeEx(9,9,9,40,0,5000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollintensity:1.5);
|
||||
|
|
@ -1682,7 +1682,7 @@ Class GoldenSubImpact : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(9000);
|
||||
SWWMHandler.DoBlast(self,200,90000);
|
||||
A_Explode(777,200);
|
||||
A_QuakeEx(7,7,7,20,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:.8);
|
||||
|
|
@ -1807,7 +1807,7 @@ Class GoldenSubSubImpact : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(3000);
|
||||
SWWMHandler.DoBlast(self,200,60000);
|
||||
A_Explode(77,200);
|
||||
A_QuakeEx(4,4,4,15,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollintensity:.4);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -215,6 +215,7 @@ Class CandyPop : Actor
|
|||
double hfov = atan(Screen.GetAspectRatio()*tan(vfov));
|
||||
let mo = players[consoleplayer].camera;
|
||||
Vector3 pp;
|
||||
if ( !mo.CheckSight(self) ) return;
|
||||
if ( mo is 'PlayerPawn' ) pp = mo.Vec2OffsetZ(0,0,PlayerPawn(mo).player.viewz);
|
||||
else pp = mo.Vec3Offset(0,0,mo.CameraHeight);
|
||||
Vector3 sc = level.SphericalCoords(pp,pos,(mo.angle,mo.pitch));
|
||||
|
|
@ -230,7 +231,7 @@ Class CandyPop : Actor
|
|||
Spawn:
|
||||
BLPF B 3 NoDelay
|
||||
{
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(2000);
|
||||
SWWMHandler.DoBlast(self,120,60000);
|
||||
A_Explode(100,120);
|
||||
Scale *= FRandom[ExploS](0.6,1.8);
|
||||
|
|
@ -297,7 +298,7 @@ Class TinyCandyPop : CandyPop
|
|||
Spawn:
|
||||
BLPF B 3 NoDelay
|
||||
{
|
||||
A_AlertMonsters();
|
||||
A_AlertMonsters(700);
|
||||
SWWMHandler.DoBlast(self,80,32000);
|
||||
A_Explode(40,80);
|
||||
Scale *= FRandom[ExploS](0.6,1.8);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,22 @@ Class SilverBullet : SWWMWeapon
|
|||
|
||||
Property ClipCount : clipcount;
|
||||
|
||||
// leave these while it's still unimplemented
|
||||
override bool ReportHUDAmmo()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( other.player == players[consoleplayer] )
|
||||
Console.Printf("\cgSILVER BULLET JET NOT IMPLEMENTED\c-");
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$T_SILVERBULLET";
|
||||
|
|
@ -26,5 +42,21 @@ Class SilverBullet : SWWMWeapon
|
|||
Spawn:
|
||||
XZW1 A -1;
|
||||
Stop;
|
||||
Select:
|
||||
TNT1 A 1
|
||||
{
|
||||
Console.Printf("\cgSILVER BULLET JET NOT IMPLEMENTED\c-");
|
||||
A_FullRaise();
|
||||
}
|
||||
Goto Ready;
|
||||
Ready:
|
||||
TNT1 A 1 A_WeaponReady();
|
||||
Wait;
|
||||
Fire:
|
||||
TNT1 A 1;
|
||||
Goto Ready;
|
||||
Deselect:
|
||||
TNT1 A -1 A_FullLower();
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue