From 9d24ad4f095c66c8ddabced1f9afdf7e0d6bab9d Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 16 Jan 2016 01:05:08 +1000 Subject: [PATCH] Lower range of magnet item pickups, and greatly reduce range of picking up other buffs, also enable magnet buff by default --- mutators.cfg | 5 ++-- qcsrc/common/mutators/mutator/buffs/buffs.qc | 28 +++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/mutators.cfg b/mutators.cfg index 931e4dff9..4675b009f 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -351,9 +351,10 @@ set g_buffs_inferno_burntime_target_time 5 "seconds of burn given g_buffs_infern 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)" // ============== diff --git a/qcsrc/common/mutators/mutator/buffs/buffs.qc b/qcsrc/common/mutators/mutator/buffs/buffs.qc index ae786657b..0b3f4eedb 100644 --- a/qcsrc/common/mutators/mutator/buffs/buffs.qc +++ b/qcsrc/common/mutators/mutator/buffs/buffs.qc @@ -45,6 +45,7 @@ float autocvar_g_buffs_inferno_burntime_target_time; 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; @@ -887,17 +888,24 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) 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) -- 2.39.2