Mortal Rifle idle and melee added.
This commit is contained in:
parent
a4830f6008
commit
d0805c2760
3 changed files with 109 additions and 18 deletions
|
|
@ -163,7 +163,7 @@ extend Class MisterRifle
|
|||
for ( int i=0; i<clipcount; i++ )
|
||||
Screen.DrawTexture(BulletTex[0],false,bx-((i%2)?12:13),(by-24)+(2*(i/2))+(i%2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
if ( gchambered ) Screen.DrawTexture(BulletTex[1+gfired],false,bx-22,by-10,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,gfired?0x80000000:0x00000000);
|
||||
String str = "THIS WEAPON IS NOT YET FUNCTIONAL";
|
||||
String str = "THIS WEAPON IS NOT YET FULLY IMPLEMENTED";
|
||||
Screen.DrawText(NewSmallFont,Font.CR_RED,(Screen.GetWidth()-NewSmallFont.StringWidth(str)*CleanXFac_1)/2,Screen.GetHeight()-(NewSmallFont.GetHeight()*CleanYFac_1+clamp(swwm_hudmargin,0,20)*hs),str,DTA_CleanNoMove_1,true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ Class MisterRifle : SWWMWeapon
|
|||
bool chambered, fired;
|
||||
bool gchambered, gfired;
|
||||
bool boltlock, initialized;
|
||||
bool waschambered, wasfired;
|
||||
bool wasgchambered, wasgfired;
|
||||
int firemode;
|
||||
ui int lastfiremode;
|
||||
String serialnum;
|
||||
|
||||
Property ClipCount : clipcount;
|
||||
|
|
@ -29,6 +32,22 @@ Class MisterRifle : SWWMWeapon
|
|||
Super.AttachToOwner(other);
|
||||
}
|
||||
|
||||
override void HudTick()
|
||||
{
|
||||
Super.HudTick();
|
||||
if ( lastfiremode && (lastfiremode != firemode+1) && (Owner.player == players[consoleplayer]) )
|
||||
{
|
||||
let bar = SWWMStatusBar(statusbar);
|
||||
if ( bar )
|
||||
{
|
||||
bar.ntagstr = StringTable.Localize("$SWWM_MRMODE"..(firemode+1));
|
||||
bar.ntagtic = level.totaltime;
|
||||
bar.ntagcol = nametagcolor;
|
||||
}
|
||||
}
|
||||
lastfiremode = firemode+1;
|
||||
}
|
||||
|
||||
override bool ReportHUDAmmo()
|
||||
{
|
||||
return (chambered&&!fired)||(clipcount>0)||(Ammo1.Amount>0)||(gchambered&&!gfired)||(Ammo2.Amount>0);
|
||||
|
|
@ -92,6 +111,41 @@ Class MisterRifle : SWWMWeapon
|
|||
else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP);
|
||||
}
|
||||
|
||||
action void A_BoltBack( bool bCasing = false )
|
||||
{
|
||||
A_StartSound("mister/boltback",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
if ( bCasing )
|
||||
{
|
||||
invoker.waschambered = invoker.chambered;
|
||||
invoker.wasfired = invoker.fired;
|
||||
A_ChangeModel("",1,"","",8,"models",invoker.wasfired?"MortalRound_Used.png":"MortalRound.png",CMDL_USESURFACESKIN,-1);
|
||||
}
|
||||
invoker.chambered = invoker.fired = false;
|
||||
}
|
||||
|
||||
action void A_BoltForward()
|
||||
{
|
||||
A_StartSound("mister/boltforward",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
if ( invoker.ClipCount > 0 )
|
||||
{
|
||||
invoker.clipcount--;
|
||||
invoker.chambered = true;
|
||||
invoker.fired = false;
|
||||
}
|
||||
}
|
||||
|
||||
action void A_DropCasing()
|
||||
{
|
||||
// TODO
|
||||
A_ChangeModel("",1,"","",8,"models","",CMDL_USESURFACESKIN,-1);
|
||||
}
|
||||
|
||||
action void A_FireSelect()
|
||||
{
|
||||
A_StartSound("mister/fireselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.firemode = (invoker.firemode+1)%4;
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$T_MORTALRIFLE";
|
||||
|
|
@ -132,41 +186,78 @@ Class MisterRifle : SWWMWeapon
|
|||
Goto Ready;
|
||||
SelectCycle:
|
||||
XZWI RSTUVWXYZ 2;
|
||||
XZWJ A 2
|
||||
{
|
||||
A_StartSound("mister/boltback",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.chambered = invoker.fired = false;
|
||||
}
|
||||
XZWJ A 2 A_BoltBack();
|
||||
XZWJ B 2;
|
||||
XZWJ C 4;
|
||||
XZWJ D 2
|
||||
{
|
||||
A_StartSound("mister/boltforward",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.clipcount--;
|
||||
invoker.chambered = true;
|
||||
A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_BoltForward();
|
||||
A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15);
|
||||
}
|
||||
XZWJ EFG 2;
|
||||
XZWJ HIJK 1;
|
||||
XZWJ LMNO 2;
|
||||
Goto Ready;
|
||||
Ready:
|
||||
XZW2 A 1 A_WeaponReady();
|
||||
XZW2 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1);
|
||||
Wait;
|
||||
Fire:
|
||||
XZW2 A 1;
|
||||
XZW2 A 2;
|
||||
Goto Ready;
|
||||
AltFire:
|
||||
XZW2 A 1;
|
||||
XZW2 A 2;
|
||||
Goto Ready;
|
||||
Reload:
|
||||
XZW2 A 1;
|
||||
XZW2 A 2 A_Jump(256,"Idle"); // for now, directly jump to idle until reloading is implemented
|
||||
Goto Ready;
|
||||
Idle:
|
||||
XZW2 A 2
|
||||
{
|
||||
A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_PlayerCheckGun();
|
||||
}
|
||||
XZW7 JKLMNO 2;
|
||||
XZW7 PQR 3;
|
||||
XZW7 STU 4;
|
||||
XZW7 V 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW7 WXY 2;
|
||||
XZW7 Z 3;
|
||||
XZW8 AB 3;
|
||||
XZW8 CDEF 4;
|
||||
XZW8 G 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.2);
|
||||
XZW8 HIJK 2;
|
||||
XZW8 L 3;
|
||||
Goto Ready;
|
||||
Zoom:
|
||||
XZW2 A 1;
|
||||
XZW2 A 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW6 PQRSTUVW 2;
|
||||
XZW6 X 2 A_FireSelect();
|
||||
XZW6 YZ 2;
|
||||
XZW7 A 2;
|
||||
XZW7 B 2 A_JumpIf(player.cmd.buttons&BT_ZOOM,"ReZoom");
|
||||
XZW7 CD 2;
|
||||
XZW7 E 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.35);
|
||||
XZW7 FGHI 2;
|
||||
Goto Ready;
|
||||
ReZoom:
|
||||
XZW7 B 4; // smoother tween
|
||||
Goto Zoom+6;
|
||||
User1:
|
||||
XZW2 A 1;
|
||||
XZW2 A 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW8 MN 2;
|
||||
XZW8 O 2
|
||||
{
|
||||
A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_PlayerMelee();
|
||||
}
|
||||
XZW8 PQ 2;
|
||||
XZW8 R 1;
|
||||
XZW8 S 1 A_Parry(8);
|
||||
XZW8 T 1;
|
||||
XZW8 U 1 A_Melee(50,"demolitionist/whitm",1.1,1.2,1.2);
|
||||
XZW8 VWXYZ 2;
|
||||
XZW9 A 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW9 BCDEFGHIJ 2;
|
||||
Goto Ready;
|
||||
Deselect:
|
||||
XZW2 A 2 A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue