zorch-squadron/zscript/weapon/lgzorcherhga.zs

86 lines
2.2 KiB
Plaintext
Raw Normal View History

2024-02-03 13:26:11 -08:00
/*
* Copyright © 2024 Nicole O'Connor
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class LargeZorcherHGA : LargeZorcher replaces LargeZorcher {
Default {
Weapon.SisterWeapon "LargeZorcherBuffed";
}
action void A_FireShotgunBuffed() {
// largely the same as the standard A_FireShotgun, with some changes because it's... buffed...
if (player == null) { return; }
A_StartSound("weapons/shotgf", CHAN_WEAPON);
Weapon weap = player.ReadyWeapon;
if (weap != null && invoker == weap && stateinfo != null && stateinfo.mStateType == STATE_Psprite) {
if (!weap.DepleteAmmo (weap.bAltFire, true, 1)) { return; }
player.SetPsprite(PSP_FLASH, weap.FindState('Flash'), true);
}
player.mo.PlayAttacking2 ();
double pitch = BulletSlope ();
for (int i = 0; i < 7; i++) {
int damage = 7 * random[GunShot](2, 4);
double ang = angle;
let accurate = false;
if (!accurate) {
ang += Random2[GunShot]() * (3.125 / 256);
if (GetCVar ("vertspread") && !sv_novertspread) {
pitch += Random2[GunShot]() * (1.675 / 256);
}
}
LineAttack(ang, PLAYERMISSILERANGE, pitch, damage, 'Hitscan', "BulletPuff");
}
}
}
class LargeZorcherBuffed : LargeZorcherHGA {
Default {
+WEAPON.POWERED_UP;
Weapon.SisterWeapon "LargeZorcherHGA";
Weapon.AmmoUse 2;
Weapon.AmmoGive 0;
}
States {
Ready:
SSHT A 1 A_WeaponReady;
Loop;
Deselect:
SSHT A 1 A_Lower;
Loop;
Select:
SSHT A 1 A_Raise;
Loop;
Fire:
SSHT A 3;
SSHT A 7 A_FireShotgunBuffed;
SSHT A 3;
SSHT A 7 A_FireShotgunBuffed;
SSHT BC 5;
SSHT D 4;
SSHT CB 3;
SSHT A 3;
SSHT A 7 A_ReFire;
Goto Ready;
Flash:
SSHF A 4 Bright A_Light1;
SSHF B 3 Bright A_Light2;
Goto LightDone;
}
}