X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Frifle.qc;h=1740c45d84c3fc5fe405dc03345c8e4bfd1147ad;hp=d75b1fe8df3c2102e1e34caa1aeb73580ff862eb;hb=9e8ea75b9aacffc5cfa18c8852c4dd9ffdbd3192;hpb=37577ef2b6b6c9ef8b13d5bf5a9bf7f3046a3669 diff --git a/qcsrc/common/weapons/weapon/rifle.qc b/qcsrc/common/weapons/weapon/rifle.qc index d75b1fe8df..1740c45d84 100644 --- a/qcsrc/common/weapons/weapon/rifle.qc +++ b/qcsrc/common/weapons/weapon/rifle.qc @@ -1,62 +1,6 @@ #include "rifle.qh" -#ifndef IMPLEMENTATION -CLASS(Rifle, Weapon) -/* ammotype */ ATTRIB(Rifle, ammo_field, .int, ammo_nails); -/* impulse */ ATTRIB(Rifle, impulse, int, 7); -/* flags */ ATTRIB(Rifle, spawnflags, int, WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN); -/* rating */ ATTRIB(Rifle, bot_pickupbasevalue, float, 7000); -/* color */ ATTRIB(Rifle, wpcolor, vector, '0.5 1 0'); -/* modelname */ ATTRIB(Rifle, mdl, string, "campingrifle"); -#ifdef GAMEQC -/* model */ ATTRIB(Rifle, m_model, Model, MDL_RIFLE_ITEM); -#endif -/* crosshair */ ATTRIB(Rifle, w_crosshair, string, "gfx/crosshairrifle"); -/* crosshair */ ATTRIB(Rifle, w_crosshair_size, float, 0.6); -/* reticle */ ATTRIB(Rifle, w_reticle, string, "gfx/reticle_nex"); -/* wepimg */ ATTRIB(Rifle, model2, string, "weaponrifle"); -/* refname */ ATTRIB(Rifle, netname, string, "rifle"); -/* wepname */ ATTRIB(Rifle, m_name, string, _("Rifle")); - -#define X(BEGIN, P, END, class, prefix) \ - BEGIN(class) \ - P(class, prefix, ammo, float, BOTH) \ - P(class, prefix, animtime, float, BOTH) \ - P(class, prefix, bullethail, float, BOTH) \ - P(class, prefix, burstcost, float, BOTH) \ - P(class, prefix, bursttime, float, NONE) \ - P(class, prefix, damage, float, BOTH) \ - P(class, prefix, force, float, BOTH) \ - P(class, prefix, refire, float, BOTH) \ - P(class, prefix, reload, float, SEC) \ - P(class, prefix, reload_ammo, float, NONE) \ - P(class, prefix, reload_time, float, NONE) \ - P(class, prefix, secondary, float, NONE) \ - P(class, prefix, shots, float, BOTH) \ - P(class, prefix, solidpenetration, float, BOTH) \ - P(class, prefix, spread, float, BOTH) \ - P(class, prefix, switchdelay_drop, float, NONE) \ - P(class, prefix, switchdelay_raise, float, NONE) \ - P(class, prefix, tracer, float, BOTH) \ - P(class, prefix, weaponreplace, string, NONE) \ - P(class, prefix, weaponstartoverride, float, NONE) \ - P(class, prefix, weaponstart, float, NONE) \ - P(class, prefix, weaponthrowable, float, NONE) \ - END() - W_PROPS(X, Rifle, rifle) -#undef X -ENDCLASS(Rifle) -REGISTER_WEAPON(RIFLE, rifle, NEW(Rifle)); - #ifdef SVQC -.float rifle_accumulator; -#endif -#endif -#ifdef IMPLEMENTATION -#ifdef SVQC -spawnfunc(weapon_rifle) { weapon_defaultspawnfunc(this, WEP_RIFLE); } -spawnfunc(weapon_campingrifle) { spawnfunc_weapon_rifle(this); } -spawnfunc(weapon_sniperrifle) { spawnfunc_weapon_rifle(this); } void W_Rifle_FireBullet(Weapon thiswep, .entity weaponentity, float pSpread, float pDamage, float pForce, float pSolidPenetration, float pAmmo, int deathtype, float pTracer, float pShots, Sound pSound, entity actor) { @@ -64,7 +8,7 @@ void W_Rifle_FireBullet(Weapon thiswep, .entity weaponentity, float pSpread, flo W_DecreaseAmmo(thiswep, actor, pAmmo, weaponentity); - W_SetupShot(actor, weaponentity, true, 2, pSound, CH_WEAPON_A, pDamage * pShots); + W_SetupShot(actor, weaponentity, true, 2, pSound, CH_WEAPON_A, pDamage * pShots, deathtype); Send_Effect(EFFECT_RIFLE_MUZZLEFLASH, w_shotorg, w_shotdir * 2000, 1); @@ -172,14 +116,14 @@ METHOD(Rifle, wr_think, void(entity thiswep, entity actor, .entity weaponentity, thiswep.wr_reload(thiswep, actor, weaponentity); } else { - actor.rifle_accumulator = bound(time - WEP_CVAR(rifle, bursttime), actor.rifle_accumulator, time); + actor.(weaponentity).rifle_accumulator = bound(time - WEP_CVAR(rifle, bursttime), actor.(weaponentity).rifle_accumulator, time); if(fire & 1) if(weapon_prepareattack_check(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(rifle, refire))) - if(time >= actor.rifle_accumulator + WEP_CVAR_PRI(rifle, burstcost)) + if(time >= actor.(weaponentity).rifle_accumulator + WEP_CVAR_PRI(rifle, burstcost)) { weapon_prepareattack_do(actor, weaponentity, false, WEP_CVAR_PRI(rifle, refire)); W_Rifle_BulletHail(actor, weaponentity, WEP_CVAR_PRI(rifle, bullethail), W_Rifle_Attack, WFRAME_FIRE1, WEP_CVAR_PRI(rifle, animtime), WEP_CVAR_PRI(rifle, refire)); - actor.rifle_accumulator += WEP_CVAR_PRI(rifle, burstcost); + actor.(weaponentity).rifle_accumulator += WEP_CVAR_PRI(rifle, burstcost); } if(fire & 2) { @@ -190,11 +134,11 @@ METHOD(Rifle, wr_think, void(entity thiswep, entity actor, .entity weaponentity, } else { if(weapon_prepareattack_check(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(rifle, refire))) - if(time >= actor.rifle_accumulator + WEP_CVAR_SEC(rifle, burstcost)) + if(time >= actor.(weaponentity).rifle_accumulator + WEP_CVAR_SEC(rifle, burstcost)) { weapon_prepareattack_do(actor, weaponentity, true, WEP_CVAR_SEC(rifle, refire)); W_Rifle_BulletHail(actor, weaponentity, WEP_CVAR_SEC(rifle, bullethail), W_Rifle_Attack2, WFRAME_FIRE2, WEP_CVAR_SEC(rifle, animtime), WEP_CVAR_PRI(rifle, refire)); - actor.rifle_accumulator += WEP_CVAR_SEC(rifle, burstcost); + actor.(weaponentity).rifle_accumulator += WEP_CVAR_SEC(rifle, burstcost); } } } @@ -203,13 +147,13 @@ METHOD(Rifle, wr_think, void(entity thiswep, entity actor, .entity weaponentity, } METHOD(Rifle, wr_checkammo1, bool(entity thiswep, entity actor, .entity weaponentity)) { - float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_PRI(rifle, ammo); + float ammo_amount = GetResourceAmount(actor, thiswep.ammo_type) >= WEP_CVAR_PRI(rifle, ammo); ammo_amount += actor.(weaponentity).(weapon_load[WEP_RIFLE.m_id]) >= WEP_CVAR_PRI(rifle, ammo); return ammo_amount; } METHOD(Rifle, wr_checkammo2, bool(entity thiswep, entity actor, .entity weaponentity)) { - float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_SEC(rifle, ammo); + float ammo_amount = GetResourceAmount(actor, thiswep.ammo_type) >= WEP_CVAR_SEC(rifle, ammo); ammo_amount += actor.(weaponentity).(weapon_load[WEP_RIFLE.m_id]) >= WEP_CVAR_SEC(rifle, ammo); return ammo_amount; } @@ -279,6 +223,9 @@ METHOD(Rifle, wr_zoom, bool(entity thiswep, entity actor)) return false; } } +METHOD(Rifle, wr_zoomdir, bool(entity thiswep)) +{ + return button_attack2 && !WEP_CVAR(rifle, secondary); +} #endif -#endif