X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_rocketlauncher.qc;h=55b3379fc8aedd3d69335f428eec0256bcd2b4df;hb=18f8c08faff54821b78084eafe7242868c49cc1f;hp=add0207d12b57c8fd1ec90abd776143407bef84a;hpb=44657432578ed559d0c426da18d7678419caf424;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index add0207d1..55b3379fc 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -1,5 +1,15 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", _("Rocket Launcher")) +REGISTER_WEAPON( +/* WEP_##id */ ROCKET_LAUNCHER, +/* function */ w_rlauncher, +/* ammotype */ IT_ROCKETS, +/* impulse */ 9, +/* flags */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, +/* rating */ BOT_PICKUP_RATING_HIGH, +/* model */ "rl", +/* shortname */ "rocketlauncher", +/* fullname */ _("Rocket Launcher") +); #else #ifdef SVQC .float rl_release; @@ -19,11 +29,11 @@ void W_Rocket_Explode () W_Rocket_Unregister(); if(other.takedamage == DAMAGE_AIM) - if(other.classname == "player") + if(IS_PLAYER(other)) if(IsDifferentTeam(self.realowner, other)) if(other.deadflag == DEAD_NO) if(IsFlying(other)) - AnnounceTo(self.realowner, "airshot"); + Send_Notification(NOTIF_ONE, self.realowner, MSG_ANNCE, ANNCE_ACHIEVEMENT_AIRSHOT); self.event_damage = func_null; self.takedamage = DAMAGE_NO; @@ -348,7 +358,7 @@ float w_rlauncher(float req) //As the distance gets larger, a correct detonation gets near imposible //Bots are assumed to use the rocket spawnfunc_light to see if the rocket gets near a player if(v_forward * normalize(missile.origin - self.enemy.origin)< 0.1) - if(self.enemy.classname == "player") + if(IS_PLAYER(self.enemy)) if(desirabledamage >= 0.1*coredamage) if(random()/distance*300 > frametime*bound(0,(10-skill)*0.2,1)) self.BUTTON_ATCK2 = TRUE; @@ -446,6 +456,17 @@ float w_rlauncher(float req) { W_Reload(autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav"); } + else if (req == WR_SUICIDEMESSAGE) + { + return WEAPON_ROCKETLAUNCHER_SUICIDE; + } + else if (req == WR_KILLMESSAGE) + { + if((w_deathtype & HITTYPE_BOUNCE) || (w_deathtype & HITTYPE_SPLASH)) + return WEAPON_ROCKETLAUNCHER_MURDER_SPLASH; + else + return WEAPON_ROCKETLAUNCHER_MURDER_DIRECT; + } return TRUE; } #endif @@ -464,17 +485,6 @@ float w_rlauncher(float req) { precache_sound("weapons/rocket_impact.wav"); } - else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = _("%s blew themself up with their rocketlauncher"); - else if (req == WR_KILLMESSAGE) - { - if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation) - w_deathtypestring = _("%s got too close to %s's rocket"); - else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = _("%s almost dodged %s's rocket"); - else - w_deathtypestring = _("%s ate %s's rocket"); - } return TRUE; } #endif