X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fw_shotgun.qc;h=87aa92aafe2388528439eb608c1c5ed9749f82d7;hb=1e268a26b5266aadf842c7a61521089bc24b7fd8;hp=a142aa4d07269210d8b3a874b0f7dd1cbc90b957;hpb=05ad860cc8b2bdafcc2f8f16d9dcde7bf1b7ee59;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/w_shotgun.qc b/qcsrc/common/weapons/w_shotgun.qc index a142aa4d0..87aa92aaf 100644 --- a/qcsrc/common/weapons/w_shotgun.qc +++ b/qcsrc/common/weapons/w_shotgun.qc @@ -1,14 +1,18 @@ #ifdef REGISTER_WEAPON REGISTER_WEAPON( /* WEP_##id */ SHOTGUN, -/* function */ w_shotgun, +/* function */ W_Shotgun, /* ammotype */ ammo_none, /* impulse */ 2, /* flags */ WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN | WEP_FLAG_MUTATORBLOCKED, /* rating */ BOT_PICKUP_RATING_LOW, -/* model */ "shotgun", -/* shortname */ "shotgun", -/* fullname */ _("Shotgun") +/* color */ '0.5 0.25 0', +/* modelname */ "shotgun", +/* simplemdl */ "foobar", +/* crosshair */ "gfx/crosshairshotgun 0.65", +/* wepimg */ "weaponshotgun", +/* refname */ "shotgun", +/* wepname */ _("Shotgun") ); #define SHOTGUN_SETTINGS(w_cvar,w_prop) SHOTGUN_SETTINGS_LIST(w_cvar, w_prop, SHOTGUN, shotgun) @@ -17,11 +21,10 @@ REGISTER_WEAPON( w_cvar(id, sn, BOTH, animtime) \ w_cvar(id, sn, BOTH, refire) \ w_cvar(id, sn, PRI, bullets) \ - w_cvar(id, sn, PRI, bulletconstant) \ w_cvar(id, sn, BOTH, damage) \ w_cvar(id, sn, BOTH, force) \ + w_cvar(id, sn, PRI, solidpenetration) \ w_cvar(id, sn, PRI, spread) \ - w_cvar(id, sn, PRI, speed) \ w_cvar(id, sn, NONE, secondary) \ w_cvar(id, sn, SEC, melee_time) \ w_cvar(id, sn, SEC, melee_no_doubleslap) \ @@ -38,13 +41,15 @@ REGISTER_WEAPON( w_prop(id, sn, float, switchdelay_drop, switchdelay_drop) \ w_prop(id, sn, string, weaponreplace, weaponreplace) \ w_prop(id, sn, float, weaponstart, weaponstart) \ - w_prop(id, sn, float, weaponstartoverride, weaponstartoverride) + w_prop(id, sn, float, weaponstartoverride, weaponstartoverride) \ + w_prop(id, sn, float, weaponthrowable, weaponthrowable) #ifdef SVQC SHOTGUN_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) #endif #else #ifdef SVQC +void spawnfunc_weapon_shotgun(void) { weapon_defaultspawnfunc(WEP_SHOTGUN); } void W_Shotgun_Attack (void) { @@ -55,8 +60,7 @@ void W_Shotgun_Attack (void) W_SetupShot (self, TRUE, 5, "weapons/shotgun_fire.wav", CH_WEAPON_A, WEP_CVAR_PRI(shotgun, damage) * WEP_CVAR_PRI(shotgun, bullets)); for (sc = 0;sc < WEP_CVAR_PRI(shotgun, bullets);sc = sc + 1) - fireBallisticBullet(w_shotorg, w_shotdir, WEP_CVAR_PRI(shotgun, spread), WEP_CVAR_PRI(shotgun, speed), 5, WEP_CVAR_PRI(shotgun, damage), WEP_CVAR_PRI(shotgun, force), WEP_SHOTGUN, 0, WEP_CVAR_PRI(shotgun, bulletconstant)); - endFireBallisticBullet(); + fireBullet(w_shotorg, w_shotdir, WEP_CVAR_PRI(shotgun, spread), WEP_CVAR_PRI(shotgun, solidpenetration), WEP_CVAR_PRI(shotgun, damage), WEP_CVAR_PRI(shotgun, force), WEP_SHOTGUN, 0); pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, WEP_CVAR_PRI(shotgun, ammo)); @@ -76,7 +80,7 @@ void W_Shotgun_Attack (void) .float swing_prev; .entity swing_alreadyhit; -void shotgun_meleethink (void) +void W_Shotgun_Melee_Think() { // declarations float i, f, swing, swing_factor, swing_damage, meleetime, is_player; @@ -180,16 +184,14 @@ void W_Shotgun_Attack2 (void) entity meleetemp; meleetemp = spawn(); meleetemp.realowner = self; - meleetemp.think = shotgun_meleethink; + meleetemp.think = W_Shotgun_Melee_Think; meleetemp.nextthink = time + WEP_CVAR_SEC(shotgun, melee_delay) * W_WeaponRateFactor(); W_SetupShot_Range(self, TRUE, 0, "", 0, WEP_CVAR_SEC(shotgun, damage), WEP_CVAR_SEC(shotgun, melee_range)); } -void spawnfunc_weapon_shotgun(); // defined in t_items.qc - .float shotgun_primarytime; -float w_shotgun(float req) +float W_Shotgun(float req) { switch(req) { @@ -207,7 +209,7 @@ float w_shotgun(float req) if(WEP_CVAR(shotgun, reload_ammo) && self.clip_load < WEP_CVAR_PRI(shotgun, ammo)) // forced reload { // don't force reload an empty shotgun if its melee attack is active - if (!(WEP_CVAR(shotgun, secondary) && self.ammo_shells < WEP_CVAR_PRI(shotgun, ammo))) + if (!WEP_CVAR(shotgun, secondary)) WEP_ACTION(self.weapon, WR_RELOAD); } else @@ -245,12 +247,12 @@ float w_shotgun(float req) precache_sound ("misc/itempickup.wav"); precache_sound ("weapons/shotgun_fire.wav"); precache_sound ("weapons/shotgun_melee.wav"); - SHOTGUN_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP) + SHOTGUN_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP) return TRUE; } case WR_SETUP: { - self.current_ammo = ammo_none; + self.ammo_field = ammo_none; return TRUE; } case WR_CHECKAMMO1: @@ -281,13 +283,12 @@ float w_shotgun(float req) return WEAPON_SHOTGUN_MURDER; } } - - return TRUE; + return FALSE; } #endif #ifdef CSQC .float prevric; -float w_shotgun(float req) +float W_Shotgun(float req) { switch(req) { @@ -316,8 +317,13 @@ float w_shotgun(float req) precache_sound("weapons/ric3.wav"); return TRUE; } + case WR_ZOOMRETICLE: + { + // no weapon specific image for this weapon + return FALSE; + } } - return TRUE; + return FALSE; } #endif #endif