X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_porto.qc;h=4d3b8588ecd90ac21f49b9eddf3499233ade491b;hb=1b2f61baeeff5a7d004fafd3cfdd8269a0338a1e;hp=fc7fde3fb8d0e623991cfb4c95df67d6f389e9d2;hpb=cdf8d22631c0acdf97bd69bdd00ab86e96b30b73;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_porto.qc b/qcsrc/server/w_porto.qc index fc7fde3fb..4d3b8588e 100644 --- a/qcsrc/server/w_porto.qc +++ b/qcsrc/server/w_porto.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", "Port-O-Launch"); +REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", _("Port-O-Launch")) #else #ifdef SVQC .entity porto_current; @@ -9,42 +9,42 @@ REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", "Por void W_Porto_Success (void) { - if(self.owner == world) + if(self.realowner == world) { objerror("Cannot succeed successfully: no owner\n"); return; } - self.owner.porto_current = world; + self.realowner.porto_current = world; remove(self); } string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo); void W_Porto_Fail (float failhard) { - if(self.owner == world) + if(self.realowner == world) { objerror("Cannot fail successfully: no owner\n"); return; } // no portals here! - Portal_ClearWithID(self.owner, self.portal_id); - self.owner.porto_current = world; + Portal_ClearWithID(self.realowner, self.portal_id); + self.realowner.porto_current = world; - if(!failhard && self.owner.playerid == self.playerid && self.owner.deadflag == DEAD_NO && !(self.owner.weapons & WEPBIT_PORTO)) + if(!failhard && self.realowner.playerid == self.playerid && self.realowner.deadflag == DEAD_NO && !(self.realowner.weapons & WEPBIT_PORTO)) { setsize (self, '-16 -16 0', '16 16 32'); setorigin(self, self.origin + trace_plane_normal); if(move_out_of_solid(self)) { self.flags = FL_ITEM; - self.velocity = trigger_push_calculatevelocity(self.origin, self.owner, 128); + self.velocity = trigger_push_calculatevelocity(self.origin, self.realowner, 128); tracetoss(self, self); - if(vlen(trace_endpos - self.owner.origin) < 128) + if(vlen(trace_endpos - self.realowner.origin) < 128) { - W_ThrowNewWeapon(self.owner, WEP_PORTO, 0, self.origin, self.velocity); - centerprint(self.owner, "^1Portal deployment failed.\n\n^2Catch it to try again!"); + W_ThrowNewWeapon(self.realowner, WEP_PORTO, 0, self.origin, self.velocity); + centerprint(self.realowner, "^1Portal deployment failed.\n\n^2Catch it to try again!"); } } } @@ -53,7 +53,7 @@ void W_Porto_Fail (float failhard) void W_Porto_Remove (entity p) { - if(p.porto_current) + if(p.porto_current.realowner == p && p.porto_current.classname == "porto") { entity oldself; oldself = self; @@ -66,7 +66,7 @@ void W_Porto_Remove (entity p) void W_Porto_Think (void) { trace_plane_normal = '0 0 0'; - if(self.owner.playerid != self.playerid) + if(self.realowner.playerid != self.playerid) remove(self); else W_Porto_Fail(0); @@ -93,62 +93,62 @@ void W_Porto_Touch (void) return; } - if(self.owner.playerid != self.playerid) + if(self.realowner.playerid != self.playerid) { - sound(self, CHAN_PROJECTILE, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); remove(self); } else if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK || trace_dphitcontents & DPCONTENTS_PLAYERCLIP) { - spamsound(self, CHAN_PROJECTILE, "porto/bounce.wav", VOL_BASE, ATTN_NORM); + spamsound(self, CH_SHOTS, "porto/bounce.wav", VOL_BASE, ATTN_NORM); // just reflect self.right_vector = self.right_vector - 2 * trace_plane_normal * (self.right_vector * trace_plane_normal); self.angles = vectoangles(self.velocity - 2 * trace_plane_normal * (self.velocity * trace_plane_normal)); } else if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) { - sound(self, CHAN_PROJECTILE, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); W_Porto_Fail(0); } else if(self.effects & EF_RED) { self.effects += EF_BLUE - EF_RED; - if(Portal_SpawnInPortalAtTrace(self.owner, self.right_vector, self.portal_id)) + if(Portal_SpawnInPortalAtTrace(self.realowner, self.right_vector, self.portal_id)) { - sound(self, CHAN_PROJECTILE, "porto/create.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTN_NORM); trace_plane_normal = norm; - centerprint(self.owner, "^1In^7-portal created."); + centerprint(self.realowner, "^1In^7-portal created."); self.right_vector = self.right_vector - 2 * trace_plane_normal * (self.right_vector * norm); self.angles = vectoangles(self.velocity - 2 * trace_plane_normal * (self.velocity * norm)); CSQCProjectile(self, TRUE, PROJECTILE_PORTO_BLUE, TRUE); // change type } else { - sound(self, CHAN_PROJECTILE, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); trace_plane_normal = norm; W_Porto_Fail(0); } } else { - if(self.owner.portal_in.portal_id == self.portal_id) + if(self.realowner.portal_in.portal_id == self.portal_id) { - if(Portal_SpawnOutPortalAtTrace(self.owner, self.right_vector, self.portal_id)) + if(Portal_SpawnOutPortalAtTrace(self.realowner, self.right_vector, self.portal_id)) { - sound(self, CHAN_PROJECTILE, "porto/create.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTN_NORM); trace_plane_normal = norm; - centerprint(self.owner, "^4Out^7-portal created."); + centerprint(self.realowner, "^4Out^7-portal created."); W_Porto_Success(); } else { - sound(self, CHAN_PROJECTILE, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); W_Porto_Fail(0); } } else { - sound(self, CHAN_PROJECTILE, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM); W_Porto_Fail(0); } } @@ -160,7 +160,7 @@ void W_Porto_Attack (void) if not(self.items & IT_UNLIMITED_SUPERWEAPONS) self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO); - W_SetupShot (self, FALSE, 4, "porto/fire.wav", CHAN_WEAPON, 0); + W_SetupShot (self, FALSE, 4, "porto/fire.wav", CH_WEAPON_A, 0); // always shoot from the eye w_shotdir = v_forward; w_shotorg = self.origin + self.view_ofs + ((w_shotorg - self.origin - self.view_ofs) * v_forward) * v_forward; @@ -168,7 +168,7 @@ void W_Porto_Attack (void) //pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); gren = spawn (); - gren.owner = self; + gren.owner = gren.realowner = self; gren.playerid = self.playerid; gren.classname = "porto"; gren.bot_dodge = TRUE; @@ -180,13 +180,13 @@ void W_Porto_Attack (void) setorigin(gren, w_shotorg); setsize(gren, '0 0 0', '0 0 0'); - gren.nextthink = time + cvar("g_balance_porto_primary_lifetime"); + gren.nextthink = time + autocvar_g_balance_porto_primary_lifetime; gren.think = W_Porto_Think; gren.touch = W_Porto_Touch; if(self.items & IT_STRENGTH) - W_SetupProjectileVelocity(gren, cvar("g_balance_porto_primary_speed") * cvar("g_balance_powerup_strength_force"), 0); + W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed * autocvar_g_balance_powerup_strength_force, 0); else - W_SetupProjectileVelocity(gren, cvar("g_balance_porto_primary_speed"), 0); + W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed, 0); gren.angles = vectoangles (gren.velocity); gren.flags = FL_PROJECTILE; @@ -219,7 +219,7 @@ float w_porto(float req) { self.BUTTON_ATCK = FALSE; self.BUTTON_ATCK2 = FALSE; - if(bot_aim(cvar("g_balance_porto_primary_speed"), 0, cvar("g_balance_grenadelauncher_primary_lifetime"), FALSE)) + if(bot_aim(autocvar_g_balance_porto_primary_speed, 0, autocvar_g_balance_grenadelauncher_primary_lifetime, FALSE)) self.BUTTON_ATCK = TRUE; } else if (req == WR_THINK) @@ -250,10 +250,10 @@ float w_porto(float req) if (self.BUTTON_ATCK) if (!self.porto_current) if (!self.porto_forbidden) - if (weapon_prepareattack(0, cvar("g_balance_porto_primary_refire"))) + if (weapon_prepareattack(0, autocvar_g_balance_porto_primary_refire)) { W_Porto_Attack(); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_porto_primary_animtime"), w_ready); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_porto_primary_animtime, w_ready); } } else if (req == WR_PRECACHE) @@ -270,7 +270,10 @@ float w_porto(float req) precache_sound ("porto/unsupported.wav"); } else if (req == WR_SETUP) + { weapon_setup(WEP_PORTO); + self.current_ammo = ammo_none; + } else if (req == WR_RESETPLAYER) { self.porto_current = world; @@ -290,9 +293,9 @@ float w_porto(float req) // nothing to do } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s felt %s doing the impossible to him"; + w_deathtypestring = _("%s felt %s doing the impossible to him"); return TRUE; } #endif