X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fw_porto.qc;h=0010449a025923feff26357579fc0a98fd2fe9d0;hb=1ba59bdc6b1e1ad0368f34dbd297e40cc42be243;hp=1f73ebb8223d4d1cef62b2a9be3ecc62b94fb8a2;hpb=c66fc18b4a36dad6b90b8a6fc2fa99f5c27d43d1;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/w_porto.qc b/qcsrc/common/weapons/w_porto.qc index 1f73ebb82..0010449a0 100644 --- a/qcsrc/common/weapons/w_porto.qc +++ b/qcsrc/common/weapons/w_porto.qc @@ -1,16 +1,18 @@ #ifdef REGISTER_WEAPON REGISTER_WEAPON( -/* WEP_##id */ PORTO, -/* function */ W_Porto, -/* ammotype */ ammo_none, -/* impulse */ 0, -/* flags */ WEP_TYPE_OTHER | WEP_FLAG_SUPERWEAPON, -/* rating */ 0, -/* color */ '0.5 0.5 0.5', -/* model */ "porto" , -/* crosshair */ "gfx/crosshairporto", -/* netname */ "porto", -/* fullname */ _("Port-O-Launch") +/* WEP_##id */ PORTO, +/* function */ W_Porto, +/* ammotype */ ammo_none, +/* impulse */ 0, +/* flags */ WEP_TYPE_OTHER | WEP_FLAG_SUPERWEAPON, +/* rating */ 0, +/* color */ '0.5 0.5 0.5', +/* modelname */ "porto", +/* simplemdl */ "foobar", +/* crosshair */ "gfx/crosshairporto 0.6", +/* wepimg */ "weaponporto", +/* refname */ "porto", +/* wepname */ _("Port-O-Launch") ); #define PORTO_SETTINGS(w_cvar,w_prop) PORTO_SETTINGS_LIST(w_cvar, w_prop, PORTO, porto) @@ -24,7 +26,8 @@ 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 PORTO_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) @@ -35,9 +38,9 @@ PORTO_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) #endif #else #ifdef SVQC -void spawnfunc_weapon_porto (void) { weapon_defaultspawnfunc(WEP_PORTO); } +void spawnfunc_weapon_porto(void) { weapon_defaultspawnfunc(WEP_PORTO); } -void W_Porto_Success (void) +void W_Porto_Success(void) { if(self.realowner == world) { @@ -50,7 +53,7 @@ void W_Porto_Success (void) } string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo); -void W_Porto_Fail (float failhard) +void W_Porto_Fail(float failhard) { if(self.realowner == world) { @@ -68,7 +71,7 @@ void W_Porto_Fail (float failhard) if(self.cnt < 0 && !failhard && self.realowner.playerid == self.playerid && self.realowner.deadflag == DEAD_NO && !(self.realowner.weapons & WEPSET_PORTO)) { - setsize (self, '-16 -16 0', '16 16 32'); + setsize(self, '-16 -16 0', '16 16 32'); setorigin(self, self.origin + trace_plane_normal); if(move_out_of_solid(self)) { @@ -78,14 +81,14 @@ void W_Porto_Fail (float failhard) if(vlen(trace_endpos - self.realowner.origin) < 128) { W_ThrowNewWeapon(self.realowner, WEP_PORTO, 0, self.origin, self.velocity); - centerprint(self.realowner, "^1Portal deployment failed.\n\n^2Catch it to try again!"); + Send_Notification(NOTIF_ONE, self.realowner, MSG_CENTER, CENTER_PORTO_FAILED); } } } remove(self); } -void W_Porto_Remove (entity p) +void W_Porto_Remove(entity p) { if(p.porto_current.realowner == p && p.porto_current.classname == "porto") { @@ -97,7 +100,7 @@ void W_Porto_Remove (entity p) } } -void W_Porto_Think (void) +void W_Porto_Think(void) { trace_plane_normal = '0 0 0'; if(self.realowner.playerid != self.playerid) @@ -106,7 +109,7 @@ void W_Porto_Think (void) W_Porto_Fail(0); } -void W_Porto_Touch (void) +void W_Porto_Touch(void) { vector norm; @@ -154,7 +157,7 @@ void W_Porto_Touch (void) { sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTEN_NORM); trace_plane_normal = norm; - centerprint(self.realowner, "^1In^7-portal created."); + Send_Notification(NOTIF_ONE, self.realowner, MSG_CENTER, CENTER_PORTO_CREATED_IN); W_Porto_Success(); } else @@ -171,7 +174,7 @@ void W_Porto_Touch (void) { sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTEN_NORM); trace_plane_normal = norm; - centerprint(self.realowner, "^4Out^7-portal created."); + Send_Notification(NOTIF_ONE, self.realowner, MSG_CENTER, CENTER_PORTO_CREATED_OUT); W_Porto_Success(); } else @@ -188,10 +191,10 @@ void W_Porto_Touch (void) { sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTEN_NORM); trace_plane_normal = norm; - centerprint(self.realowner, "^1In^7-portal created."); + Send_Notification(NOTIF_ONE, self.realowner, MSG_CENTER, CENTER_PORTO_CREATED_IN); 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 + CSQCProjectile(self, true, PROJECTILE_PORTO_BLUE, true); // change type } else { @@ -209,7 +212,7 @@ void W_Porto_Touch (void) { sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTEN_NORM); trace_plane_normal = norm; - centerprint(self.realowner, "^4Out^7-portal created."); + Send_Notification(NOTIF_ONE, self.realowner, MSG_CENTER, CENTER_PORTO_CREATED_OUT); W_Porto_Success(); } else @@ -228,23 +231,23 @@ void W_Porto_Touch (void) } } -void W_Porto_Attack (float type) +void W_Porto_Attack(float type) { entity gren; - W_SetupShot (self, FALSE, 4, "porto/fire.wav", CH_WEAPON_A, 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; //pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); - gren = spawn (); + gren = spawn(); gren.cnt = type; gren.owner = gren.realowner = self; gren.playerid = self.playerid; gren.classname = "porto"; - gren.bot_dodge = TRUE; + gren.bot_dodge = true; gren.bot_dodgerating = 200; gren.movetype = MOVETYPE_BOUNCEMISSILE; PROJECTILE_MAKETRIGGER(gren); @@ -252,17 +255,17 @@ void W_Porto_Attack (float type) gren.scale = 4; setorigin(gren, w_shotorg); setsize(gren, '0 0 0', '0 0 0'); - + gren.nextthink = time + WEP_CVAR_BOTH(porto, (type <= 0), lifetime); gren.think = W_Porto_Think; gren.touch = W_Porto_Touch; - + if(self.items & IT_STRENGTH) W_SetupProjVelocity_Basic(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed) * autocvar_g_balance_powerup_strength_force, 0); else W_SetupProjVelocity_Basic(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed), 0); - gren.angles = vectoangles (gren.velocity); + gren.angles = vectoangles(gren.velocity); gren.flags = FL_PROJECTILE; gren.portal_id = time; @@ -274,9 +277,9 @@ void W_Porto_Attack (float type) gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP; if(type > 0) - CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_BLUE, TRUE); + CSQCProjectile(gren, true, PROJECTILE_PORTO_BLUE, true); else - CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED, TRUE); + CSQCProjectile(gren, true, PROJECTILE_PORTO_RED, true); other = gren; MUTATOR_CALLHOOK(EditProjectile); } @@ -286,42 +289,42 @@ float W_Porto(float req) { //vector v_angle_save; - if (g_nexball) { return w_nexball_weapon(req); } - + if(g_nexball) { return w_nexball_weapon(req); } + switch(req) { case WR_AIM: { - self.BUTTON_ATCK = FALSE; - self.BUTTON_ATCK2 = FALSE; + self.BUTTON_ATCK = false; + self.BUTTON_ATCK2 = false; if(!WEP_CVAR(porto, secondary)) - if(bot_aim(WEP_CVAR_PRI(porto, speed), 0, WEP_CVAR_PRI(porto, lifetime), FALSE)) - self.BUTTON_ATCK = TRUE; - - return TRUE; + if(bot_aim(WEP_CVAR_PRI(porto, speed), 0, WEP_CVAR_PRI(porto, lifetime), false)) + self.BUTTON_ATCK = true; + + return true; } case WR_CONFIG: { - PORTO_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS) - return TRUE; + PORTO_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS); + return true; } case WR_THINK: { if(WEP_CVAR(porto, secondary)) { - if (self.BUTTON_ATCK) - if (!self.porto_current) - if (!self.porto_forbidden) - if (weapon_prepareattack(0, WEP_CVAR_PRI(porto, refire))) + if(self.BUTTON_ATCK) + if(!self.porto_current) + if(!self.porto_forbidden) + if(weapon_prepareattack(0, WEP_CVAR_PRI(porto, refire))) { W_Porto_Attack(0); weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(porto, animtime), w_ready); } - if (self.BUTTON_ATCK2) - if (!self.porto_current) - if (!self.porto_forbidden) - if (weapon_prepareattack(1, WEP_CVAR_SEC(porto, refire))) + if(self.BUTTON_ATCK2) + if(!self.porto_current) + if(!self.porto_forbidden) + if(weapon_prepareattack(1, WEP_CVAR_SEC(porto, refire))) { W_Porto_Attack(1); weapon_thinkf(WFRAME_FIRE2, WEP_CVAR_SEC(porto, animtime), w_ready); @@ -351,45 +354,45 @@ float W_Porto(float req) if(self.porto_v_angle_held) makevectors(self.porto_v_angle); // override the previously set angles - if (self.BUTTON_ATCK) - if (!self.porto_current) - if (!self.porto_forbidden) - if (weapon_prepareattack(0, WEP_CVAR_PRI(porto, refire))) + if(self.BUTTON_ATCK) + if(!self.porto_current) + if(!self.porto_forbidden) + if(weapon_prepareattack(0, WEP_CVAR_PRI(porto, refire))) { W_Porto_Attack(-1); weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(porto, animtime), w_ready); } } - - return TRUE; + + return true; } case WR_INIT: { - precache_model ("models/weapons/g_porto.md3"); - precache_model ("models/weapons/v_porto.md3"); - precache_model ("models/weapons/h_porto.iqm"); - precache_model ("models/portal.md3"); - precache_sound ("porto/bounce.wav"); - precache_sound ("porto/create.wav"); - precache_sound ("porto/expire.wav"); - precache_sound ("porto/explode.wav"); - precache_sound ("porto/fire.wav"); - precache_sound ("porto/unsupported.wav"); - PORTO_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP) - return TRUE; + precache_model("models/weapons/g_porto.md3"); + precache_model("models/weapons/v_porto.md3"); + precache_model("models/weapons/h_porto.iqm"); + precache_model("models/portal.md3"); + precache_sound("porto/bounce.wav"); + precache_sound("porto/create.wav"); + precache_sound("porto/expire.wav"); + precache_sound("porto/explode.wav"); + precache_sound("porto/fire.wav"); + precache_sound("porto/unsupported.wav"); + PORTO_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP); + return true; } case WR_SETUP: { self.ammo_field = ammo_none; - return TRUE; + return true; } case WR_RESETPLAYER: { self.porto_current = world; - return TRUE; + return true; } } - return TRUE; + return false; } #endif #ifdef CSQC @@ -400,20 +403,20 @@ float W_Porto(float req) case WR_IMPACTEFFECT: { print("Since when does Porto send DamageInfo?\n"); - return TRUE; + return true; } case WR_INIT: { // nothing to do - return TRUE; + return true; } case WR_ZOOMRETICLE: { // no weapon specific image for this weapon - return FALSE; + return false; } } - return TRUE; + return false; } #endif #endif