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_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_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_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_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_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_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_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_maxairstrafespeed 30
sv_airstrafeaccel_qw 0
sv_aircontrol 150
+sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 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_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_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
--- /dev/null
+// 2.0-2.4.2 physics minus QW-bunnyhopping-bug, faster onground accel, CPMA air control
+sv_gravity 800
+sv_maxspeed 320
+
+sv_maxairspeed 320
+
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 8
+edgefriction 1
+sv_stepheight 34
+
+sv_jumpvelocity 300
+sv_wateraccelerate 4
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.937
+
+sv_airstopaccelerate 3
+sv_airstrafeaccelerate 24
+sv_maxairstrafespeed 100
+sv_airstrafeaccel_qw -0.979
+sv_aircontrol 125
+sv_aircontrol_penalty 100
+sv_aircontrol_power 2.5
+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_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
sv_maxairstrafespeed 100
sv_airstrafeaccel_qw -0.9825
sv_aircontrol 125
+sv_aircontrol_penalty 0
sv_aircontrol_power 2.5
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
--- /dev/null
+// 2.0-2.4.2 physics minus QW-bunnyhopping-bug, faster onground accel, CPMA air control
+sv_gravity 800
+sv_maxspeed 400
+sv_maxairspeed 400
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 7
+edgefriction 1
+sv_stepheight 34
+sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
+sv_airaccel_sideways_friction -0.35
+sv_airaccel_qw -0.9475
+sv_airstopaccelerate 0
+sv_airstrafeaccelerate 0
+sv_maxairstrafespeed 0
+sv_airstrafeaccel_qw 0
+sv_aircontrol 125
+sv_aircontrol_penalty 0
+sv_aircontrol_power 2.5
+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_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
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_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_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_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_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_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_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_maxairstrafespeed 30
sv_airstrafeaccel_qw 0
sv_aircontrol 0
+sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 9 // activates warsow movement mode
sv_maxairstrafespeed 30
sv_airstrafeaccel_qw 0
sv_aircontrol 150
+sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_maxairstrafespeed 30
sv_airstrafeaccel_qw 0
sv_aircontrol 0
+sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 6 // activates warsow movement mode
sv_maxairstrafespeed 30
sv_airstrafeaccel_qw 1
sv_aircontrol 150
+sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_friction_on_land 0
sv_doublejump 1
sv_jumpspeedcap_min 0
-sv_jumpspeedcap_max 1
+sv_jumpspeedcap_max 0.5
sv_jumpspeedcap_max_disable_on_ramps 1
--- /dev/null
+// Nexrun tweaked to suit CPM
+sv_gravity 800
+sv_maxspeed 320
+// CPMA: 320
+sv_maxairspeed 320
+// CPMA: 320
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 34
+// CPMA: 18
+sv_jumpvelocity 270
+sv_wateraccelerate 4
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.9146875
+// CPMA: 1
+sv_airstopaccelerate 6.5625 // matches strafe-stopping speed
+sv_airstrafeaccelerate 14
+sv_maxairstrafespeed 150
+sv_airstrafeaccel_qw -0.987
+sv_aircontrol 100
+sv_aircontrol_penalty 100
+sv_aircontrol_power 2.5
+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_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
if(self.movetype != MOVETYPE_FLY)
{
self.movetype = MOVETYPE_FLY;
- sprint(self, "flmodey ON\n");
+ sprint(self, "flymode ON\n");
DID_CHEAT();
}
else
FOR_EACH_PLAYER(other) if(self != other)
{
if(time > other.touchexplode_time)
- if(other.classname == "player")
if(other.deadflag == DEAD_NO)
if not(IS_INDEPENDENT_PLAYER(other))
if(boxesoverlap(self.absmin, self.absmax, other.absmin, other.absmax))
float sv_airstrafeaccel_qw;
float sv_aircontrol;
float sv_aircontrol_power;
+float sv_aircontrol_penalty;
float sv_warsowbunny_airforwardaccel;
float sv_warsowbunny_accel;
float sv_warsowbunny_topspeed;
if(dot > 0) // we can't change direction while slowing down
{
- k *= fabs(sv_aircontrol)*pow(dot, sv_aircontrol_power)*frametime;
+ k *= pow(dot, sv_aircontrol_power)*frametime;
+ xyspeed = max(0, xyspeed - sv_aircontrol_penalty * sqrt(max(0, 1 - dot*dot)) * k/32);
+ k *= sv_aircontrol;
self.velocity = normalize(self.velocity * xyspeed + wishdir * k);
}
// CPM
if(sv_airstopaccelerate)
- if(self.velocity * wishdir < 0)
- airaccel = sv_airstopaccelerate*maxspd_mod;
+ {
+ vector curdir;
+ curdir = self.velocity;
+ curdir_z = 0;
+ curdir = normalize(curdir);
+ airaccel = airaccel + (sv_airstopaccelerate*maxspd_mod - airaccel) * max(0, -(curdir * wishdir));
+ }
// note that for straight forward jumping:
// step = accel * frametime * wishspeed0;
// accel = bound(0, wishspeed - vel_xy_current, step) * accelqw + step * (1 - accelqw);
self.enemy = oldself;
self.lip = oldself.lip;
self.colormap = oldself.colormap;
+ self.glowmod = oldself.glowmod;
self.iscreature = oldself.iscreature;
self.angles = oldself.angles;
self.avelocity = oldself.avelocity;
sv_maxairstrafespeed = cvar("sv_maxairstrafespeed");
sv_airstrafeaccel_qw = cvar("sv_airstrafeaccel_qw");
sv_aircontrol = cvar("sv_aircontrol");
+ sv_aircontrol_penalty = cvar("sv_aircontrol_penalty");
sv_aircontrol_power = cvar("sv_aircontrol_power");
sv_warsowbunny_airforwardaccel = cvar("sv_warsowbunny_airforwardaccel");
sv_warsowbunny_accel = cvar("sv_warsowbunny_accel");
e.model = e.mdl;
e.solid = SOLID_NOT;
e.colormod = stov(cvar_string("g_ghost_items_color"));
- self.glowmod = self.colormod;
+ e.glowmod = e.colormod;
e.alpha = g_ghost_items;
e.customizeentityforclient = func_null;
e.model = string_null;
e.solid = SOLID_NOT;
e.colormod = stov(cvar_string("g_ghost_items_color"));
- self.glowmod = self.colormod;
+ e.glowmod = e.colormod;
e.alpha = 0;
e.customizeentityforclient = func_null;
// AnnounceTo(player, "ammo");
if (item.weapons & WEPBIT_MINSTANEX)
- W_GiveWeapon (player, WEP_MINSTANEX, "Nex");
+ W_GiveWeapon (player, WEP_MINSTANEX, item.netname);
if (item.ammo_cells)
player.ammo_cells = min (player.ammo_cells + cvar("g_minstagib_ammo_drop"), 999);
player.health = 100;
pickedup = TRUE;
// sound not available
// AnnounceTo(player, "_lives");
- player.armorvalue = player.armorvalue + cvar("g_minstagib_extralives");
+ player.armorvalue = min(player.armorvalue + cvar("g_minstagib_extralives"), 999);
sprint(player, "^3You picked up some extra lives\n");
}
return;
}
- itemid = self.items;
- weaponid = self.weapons;
-
self.reset = Item_Reset;
// it's a level item
if(self.spawnflags & 1)
self.is_item = TRUE;
}
- weaponsInMap |= weaponid;
-
if(g_lms || g_ca)
{
startitem_failed = TRUE;
return;
}
+ weaponsInMap |= weaponid;
+
precache_model (itemmodel);
precache_sound (pickupsound);
- precache_sound ("misc/itemrespawn.wav");
- precache_sound ("misc/itemrespawncountdown.wav");
- if(itemid == IT_STRENGTH)
+ precache_sound ("misc/itemrespawncountdown.wav");
+ if(!g_minstagib && itemid == IT_STRENGTH)
precache_sound ("misc/strength_respawn.wav");
- if(itemid == IT_INVINCIBLE)
+ else if(!g_minstagib && itemid == IT_INVINCIBLE)
precache_sound ("misc/shield_respawn.wav");
+ else
+ precache_sound ("misc/itemrespawn.wav");
- if((itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2)) || (weaponid & WEPBIT_ALL))
+ if((itemflags & (FL_POWERUP | FL_WEAPON)) || (itemid & (IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2)))
self.target = "###item###"; // for finding the nearest item using find()
}
*/
void minstagib_items (float itemid)
{
- // we don't want to replace dropped weapons ;)
- if (self.classname == "droppedweapon")
- {
- self.ammo_cells = 25;
- StartItem ("models/weapons/g_nex.md3",
- "weapons/weaponpickup.wav", 15, 0,
- "MinstaNex", 0, WEPBIT_MINSTANEX, FL_WEAPON, generic_pickupevalfunc, 1000);
- return;
- }
-
local float rnd;
self.classname = "minstagib";
self.ammo_cells = 1;
StartItem ("models/items/a_cells.md3",
"misc/itempickup.wav", 45, 0,
- "Nex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
+ "MinstaNex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100);
return;
}
StartItem ("models/items/g_h100.md3",
"misc/megahealth.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup,
"Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_HIGH);
-
}
// replace with speed
if (itemid == IT_INVINCIBLE)
"misc/powerup_shield.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup,
"Speed", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_MID);
}
-
}
float minst_no_auto_cells;
{
if (g_minstagib)
{
- minstagib_items(IT_CELLS);
+ minstagib_items(IT_CELLS); // replace rocketlauncher with cells
self.think = minst_remove_item;
self.nextthink = time;
return;
if(!self.invincible_finished)
self.invincible_finished = cvar("g_balance_powerup_invincible_time");
- precache_sound("misc/itempickup.wav");
- precache_sound("misc/itempickup.wav");
- precache_sound("misc/itempickup.wav");
precache_sound("misc/itempickup.wav");
precache_sound("misc/megahealth.wav");
precache_sound("misc/armor25.wav");
POSTGIVE_VALUE_ROT(e, armorvalue, 1, pauserotarmor_finished, cvar("g_balance_pause_armor_rot"), pauseregen_finished, cvar("g_balance_pause_health_regen"), "misc/armor25.wav", string_null);
POSTGIVE_VALUE_ROT(e, health, 1, pauserothealth_finished, cvar("g_balance_pause_health_rot"), pauseregen_finished, cvar("g_balance_pause_health_regen"), "misc/megahealth.wav", string_null);
+ if (g_minstagib)
+ {
+ e.health = bound(0, e.health, 100);
+ e.armorvalue = bound(0, e.armorvalue, 999);
+ }
+
if(e.strength_finished <= 0)
e.strength_finished = 0;
else
-(THIS FILE IS A HUGE TODO)
-(YES, REALLY, NOTHING HERE IS TRUE)
-(PLEASE FIX THIS FILE)
+**Core Team
+divVerent
+-z-
+merlijn
+morphed
+mand1nga
+tZork
-**Team Leaders:
+**Coordinators
+*Art
+Diabolik a.k.a Dib
-**Project maintainers:
-
-Kristian "morfar" Johansson
-
-Maik "SavageX" Merten
+*2D Art / Web
+-z- (web / game)
+FruitieX (game / web)
+*3D Art
+morphed
-**Development Team:
+*Level Design
+FruitieX
-Rudolf "div0" Polzer
-*Programmer
+*Music / Sound FX
+mand1nga
+merlijn
-Andreas "Black" Kirsch
-*Programmer
-
-Paul "Strahlemann" Evers
-*Level Designer
+*Engine Code Additions & QA
+divVerent
-Peter "Morphed" Pielak
-*Artist
+*Game Code
+divVerent
+FruitieX
+tZork
-Samual Lenks
-*Programmer
+*Marketing / PR
+-z-
+mand1nga
-Rasmus "FruitieX" Eskola
-*Artist and Programmer
+*Legal
+divVerent
+merlijn
-Saulo "mand1nga" Gil
-*Programmer
+**Game Engine
+DarkPlaces
+by Forest "LordHavoc" Hale
+**Active Contributors
+Maik "SavageX" Merten
+MrBougo
+Kristian "morfar" Johansson
Stephan "esteel" Stahl
-*Programmer
-
-Jakob "tZork" Markstrom Grohn
-*Programmer and Artist
-
-Tyler "-z-" Mulligan
-*Web Developer and Interaction Designer
-
Wolfgang "Blub\0" Bumiller
-*Programmer
-
-Merlijn Hofstra
-*Programmer and server admin
-
-
-
-**Past Team Members
-*In alphabetical order
-*(nickname or surname)
-
-Kurt Dereli
-*Artist
-
-Yves "EviLair" Allaire
-*Artist
-
-Fabien "H. Reaper" Tschirhart
-*Level Designer
-
-"Innovati"
-*Artist
-
-KadaverJack
-*Programmer
-
-William Libert
-* Level Designer
-
-MauveBib
-*Bot Programmer
-
-Rick "Rat" Kelley
-*Lead Animator, Skinner
-
-Michael "Tenshihan" Quinn
-*Sound FX and Player-Voices
-
-Gottfried "Toddd" Hofmann
-*Sound FX
-
-Marko "Urre" Permanto
-*Bot Programmer
-
-Dan "Wazat" Hale
-*Programmer
-
-Garth "Zombie" Hendy
-*Level Designer
-
-
-
-**Special Thanks:
-*In alphabetical order
-*(nickname or surname)
-
-Robert "ai" Kuroto
-*Various models
-
-Chris "amethyst7" Matz
-*Level design
-
-blkrbt
-*Music
-
-Gerd "Elysis" Raudenbusch
-*Music
-
-Marius "GreEn`mArine" Shekow
-*Programmer
-
-Forest "LordHavoc" Hale
-*DarkPlaces Engine Programmer
-
-Braden "meoblast001" Walters
-*Music
+**Past Contributors
Alexander "motorsep" Zubov
-*Weapon animation
-
-Eric "Munyul Verminard" Sambach
-*Level design
-
-Severin "sev" Meyer
-*Artist
-
-Simon O'Callaghan
-*egyptsoc texture set
-
-Michael "Tenshihan" Quinn
-*Sound effects
-
Amos "torus" Dudley
-*Announcer voices
-
-Mattrew "Tronyn" Rye
-*Level design
-
-Henning "Tymo" Janssen
-*Level design
-
-Kevin "Tyrann" Shanahan
-*Level design
-
-William "Willis" Weilep
-*Master server host
-
-
-**Thanks:
-
+Andreas "Black" Kirsch
Attila "WW3" Houtkooper
BigMac
+blkrbt
+Braden "meoblast001" Walters
Brain Younds
+Chris "amethyst7" Matz
Christian Ice
Clinton "Kaziganthe" Freeman
Dan "Digger" Korostelev
+Dan "Wazat" Hale
Donkey
+dstrek
Dustin Geeraert
Edgenetwork
Edward "Ed" Holness
+Eric "Munyul Verminard" Sambach
+Fabien "H. Reaper" Tschirhart
FrikaC
+Garth "Zombie" Hendy
+Gerd "Elysis" Raudenbusch
+Gottfried "Toddd" Hofmann
+Henning "Tymo" Janssen
+"Innovati"
Jitspoe
Jody Gallagher
Juergen "LowDragon" Timm
+KadaverJack
+Kevin "Tyrann" Shanahan
+Kurt Dereli
+lcatlnx
Lee David Ash
Lee Vermeulen
+leileilol
+Marius "GreEn`mArine" Shekow
+Marko "Urre" Permanto
Mathieu "Elric" Olivier
+Mattrew "Tronyn" Rye
+MauveBib
Mephisto
+michaelb
+Michael "Tenshihan" Quinn
MirceaKitsune
-MrBougo
Munyul
Netzwerg
NoelCower
Parapraxis
+Paul "Strahlemann" Evers
Petithomme
Q1 Retexturing Project
Qantourisc
+Rick "Rat" Kelley
+Robert "ai" Kuroto
Ronan
Sajt
+Samual Lenks
+Severin "sev" Meyer
Shaggy
Shank
+Simon O'Callaghan
SomeGuy
Spike
Spirit
Steve Vermeulen
Supajoe
Tei
+terencehill
Tomaz
Ulrich Galbraith
Vortex
+William Libert
+William "Willis" Weilep
+Yves "EviLair" Allaire
Zenex
-dstrek
-lcatlnx
-leileilol
-michaelb
-terencehill