X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Fbuffs%2Fsv_buffs.qc;h=4df42406d064fd9f737f0947efa522aa79aecd26;hb=490deb4b29d5bdf744172c07013c0f689a8c39b9;hp=900d16a45d20e6acf376fd297ea922d76b80bc81;hpb=ad1fc0314153e3f183fc36892aa86126fa269c5e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc index 900d16a45..4df42406d 100644 --- a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc +++ b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc @@ -6,7 +6,7 @@ .float buff_time = _STAT(BUFF_TIME); void buffs_DelayedInit(entity this); -AUTOCVAR(g_buffs, int, -1, _("Enable buffs, -1: enabled but no auto location or replacing powerups, 1: enabled and can replace them")); +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) { @@ -114,7 +114,7 @@ void buff_SetCooldown(entity this, float cd) void buff_Respawn(entity this) { - if(gameover) { return; } + if(game_stopped) return; vector oldbufforigin = this.origin; this.velocity = '0 0 200'; @@ -149,7 +149,7 @@ void buff_Respawn(entity this) void buff_Touch(entity this, entity toucher) { - if(gameover) { return; } + if(game_stopped) return; if(ITEM_TOUCH_NEEDKILL()) { @@ -248,7 +248,7 @@ void buff_Think(entity this) this.oldbuffs = this.buffs; } - if(!gameover) + if(!game_stopped) if((round_handler_IsActive() && !round_handler_IsRoundStarted()) || time >= game_starttime) if(!this.buff_activetime_updated) { @@ -269,7 +269,7 @@ void buff_Think(entity this) } if(this.buff_activetime) - if(!gameover) + if(!game_stopped) if((round_handler_IsActive() && !round_handler_IsRoundStarted()) || time >= game_starttime) { this.buff_activetime = max(0, this.buff_activetime - frametime); @@ -350,7 +350,7 @@ void buff_Init(entity this) this.solid = SOLID_TRIGGER; this.flags = FL_ITEM; this.bot_pickup = true; - this.bot_pickupevalfunc = commodity_pickupevalfunc; + this.bot_pickupevalfunc = generic_pickupevalfunc; this.bot_pickupbasevalue = 1000; IL_PUSH(g_items, this); setthink(this, buff_Think); @@ -595,10 +595,6 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerJump) if(player.buffs & BUFF_JUMP.m_itemid) M_ARGV(1, float) = autocvar_g_buffs_jump_height; - - if(player.buffs & BUFF_FLIGHT.m_itemid) - if(!IS_JUMP_HELD(player) && PHYS_INPUT_BUTTON_CROUCH(player)) - player.gravity *= -1; } MUTATOR_HOOKFUNCTION(buffs, MonsterMove) @@ -632,7 +628,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerDies) MUTATOR_HOOKFUNCTION(buffs, PlayerUseKey, CBC_ORDER_FIRST) { - if(MUTATOR_RETURNVALUE || gameover) { return; } + if(MUTATOR_RETURNVALUE || game_stopped) return; entity player = M_ARGV(0, entity); @@ -651,7 +647,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerUseKey, CBC_ORDER_FIRST) MUTATOR_HOOKFUNCTION(buffs, ForbidThrowCurrentWeapon) { - if(MUTATOR_RETURNVALUE || gameover) { return; } + if(MUTATOR_RETURNVALUE || game_stopped) return; entity player = M_ARGV(0, entity); if(player.buffs & BUFF_SWAPPER.m_itemid) @@ -791,11 +787,24 @@ MUTATOR_HOOKFUNCTION(buffs, WeaponSpeedFactor) M_ARGV(0, float) *= autocvar_g_buffs_disability_weaponspeed; } +.bool buff_flight_crouchheld; + MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) { entity player = M_ARGV(0, entity); - if(gameover || IS_DEAD(player)) { return; } + if(game_stopped || IS_DEAD(player)) return; + + if(player.buffs & BUFF_FLIGHT.m_itemid) + { + if(!PHYS_INPUT_BUTTON_CROUCH(player)) + player.buff_flight_crouchheld = false; + else if(!player.buff_flight_crouchheld) + { + player.buff_flight_crouchheld = true; + player.gravity *= -1; + } + } if(time < player.buff_disability_time) if(time >= player.buff_disability_effect_time) @@ -853,8 +862,14 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) } if(player.buffs & BUFF_AMMO.m_itemid) - if(player.clip_size) - player.clip_load = player.(weapon_load[PS(player).m_switchweapon.m_id]) = player.clip_size; + { + for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) + { + .entity weaponentity = weaponentities[slot]; + if(player.(weaponentity).clip_size) + player.(weaponentity).clip_load = player.(weaponentity).(weapon_load[player.(weaponentity).m_switchweapon.m_id]) = player.(weaponentity).clip_size; + } + } if((player.buffs & BUFF_INVISIBLE.m_itemid) && (player.oldbuffs & BUFF_INVISIBLE.m_itemid)) if(player.alpha != autocvar_g_buffs_invisible_alpha) @@ -881,9 +896,17 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) player.buff_ammo_prev_infitems = (player.items & IT_UNLIMITED_WEAPON_AMMO); player.items |= IT_UNLIMITED_WEAPON_AMMO; - if(player.clip_load) - player.buff_ammo_prev_clipload = player.clip_load; - player.clip_load = player.(weapon_load[PS(player).m_switchweapon.m_id]) = player.clip_size; + if(player.buffs & BUFF_AMMO.m_itemid) + { + for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) + { + .entity weaponentity = weaponentities[slot]; + if(player.(weaponentity).clip_load) + player.(weaponentity).buff_ammo_prev_clipload = player.(weaponentity).clip_load; + if(player.(weaponentity).clip_size) + player.(weaponentity).clip_load = player.(weaponentity).(weapon_load[player.(weaponentity).m_switchweapon.m_id]) = player.(weaponentity).clip_size; + } + } } BUFF_ONREM(BUFF_AMMO) @@ -893,8 +916,15 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) else player.items &= ~IT_UNLIMITED_WEAPON_AMMO; - if(player.buff_ammo_prev_clipload) - player.clip_load = player.buff_ammo_prev_clipload; + if(player.buffs & BUFF_AMMO.m_itemid) + { + for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) + { + .entity weaponentity = weaponentities[slot]; + if(player.(weaponentity).buff_ammo_prev_clipload) + player.(weaponentity).clip_load = player.(weaponentity).buff_ammo_prev_clipload; + } + } } BUFF_ONADD(BUFF_INVISIBLE)