seta cl_zoomsensitivity 0 "how zoom changes sensitivity (0 = weakest, 1 = strongest)"
freelook 1
sensitivity 6
-v_gamma 1.125000
+v_gamma 1
viewsize 100
bgmvolume 1
volume 0.5
// singleplayer campaign
set g_campaign 0
+set g_campaign_forceteam 0 "Forces the player to a given team in campaign mode, 1 = red, 2 = blue, 3 = yellow, 4 = pink"
seta g_campaign_name "xonotic25"
set g_campaign_skill 0
set g_campaignxonotic20_index 0
-// These have been modified from Nexuiz 2.4.2's physicsQBR.cfg file
-sv_gravity 800
-sv_gravity 802
-sv_maxspeed 417
-sv_maxairspeed 202
+// These have been modified from Nexuiz 2.4.2's physicsQBR.cfg file and a bunch of other crap div0 threw on here :P
+// DO NOT SCREW WITH friction on land, edge friction, step height, or sv_airaccel_qw
+
+sv_gravity 818
+sv_maxspeed 420
+sv_maxairspeed 283
sv_stopspeed 100
-sv_accelerate 5.8
-sv_airaccelerate 5.5
-sv_friction 4.1
-edgefriction 1
-sv_stepheight 34
-sv_jumpvelocity 307
+sv_accelerate 14
+sv_airaccelerate 8
+sv_friction 9.6 // higher values make you slide less
+edgefriction 1 // div0 says no! lol
+sv_stepheight 34 // was told by divVerent not to mess with this, possibly to avoid breaking maps
+sv_jumpvelocity 308
sv_wateraccelerate -1
sv_waterfriction -1
-sv_airaccel_sideways_friction 0.207
-sv_airaccel_qw -0.93
+sv_airaccel_sideways_friction 0 // pain in the ass to tweak without screwing up the strafing
+sv_airaccel_qw -0.93 //given a negative value to combat potential cheats, was told by divVerent not to mess with it
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
-sv_airstrafeaccel_qw 0
sv_aircontrol 0
-sv_aircontrol_penalty 0
sv_aircontrol_power 2
-sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_warsowbunny_topspeed 925
sv_warsowbunny_backtosideratio 0.8
-sv_friction_on_land 0
+sv_friction_on_land 0 //Was told not to mess with this by divVerent, can cause hell for anti-lag
sv_doublejump 0
sv_jumpspeedcap_min ""
-sv_jumpspeedcap_max ""
-sv_jumpspeedcap_max_disable_on_ramps 0
+sv_jumpspeedcap_max 0.38
+sv_jumpspeedcap_max_disable_on_ramps 1
+
Draw_GrapplingHook_trace_callback_rnd += 0.25 * vlen(hit - start) / 8;
}
+.float teleport_time;
void Draw_GrapplingHook()
{
vector a, b, atrans;
vector vs;
float intensity, offset;
+ if(self.teleport_time)
+ if(time > self.teleport_time)
+ {
+ sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM); // safeguard
+ self.teleport_time = 0;
+ }
+
InterpolateOrigin_Do();
s = cvar("cl_gunalign");
InterpolateOrigin_Note();
- if(bIsNew)
+ if(bIsNew || !self.teleport_time)
{
self.draw = Draw_GrapplingHook;
self.entremove = Remove_GrapplingHook;
break;
}
}
+
+ self.teleport_time = time + 10;
}
void Hook_Precache()
} else if (type == DEATH_CUSTOM) {
HUD_KillNotify_Push(s1, s2, 1, DEATH_CUSTOM);
if(alsoprint)
- print ("^1",s2, "^1 ", s1, "\n");
+ print("^1", sprintf(s3, strcat(s2, "^1"), strcat(s1, "^1")), "\n");
+ } else if (type == DEATH_HURTTRIGGER) {
+ HUD_KillNotify_Push(s1, s2, 1, DEATH_HURTTRIGGER);
+ if(alsoprint)
+ print("^1", sprintf(s3, strcat(s2, "^1"), strcat(s1, "^1")), "\n");
} else {
HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC);
if(alsoprint)
} else if (type == DEATH_CUSTOM) {
HUD_KillNotify_Push(s1, "", 0, DEATH_CUSTOM);
if(alsoprint)
- print ("^1",s1, "^1 ", s2, "\n");
+ print("^1", sprintf(s2, strcat(s1, "^1")), "\n");
} else if (type == DEATH_HURTTRIGGER) {
HUD_KillNotify_Push(s1, "", 0, DEATH_HURTTRIGGER);
if(alsoprint)
- print ("^1",s1, "^1 was in the wrong place\n");
+ print("^1", sprintf(s2, strcat(s1, "^1")), "\n");
} else if(type == DEATH_TOUCHEXPLODE) {
HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC);
if(alsoprint)
// TODO: fix this?
if (deathtype == DEATH_CUSTOM)
- msg = strcat(deathmessage, " by ^1", msg);
- else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
- {
- msg = ftos(strstrofs(inflictor.message2, "#", 0));
- }
+ msg = deathmessage;
+ else
+ msg = inflictor.message2;
+
+ if(strstrofs(msg, "%", 0) < 0)
+ msg = strcat("%s ", msg, " by %s");
Send_KillNotification(a, s, msg, deathtype, MSG_KILL);
msg = inflictor.message;
else if (deathtype == DEATH_CUSTOM)
msg = deathmessage;
+ if(strstrofs(msg, "%", 0) < 0)
+ msg = strcat("%s ", msg);
GiveFrags(targ, targ, -1);
if(PlayerScore_Add(targ, SP_SCORE, 0) == -5) {
self.message = "was in the wrong place";
if (!self.message2)
self.message2 = "was thrown into a world of hurt by";
+ // self.message = "someone like %s always gets wrongplaced";
if(!trigger_hurt_first)
trigger_hurt_first = self;
entity oldself, e;
vector o;
float p;
+ string s;
if (other.health < 1)
return;
o = e.origin + '0 0 1' * (1 - other.mins_z - 24);
TeleportPlayer(self, other, o, e.mangle, v_forward * vlen(other.velocity), '0 0 0', '0 0 0', TELEPORT_FLAGS_TELEPORTER);
- if(e.target)
- {
- oldself = self;
- activator = other;
- self = e;
- SUB_UseTargets();
- self = oldself;
- }
+ activator = other;
+ s = self.target; self.target = string_null;
+ SUB_UseTargets();
+ if not(self.target) self.target = s;
+
+ oldself = self;
+ self = e;
+ SUB_UseTargets();
+ self = oldself;
}
void spawnfunc_info_teleport_destination (void)
// find out what teams are available
CheckAllowedTeams(pl);
+ // if we want the player in a certain team for campaign, force him there
+ if(cvar("g_campaign"))
+ if(clienttype(pl) == CLIENTTYPE_REAL) // only players, not bots
+ {
+ switch(cvar("g_campaign_forceteam"))
+ {
+ case 1:
+ SetPlayerColors(pl, COLOR_TEAM1 - 1);
+ LogTeamchange(pl.playerid, pl.team, 2);
+ return COLOR_TEAM1;
+ case 2:
+ SetPlayerColors(pl, COLOR_TEAM2 - 1);
+ LogTeamchange(pl.playerid, pl.team, 2);
+ return COLOR_TEAM2;
+ case 3:
+ SetPlayerColors(pl, COLOR_TEAM3 - 1);
+ LogTeamchange(pl.playerid, pl.team, 2);
+ return COLOR_TEAM3;
+ case 4:
+ SetPlayerColors(pl, COLOR_TEAM4 - 1);
+ LogTeamchange(pl.playerid, pl.team, 2);
+ return COLOR_TEAM4;
+ default:
+ break;
+ }
+ }
+
// if we don't care what team he ends up on, put him on whatever team he entered as.
// if he's not on a valid team, then let other code put him on the smallest team
if(!forcebestteam)
goto fail;
}
WarpZone_Trace_AddTransform(wz);
- org = WarpZone_TransformOrigin(wz, trace_endpos);
+ org = WarpZone_TransformOrigin(wz, org);
end = WarpZone_TransformOrigin(wz, end);
}
WarpZone_MakeAllSolid();
e = self.enemy;
if(WarpZone_Teleport(other))
{
- if(self.aiment.target)
- {
- oldself = self;
- activator = other;
- self = self.aiment;
- SUB_UseTargets();
- self = oldself;
- }
+ string save1, save2;
+ activator = other;
+
+ save1 = self.target; self.target = string_null;
+ save2 = self.target3; self.target3 = string_null;
+ SUB_UseTargets();
+ if not(self.target) self.target = save1;
+ if not(self.target3) self.target3 = save2;
+
+ oldself = self;
+ self = self.enemy;
+ save1 = self.target; self.target = string_null;
+ save2 = self.target2; self.target2 = string_null;
+ SUB_UseTargets();
+ if not(self.target) self.target = save1;
+ if not(self.target2) self.target2 = save2;
+ self = oldself;
}
else
{
error("Warp zone with nonexisting killtarget");
return;
}
+ self.killtarget = string_null;
}
}
--- /dev/null
+All these weather effects were recorded by Myself and released under the GPL liscence.
+
+~Michael "Tenshihan" Quinn
+
+Mar 7th 2010
\ No newline at end of file