+++ /dev/null
-#include "items.qh"
-
-/// \file
-/// \brief Source file that contains implementation of the functions related to
-/// game items.
-/// \copyright GNU GPLv2 or any later version.
-
-#include "g_subs.qh"
-#include <common/weapons/all.qh>
-
-.bool m_isloot; ///< Holds whether item is loot.
-/// \brief Holds whether strength, shield or superweapon timers expire while
-/// this item is on the ground.
-.bool m_isexpiring;
-
-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;
- }
- return item;
-}
-
-void Item_Initialize(entity item, string class_name)
-{
- FOREACH(Weapons, it.m_canonical_spawnfunc == class_name,
- {
- weapon_defaultspawnfunc(item, it);
- return;
- });
- FOREACH(Items, it.m_canonical_spawnfunc == class_name,
- {
- StartItem(item, it);
- return;
- });
- LOG_FATALF("Item_Initialize: Invalid classname: %s", class_name);
-}
-
-entity Item_CreateLoot(string class_name, vector position, vector vel,
- float time_to_live)
-{
- entity item = spawn();
- if (!Item_InitializeLoot(item, class_name, position, vel, time_to_live))
- {
- return NULL;
- }
- return item;
-}
-
-bool Item_InitializeLoot(entity item, string class_name, vector position,
- vector vel, float time_to_live)
-{
- 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);
- if (wasfreed(item))
- {
- return false;
- }
- item.gravity = 1;
- item.velocity = vel;
- SUB_SetFade(item, time + time_to_live, 1);
- return true;
-}
-
-bool Item_IsLoot(entity item)
-{
- return item.m_isloot;
-}
-
-void Item_SetLoot(entity item, bool loot)
-{
- item.m_isloot = loot;
-}
-
-bool Item_IsExpiring(entity item)
-{
- return item.m_isexpiring;
-}
-
-void Item_SetExpiring(entity item, bool expiring)
-{
- item.m_isexpiring = expiring;
-}
-
-// Compatibility spawn functions
-
-// FIXME: in Quake this is green armor, in Xonotic maps it is an armor shard
-SPAWNFUNC_ITEM(item_armor1, ITEM_ArmorSmall)
-
-SPAWNFUNC_ITEM(item_armor25, ITEM_ArmorMega)
-
-SPAWNFUNC_ITEM(item_armor_large, ITEM_ArmorMega)
-
-SPAWNFUNC_ITEM(item_health1, ITEM_HealthSmall)
-
-SPAWNFUNC_ITEM(item_health25, ITEM_HealthMedium)
-
-SPAWNFUNC_ITEM(item_health_large, ITEM_HealthBig)
-
-SPAWNFUNC_ITEM(item_health100, ITEM_HealthMega)
-
-SPAWNFUNC_ITEM(item_quad, ITEM_Strength)