Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Class VanillaRifle : Weapon
- {
- Default
- {
- //$Title Vanilla Rifle
- //$Category Weapons
- Scale 0.75;
- Weapon.SelectionOrder 1000;
- Weapon.AmmoUse 1;
- Weapon.AmmoGive1 20;
- Weapon.AmmoType1 "VanillaRifleMagazine";
- Weapon.AmmoType2 "Clip";
- Weapon.BobStyle "Smooth";
- Weapon.BobSpeed 1.2;
- Weapon.BobRangeX 0.7;
- Weapon.BobRangeY 0.7;
- Weapon.SlotNumber 4;
- Weapon.SlotPriority 100.0;
- AttackSound "Marine/Fire";
- Inventory.PickupMessage "You picked up the rifle !";
- Obituary "%o was gunned down by %k's assault rifle";
- +Weapon.Ammo_Optional;
- }
- //Modified version of a generic reloading function by Agent_Ash.
- Action Void A_RifleReload()
- {
- If (Invoker.Ammo1 && Invoker.Ammo2)
- {
- While (Invoker.Ammo2.Amount > 0 && Invoker.Ammo1.Amount < Invoker.Ammo1.MaxAmount)
- {
- TakeInventory(Invoker.Ammo2.GetClass(),1);
- GiveInventory(Invoker.Ammo1.GetClass(),1);
- }
- }
- }
- enum OverlayNames {PSP_SCANLINES = 2, PSP_IMPOSTOR = 3, PSP_FADE = 1001}
- Int ShotsFired; //How many rounds in a burst the rifle has fired.
- Bool AlreadyZoomed; //Is on as long as the gun is zoomed in.
- States
- {
- Spawn:
- VRIF Z -1;
- Stop;
- Ready:
- VRIF AABB 3 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM);
- Loop;
- Select:
- TNT1 A 0
- {
- A_Overlay (PSP_SCANLINES,"Scanlines");
- A_OverlayAlpha (PSP_SCANLINES,0.0);
- A_OverlayFlags (PSP_SCANLINES,PSPF_ALPHA|PSPF_RENDERSTYLE|PSPF_FORCEALPHA|PSPF_FORCESTYLE,True);
- A_OverlayFlags (PSP_SCANLINES,PSPF_ADDWEAPON|PSPF_ADDBOB,False);
- A_OverlayRenderStyle (PSP_SCANLINES,Style_Add);
- A_OverlayOffset (PSP_SCANLINES,-112.0,0.0);
- A_OverlayScale (PSP_SCANLINES,20.0,1.0);
- A_OverlayFlags (PSP_WEAPON,PSPF_ALPHA|PSPF_FORCEALPHA,True);
- }
- VRIF AAAAAABBBBBB 1 A_Raise();
- Loop;
- Deselect:
- VRIF AAAAAABBBBBB 1 A_Lower();
- Loop;
- Fire:
- VRIF "#" 2;
- TNT1 A 0 A_JumpIfNoAmmo ("Reload");
- VRIF C 2
- {
- A_WeaponOffset(wy:36,WOF_KEEPX|WOF_INTERPOLATE);
- If (!Invoker.AlreadyZoomed) {A_FireBullets (2.5,2.6,-1,Random(6,12),"SmartMarinePuff",FBF_NORANDOM|FBF_USEAMMO,8192+2,spawnheight:21);}
- Else {A_FireBullets (1.5,1.6,-1,Random(6,12),"SmartMarinePuff",FBF_NORANDOM|FBF_USEAMMO,8192+2,spawnheight:21);}
- A_GunFlash();
- Invoker.ShotsFired++;
- }
- VRIF D 2 A_WeaponOffset(wy:32,WOF_KEEPX|WOF_INTERPOLATE);
- TNT1 A 0 A_JumpIf (Invoker.ShotsFired > 4,1);
- Goto Fire+1;
- TNT1 A 0 {Invoker.ShotsFired = 0;}
- VRIF AABB 2;
- VRIF AABB 2;
- Goto Ready;
- Flash:
- TNT1 A 3 A_Light (Random(1,2));
- TNT1 A 0 A_Light (0);
- Goto LightDone;
- Reload:
- TNT1 A 0
- {
- //If there is no ammo at all in the gun, go to the empty click state.
- If (Invoker.Ammo1.Amount <= 0 && Invoker.Ammo2.Amount <= 0)
- {
- Return ResolveState ("EmptyClick");
- }
- //If there are 20 or more rounds in the gun, or there's no ammo left, then do not reload.
- If (Invoker.Ammo1.Amount >= 20 || Invoker.Ammo2.Amount == 0)
- {
- Return ResolveState ("Ready");
- }
- Return ResolveState(Null);
- }
- TNT1 A 0;
- VRIF EFG 8;
- VRIF H 8
- {
- A_StartSound ("Marine/Reload",CHAN_WEAPON);
- A_RifleReload();
- }
- VRIF AABB 2;
- TNT1 A 0;
- Goto Ready;
- Zoom:
- VRIF A 8;
- TNT1 A 0 A_JumpIf (Invoker.AlreadyZoomed,"ZoomOut");
- VRIF A 0
- {
- A_Overlay (PSP_FADE,"Green"); //A_SetBlend sucks.
- A_Overlay (PSP_IMPOSTOR,"FakeRifle"); //Create the fake weapon layer.
- A_OverlayPivot (PSP_IMPOSTOR,0.67,0.67);
- A_OverlayAlpha (PSP_WEAPON,0.0); //Make the real weapon invisible.
- }
- VRIF AAAAABBBBB 1 A_OverlayScale (PSP_IMPOSTOR,0.2,0.2,WOF_ADD|WOF_INTERPOLATE); //Zoom into the rifle.
- TNT1 A 0 //When the screen is faded out.
- {
- A_Overlay (PSP_IMPOSTOR,Null); //Ejected
- A_OverlayAlpha (PSP_SCANLINES,1.0); //Make the scanline effect visible.
- A_SetCrosshair (69); //Funny number
- A_ZoomFactor (3,ZOOM_INSTANT);
- Invoker.AlreadyZoomed = True;
- }
- TNT1 A 10+2; //Wait for the fade overlay to fade out.
- TNT1 A 0 A_Overlay (PSP_FADE,Null); //Then remove it.
- TNT1 A 0 A_StartSound ("VRifle/Zoomed",1234,CHANF_LOOPING); //Begin to play the digital humming sound.
- Goto Ready;
- ZoomOut:
- TNT1 A 8 A_Overlay (PSP_FADE,"Green");
- TNT1 A 0
- {
- A_OverlayAlpha (PSP_SCANLINES,0.0);
- A_ZoomFactor (1,ZOOM_INSTANT);
- A_SetCrosshair (0);
- A_StopSound (1234);
- A_Overlay (PSP_IMPOSTOR,"FakeRifle");
- A_OverlayPivot (PSP_IMPOSTOR,0.67,0.67);
- A_OverlayScale (PSP_IMPOSTOR,4.0,4.0); //Pre-scale the rifle to double the size.
- Invoker.AlreadyZoomed = False;
- }
- TNT1 AAAAAAAAAAAAAAA 1 A_OverlayScale (PSP_IMPOSTOR,-0.2,-0.2,WOF_ADD|WOF_INTERPOLATE); //Zoom out of the rifle.
- TNT1 A 0
- {
- A_Overlay (PSP_IMPOSTOR,Null);
- A_Overlay (PSP_FADE,Null);
- A_OverlayAlpha (PSP_WEAPON,1.0);
- }
- Goto Ready;
- EmptyClick:
- VRIF A 3 A_StartSound ("VRifle/EmptyGun",CHAN_WEAPON);
- VRIF A 3 A_WeaponOffset(wy:38,WOF_KEEPX|WOF_INTERPOLATE);
- VRIF BB 3 A_WeaponOffset(wy:32,WOF_KEEPX|WOF_INTERPOLATE);
- VRIF ABAB 3;
- Goto Ready;
- //Overlay states
- DigitalSights:
- VRIF JK 6;
- Loop;
- Scanlines: //Set up the animated vertical movement.
- VRIG ABCDEFGHIKLMNOPQRSTVXYZ 2;
- VRIH ABCDEFGHIKLMNOPQRSTVXYZ 2;
- VRII ABCDEFGHIKLMNOPQRSTVXYZ 2;
- VRIJ ABCDEFGHIKLMNOPQRSTV 2;
- Loop;
- FakeRifle: //This has to exist because pivot alignment doesn't work on PSP_WEAPON.
- VRIF AABB 3;
- Loop;
- Green:
- VRIF X 0
- {
- A_OverlayFlags (PSP_FADE,PSPF_ALPHA|PSPF_FORCEALPHA|PSPF_PIVOTPERCENT,True);
- A_OverlayPivot (PSP_FADE,0.5,0.5);
- A_OverlayAlpha (PSP_FADE,0.0);
- A_OverlayScale (PSP_FADE,100,100);
- }
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.1);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.2);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.3);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.4);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.5);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.6);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.7);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.8);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.9);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,1.0);
- VRIF X 2; //Wait a bit for the stuff on the Zoom state to finish.
- VRIF X 1 A_OverlayAlpha (PSP_FADE,1.0);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.9);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.8);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.7);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.6);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.5);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.4);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.3);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.2);
- VRIF X 1 A_OverlayAlpha (PSP_FADE,0.1);
- Loop;
- }
- }
- //$GZDB_SKIP
- Class VanillaRifleMagazine : Ammo
- {
- Default
- {
- Inventory.Amount 1;
- Inventory.MaxAmount 20;
- +Inventory.IgnoreSkill;
- Ammo.BackpackAmount 0;
- Ammo.BackpackMaxAmount 20;
- Inventory.Icon "CLIPA0";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement