#pragma once
+#include <common/mutators/base.qh>
+
#include "buffs.qh"
-#include "../instagib/_mod.qh"
+void buffs_Initialize();
+
+AUTOCVAR(g_buffs, int, -1, "Enable buffs, -1: enabled but no auto location or replacing powerups, 1: enabled and can replace them");
+
+REGISTER_MUTATOR(buffs, autocvar_g_buffs)
+{
+ MUTATOR_ONADD
+ {
+ buffs_Initialize();
+ }
+}
bool autocvar_g_buffs_effects;
float autocvar_g_buffs_waypoint_distance;
float autocvar_g_buffs_medic_rot;
float autocvar_g_buffs_medic_max;
float autocvar_g_buffs_medic_regen;
-float autocvar_g_buffs_medic_heal_amount = 15;
-float autocvar_g_buffs_medic_heal_delay = 1;
-float autocvar_g_buffs_medic_heal_range = 400;
float autocvar_g_buffs_vengeance_damage_multiplier;
float autocvar_g_buffs_bash_force;
float autocvar_g_buffs_bash_force_self;
float autocvar_g_buffs_disability_speed;
float autocvar_g_buffs_disability_rate;
float autocvar_g_buffs_disability_weaponspeed;
-float autocvar_g_buffs_speed_speed;
-float autocvar_g_buffs_speed_rate;
-float autocvar_g_buffs_speed_weaponspeed;
-float autocvar_g_buffs_speed_damage_take;
-float autocvar_g_buffs_speed_regen;
float autocvar_g_buffs_vampire_damage_steal;
-float autocvar_g_buffs_invisible_alpha;
float autocvar_g_buffs_jump_height;
float autocvar_g_buffs_inferno_burntime_factor;
float autocvar_g_buffs_inferno_burntime_min_time;
// ammo
.float buff_ammo_prev_infitems;
.int buff_ammo_prev_clipload;
-// invisible
-.float buff_invisible_prev_alpha;
-// medic
-.float buff_medic_healtime;
-// disability
-.float buff_disability_time;
-.float buff_disability_effect_time;
// flight
.float buff_flight_oldgravity;
+.bool buff_flight_crouchheld;
// common buff variables
.float buff_effect_delay;
.float buff_activetime;
.bool buff_activetime_updated;
.entity buff_waypoint;
-.int oldbuffs; // for updating effects
+.entity oldbuffs; // for updating effects
.float buff_shield; // delay for players to keep them from spamming buff pickups
.entity buff_model; // controls effects (TODO: make csqc)
-const vector BUFF_MIN = ('-16 -16 0');
-const vector BUFF_MAX = ('16 16 60');
+float buff_Available(entity buff);
-// client side options
-.float cvar_cl_buffs_autoreplace;
+void buff_RemoveAll(entity actor, int removal_type);
-float buff_Available(entity buff);
+entity buff_FirstFromFlags(entity actor);