]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/items/item.qh
items: temp kludge to reduce visibility of prediction errors
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / items / item.qh
index 9e322c811d86354b1800e3e9dd79ab975382aa12..038566784725b962e5403755f2e3cae674a13323 100644 (file)
@@ -57,6 +57,14 @@ const int ITS_AVAILABLE         = BIT(3);
 const int ITS_ALLOWFB           = BIT(4);
 const int ITS_ALLOWSI           = BIT(5);
 const int ITS_GLOW              = BIT(6);
+const int ITS_EXPIRING          = BIT(7);
+
+// enough to notice it's about to despawn and circle jump to grab it
+const float IT_DESPAWNFX_TIME = 1.5;
+
+// 2hz probably enough to correct a desync caused by serious lag
+// FIXME but updating faster applies the kludge in Item_Think() sooner so it's less noticeable
+const float IT_UPDATE_INTERVAL = 0.0625;
 
 .float fade_start;
 .float fade_end;
@@ -69,27 +77,23 @@ const int ITS_GLOW              = BIT(6);
 .float invincible_finished; // ditto
 .float buffs_finished; // ditts
 
-#define spawnfunc_body(item) \
-       if (!Item_IsDefinitionAllowed(item)) \
+#define SPAWNFUNC_BODY(item) \
+       if (item && Item_IsDefinitionAllowed(item)) \
+               StartItem(this, item); \
+       else \
        { \
                startitem_failed = true; \
                delete(this); \
-               return; \
-       } \
-       StartItem(this, item)
+       }
 
 #define SPAWNFUNC_ITEM(name, item) \
        spawnfunc(name) \
        { \
-               spawnfunc_body(item); \
+               SPAWNFUNC_BODY(item) \
        }
 
 #define SPAWNFUNC_ITEM_COND(name, cond, item1, item2) \
-       spawnfunc(name) \
-       { \
-               entity item = (cond) ? item1 : item2; \
-               spawnfunc_body(item); \
-       }
+       SPAWNFUNC_ITEM(name, (cond ? item1 : item2))
 
 #else