]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/t_items.qc
Merge branch 'master' into Mario/modpack
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / t_items.qc
index d4ae97ea8101acc5c1d305305ebb7686bd801bb8..37af9ee8618077742338ccdbdd6fa4b8becd1e8c 100644 (file)
@@ -475,17 +475,8 @@ void Item_ItemsTime_SetTimesForPlayer(entity e)
        e.item_jetpack_time = it_jetpack_time;
        e.item_superweapons_time = it_superweapons_time;
 }
-bool Item_ItemsTime_UpdateTime_Check(float item_time, float t)
-{
-       if(t == 0 && item_time == -1)
-               return true;
-       if(t < 0) // negative means there's another available item of the same kind
-               t = -t;
-       if(time < t && (item_time <= time || t < item_time))
-               return true;
-       return false;
-}
-void Item_ItemsTime_UpdateTime(entity e, float t)
+
+void Item_ItemsTime_SetTime(entity e, float t)
 {
        if(!autocvar_sv_itemstime)
                return;
@@ -495,16 +486,13 @@ void Item_ItemsTime_UpdateTime(entity e, float t)
                switch(e.items)
                {
                        case IT_STRENGTH://"item-invis"
-                               if(Item_ItemsTime_UpdateTime_Check(it_invisible_time, t))
-                                       it_invisible_time = t;
+                               it_invisible_time = t;
                                break;
                        case IT_NAILS://"item-extralife"
-                               if(Item_ItemsTime_UpdateTime_Check(it_extralife_time, t))
-                                       it_extralife_time = t;
+                               it_extralife_time = t;
                                break;
                        case IT_INVINCIBLE://"item-speed"
-                               if(Item_ItemsTime_UpdateTime_Check(it_speed_time, t))
-                                       it_speed_time = t;
+                               it_speed_time = t;
                                break;
                }
        }
@@ -514,37 +502,30 @@ void Item_ItemsTime_UpdateTime(entity e, float t)
                {
                        case IT_HEALTH:
                                // if(e.classname == "item_health_mega") // IT_HEALTH unequivocally identifies it
-                                       if(Item_ItemsTime_UpdateTime_Check(it_health_mega_time, t))
-                                               it_health_mega_time = t;
+                                       it_health_mega_time = t;
                                break;
                        case IT_ARMOR:
                                if(e.classname == "item_armor_large") // IT_ARMOR doesn't unequivocally identifies it
-                                       if(Item_ItemsTime_UpdateTime_Check(it_armor_large_time, t))
-                                               it_armor_large_time = t;
+                                       it_armor_large_time = t;
                                break;
                        case IT_STRENGTH://"item-strength"
-                               if(Item_ItemsTime_UpdateTime_Check(it_strength_time, t))
-                                       it_strength_time = t;
+                               it_strength_time = t;
                                break;
                        case IT_INVINCIBLE://"item-shield"
-                               if(Item_ItemsTime_UpdateTime_Check(it_shield_time, t))
-                                       it_shield_time = t;
+                               it_shield_time = t;
                                break;
                        default:
                                if(e.weapons & WEPSET_SUPERWEAPONS)
-                                       if(Item_ItemsTime_UpdateTime_Check(it_superweapons_time, t))
-                                               it_superweapons_time = t;
+                                       it_superweapons_time = t;
                }
        }
        switch(e.items)
        {
                case IT_FUEL_REGEN://"item-fuelregen"
-                       if(Item_ItemsTime_UpdateTime_Check(it_fuelregen_time, t))
-                               it_fuelregen_time = t;
+                       it_fuelregen_time = t;
                        break;
                case IT_JETPACK://"item-jetpack"
-                       if(Item_ItemsTime_UpdateTime_Check(it_jetpack_time, t))
-                               it_jetpack_time = t;
+                       it_jetpack_time = t;
                        break;
        }
 }
@@ -566,7 +547,7 @@ void Item_ItemsTime_SetTimesForAllPlayers()
        }
 }
 
-float Item_ItemsTime_GetTime(entity e, float t)
+float Item_ItemsTime_UpdateTime(entity e, float t)
 {
        entity head;
        bool isavailable = (t == 0);
@@ -619,8 +600,8 @@ void Item_Respawn (void)
 
        if(self.flags & FL_POWERUP || self.classname == "item_armor_large" || self.items == IT_HEALTH || (self.weapons & WEPSET_SUPERWEAPONS))
        {
-               float t = Item_ItemsTime_GetTime(self, 0);
-               Item_ItemsTime_UpdateTime(self, t);
+               float t = Item_ItemsTime_UpdateTime(self, 0);
+               Item_ItemsTime_SetTime(self, t);
                Item_ItemsTime_SetTimesForAllPlayers();
        }
 
@@ -663,9 +644,7 @@ void Item_RespawnCountdown (void)
                                                {name = "item_armor_large"; rgb = '0 1 0';}
                                        break;
                        }
-                       item_name = name;
-                       item_color = rgb;
-                       MUTATOR_CALLHOOK(Item_RespawnCountdown);
+                       MUTATOR_CALLHOOK(Item_RespawnCountdown, name, rgb);
                        name = item_name;
                        rgb = item_color;
                        if(self.flags & FL_WEAPON)
@@ -736,8 +715,8 @@ void Item_ScheduleRespawnIn(entity e, float t)
                e.nextthink = time + max(0, t - ITEM_RESPAWN_TICKS);
                e.scheduledrespawntime = e.nextthink + ITEM_RESPAWN_TICKS;
                e.count = 0;
-               t = Item_ItemsTime_GetTime(e, e.scheduledrespawntime);
-               Item_ItemsTime_UpdateTime(e, t);
+               t = Item_ItemsTime_UpdateTime(e, e.scheduledrespawntime);
+               Item_ItemsTime_SetTime(e, t);
                Item_ItemsTime_SetTimesForAllPlayers();
        }
        else
@@ -922,7 +901,7 @@ void Item_Touch (void)
        if (time < self.item_spawnshieldtime)
                return;
 
-       switch(MUTATOR_CALLHOOK(ItemTouch))
+       switch(MUTATOR_CALLHOOK(ItemTouch, self, other))
        {
                case MUT_ITEMTOUCH_RETURN: { return; }
                case MUT_ITEMTOUCH_PICKUP: { goto pickup; }
@@ -1317,7 +1296,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
                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()
 
-               Item_ItemsTime_UpdateTime(self, 0);
+               Item_ItemsTime_SetTime(self, 0);
        }
 
        self.bot_pickup = true;
@@ -1377,7 +1356,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
                self.SendFlags |= ISF_ANGLES;
 
        // call this hook after everything else has been done
-       if(MUTATOR_CALLHOOK(Item_Spawn))
+       if(MUTATOR_CALLHOOK(Item_Spawn, self))
        {
                startitem_failed = true;
                remove(self);