]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_client.qc
New way of handling the jumping/impact effect, plus clean up the code a lot.
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_client.qc
index 848cbe030ade9d591442d107acd5095a1db1cdda..15e73aef5cac912ab210f90a741f7674b2263196 100644 (file)
@@ -485,7 +485,7 @@ void PutObserverInServer (void)
        setorigin (self, (spot.origin + PL_VIEW_OFS)); // offset it so that the spectator spawns higher off the ground, looks better this way
        self.prevorigin = self.origin;
        self.items = 0;
-       self.weapons = 0;
+       WEPSET_CLEAR_E(self);
        self.model = "";
        FixPlayermodel();
        setmodel(self, "null");
@@ -547,11 +547,11 @@ void FixPlayermodel()
        vector m1, m2;
 
        defaultmodel = "";
+       defaultskin = 0;
+       chmdl = FALSE;
 
        if(autocvar_sv_defaultcharacter == 1)
        {
-               defaultskin = 0;
-
                if(teamplay)
                {
                        string s;
@@ -629,7 +629,7 @@ void PlayerTouchExplode(entity p1, entity p2)
        entity e;
        e = spawn();
        setorigin(e, org);
-       RadiusDamage(e, world, g_touchexplode_damage, g_touchexplode_edgedamage, g_touchexplode_radius, world, g_touchexplode_force, DEATH_TOUCHEXPLODE, world);
+       RadiusDamage(e, world, g_touchexplode_damage, g_touchexplode_edgedamage, g_touchexplode_radius, world, world, g_touchexplode_force, DEATH_TOUCHEXPLODE, world);
        remove(e);
 }
 
@@ -735,7 +735,7 @@ void PutClientInServer (void)
                        self.ammo_fuel = warmup_start_ammo_fuel;
                        self.health = warmup_start_health;
                        self.armorvalue = warmup_start_armorvalue;
-                       self.weapons = warmup_start_weapons;
+                       WEPSET_COPY_EA(self, warmup_start_weapons);
                }
                else
                {
@@ -746,10 +746,10 @@ void PutClientInServer (void)
                        self.ammo_fuel = start_ammo_fuel;
                        self.health = start_health;
                        self.armorvalue = start_armorvalue;
-                       self.weapons = start_weapons;
+                       WEPSET_COPY_EA(self, start_weapons);
                }
 
-               if(self.weapons & WEPBIT_SUPERWEAPONS) // exception for minstagib, as minstanex is a superweapon
+               if(WEPSET_CONTAINS_ANY_EA(self, WEPBIT_SUPERWEAPONS)) // exception for minstagib, as minstanex is a superweapon
                        self.superweapons_finished = time + autocvar_g_balance_superweapons_time;
                else
                        self.superweapons_finished = 0;
@@ -757,10 +757,10 @@ void PutClientInServer (void)
                if(g_weaponarena_random)
                {
                        if(g_weaponarena_random_with_laser)
-                               self.weapons &~= WEPBIT_LASER;
-                       self.weapons = randombits(self.weapons, g_weaponarena_random, FALSE);
+                               WEPSET_ANDNOT_EW(self, WEP_LASER);
+                       W_RandomWeapons(self, g_weaponarena_random);
                        if(g_weaponarena_random_with_laser)
-                               self.weapons |= WEPBIT_LASER;
+                               WEPSET_OR_EW(self, WEP_LASER);
                }
 
                self.items = start_items;
@@ -867,9 +867,6 @@ void PutClientInServer (void)
                //stuffcmd(self, "chase_active 0");
                //stuffcmd(self, "set viewsize $tmpviewsize \n");
 
-               if (autocvar_g_spawnsound)
-                       sound (self, CH_TRIGGER, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
-
                if(g_assault) {
                        if(self.team == assault_attacker_team)
                                centerprint(self, "You are attacking!");
@@ -921,6 +918,9 @@ void PutClientInServer (void)
                        self.alivetime = time;
 
                antilag_clear(self);
+
+               if (autocvar_g_spawnsound)
+                       soundat(world, self.origin, CH_TRIGGER, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
        } else if(self.classname == "observer") {
                PutObserverInServer ();
        }
@@ -1355,7 +1355,7 @@ void ClientConnect (void)
                return;
        }
 
-       if(Ban_MaybeEnforceBan(self))
+       if(Ban_MaybeEnforceBanOnce(self))
                return;
 
        DecodeLevelParms();
@@ -1532,7 +1532,7 @@ void ClientConnect (void)
 
        if(clienttype(self) == CLIENTTYPE_REAL)
        {
-               if(autocvar_g_bugrigs || g_weaponarena == WEPBIT_TUBA)
+               if(autocvar_g_bugrigs || WEPSET_EQ_AW(g_weaponarena_weapons, WEP_TUBA))
                        stuffcmd(self, "cl_cmd settemp chase_active 1\n");
        }
 
@@ -1564,7 +1564,6 @@ void ClientConnect (void)
                        rr = CTS_RECORD;
                else
                        rr = RACE_RECORD;
-               t = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time")));
 
                msg_entity = self;
                race_send_recordtime(MSG_ONE);
@@ -1895,9 +1894,7 @@ void player_powerups (void)
                }
                if (self.items & IT_SUPERWEAPON)
                {
-                       //if(W_WeaponBit(self.weapon) & WEPBIT_SUPERWEAPONS)
-                       //      self.effects = self.effects | EF_RED;
-                       if (!(self.weapons & WEPBIT_SUPERWEAPONS))
+                       if (!WEPSET_CONTAINS_ANY_EA(self, WEPBIT_SUPERWEAPONS))
                        {
                                self.superweapons_finished = 0;
                                self.items = self.items - (self.items & IT_SUPERWEAPON);
@@ -1913,12 +1910,12 @@ void player_powerups (void)
                                if (time > self.superweapons_finished)
                                {
                                        self.items = self.items - (self.items & IT_SUPERWEAPON);
-                                       self.weapons &~= WEPBIT_SUPERWEAPONS;
+                                       WEPSET_ANDNOT_EA(self, WEPBIT_SUPERWEAPONS);
                                        sprint(self, "^3Superweapons have broken down\n");
                                }
                        }
                }
-               else if(self.weapons & WEPBIT_SUPERWEAPONS)
+               else if(WEPSET_CONTAINS_ANY_EA(self, WEPBIT_SUPERWEAPONS))
                {
                        if (time < self.superweapons_finished || (self.items & IT_UNLIMITED_SUPERWEAPONS))
                        {
@@ -1928,7 +1925,7 @@ void player_powerups (void)
                        else
                        {
                                self.superweapons_finished = 0;
-                               self.weapons &~= WEPBIT_SUPERWEAPONS; // just in case
+                               WEPSET_ANDNOT_EA(self, WEPBIT_SUPERWEAPONS);
                        }
                }
                else
@@ -2125,6 +2122,15 @@ void GetPressedKeys(void) {
                self.pressedkeys |= KEY_CROUCH;
        else
                self.pressedkeys &~= KEY_CROUCH;
+
+       if (self.BUTTON_ATCK)
+               self.pressedkeys |= KEY_ATCK;
+       else
+               self.pressedkeys &~= KEY_ATCK;
+       if (self.BUTTON_ATCK2)
+               self.pressedkeys |= KEY_ATCK2;
+       else
+               self.pressedkeys &~= KEY_ATCK2;
 }
 
 /*
@@ -2155,7 +2161,7 @@ void SpectateCopy(entity spectatee) {
        self.strength_finished = spectatee.strength_finished;
        self.invincible_finished = spectatee.invincible_finished;
        self.pressedkeys = spectatee.pressedkeys;
-       self.weapons = spectatee.weapons;
+       WEPSET_COPY_EE(self, spectatee);
        self.switchweapon = spectatee.switchweapon;
        self.switchingweapon = spectatee.switchingweapon;
        self.weapon = spectatee.weapon;
@@ -2379,7 +2385,7 @@ float nJoinAllowed(entity ignore) {
 
        // TODO simplify this
        entity e;
-       float totalClients;
+       float totalClients = 0;
        FOR_EACH_CLIENT(e)
                if(e != ignore)
                        totalClients += 1;
@@ -2387,7 +2393,7 @@ float nJoinAllowed(entity ignore) {
        if (!autocvar_g_maxplayers)
                return maxclients - totalClients;
 
-       float currentlyPlaying;
+       float currentlyPlaying = 0;
        FOR_EACH_REALPLAYER(e)
                currentlyPlaying += 1;