]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_client.qc
We still need WITHSELF on PutClientInServer...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_client.qc
index cc3a6028ec2ceeded767a7232a6dafe7689a7ae0..fe73c873434ff83504247f1aef55abeca06aa82e 100644 (file)
@@ -383,7 +383,7 @@ void FixPlayermodel(entity player)
                        defaultskin = autocvar_sv_defaultplayerskin;
        }
 
-       MUTATOR_CALLHOOK(FixPlayermodel, defaultmodel, defaultskin);
+       MUTATOR_CALLHOOK(FixPlayermodel, defaultmodel, defaultskin, player);
        defaultmodel = M_ARGV(0, string);
        defaultskin = M_ARGV(1, int);
 
@@ -1304,7 +1304,7 @@ void respawn(entity this)
        CopyBody(this, 1);
 
        this.effects |= EF_NODRAW; // prevent another CopyBody
-       PutClientInServer();
+       WITHSELF(this, PutClientInServer());
 }
 
 void play_countdown(entity this, float finished, Sound samp)
@@ -1483,18 +1483,28 @@ void player_regen(entity this)
 {
        float max_mod, regen_mod, rot_mod, limit_mod;
        max_mod = regen_mod = rot_mod = limit_mod = 1;
-       regen_mod_max = max_mod;
-       regen_mod_regen = regen_mod;
-       regen_mod_rot = rot_mod;
-       regen_mod_limit = limit_mod;
-
-       regen_health = autocvar_g_balance_health_regen;
-       regen_health_linear = autocvar_g_balance_health_regenlinear;
-       regen_health_rot = autocvar_g_balance_health_rot;
-       regen_health_rotlinear = autocvar_g_balance_health_rotlinear;
-       regen_health_stable = autocvar_g_balance_health_regenstable;
-       regen_health_rotstable = autocvar_g_balance_health_rotstable;
-       if(!MUTATOR_CALLHOOK(PlayerRegen))
+
+       float regen_health = autocvar_g_balance_health_regen;
+       float regen_health_linear = autocvar_g_balance_health_regenlinear;
+       float regen_health_rot = autocvar_g_balance_health_rot;
+       float regen_health_rotlinear = autocvar_g_balance_health_rotlinear;
+       float regen_health_stable = autocvar_g_balance_health_regenstable;
+       float regen_health_rotstable = autocvar_g_balance_health_rotstable;
+       bool mutator_returnvalue = MUTATOR_CALLHOOK(PlayerRegen, this, max_mod, regen_mod, rot_mod, limit_mod, regen_health, regen_health_linear, regen_health_rot,
+               regen_health_rotlinear, regen_health_stable, regen_health_rotstable);
+       max_mod = M_ARGV(1, float);
+       regen_mod = M_ARGV(2, float);
+       rot_mod = M_ARGV(3, float);
+       limit_mod = M_ARGV(4, float);
+       regen_health = M_ARGV(5, float);
+       regen_health_linear = M_ARGV(6, float);
+       regen_health_rot = M_ARGV(7, float);
+       regen_health_rotlinear = M_ARGV(8, float);
+       regen_health_stable = M_ARGV(9, float);
+       regen_health_rotstable = M_ARGV(10, float);
+
+
+       if(!mutator_returnvalue)
        if(!STAT(FROZEN, this))
        {
                float mina, maxa, limith, limita;
@@ -1503,11 +1513,6 @@ void player_regen(entity this)
                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;
-               limit_mod = regen_mod_limit;
-
                regen_health_rotstable = regen_health_rotstable * max_mod;
                regen_health_stable = regen_health_stable * max_mod;
                limith = limith * limit_mod;
@@ -2145,7 +2150,8 @@ void PlayerPreThink ()
                {
                        if (this.vehicle)
                                vehicles_exit(this.vehicle, VHEF_RELEASE);
-                       this.event_damage(this, this, this.frozen_by, 1, DEATH_NADE_ICE_FREEZE.m_id, this.origin, '0 0 0');
+                       if(this.event_damage)
+                               this.event_damage(this, this, this.frozen_by, 1, DEATH_NADE_ICE_FREEZE.m_id, this.origin, '0 0 0');
                }
                else if (this.revive_progress <= 0)
                        Unfreeze(this);
@@ -2236,7 +2242,7 @@ void PlayerPreThink ()
                                        if (time > this.respawn_time) {
                                                this.respawn_time = time + 1; // only retry once a second
                                                this.respawn_time_max = this.respawn_time;
-                                               respawn();
+                                               respawn(this);
                                        }
                                }