X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Fhlac.qc;h=d89cdb1287051f2d49ed6d12f89d9f66a15492f2;hp=6511d22b572b4fab5938c035aea73d2e18dec6a2;hb=6411a86b7a90e28527ce219c13e2d37c527f2ed6;hpb=8298414706b35c6726479437b0775aed4ac9b55d diff --git a/qcsrc/common/weapons/weapon/hlac.qc b/qcsrc/common/weapons/weapon/hlac.qc index 6511d22b5..d89cdb128 100644 --- a/qcsrc/common/weapons/weapon/hlac.qc +++ b/qcsrc/common/weapons/weapon/hlac.qc @@ -21,17 +21,16 @@ void W_HLAC_Touch(entity this, entity toucher) void W_HLAC_Attack(Weapon thiswep, entity actor, .entity weaponentity) { entity missile; - float spread; W_DecreaseAmmo(thiswep, actor, WEP_CVAR_PRI(hlac, ammo), weaponentity); - spread = WEP_CVAR_PRI(hlac, spread_min) + (WEP_CVAR_PRI(hlac, spread_add) * actor.(weaponentity).misc_bulletcounter); - spread = min(spread,WEP_CVAR_PRI(hlac, spread_max)); - if(actor.crouch) - spread = spread * WEP_CVAR_PRI(hlac, spread_crouchmod); + float spread = WEP_CVAR_PRI(hlac, spread_min) + (WEP_CVAR_PRI(hlac, spread_add) * actor.(weaponentity).misc_bulletcounter); + spread = min(spread,WEP_CVAR_PRI(hlac, spread_max)); + if(IS_DUCKED(actor)) + spread = spread * WEP_CVAR_PRI(hlac, spread_crouchmod); W_SetupShot(actor, weaponentity, false, 3, SND_LASERGUN_FIRE, CH_WEAPON_A, WEP_CVAR_PRI(hlac, damage), thiswep.m_id); - Send_Effect(EFFECT_BLASTER_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1); + W_MuzzleFlash(thiswep, actor, weaponentity, w_shotorg, w_shotdir); if(!autocvar_g_norecoil) { actor.punchangle_x = random() - 0.5; @@ -42,7 +41,7 @@ void W_HLAC_Attack(Weapon thiswep, entity actor, .entity weaponentity) missile.owner = missile.realowner = actor; missile.bot_dodge = true; - missile.bot_dodgerating = WEP_CVAR_PRI(hlac, damage); + missile.bot_dodgerating = WEP_CVAR_PRI(hlac, damage); set_movetype(missile, MOVETYPE_FLY); PROJECTILE_MAKETRIGGER(missile); @@ -56,7 +55,7 @@ void W_HLAC_Attack(Weapon thiswep, entity actor, .entity weaponentity) settouch(missile, W_HLAC_Touch); setthink(missile, SUB_Remove); - missile.nextthink = time + WEP_CVAR_PRI(hlac, lifetime); + missile.nextthink = time + WEP_CVAR_PRI(hlac, lifetime); missile.flags = FL_PROJECTILE; IL_PUSH(g_projectiles, missile); @@ -72,47 +71,54 @@ void W_HLAC_Attack(Weapon thiswep, entity actor, .entity weaponentity) void W_HLAC_Attack2(Weapon thiswep, entity actor, .entity weaponentity) { entity missile; - float spread; + float spread = WEP_CVAR_SEC(hlac, spread); - spread = WEP_CVAR_SEC(hlac, spread); + if(IS_DUCKED(actor)) + spread = spread * WEP_CVAR_SEC(hlac, spread_crouchmod); + W_SetupShot(actor, weaponentity, false, 3, SND_LASERGUN_FIRE, CH_WEAPON_A, WEP_CVAR_SEC(hlac, damage) * WEP_CVAR_SEC(hlac, shots), thiswep.m_id | HITTYPE_SECONDARY); + W_MuzzleFlash(thiswep, actor, weaponentity, w_shotorg, w_shotdir); + W_DecreaseAmmo(thiswep, actor, WEP_CVAR_SEC(hlac, ammo), weaponentity); - if(actor.crouch) - spread = spread * WEP_CVAR_SEC(hlac, spread_crouchmod); + for(int j = WEP_CVAR_SEC(hlac, shots); j > 0; --j) + { + missile = new(hlacbolt); + missile.owner = missile.realowner = actor; + missile.bot_dodge = true; - W_SetupShot(actor, weaponentity, false, 3, SND_LASERGUN_FIRE, CH_WEAPON_A, WEP_CVAR_SEC(hlac, damage), thiswep.m_id | HITTYPE_SECONDARY); - Send_Effect(EFFECT_BLASTER_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1); + missile.bot_dodgerating = WEP_CVAR_SEC(hlac, damage); - missile = new(hlacbolt); - missile.owner = missile.realowner = actor; - missile.bot_dodge = true; + set_movetype(missile, MOVETYPE_FLY); + PROJECTILE_MAKETRIGGER(missile); - missile.bot_dodgerating = WEP_CVAR_SEC(hlac, damage); + setorigin(missile, w_shotorg); + setsize(missile, '0 0 0', '0 0 0'); - set_movetype(missile, MOVETYPE_FLY); - PROJECTILE_MAKETRIGGER(missile); + W_SetupProjVelocity_Basic(missile, WEP_CVAR_SEC(hlac, speed), spread); + //missile.angles = vectoangles(missile.velocity); // csqc - setorigin(missile, w_shotorg); - setsize(missile, '0 0 0', '0 0 0'); + settouch(missile, W_HLAC_Touch); + setthink(missile, SUB_Remove); - W_SetupProjVelocity_Basic(missile, WEP_CVAR_SEC(hlac, speed), spread); - //missile.angles = vectoangles(missile.velocity); // csqc + missile.nextthink = time + WEP_CVAR_SEC(hlac, lifetime); - settouch(missile, W_HLAC_Touch); - setthink(missile, SUB_Remove); + missile.flags = FL_PROJECTILE; + IL_PUSH(g_projectiles, missile); + IL_PUSH(g_bot_dodge, missile); + missile.missile_flags = MIF_SPLASH; + missile.projectiledeathtype = thiswep.m_id | HITTYPE_SECONDARY; + missile.weaponentity_fld = weaponentity; - missile.nextthink = time + WEP_CVAR_SEC(hlac, lifetime); + CSQCProjectile(missile, true, PROJECTILE_HLAC, true); - missile.flags = FL_PROJECTILE; - IL_PUSH(g_projectiles, missile); - IL_PUSH(g_bot_dodge, missile); - missile.missile_flags = MIF_SPLASH; - missile.projectiledeathtype = thiswep.m_id | HITTYPE_SECONDARY; - missile.weaponentity_fld = weaponentity; - - CSQCProjectile(missile, true, PROJECTILE_HLAC, true); + MUTATOR_CALLHOOK(EditProjectile, actor, missile); + } - MUTATOR_CALLHOOK(EditProjectile, actor, missile); + if(!autocvar_g_norecoil) + { + actor.punchangle_x = random() - 0.5; + actor.punchangle_y = random() - 0.5; + } } // weapon frames @@ -137,7 +143,7 @@ void W_HLAC_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentity, int ATTACK_FINISHED(actor, weaponentity) = time + WEP_CVAR_PRI(hlac, refire) * W_WeaponRateFactor(actor); W_HLAC_Attack(thiswep, actor, weaponentity); actor.(weaponentity).misc_bulletcounter = actor.(weaponentity).misc_bulletcounter + 1; - weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR_PRI(hlac, refire), W_HLAC_Attack_Frame); + weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR_PRI(hlac, refire), W_HLAC_Attack_Frame); } else { @@ -145,22 +151,6 @@ void W_HLAC_Attack_Frame(Weapon thiswep, entity actor, .entity weaponentity, int } } -void W_HLAC_Attack2_Frame(Weapon thiswep, entity actor, .entity weaponentity) -{ - float i; - - W_DecreaseAmmo(thiswep, actor, WEP_CVAR_SEC(hlac, ammo), weaponentity); - - for(i=WEP_CVAR_SEC(hlac, shots);i>0;--i) - W_HLAC_Attack2(thiswep, actor, weaponentity); - - if(!autocvar_g_norecoil) - { - actor.punchangle_x = random() - 0.5; - actor.punchangle_y = random() - 0.5; - } -} - METHOD(HLAC, wr_aim, void(entity thiswep, entity actor, .entity weaponentity)) { PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR_PRI(hlac, speed), 0, WEP_CVAR_PRI(hlac, lifetime), false); @@ -183,7 +173,7 @@ METHOD(HLAC, wr_think, void(entity thiswep, entity actor, .entity weaponentity, { if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(hlac, refire))) { - W_HLAC_Attack2_Frame(thiswep, actor, weaponentity); + W_HLAC_Attack2(thiswep, actor, weaponentity); weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(hlac, animtime), w_ready); } }