set g_buffs_swapper 0 "swapper buff: press dropweapon to switch places with a nearby enemy"
set g_buffs_swapper_time 60 "swapper buff carry time"
set g_buffs_swapper_range 1500 "maximum range of swapping with enemy"
-set g_buffs_magnet 0 "magnet buff: greatly increased item pickup range"
+set g_buffs_magnet 1 "magnet buff: greatly increased item pickup range"
set g_buffs_magnet_time 60 "magnet buff carry time"
-set g_buffs_magnet_range_item 450 "item pickup range"
+set g_buffs_magnet_range_item 350 "range around player that items are automatically picked up (excludes other buffs)"
+set g_buffs_magnet_range_buff 200 "range around player that only buffs are picked up (drops magnet buff)"
// ==============
float autocvar_g_buffs_inferno_damagemultiplier;
float autocvar_g_buffs_swapper_range;
float autocvar_g_buffs_magnet_range_item;
+float autocvar_g_buffs_magnet_range_buff = 200;
// ammo
.float buff_ammo_prev_infitems;
if(self.buffs & BUFF_MAGNET.m_itemid)
{
- vector pickup_size = '1 1 1' * autocvar_g_buffs_magnet_range_item;
- for(other = world; (other = findflags(other, flags, FL_ITEM)); )
- if(boxesoverlap(self.absmin - pickup_size, self.absmax + pickup_size, other.absmin, other.absmax))
+ vector pickup_size;
+ FOREACH_ENTITY_FLAGS(flags, FL_ITEM,
{
- setself(other);
- other = this;
- if(self.touch)
- self.touch();
- other = self;
- setself(this);
- }
+ if(it.buffs)
+ pickup_size = '1 1 1' * autocvar_g_buffs_magnet_range_buff;
+ else
+ pickup_size = '1 1 1' * autocvar_g_buffs_magnet_range_item;
+
+ if(boxesoverlap(self.absmin - pickup_size, self.absmax + pickup_size, it.absmin, it.absmax))
+ {
+ setself(other);
+ other = this;
+ if(self.touch)
+ self.touch();
+ other = self;
+ setself(this);
+ }
+ });
}
if(self.buffs & BUFF_AMMO.m_itemid)