Commit 0986191f authored by TimePath's avatar TimePath

Merge branch 'master' into TimePath/features/jetpack_jump

Conflicts:
	qcsrc/server/cl_physics.qc
parents 4d045876 a49ea317
......@@ -1228,8 +1228,6 @@ volume 1
// sucks less than the old one
cl_decals_newsystem 1
seta cl_cubemaps_extra 1
set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping machinegun and shotgun (for Q3A map compatibility in mapinfo files)"
set g_movement_highspeed 1 "movement speed modification factor (only changes movement when above maxspeed)"
......
......@@ -9041,15 +9041,6 @@ effect arc_lightning // impact sparks (underwater)
airfriction 5
liquidfriction 5
effect arc_beam // beam core
type beam
countabsolute 1
tex 200 200
color 0xFFFFFF 0xFFFFFF
size 4 4
alpha 512 512 0
time 0.005 0.005
effect arc_beam // sparks on beam
type spark
stretchfactor 1
......
......@@ -6,7 +6,6 @@ cl_particles_quality 1.0
cl_damageeffect 1
cl_spawn_point_particles 1
cl_playerdetailreduction 4.0
cl_cubemaps_extra 1
gl_flashblend 0
gl_picmip -1
mod_q3bsp_nolightmaps 0
......
......@@ -6,7 +6,6 @@ cl_particles_quality 0.4
cl_damageeffect 0
cl_spawn_point_particles 0
cl_playerdetailreduction 4
cl_cubemaps_extra 0
gl_flashblend 1
gl_picmip 1
mod_q3bsp_nolightmaps 1
......
......@@ -6,7 +6,6 @@ cl_particles_quality 0.8
cl_damageeffect 0
cl_spawn_point_particles 0
cl_playerdetailreduction 4
cl_cubemaps_extra 0
gl_flashblend 0
gl_picmip 0
mod_q3bsp_nolightmaps 0
......
......@@ -6,7 +6,6 @@ cl_particles_quality 1.0
cl_damageeffect 1
cl_spawn_point_particles 1
cl_playerdetailreduction 4
cl_cubemaps_extra 0
gl_flashblend 0
gl_picmip 0
mod_q3bsp_nolightmaps 0
......
......@@ -6,7 +6,6 @@ cl_particles_quality 0.4
cl_damageeffect 0
cl_spawn_point_particles 0
cl_playerdetailreduction 4
cl_cubemaps_extra 0
gl_flashblend 1
gl_picmip 1337
mod_q3bsp_nolightmaps 1
......
......@@ -6,7 +6,6 @@ cl_particles_quality 1.0
cl_damageeffect 2
cl_spawn_point_particles 1
cl_playerdetailreduction 0
cl_cubemaps_extra 1
gl_flashblend 0
gl_picmip -1
mod_q3bsp_nolightmaps 0
......
......@@ -6,7 +6,6 @@ cl_particles_quality 1.0
cl_damageeffect 2
cl_spawn_point_particles 1
cl_playerdetailreduction 0
cl_cubemaps_extra 1
gl_flashblend 0
gl_picmip -1
mod_q3bsp_nolightmaps 0
......
This diff is collapsed.
......@@ -264,7 +264,7 @@ void W_Arc_Beam_Think(void)
{
pointparticles( particleeffectnum("arc_overheat"),
self.beam_start, self.beam_wantdir, 1 );
sound(self, CH_WEAPON_A, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
sound(self, CH_WEAPON_A, "weapons/arc_stop.wav", VOL_BASE, ATTN_NORM);
}
}
......@@ -577,7 +577,7 @@ void W_Arc_Beam(float burst)
// only play fire sound if 1 sec has passed since player let go the fire button
if(time - self.beam_prev > 1)
{
sound(self, CH_WEAPON_A, "weapons/lgbeam_fire.wav", VOL_BASE, ATTN_NORM);
sound(self, CH_WEAPON_A, "weapons/arc_fire.wav", VOL_BASE, ATTN_NORM);
}
entity beam = self.arc_beam = spawn();
......@@ -613,7 +613,7 @@ void Arc_Smoke()
if ( !self.arc_smoke_sound )
{
self.arc_smoke_sound = 1;
sound(self, CH_SHOTS_SINGLE, "weapons/gauntletbeam_fly.wav", VOL_BASE, ATTN_NORM);
sound(self, CH_SHOTS_SINGLE, "weapons/arc_loop_overheat.wav", VOL_BASE, ATTN_NORM);
}
}
}
......@@ -697,6 +697,7 @@ float W_Arc(float req)
if(self.arc_BUTTON_ATCK_prev != 0)
{
sound(self, CH_WEAPON_A, "weapons/arc_stop.wav", VOL_BASE, ATTN_NORM);
weapon_thinkf(WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready);
ATTACK_FINISHED(self) = time + WEP_CVAR(arc, beam_refire) * W_WeaponRateFactor();
}
......@@ -720,9 +721,10 @@ float W_Arc(float req)
precache_model("models/weapons/g_arc.md3");
precache_model("models/weapons/v_arc.md3");
precache_model("models/weapons/h_arc.iqm");
precache_sound("weapons/lgbeam_fire.wav");
precache_sound("weapons/gauntletbeam_fly.wav");
precache_sound("weapons/strength_fire.wav");
precache_sound("weapons/arc_fire.wav");
precache_sound("weapons/arc_loop.wav");
precache_sound("weapons/arc_stop.wav");
precache_sound("weapons/arc_loop_overheat.wav");
if(!arc_shotorigin[0])
{
arc_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC), FALSE, FALSE, 1);
......@@ -1183,7 +1185,7 @@ void Ent_ReadArcBeam(float isnew)
self.draw = Draw_ArcBeam;
self.entremove = Remove_ArcBeam;
self.move_time = time;
loopsound(self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTEN_NORM);
loopsound(self, CH_SHOTS_SINGLE, "weapons/arc_loop.wav", VOL_BASE, ATTEN_NORM);
flash = spawn();
flash.owner = self;
......@@ -1274,7 +1276,7 @@ void Ent_ReadArcBeam(float isnew)
{
case ARC_BT_MISS:
{
self.beam_color = '-1 -1 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 8;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1290,7 +1292,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_muzzlelight[3] = 1;
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1300,7 +1301,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_WALL: // grenadelauncher_muzzleflash healray_muzzleflash
{
self.beam_color = '0.5 0.5 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 8;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1326,7 +1327,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_HEAL:
{
self.beam_color = '0 1 0';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 8;
self.beam_traileffect = particleeffectnum("arc_beam_heal");
......@@ -1343,7 +1344,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1353,7 +1353,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_HIT:
{
self.beam_color = '1 0 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 8;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1370,7 +1370,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1380,7 +1379,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_BURST_MISS:
{
self.beam_color = '-1 -1 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 14;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1395,15 +1394,18 @@ void Ent_ReadArcBeam(float isnew)
self.beam_muzzlelight[2] = 1;
self.beam_muzzlelight[3] = 1;
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
flash.scale = 0.5;
if(self.beam_muzzleeffect >= 0)
{
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
flash.scale = 0.5;
}
break;
}
case ARC_BT_BURST_WALL:
{
self.beam_color = '0.5 0.5 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 14;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1420,7 +1422,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1430,7 +1431,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_BURST_HEAL:
{
self.beam_color = '0 1 0';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 14;
self.beam_traileffect = particleeffectnum("arc_beam_heal");
......@@ -1447,7 +1448,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1457,7 +1457,7 @@ void Ent_ReadArcBeam(float isnew)
}
case ARC_BT_BURST_HIT:
{
self.beam_color = '1 0 1';
self.beam_color = '1 1 1';
self.beam_alpha = 0.5;
self.beam_thickness = 14;
self.beam_traileffect = particleeffectnum("arc_beam");
......@@ -1474,7 +1474,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1503,7 +1502,6 @@ void Ent_ReadArcBeam(float isnew)
self.beam_image = "particles/lgbeam";
if(self.beam_muzzleeffect >= 0)
{
self.beam_image = "particles/lgbeam";
setmodel(flash, "models/flash.md3");
flash.alpha = self.beam_alpha;
flash.colormod = self.beam_color;
......@@ -1531,7 +1529,7 @@ float W_Arc(float req)
}
case WR_INIT:
{
precache_sound("weapons/lgbeam_fly.wav");
precache_sound("weapons/arc_loop.wav");
return TRUE;
}
case WR_ZOOMRETICLE:
......
......@@ -318,7 +318,7 @@ void W_MineLayer_Attack(void)
if(self.minelayer_mines >= WEP_CVAR(minelayer, limit))
{
// the refire delay keeps this message from being spammed
sprint(self, strcat("minelayer: You cannot place more than ^2", ftos(WEP_CVAR(minelayer, limit)), " ^7mines at a time\n") );
Send_Notification(NOTIF_ONE, self, MSG_MULTI, WEAPON_MINELAYER_LIMIT, WEP_CVAR(minelayer, limit));
play2(self, "weapons/unavailable.wav");
return;
}
......
......@@ -81,7 +81,7 @@ 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);
}
}
}
......@@ -157,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
......@@ -174,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
......@@ -191,7 +191,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);
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
......@@ -212,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
......
......@@ -98,6 +98,8 @@ string XonoticMutatorsDialog_toString(entity me)
s = strcat(s, ", ", _("Blood loss"));
if(cvar("g_jetpack"))
s = strcat(s, ", ", _("Jet pack"));
if(cvar("g_buffs"))
s = strcat(s, ", ", _("Buffs"));
if(cvar("g_overkill"))
s = strcat(s, ", ", _("Overkill"));
if(cvar("g_powerups") == 0)
......@@ -168,6 +170,9 @@ void XonoticMutatorsDialog_fill(entity me)
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_cloaked", _("Cloaked")));
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_buffs", _("Buffs")));
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_midair", _("Midair")));
......
......@@ -4,7 +4,7 @@ CLASS(XonoticSettingsDialog) EXTENDS(XonoticDialog)
ATTRIB(XonoticSettingsDialog, title, string, _("Settings"))
ATTRIB(XonoticSettingsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS)
ATTRIB(XonoticSettingsDialog, intendedWidth, float, 0.96)
ATTRIB(XonoticSettingsDialog, rows, float, 17)
ATTRIB(XonoticSettingsDialog, rows, float, 18)
ATTRIB(XonoticSettingsDialog, columns, float, 6)
ENDCLASS(XonoticSettingsDialog)
#endif
......
......@@ -3,7 +3,7 @@ CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticAudioSettingsTab, fill, void(entity))
ATTRIB(XonoticAudioSettingsTab, title, string, _("Audio"))
ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticAudioSettingsTab, rows, float, 14.5)
ATTRIB(XonoticAudioSettingsTab, rows, float, 15.5)
ATTRIB(XonoticAudioSettingsTab, columns, float, 6.2) // added extra .2 for center space
ENDCLASS(XonoticAudioSettingsTab)
entity makeXonoticAudioSettingsTab();
......
......@@ -3,7 +3,7 @@ CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticEffectsSettingsTab, fill, void(entity))
ATTRIB(XonoticEffectsSettingsTab, title, string, _("Effects"))
ATTRIB(XonoticEffectsSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticEffectsSettingsTab, rows, float, 14.5)
ATTRIB(XonoticEffectsSettingsTab, rows, float, 15.5)
ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.2) // added extra .2 for center space
ENDCLASS(XonoticEffectsSettingsTab)
entity makeXonoticEffectsSettingsTab();
......@@ -130,23 +130,22 @@ void XonoticEffectsSettingsTab_fill(entity me)
e.configureXonoticTextSliderValues(e);
setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_particles", _("Particles")));
me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Spawnpoint effects")));
makeMulti(e, "cl_spawn_event_particles");
setDependent(e, "cl_particles", 1, 1);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
setDependent(e, "cl_decals", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Quality:")));
setDependent(e, "cl_particles", 1, 1);
me.TD(me, 1, 2, e = makeXonoticParticlesSlider());
setDependent(e, "cl_particles", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
setDependent(e, "cl_particles", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawparticles_drawdistance"));
setDependent(e, "cl_particles", 1, 1);
me.TR(me);
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
setDependent(e, "cl_decals", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime"));
setDependent(e, "cl_decals", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Damage effects:")));
me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_damageeffect"));
......@@ -180,7 +179,6 @@ void XonoticEffectsSettingsTab_fill(entity me)
me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Fade corona according to visibility")));
setDependent(e, "r_coronas", 1, 1);
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_cubemaps_extra", _("Extra reflective effects")));
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_bloom", _("Bloom")));
me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", _("Extra postprocessing effects")));
......@@ -194,21 +192,22 @@ void XonoticEffectsSettingsTab_fill(entity me)
me.TD(me, 1, 2, s);
me.TR(me);
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_particles", _("Particles")));
me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Spawnpoint effects")));
makeMulti(e, "cl_spawn_event_particles");
setDependent(e, "cl_particles", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Quality:")));
setDependent(e, "cl_particles", 1, 1);
me.TD(me, 1, 2, e = makeXonoticParticlesSlider());
setDependent(e, "cl_particles", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime"));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
setDependent(e, "cl_particles", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawparticles_drawdistance"));
setDependent(e, "cl_particles", 1, 1);
me.gotoRC(me, me.rows - 1, 0);
me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY));
......
......@@ -3,7 +3,7 @@ CLASS(XonoticGameSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticGameSettingsTab, fill, void(entity))
ATTRIB(XonoticGameSettingsTab, title, string, _("Game"))
ATTRIB(XonoticGameSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticGameSettingsTab, rows, float, 14.5)
ATTRIB(XonoticGameSettingsTab, rows, float, 15.5)
ATTRIB(XonoticGameSettingsTab, columns, float, 6.5)
ENDCLASS(XonoticGameSettingsTab)
entity makeXonoticGameSettingsTab();
......@@ -21,7 +21,7 @@ entity makeXonoticGameSettingsTab()
void XonoticGameSettingsTab_fill(entity me)
{
entity mc;
mc = makeXonoticTabController(me.rows - 1.5);
mc = makeXonoticTabController(me.rows - 2.5);
me.TR(me);
me.TDempty(me, 0.25);
......
......@@ -3,7 +3,7 @@ CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticInputSettingsTab, fill, void(entity))
ATTRIB(XonoticInputSettingsTab, title, string, _("Input"))
ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticInputSettingsTab, rows, float, 14.5)
ATTRIB(XonoticInputSettingsTab, rows, float, 15.5)
ATTRIB(XonoticInputSettingsTab, columns, float, 6.2) // added extra .2 for center space
ENDCLASS(XonoticInputSettingsTab)
entity makeXonoticInputSettingsTab();
......@@ -32,8 +32,8 @@ void XonoticInputSettingsTab_fill(entity me)
me.TR(me);
me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Key Bindings")));
me.TR(me);
me.TD(me, me.rows - 4, 3, kb);
me.gotoRC(me, me.rows - 3, 0);
me.TD(me, me.rows - 3, 3, kb);
me.gotoRC(me, me.rows - 2, 0);
me.TD(me, 1, 1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
e.onClick = KeyBinder_Bind_Change;
e.onClickEntity = kb;
......
......@@ -3,7 +3,7 @@ CLASS(XonoticMiscSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticMiscSettingsTab, fill, void(entity))
ATTRIB(XonoticMiscSettingsTab, title, string, _("Misc"))
ATTRIB(XonoticMiscSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticMiscSettingsTab, rows, float, 14.5)
ATTRIB(XonoticMiscSettingsTab, rows, float, 15.5)
ATTRIB(XonoticMiscSettingsTab, columns, float, 6.2)
ENDCLASS(XonoticMiscSettingsTab)
entity makeXonoticMiscSettingsTab();
......
......@@ -3,7 +3,7 @@ CLASS(XonoticUserSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticUserSettingsTab, fill, void(entity))
ATTRIB(XonoticUserSettingsTab, title, string, _("User"))
ATTRIB(XonoticUserSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticUserSettingsTab, rows, float, 14.5)
ATTRIB(XonoticUserSettingsTab, rows, float, 15.5)
ATTRIB(XonoticUserSettingsTab, columns, float, 6)
ENDCLASS(XonoticUserSettingsTab)
entity makeXonoticUserSettingsTab();
......
......@@ -3,7 +3,7 @@ CLASS(XonoticVideoSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticVideoSettingsTab, fill, void(entity))
ATTRIB(XonoticVideoSettingsTab, title, string, _("Video"))
ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticVideoSettingsTab, rows, float, 14.5)
ATTRIB(XonoticVideoSettingsTab, rows, float, 15.5)
ATTRIB(XonoticVideoSettingsTab, columns, float, 6.2) // added extra .2 for center space
ATTRIB(XonoticVideoSettingsTab, name, string, "videosettings")
ENDCLASS(XonoticVideoSettingsTab)
......
......@@ -1562,7 +1562,7 @@ void player_regen (void)
mina = autocvar_g_balance_armor_regenstable;
limith = autocvar_g_balance_health_limit;
limita = autocvar_g_balance_armor_limit;
max_mod = regen_mod_max;
regen_mod = regen_mod_regen;
rot_mod = regen_mod_rot;
......@@ -1756,7 +1756,6 @@ float SpectateUpdate()
return 1;
}
float SpectateSet()
{
if(self.enemy.classname != "player")
......@@ -2627,8 +2626,6 @@ void PlayerPostThink (void)
}
*/
//pointparticles(particleeffectnum("machinegun_impact"), self.origin + self.view_ofs + '0 0 7', '0 0 0', 1);
if(self.waypointsprite_attachedforcarrier)
WaypointSprite_UpdateHealth(self.waypointsprite_attachedforcarrier, '1 0 0' * healtharmor_maxdamage(self.health, self.armorvalue, autocvar_g_balance_armor_blockpercent, DEATH_WEAPON));
......
......@@ -172,10 +172,10 @@ void CheckPlayerJump()
if (self.jetpack_stopped) { }
else if (!has_fuel)
{
if (was_flying)
sprint(self, "You ran out of fuel for the ^2Jetpack\n");
if (was_flying) // TODO: ran out of fuel message
Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
else
sprint(self, "You don't have any fuel for the ^2Jetpack\n");
Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
self.jetpack_stopped = TRUE;
self.items &= ~IT_USING_JETPACK;
}
......@@ -1148,6 +1148,10 @@ void SV_PlayerPhysics()
}
else if (self.flags & FL_ONGROUND)
{
// we get here if we ran out of ammo
if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01)
Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
// walking
makevectors(self.v_angle_y * '0 1 0');
wishvel = v_forward * self.movement_x + v_right * self.movement_y;
......@@ -1213,6 +1217,9 @@ void SV_PlayerPhysics()
else
{
float wishspeed0;
// we get here if we ran out of ammo
if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01)
Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
if(maxspd_mod < 1)
{
......
......@@ -150,7 +150,7 @@ void ClientCommand_join(float request)
{
if(IS_CLIENT(self))
{
if(!IS_PLAYER(self) && !lockteams)
if(!IS_PLAYER(self) && !lockteams && !gameover)
{
if(self.caplayer)
return;
......@@ -468,7 +468,7 @@ void ClientCommand_selectteam(float request, float argc)
GetTeamCounts(self);
if(!TeamSmallerEqThanTeam(Team_TeamToNumber(selection), Team_TeamToNumber(self.team), self))
{
sprint(self, "Cannot change to a larger/better/shinier team\n");
Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TEAMCHANGE_LARGERTEAM);
return;
}
}
......
......@@ -478,14 +478,11 @@ void GameCommand_cointoss(float request, float argc)
{
case CMD_REQUEST_COMMAND:
{
entity client;
string result1 = (argv(2) ? strcat("^7", argv(1), "^3!\n") : "^1HEADS^3!\n");
string result2 = (argv(2) ? strcat("^7", argv(2), "^3!\n") : "^4TAILS^3!\n");
string result1 = (argv(2) ? strcat("^7", argv(1)) : "^1HEADS");
string result2 = (argv(2) ? strcat("^7", argv(2)) : "^4TAILS");
string choice = ((random() > 0.5) ? result1 : result2);
FOR_EACH_CLIENT(client)
centerprint(client, strcat("^3Throwing coin... Result: ", choice));
bprint(strcat("^3Throwing coin... Result: ", choice));
Send_Notification(NOTIF_ALL, world, MSG_MULTI, MULTI_COINTOSS, choice);
return;
}
......
......@@ -61,14 +61,13 @@ void SUB_UseTargets()
//
// print the message
//
if (IS_PLAYER(activator) && self.message != "")
if(self)
if(IS_PLAYER(activator) && self.message != "")
if(IS_REAL_CLIENT(activator))
{
if(IS_REAL_CLIENT(activator))
{
centerprint (activator, self.message);
if (self.noise == "")
play2(activator, "misc/talk.wav");
}
centerprint(activator, self.message);
if (self.noise == "")
play2(activator, "misc/talk.wav");
}
//
......@@ -205,8 +204,8 @@ void multi_use()
void multi_touch()
{
if (!(self.spawnflags & 2))
if (!other.iscreature)
if(!(self.spawnflags & 2))
if(!other.iscreature)
return;
if(self.team)
......@@ -378,32 +377,26 @@ void spawnfunc_trigger_delay()
void counter_use()
{
self.count = self.count - 1;
self.count -= 1;
if (self.count < 0)
return;
if (self.count != 0)
if (self.count == 0)
{
if (IS_PLAYER(activator)
&& (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
{
if (self.count >= 4)
centerprint (activator, "There are more to go...");
else if (self.count == 3)
centerprint (activator, "Only 3 more to go...");
else if (self.count == 2)
centerprint (activator, "Only 2 more to go...");
else
centerprint (activator, "Only 1 more to go...");
}
return;
}
if(IS_PLAYER(activator) && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COMPLETED);
if (IS_PLAYER(activator)
&& (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
centerprint(activator, "Sequence completed!");
self.enemy = activator;
multi_trigger ();
self.enemy = activator;
multi_trigger ();
}
else
{
if(IS_PLAYER(activator) && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)
if(self.count >= 4)
Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COUNTER);
else
Send_Notification(NOTIF_ONE, activator, MSG_CENTER, CENTER_SEQUENCE_COUNTER_FEWMORE, self.count);
}
}
void counter_reset()
......@@ -2059,9 +2052,9 @@ string trigger_magicear_processmessage_forallears(entity source, float teamsay,
for(ear = magicears; ear; ear = ear.enemy)
{
msgout = trigger_magicear_processmessage(ear, source, teamsay, privatesay, msgin);
if (!(ear.spawnflags & 64))
if(magicear_matched)
return msgout;
if(!(ear.spawnflags & 64))
if(magicear_matched)
return msgout;
msgin = msgout;
}
return msgin;
......
......@@ -333,12 +333,12 @@ void trigger_keylock_touch(void) {