]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/items.qc
Properly support team field on trigger_multiple
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / items.qc
index 1265f71c5e6cdb5cbf04a35037792828fdc31c9d..7d248834f72566af97313317a42a3a50c226f637 100644 (file)
 /// this item is on the ground.
 .bool m_isexpiring;
 
-entity Item_Create(string class_name, vector position)
+entity Item_Create(string class_name, vector position, bool no_align)
 {
        entity item = spawn();
        item.classname = class_name;
        item.spawnfunc_checked = true;
+       setorigin(item, position);
+       item.noalign = no_align;
        Item_Initialize(item, class_name);
        if (wasfreed(item))
        {
                return NULL;
        }
-       setorigin(item, position);
        return item;
 }
 
@@ -59,6 +60,7 @@ bool Item_InitializeLoot(entity item, string class_name, vector position,
        item.classname = class_name;
        Item_SetLoot(item, true);
        item.noalign = true;
+       setorigin(item, position);
        item.pickup_anyway = true;
        item.spawnfunc_checked = true;
        Item_Initialize(item, class_name);
@@ -67,7 +69,6 @@ bool Item_InitializeLoot(entity item, string class_name, vector position,
                return false;
        }
        item.gravity = 1;
-       setorigin(item, position);
        item.velocity = vel;
        SUB_SetFade(item, time + time_to_live, 1);
        return true;
@@ -83,6 +84,11 @@ void Item_SetLoot(entity item, bool loot)
        item.m_isloot = loot;
 }
 
+bool Item_ShouldKeepPosition(entity item)
+{
+       return item.noalign || (item.spawnflags & 1);
+}
+
 bool Item_IsExpiring(entity item)
 {
        return item.m_isexpiring;