]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/nades_mutator
authorMario <mario.mario@y7mail.com>
Tue, 11 Jun 2013 04:14:56 +0000 (14:14 +1000)
committerMario <mario.mario@y7mail.com>
Tue, 11 Jun 2013 04:14:56 +0000 (14:14 +1000)
balanceXPM.cfg
balanceXonotic.cfg
physicsXSamual.cfg [new file with mode: 0644]
qcsrc/client/projectile.qc
qcsrc/server/mutators/mutator_nades.qc

index 8bd086937ae4f4dfc981753f8bf3adfb2411e81a..f8ffd03381281b57c46ffa236eb0a174956b6da0 100644 (file)
@@ -239,7 +239,7 @@ set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
-set g_balance_laser_primary_force_zscale 1.25
+set g_balance_laser_primary_force_zscale 1.2
 set g_balance_laser_primary_force_velocitybias 0
 set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
@@ -456,7 +456,7 @@ set g_balance_crylink_primary_other_fadetime 5
 set g_balance_crylink_secondary 1
 set g_balance_crylink_secondary_damage 10
 set g_balance_crylink_secondary_edgedamage 5
-set g_balance_crylink_secondary_force -150
+set g_balance_crylink_secondary_force -250
 set g_balance_crylink_secondary_radius 100
 set g_balance_crylink_secondary_speed 3000
 set g_balance_crylink_secondary_spread 0.01
@@ -555,7 +555,7 @@ set g_balance_hagar_primary_health 15
 set g_balance_hagar_primary_damageforcescale 0
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_spread 0.03
-set g_balance_hagar_primary_speed 2200
+set g_balance_hagar_primary_speed 2500
 set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_refire 0.16667 // 6 rockets per second
 set g_balance_hagar_primary_ammo 1
@@ -590,7 +590,7 @@ set g_balance_hagar_reload_time 2
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 80
 set g_balance_rocketlauncher_edgedamage 40
-set g_balance_rocketlauncher_force 400
+set g_balance_rocketlauncher_force 450
 set g_balance_rocketlauncher_radius 110
 set g_balance_rocketlauncher_speed 1300
 set g_balance_rocketlauncher_speedaccel 1300
index 930c9dc1f32e39b16334e23d5e09532ecb648fb6..ca9d32c1dddcce2c588bbdf4fe2ad369d13f4182 100644 (file)
@@ -239,7 +239,7 @@ set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
-set g_balance_laser_primary_force_zscale 1.25
+set g_balance_laser_primary_force_zscale 1.2
 set g_balance_laser_primary_force_velocitybias 0
 set g_balance_laser_primary_force_other_scale 1
 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
@@ -456,7 +456,7 @@ set g_balance_crylink_primary_other_fadetime 5
 set g_balance_crylink_secondary 1
 set g_balance_crylink_secondary_damage 10
 set g_balance_crylink_secondary_edgedamage 5
-set g_balance_crylink_secondary_force -150
+set g_balance_crylink_secondary_force -250
 set g_balance_crylink_secondary_radius 100
 set g_balance_crylink_secondary_speed 3000
 set g_balance_crylink_secondary_spread 0.01
@@ -555,7 +555,7 @@ set g_balance_hagar_primary_health 15
 set g_balance_hagar_primary_damageforcescale 0
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_spread 0.03
-set g_balance_hagar_primary_speed 2200
+set g_balance_hagar_primary_speed 2500
 set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_refire 0.16667 // 6 rockets per second
 set g_balance_hagar_primary_ammo 1
@@ -577,7 +577,7 @@ set g_balance_hagar_secondary_health 15
 set g_balance_hagar_secondary_damageforcescale 0
 set g_balance_hagar_secondary_radius 80
 set g_balance_hagar_secondary_spread 0.05
-set g_balance_hagar_secondary_speed 2000
+set g_balance_hagar_secondary_speed 2500
 set g_balance_hagar_secondary_lifetime_min 10
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.5
@@ -590,7 +590,7 @@ set g_balance_hagar_reload_time 2
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 80
 set g_balance_rocketlauncher_edgedamage 40
-set g_balance_rocketlauncher_force 400
+set g_balance_rocketlauncher_force 450
 set g_balance_rocketlauncher_radius 110
 set g_balance_rocketlauncher_speed 1300
 set g_balance_rocketlauncher_speedaccel 1300
diff --git a/physicsXSamual.cfg b/physicsXSamual.cfg
new file mode 100644 (file)
index 0000000..0f9f77a
--- /dev/null
@@ -0,0 +1,49 @@
+g_mod_physics Xonotic
+// current Xonotic physics
+
+sv_gravity 700
+sv_maxspeed 360
+sv_maxairspeed 360
+
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 6
+edgefriction 1
+sv_stepheight 34
+// Q1: 16+2
+// Nex: 32+2
+// we try: 24+2
+// samual: 32+2
+
+// jump height == sv_jumpvelocity^2 / (2*sv_gravity)
+// in this case: 42.87 qu
+// player: 24+45 qu
+// total: 111.87qu
+// this is smaller than 112 qu, so a 112 qu high corridor (7 of 8 grid units in
+// the 16 grid, and the 8th unit used for wall/floor) just lets a player jump!
+sv_jumpvelocity 245
+sv_wateraccelerate -1
+sv_waterfriction -1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.8
+sv_airaccel_qw_stretchfactor 2
+
+sv_airstopaccelerate 3
+sv_airstrafeaccelerate 18
+sv_maxairstrafespeed 100
+sv_airstrafeaccel_qw -0.95
+sv_aircontrol 100
+sv_aircontrol_penalty 0
+sv_aircontrol_power 2
+sv_airspeedlimit_nonqw 900
+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
+g_teleport_maxspeed 0
index 7ee071a75993e9b3f25e9ffeea56c4b0ec017835..f597797ca1141d5616658a8dd9ecc77291601633 100644 (file)
@@ -101,6 +101,18 @@ void Projectile_Draw()
                        case PROJECTILE_GRENADE_BOUNCING:
                                rot = '0 -1000 0'; // sideways
                                break;
+                       case PROJECTILE_NADE_RED_BURN:
+                       case PROJECTILE_NADE_RED:
+                       case PROJECTILE_NADE_BLUE_BURN:
+                       case PROJECTILE_NADE_BLUE:
+                       case PROJECTILE_NADE_YELLOW_BURN:
+                       case PROJECTILE_NADE_YELLOW:
+                       case PROJECTILE_NADE_PINK_BURN:
+                       case PROJECTILE_NADE_PINK:
+                       case PROJECTILE_NADE_BURN:
+                       case PROJECTILE_NADE:
+                               rot = self.avelocity; 
+                               break;
                        case PROJECTILE_HOOKBOMB:
                                rot = '1000 0 0'; // forward
                                break;
@@ -124,6 +136,18 @@ void Projectile_Draw()
        trailorigin = self.origin;
        switch(self.cnt)
        {
+           case PROJECTILE_NADE_RED_BURN:
+               case PROJECTILE_NADE_RED:
+               case PROJECTILE_NADE_BLUE_BURN:
+               case PROJECTILE_NADE_BLUE:
+               case PROJECTILE_NADE_YELLOW_BURN:
+               case PROJECTILE_NADE_YELLOW:
+               case PROJECTILE_NADE_PINK_BURN:
+               case PROJECTILE_NADE_PINK:
+               case PROJECTILE_NADE_BURN:
+               case PROJECTILE_NADE:
+                       trailorigin += v_up * 4;
+                       break;
                case PROJECTILE_GRENADE:
                case PROJECTILE_GRENADE_BOUNCING:
                        trailorigin += v_right * 1 + v_forward * -10;
@@ -363,8 +387,8 @@ void Ent_Projectile()
                        case PROJECTILE_NADE_PINK:
                        case PROJECTILE_NADE_BURN:
                        case PROJECTILE_NADE:
-                               self.mins = '-3 -3 -3';
-                               self.maxs = '3 3 3';
+                               self.mins = '-16 -16 -16';
+                               self.maxs = '16 16 16';
                                self.move_movetype = MOVETYPE_BOUNCE;
                                self.move_touch = func_null;
                                self.scale = 1.5;
@@ -488,6 +512,8 @@ void Projectile_Precache()
        precache_model("models/rocket.md3");
        precache_model("models/tagrocket.md3");
        precache_model("models/tracer.mdl");
+       
+       precache_model("models/weapons/v_ok_grenade.md3");
 
        precache_sound("weapons/electro_fly.wav");
        precache_sound("weapons/rocket_fly.wav");
index 36a5cab21363c7d5962e1b93794ac28fe8e741c3..4466ccf53540ff3fd760959a28982b861ddb2850 100644 (file)
@@ -82,8 +82,8 @@ void nade_boom() // TODO: DamageInfo
 void nade_touch()
 {
        PROJECTILE_TOUCH;
-       setsize(self, '-2 -2 -2', '2 2 2');
-       UpdateCSQCProjectile(self);
+       //setsize(self, '-2 -2 -2', '2 2 2');
+       //UpdateCSQCProjectile(self);
        if(self.health == autocvar_g_nades_nade_health)
        {
                spamsound(self, CH_SHOTS, strcat("weapons/grenade_bounce", ftos(1 + rint(random() * 5)), ".wav"), VOL_BASE, ATTN_NORM);
@@ -155,15 +155,22 @@ void toss_nade(entity e, vector _velocity, float _time)
        
        makevectors(e.v_angle);
        
+       W_SetupShot(e, FALSE, FALSE, "", CH_WEAPON_A, 0);
+       
        Kill_Notification(NOTIF_ONE_ONLY, e, MSG_CENTER_CPID, CPID_NADES);
        
-       setorigin(_nade, CENTER_OR_VIEWOFS(e) + (v_right * 10) * -1);
+       //setorigin(_nade, CENTER_OR_VIEWOFS(e) + (v_right * 10) * -1);
+       setorigin(_nade, w_shotorg + (v_right * 10) * -1);
        setmodel(_nade, "models/weapons/v_ok_grenade.md3");
        setattachment(_nade, world, "");
        PROJECTILE_MAKETRIGGER(_nade);
        setsize(_nade, '-16 -16 -16', '16 16 16');
        _nade.movetype = MOVETYPE_BOUNCE;
        
+       tracebox(_nade.origin, _nade.mins, _nade.maxs, _nade.origin, FALSE, _nade);
+       if (trace_startsolid)
+               setorigin(_nade, e.origin);
+       
        if(e.crouch)
                _nade.velocity = '0 0 -10';
        else if(autocvar_g_nades_nade_newton_style == 1)
@@ -171,14 +178,20 @@ void toss_nade(entity e, vector _velocity, float _time)
        else if(autocvar_g_nades_nade_newton_style == 2)
                _nade.velocity = _velocity;
        else
-               _nade.velocity = W_CalculateProjectileVelocity(e.velocity, _velocity, FALSE);
+               _nade.velocity = W_CalculateProjectileVelocity(e.velocity, _velocity, TRUE);
 
-       _nade.solid = SOLID_BBOX;
+       //_nade.solid = SOLID_BBOX; // TODO: remember why this was needed
        _nade.touch = nade_touch;
        _nade.health = autocvar_g_nades_nade_health;
        _nade.takedamage = DAMAGE_AIM;
        _nade.event_damage = nade_damage;
        _nade.teleportable = TRUE;
+       _nade.pushable = TRUE;
+       _nade.gravity = 1;
+       _nade.missile_flags = MIF_SPLASH | MIF_ARC;
+       _nade.damagedbycontents = TRUE;
+       _nade.angles = vectoangles(_nade.velocity);
+       _nade.flags = FL_PROJECTILE;
 
        nade_spawn(_nade);
 
@@ -207,7 +220,7 @@ void nade_prime()
        self.nade.colormap = self.colormap;
        self.nade.glowmod = self.glowmod;
        self.nade.wait = time + autocvar_g_nades_nade_lifetime;
-       self.nade.cnt = time;
+       self.nade.lifetime = time;
        self.nade.think = nade_beep;
        self.nade.nextthink = max(self.nade.wait - 3, time);
        self.nade.projectiledeathtype = DEATH_NADE;
@@ -266,10 +279,10 @@ MUTATOR_HOOKFUNCTION(nades_ForbidThrowing)
        }
        else
        {
-               if(time - self.nade.cnt >= 1)
+               if(time - self.nade.lifetime >= 1)
                {
                        makevectors(self.v_angle);
-                       float _force = time - self.nade.cnt;
+                       float _force = time - self.nade.lifetime;
                        _force /= autocvar_g_nades_nade_lifetime;
                        _force = autocvar_g_nades_nade_minforce + (_force * (autocvar_g_nades_nade_maxforce - autocvar_g_nades_nade_minforce));
                        toss_nade(self, (v_forward * 0.75 + v_up * 0.2 + v_right * 0.05) * _force, 0);
@@ -303,12 +316,12 @@ MUTATOR_HOOKFUNCTION(nades_PlayerPreThink)
                        if(!self.nade)
                                nade_prime();
                }
-               else if(time - self.nade.cnt >= 1)
+               else if(time - self.nade.lifetime >= 1)
                {
                        if(self.nade)
                        {
                                makevectors(self.v_angle);
-                               float _force = time - self.nade.cnt;
+                               float _force = time - self.nade.lifetime;
                                _force /= autocvar_g_nades_nade_lifetime;
                                _force = autocvar_g_nades_nade_minforce + (_force * (autocvar_g_nades_nade_maxforce - autocvar_g_nades_nade_minforce));                         
                                toss_nade(self, (v_forward * 0.7 + v_up * 0.2 + v_right * 0.1) * _force, 0);