Merge branch 'amade/small-fixes' into 'master'
authorMario <zacjardine@y7mail.com>
Fri, 7 Apr 2017 04:05:38 +0000 (04:05 +0000)
committerMario <zacjardine@y7mail.com>
Fri, 7 Apr 2017 04:05:38 +0000 (04:05 +0000)
Amade/small fixes

See merge request !412

1  2 
qcsrc/common/t_items.qc
qcsrc/common/util.qc

diff --combined qcsrc/common/t_items.qc
@@@ -58,8 -58,7 +58,7 @@@ void Item_SetAlpha(entity this
                        this.alpha = -1;
        }
  
-       if(!veh_hud)
-       if(this.ItemStatus & ITS_STAYWEP)
+       if((!veh_hud) && (this.ItemStatus & ITS_STAYWEP))
        {
                this.colormod = this.glowmod = autocvar_cl_weapon_stay_color;
                this.alpha = autocvar_cl_weapon_stay_alpha;
@@@ -449,28 -448,30 +448,30 @@@ void Item_Show (entity e, float mode
                e.spawnshieldtime = 1;
                e.ItemStatus &= ~ITS_AVAILABLE;
        }
-       else {
-       bool nostay = def.instanceOfWeaponPickup ? !!(def.m_weapon.weapons & WEPSET_SUPERWEAPONS) : false // no weapon-stay on superweapons
-               || e.team // weapon stay isn't supported for teamed weapons
-               ;
-       if(def.instanceOfWeaponPickup && !nostay && g_weapon_stay)
-       {
-               // make the item translucent and not touchable
-               e.model = e.mdl;
-               e.solid = SOLID_TRIGGER; // can STILL be picked up!
-               e.effects |= EF_STARDUST;
-               e.spawnshieldtime = 0; // field indicates whether picking it up may give you anything other than the weapon
-               e.ItemStatus |= (ITS_AVAILABLE | ITS_STAYWEP);
-       }
        else
        {
-               //setmodel(e, "null");
-               e.solid = SOLID_NOT;
-               e.colormod = '0 0 0';
-               //e.glowmod = e.colormod;
-               e.spawnshieldtime = 1;
-               e.ItemStatus &= ~ITS_AVAILABLE;
-       }}
+               bool nostay = def.instanceOfWeaponPickup ? !!(def.m_weapon.weapons & WEPSET_SUPERWEAPONS) : false // no weapon-stay on superweapons
+                       || e.team // weapon stay isn't supported for teamed weapons
+                       ;
+               if(def.instanceOfWeaponPickup && !nostay && g_weapon_stay)
+               {
+                       // make the item translucent and not touchable
+                       e.model = e.mdl;
+                       e.solid = SOLID_TRIGGER; // can STILL be picked up!
+                       e.effects |= EF_STARDUST;
+                       e.spawnshieldtime = 0; // field indicates whether picking it up may give you anything other than the weapon
+                       e.ItemStatus |= (ITS_AVAILABLE | ITS_STAYWEP);
+               }
+               else
+               {
+                       //setmodel(e, "null");
+                       e.solid = SOLID_NOT;
+                       e.colormod = '0 0 0';
+                       //e.glowmod = e.colormod;
+                       e.spawnshieldtime = 1;
+                       e.ItemStatus &= ~ITS_AVAILABLE;
+               }
+       }
  
        if (def.m_glow)
                e.ItemStatus |= ITS_GLOW;
@@@ -509,7 -510,7 +510,7 @@@ void Item_Respawn (entity this
        sound(this, CH_TRIGGER, this.itemdef.m_respawnsound, VOL_BASE, ATTEN_NORM);     // play respawn sound
        setorigin(this, this.origin);
  
 -    if (Item_ItemsTime_Allow(this.itemdef) || this.weapons & WEPSET_SUPERWEAPONS)
 +    if (Item_ItemsTime_Allow(this.itemdef) || (this.weapons & WEPSET_SUPERWEAPONS))
        {
                float t = Item_ItemsTime_UpdateTime(this, 0);
                Item_ItemsTime_SetTime(this, t);
@@@ -537,6 -538,7 +538,6 @@@ void Item_RespawnCountdown (entity this
                this.count += 1;
                if(this.count == 1)
                {
 -                      MUTATOR_CALLHOOK(Item_RespawnCountdown, string_null, '0 0 0');
                        do {
                                {
                                        entity wi = Weapons_from(this.weapon);
                                        }
                                }
                        } while (0);
 +                      bool mutator_returnvalue = MUTATOR_CALLHOOK(Item_RespawnCountdown, this);
              if(this.waypointsprite_attached)
              {
                  GameItem def = this.itemdef;
 -                if (Item_ItemsTime_SpectatorOnly(def))
 +                if (Item_ItemsTime_SpectatorOnly(def) && !mutator_returnvalue)
                      WaypointSprite_UpdateRule(this.waypointsprite_attached, 0, SPRITERULE_SPECTATOR);
                  WaypointSprite_UpdateBuildFinished(this.waypointsprite_attached, time + ITEM_RESPAWN_TICKS);
              }
@@@ -594,18 -595,15 +595,18 @@@ void Item_RespawnThink(entity this
  void Item_ScheduleRespawnIn(entity e, float t)
  {
        // if the respawn time is longer than 10 seconds, show a waypoint, otherwise, just respawn normally
 -      if ((Item_ItemsTime_Allow(e.itemdef) || e.weapons & WEPSET_SUPERWEAPONS) && (t - ITEM_RESPAWN_TICKS) > 0)
 +      if ((Item_ItemsTime_Allow(e.itemdef) || (e.weapons & WEPSET_SUPERWEAPONS) || MUTATOR_CALLHOOK(Item_ScheduleRespawn, e, t)) && (t - ITEM_RESPAWN_TICKS) > 0)
        {
                setthink(e, Item_RespawnCountdown);
                e.nextthink = time + max(0, t - ITEM_RESPAWN_TICKS);
                e.scheduledrespawntime = e.nextthink + ITEM_RESPAWN_TICKS;
                e.count = 0;
 -              t = Item_ItemsTime_UpdateTime(e, e.scheduledrespawntime);
 -              Item_ItemsTime_SetTime(e, t);
 -              Item_ItemsTime_SetTimesForAllPlayers();
 +              if(Item_ItemsTime_Allow(e.itemdef) || (e.weapons & WEPSET_SUPERWEAPONS))
 +              {
 +                      t = Item_ItemsTime_UpdateTime(e, e.scheduledrespawntime);
 +                      Item_ItemsTime_SetTime(e, t);
 +                      Item_ItemsTime_SetTimesForAllPlayers();
 +              }
        }
        else
        {
                e.nextthink = time;
                e.scheduledrespawntime = time + t;
                e.wait = time + t;
 +
 +              if(Item_ItemsTime_Allow(e.itemdef) || (e.weapons & WEPSET_SUPERWEAPONS))
 +              {
 +                      t = Item_ItemsTime_UpdateTime(e, e.scheduledrespawntime);
 +                      Item_ItemsTime_SetTime(e, t);
 +                      Item_ItemsTime_SetTimesForAllPlayers();
 +              }
        }
  }
  
@@@ -637,7 -628,7 +638,7 @@@ void Item_ScheduleRespawn(entity e
  void Item_ScheduleInitialRespawn(entity e)
  {
        Item_Show(e, 0);
 -      Item_ScheduleRespawnIn(e, game_starttime - time + ((e.respawntimestart) ? e.respawntimestart : ITEM_RESPAWNTIME_INITIAL(e)));
 +      Item_ScheduleRespawnIn(e, max(0, game_starttime - time) + ((e.respawntimestart) ? e.respawntimestart : ITEM_RESPAWNTIME_INITIAL(e)));
  }
  
  float Item_GiveAmmoTo(entity item, entity player, .float ammotype, float ammomax, float mode)
@@@ -883,7 -874,7 +884,7 @@@ LABEL(pickup
                                }
                        });
                        e = RandomSelection_chosen_ent;
 -
 +                      Item_Show(e, 1); // reset its state so it is visible (extra sendflags doesn't matter, this happens anyway)
                }
                else
                        e = this;
@@@ -1013,7 -1004,6 +1014,6 @@@ float ammo_pickupevalfunc(entity player
                        switch(it.ammo_field)
                        {
                                case ammo_shells:  need_shells  = true; break;
-                               case ammo_shells:  need_shells  = true; break;
                                case ammo_nails:   need_nails   = true; break;
                                case ammo_rockets: need_rockets = true; break;
                                case ammo_cells:   need_cells   = true; break;
                rating = item.bot_pickupbasevalue;
        }
  
-       if (need_shells)
-       if (item.ammo_shells)
-       if (player.ammo_shells < g_pickup_shells_max)
+       if ((need_shells) && (item.ammo_shells) && (player.ammo_shells < g_pickup_shells_max))
                c = item.ammo_shells / player.ammo_shells;
-       if (need_nails)
-       if (item.ammo_nails)
-       if (player.ammo_nails < g_pickup_nails_max)
+       if ((need_nails) && (item.ammo_nails) && (player.ammo_nails < g_pickup_nails_max))
                c = item.ammo_nails / player.ammo_nails;
-       if (need_rockets)
-       if (item.ammo_rockets)
-       if (player.ammo_rockets < g_pickup_rockets_max)
+       if ((need_rockets) && (item.ammo_rockets) && (player.ammo_rockets < g_pickup_rockets_max))
                c = item.ammo_rockets / player.ammo_rockets;
-       if (need_cells)
-       if (item.ammo_cells)
-       if (player.ammo_cells < g_pickup_cells_max)
+       if ((need_cells) && (item.ammo_cells) && (player.ammo_cells < g_pickup_cells_max))
                c = item.ammo_cells / player.ammo_cells;
-       if (need_plasma)
-       if (item.ammo_plasma)
-       if (player.ammo_plasma < g_pickup_plasma_max)
+       if ((need_plasma) && (item.ammo_plasma) && (player.ammo_plasma < g_pickup_plasma_max))
                c = item.ammo_plasma / player.ammo_plasma;
-       if (need_fuel)
-       if (item.ammo_fuel)
-       if (player.ammo_fuel < g_pickup_fuel_max)
+       if ((need_fuel) && (item.ammo_fuel) && (player.ammo_fuel < g_pickup_fuel_max))
                c = item.ammo_fuel / player.ammo_fuel;
  
        rating *= min(2, c);
@@@ -1064,16 -1047,17 +1057,17 @@@ float healtharmor_pickupevalfunc(entit
  
        float itemarmor = item.armorvalue;
        float itemhealth = item.health;
        if(item.item_group)
        {
                itemarmor *= min(4, item.item_group_count);
                itemhealth *= min(4, item.item_group_count);
        }
-       if (itemarmor)
-       if (player.armorvalue < item.max_armorvalue)
+       if (itemarmor && (player.armorvalue < item.max_armorvalue))
                c = itemarmor / max(1, player.armorvalue * 2/3 + player.health * 1/3);
-       if (itemhealth)
-       if (player.health < item.max_health)
+       if (itemhealth && (player.health < item.max_health))
                c = itemhealth / max(1, player.health);
  
        rating *= min(2, c);
@@@ -1370,9 -1354,8 +1364,8 @@@ spawnfunc(item_rockets
  
  spawnfunc(item_bullets)
  {
-       if(!weaponswapping)
-       if(autocvar_sv_q3acompat_machineshotgunswap)
-       if(this.classname != "droppedweapon")
+       if(!weaponswapping && autocvar_sv_q3acompat_machineshotgunswap && 
+          (this.classname != "droppedweapon"))
        {
                weaponswapping = true;
                spawnfunc_item_shells(this);
@@@ -1395,9 -1378,8 +1388,8 @@@ spawnfunc(item_plasma
  
  spawnfunc(item_shells)
  {
-       if(!weaponswapping)
-       if(autocvar_sv_q3acompat_machineshotgunswap)
-       if(this.classname != "droppedweapon")
+       if(!weaponswapping && autocvar_sv_q3acompat_machineshotgunswap &&
+          (this.classname != "droppedweapon"))
        {
                weaponswapping = true;
                spawnfunc_item_bullets(this);
@@@ -1479,10 -1461,9 +1471,9 @@@ void target_items_use(entity this, enti
                return;
        }
  
-       if (!IS_PLAYER(actor))
-               return;
-       if(IS_DEAD(actor))
+       if (!IS_PLAYER(actor) || IS_DEAD(actor))
                return;
        if(trigger.solid == SOLID_TRIGGER)
        {
                EXACTTRIGGER_TOUCH(this, trigger);
  
  spawnfunc(target_items)
  {
-       int n, j;
+       int n;
        string s;
  
        this.use = target_items_use;
        }
        else
        {
-               for(j = 0; j < n; ++j)
+               for(int j = 0; j < n; ++j)
                {
                        if     (argv(j) == "unlimited_ammo")         this.items |= IT_UNLIMITED_AMMO;
                        else if(argv(j) == "unlimited_weapon_ammo")  this.items |= IT_UNLIMITED_WEAPON_AMMO;
        //print(this.netname, "\n");
  
        n = tokenize_console(this.netname);
-       for(j = 0; j < n; ++j)
+       for(int j = 0; j < n; ++j)
        {
                FOREACH(Weapons, it != WEP_Null && W_UndeprecateName(argv(j)) == it.netname, {
              it.wr_init(it);
@@@ -1926,11 -1907,7 +1917,11 @@@ float GiveItems(entity e, float beginar
                {
                        .entity weaponentity = weaponentities[slot];
                        if(_switchweapon & BIT(slot))
 -                              W_SwitchWeapon_Force(e, w_getbestweapon(e, weaponentity), weaponentity);
 +                      {
 +                              Weapon wep = w_getbestweapon(e, weaponentity);
 +                              if(wep != e.(weaponentity).m_switchweapon)
 +                                      W_SwitchWeapon_Force(e, wep, weaponentity);
 +                      }
                }
        }
  
diff --combined qcsrc/common/util.qc
  */
  vector real_origin(entity ent)
  {
-       entity e;
        vector v = ((ent.absmin + ent.absmax) * 0.5);
+       entity e = ent.tag_entity;
  
-       e = ent.tag_entity;
        while(e)
        {
                v = v + ((e.absmin + e.absmax) * 0.5);
@@@ -326,7 -325,7 +325,7 @@@ float compressShortVector(vector vec
  STATIC_INIT(compressShortVector)
  {
        float l = 1;
 -      float f = pow(2, 1/8);
 +      float f = (2 ** (1/8));
        int i;
        for(i = 0; i < 128; ++i)
        {
@@@ -414,11 -413,11 +413,11 @@@ string fixPriorityList(string order, fl
  string mapPriorityList(string order, string(string) mapfunc)
  {
        string neworder;
-       float i, n;
+       float n;
  
        n = tokenize_console(order);
        neworder = "";
-       for(i = 0; i < n; ++i)
+       for(float i = 0; i < n; ++i)
                neworder = strcat(neworder, mapfunc(argv(i)), " ");
  
        return substring(neworder, 0, strlen(neworder) - 1);
  
  string swapInPriorityList(string order, float i, float j)
  {
-       string s;
-       float w, n;
-       n = tokenize_console(order);
+       float n = tokenize_console(order);
  
        if(i >= 0 && i < n && j >= 0 && j < n && i != j)
        {
-               s = "";
-               for(w = 0; w < n; ++w)
+               string s = "";
+               for(float w = 0; w < n; ++w)
                {
                        if(w == i)
                                s = strcat(s, argv(j), " ");
@@@ -672,7 -668,6 +668,6 @@@ bool isCaretEscaped(string theText, flo
  
  int skipIncompleteTag(string theText, float pos, int len)
  {
-       int i = 0, ch = 0;
        int tag_start = -1;
  
        if(substring(theText, pos - 1, 1) == "^")
                if(isCaretEscaped(theText, pos - 1) || pos >= len)
                        return 0;
  
-               ch = str2chr(theText, pos);
+               int ch = str2chr(theText, pos);
                if(ch >= '0' && ch <= '9')
                        return 1; // ^[0-9] color code found
                else if (ch == 'x')
        }
        else
        {
-               for(i = 2; pos - i >= 0 && i <= 4; ++i)
+               for(int i = 2; pos - i >= 0 && i <= 4; ++i)
                {
                        if(substring(theText, pos - i, 2) == "^x")
                        {
@@@ -784,8 -779,7 +779,7 @@@ string find_last_color_code(string s
        if (start == -1) // no caret found
                return "";
        int len = strlen(s)-1;
-       int i;
-       for(i = len; i >= start; --i)
+       for(int i = len; i >= start; --i)
        {
                if(substring(s, i, 1) != "^")
                        continue;