X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Frifle.qc;h=37d8e0e23a22eee23405f8664fb4f2a73f4f2b00;hb=9e84ff8daa3826ef32e2891a7c5224a7cd436d23;hp=e8c89cb7579eb7e459b3462da2d2fd61dec3d5ff;hpb=90e39049eaeafbbd25267d1dfcf08023734cf6b8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/rifle.qc b/qcsrc/common/weapons/weapon/rifle.qc index e8c89cb75..37d8e0e23 100644 --- a/qcsrc/common/weapons/weapon/rifle.qc +++ b/qcsrc/common/weapons/weapon/rifle.qc @@ -1,16 +1,18 @@ +#include "rifle.qh" #ifndef IMPLEMENTATION CLASS(Rifle, Weapon) -/* ammotype */ ATTRIB(Rifle, ammo_field, .int, ammo_nails) -/* impulse */ ATTRIB(Rifle, impulse, int, 7) +/* 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, BOT_PICKUP_RATING_MID); /* color */ ATTRIB(Rifle, wpcolor, vector, '0.5 1 0'); /* modelname */ ATTRIB(Rifle, mdl, string, "campingrifle"); -#ifndef MENUQC +#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")); @@ -60,7 +62,7 @@ void W_Rifle_FireBullet(Weapon thiswep, .entity weaponentity, float pSpread, flo { float i; - W_DecreaseAmmo(thiswep, actor, pAmmo); + W_DecreaseAmmo(thiswep, actor, pAmmo, weaponentity); W_SetupShot(actor, weaponentity, true, 2, pSound, CH_WEAPON_A, pDamage * pShots); @@ -73,7 +75,7 @@ void W_Rifle_FireBullet(Weapon thiswep, .entity weaponentity, float pSpread, flo } for(i = 0; i < pShots; ++i) - fireBullet(actor, w_shotorg, w_shotdir, pSpread, pSolidPenetration, pDamage, pForce, deathtype, (pTracer ? EF_RED : EF_BLUE)); + fireBullet(actor, weaponentity, w_shotorg, w_shotdir, pSpread, pSolidPenetration, pDamage, pForce, deathtype, (pTracer ? EF_RED : EF_BLUE)); if(autocvar_g_casings >= 2) { @@ -100,14 +102,14 @@ void W_Rifle_BulletHail_Continue(Weapon thiswep, entity actor, .entity weaponent { float r, af; - Weapon sw = PS(actor).m_switchweapon; // make it not detect weapon changes as reason to abort firing + Weapon sw = actor.(weaponentity).m_switchweapon; // make it not detect weapon changes as reason to abort firing int slot = weaponslot(weaponentity); af = ATTACK_FINISHED(actor, slot); - PS(actor).m_switchweapon = PS(actor).m_weapon; + actor.(weaponentity).m_switchweapon = actor.(weaponentity).m_weapon; ATTACK_FINISHED(actor, slot) = time; r = weapon_prepareattack(thiswep, actor, weaponentity, actor.rifle_bullethail_frame == WFRAME_FIRE2, actor.rifle_bullethail_refire); - if(PS(actor).m_switchweapon == PS(actor).m_weapon) - PS(actor).m_switchweapon = sw; + if(actor.(weaponentity).m_switchweapon == actor.(weaponentity).m_weapon) + actor.(weaponentity).m_switchweapon = sw; if(r) { actor.rifle_bullethail_attackfunc(actor, weaponentity); @@ -141,7 +143,7 @@ void W_Rifle_BulletHail(entity actor, .entity weaponentity, float mode, void(ent .float bot_secondary_riflemooth; -METHOD(Rifle, wr_aim, void(entity thiswep, entity actor)) +METHOD(Rifle, wr_aim, void(entity thiswep, entity actor, .entity weaponentity)) { PHYS_INPUT_BUTTON_ATCK(actor) = false; PHYS_INPUT_BUTTON_ATCK2(actor) = false; @@ -149,7 +151,7 @@ METHOD(Rifle, wr_aim, void(entity thiswep, entity actor)) actor.bot_secondary_riflemooth = 0; if(actor.bot_secondary_riflemooth == 0) { - if(bot_aim(actor, 1000000, 0, 0.001, false)) + if(bot_aim(actor, weaponentity, 1000000, 0, 0.001, false)) { PHYS_INPUT_BUTTON_ATCK(actor) = true; if(random() < 0.01) actor.bot_secondary_riflemooth = 1; @@ -157,7 +159,7 @@ METHOD(Rifle, wr_aim, void(entity thiswep, entity actor)) } else { - if(bot_aim(actor, 1000000, 0, 0.001, false)) + if(bot_aim(actor, weaponentity, 1000000, 0, 0.001, false)) { PHYS_INPUT_BUTTON_ATCK2(actor) = true; if(random() < 0.03) actor.bot_secondary_riflemooth = 0; @@ -166,7 +168,7 @@ METHOD(Rifle, wr_aim, void(entity thiswep, entity actor)) } METHOD(Rifle, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { - if(autocvar_g_balance_rifle_reload_ammo && actor.clip_load < min(WEP_CVAR_PRI(rifle, ammo), WEP_CVAR_SEC(rifle, ammo))) { // forced reload + if(autocvar_g_balance_rifle_reload_ammo && actor.(weaponentity).clip_load < min(WEP_CVAR_PRI(rifle, ammo), WEP_CVAR_SEC(rifle, ammo))) { // forced reload thiswep.wr_reload(thiswep, actor, weaponentity); } else { @@ -199,16 +201,16 @@ METHOD(Rifle, wr_think, void(entity thiswep, entity actor, .entity weaponentity, } } } -METHOD(Rifle, wr_checkammo1, bool(entity thiswep, entity actor)) +METHOD(Rifle, wr_checkammo1, bool(entity thiswep, entity actor, .entity weaponentity)) { float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_PRI(rifle, ammo); - ammo_amount += actor.(weapon_load[WEP_RIFLE.m_id]) >= 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)) +METHOD(Rifle, wr_checkammo2, bool(entity thiswep, entity actor, .entity weaponentity)) { float ammo_amount = actor.(thiswep.ammo_field) >= WEP_CVAR_SEC(rifle, ammo); - ammo_amount += actor.(weapon_load[WEP_RIFLE.m_id]) >= WEP_CVAR_SEC(rifle, ammo); + ammo_amount += actor.(weaponentity).(weapon_load[WEP_RIFLE.m_id]) >= WEP_CVAR_SEC(rifle, ammo); return ammo_amount; } METHOD(Rifle, wr_resetplayer, void(entity thiswep, entity actor)) @@ -240,6 +242,10 @@ METHOD(Rifle, wr_killmessage, Notification(entity thiswep)) return WEAPON_RIFLE_MURDER; } } +METHOD(Rifle, wr_zoom, bool(entity thiswep, entity actor)) +{ + return PHYS_INPUT_BUTTON_ATCK2(actor) && WEP_CVAR(rifle, secondary) == 0; +} #endif #ifdef CSQC @@ -261,11 +267,10 @@ METHOD(Rifle, wr_init, void(entity thiswep)) precache_pic("gfx/reticle_nex"); } } -METHOD(Rifle, wr_zoomreticle, bool(entity thiswep)) +METHOD(Rifle, wr_zoom, bool(entity thiswep, entity actor)) { if(button_zoom || zoomscript_caught) { - reticle_image = "gfx/reticle_nex"; return true; } else