]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'Lyberta/OKRPCSpawnFix' into Lyberta/StandaloneOverkillWeapons
authorLyberta <lyberta@lyberta.net>
Sat, 13 Jan 2018 03:44:05 +0000 (06:44 +0300)
committerLyberta <lyberta@lyberta.net>
Sat, 13 Jan 2018 03:44:05 +0000 (06:44 +0300)
1  2 
qcsrc/common/mutators/mutator/overkill/sv_overkill.qc

index c2ca5cd995798d41d8d5e243f655112e9fdeb9ec,2b9dcd55074cdbd243be2b0fc4746a47de804b5d..9f9da48c8d98a52a1fcda6a0b17ccdf4ec6d70bf
@@@ -37,9 -37,9 +37,9 @@@ REGISTER_MUTATOR(ok, expr_evaluate(auto
                WEP_RPC.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
                WEP_HMG.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
  
 -              WEP_SHOTGUN.mdl = "ok_shotgun";
 -              WEP_MACHINEGUN.mdl = "ok_mg";
 -              WEP_VORTEX.mdl = "ok_sniper";
 +              //WEP_SHOTGUN.mdl = "ok_shotgun";
 +              //WEP_MACHINEGUN.mdl = "ok_mg";
 +              //WEP_VORTEX.mdl = "ok_sniper";
        }
  
        MUTATOR_ONREMOVE
@@@ -122,31 -122,48 +122,31 @@@ MUTATOR_HOOKFUNCTION(ok, ForbidThrowCur
  
  MUTATOR_HOOKFUNCTION(ok, PlayerPreThink)
  {
 -      if(game_stopped)
 +      if (game_stopped)
 +      {
                return;
 -
 +      }
        entity player = M_ARGV(0, entity);
 -
 -      if(IS_DEAD(player) || !IS_PLAYER(player) || STAT(FROZEN, player))
 +      if (!IS_PLAYER(player) || IS_DEAD(player) || STAT(FROZEN, player))
 +      {
                return;
 -
 -      if(PHYS_INPUT_BUTTON_ATCK2(player) && time >= player.jump_interval)
 -      if( !forbidWeaponUse(player)
 -              || (round_handler_IsActive() && !round_handler_IsRoundStarted()) )
 +      }
 +      if (!PHYS_INPUT_BUTTON_ATCK2(player) || forbidWeaponUse(player) ||
 +              !(round_handler_IsActive() && !round_handler_IsRoundStarted()))
        {
 -              player.jump_interval = time + WEP_CVAR_PRI(blaster, refire) * W_WeaponRateFactor(player);
 -              makevectors(player.v_angle);
 -
 -              for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
 +              return;
 +      }
 +      // Allow secondary blaster during countdown.
 +      for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
 +      {
 +              .entity weaponentity = weaponentities[slot];
 +              Weapon weapon = player.(weaponentity).m_weapon;
 +              if (weapon == WEP_Null && slot != 0)
                {
 -                      .entity weaponentity = weaponentities[slot];
 -
 -                      if(player.(weaponentity).m_weapon == WEP_Null && slot != 0)
 -                              continue;
 -
 -                      Weapon oldwep = player.(weaponentity).m_weapon;
 -                      player.(weaponentity).m_weapon = WEP_BLASTER;
 -                      W_Blaster_Attack(
 -                              player,
 -                              weaponentity,
 -                              WEP_BLASTER.m_id | HITTYPE_SECONDARY,
 -                              WEP_CVAR_SEC(vaporizer, shotangle),
 -                              WEP_CVAR_SEC(vaporizer, damage),
 -                              WEP_CVAR_SEC(vaporizer, edgedamage),
 -                              WEP_CVAR_SEC(vaporizer, radius),
 -                              WEP_CVAR_SEC(vaporizer, force),
 -                              WEP_CVAR_SEC(vaporizer, speed),
 -                              WEP_CVAR_SEC(vaporizer, spread),
 -                              WEP_CVAR_SEC(vaporizer, delay),
 -                              WEP_CVAR_SEC(vaporizer, lifetime)
 -                      );
 -                      player.(weaponentity).m_weapon = oldwep;
 +                      continue;
                }
 +              weapon.wr_think(weapon, player, weaponentity, 2);
        }
 -
        PHYS_INPUT_BUTTON_ATCK2(player) = false;
  }
  
@@@ -172,51 -189,6 +172,6 @@@ MUTATOR_HOOKFUNCTION(ok, PlayerWeaponSe
        }
  }
  
- void self_spawnfunc_weapon_hmg(entity this) { spawnfunc_weapon_hmg(this); }
- void self_spawnfunc_weapon_rpc(entity this) { spawnfunc_weapon_rpc(this); }
- MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn)
- {
-       entity ent = M_ARGV(0, entity);
-       if(autocvar_g_powerups)
-       if(autocvar_g_overkill_powerups_replace)
-       {
-               if(ent.classname == "item_strength")
-               {
-                       entity wep = new(weapon_hmg);
-                       setorigin(wep, ent.origin);
-                       setmodel(wep, MDL_OK_HMG);
-                       wep.ok_item = true;
-                       wep.noalign = Item_ShouldKeepPosition(ent);
-                       wep.cnt = ent.cnt;
-                       wep.team = ent.team;
-                       wep.respawntime = g_pickup_respawntime_superweapon;
-                       wep.pickup_anyway = true;
-                       wep.spawnfunc_checked = true;
-                       setthink(wep, self_spawnfunc_weapon_hmg);
-                       wep.nextthink = time + 0.1;
-                       return true;
-               }
-               else if(ent.classname == "item_shield")
-               {
-                       entity wep = new(weapon_rpc);
-                       setorigin(wep, ent.origin);
-                       setmodel(wep, MDL_OK_RPC);
-                       wep.ok_item = true;
-                       wep.noalign = Item_ShouldKeepPosition(ent);
-                       wep.cnt = ent.cnt;
-                       wep.team = ent.team;
-                       wep.respawntime = g_pickup_respawntime_superweapon;
-                       wep.pickup_anyway = true;
-                       wep.spawnfunc_checked = true;
-                       setthink(wep, self_spawnfunc_weapon_rpc);
-                       wep.nextthink = time + 0.1;
-                       return true;
-               }
-       }
- }
  bool ok_HandleItemWaypoints(entity e)
  {
        if(!autocvar_g_overkill_itemwaypoints)
@@@ -249,15 -221,48 +204,48 @@@ MUTATOR_HOOKFUNCTION(ok, FilterItem
  {
        entity item = M_ARGV(0, entity);
  
-       if(item.ok_item)
+       if (item.ok_item)
+       {
                return false;
+       }
+       if (!autocvar_g_powerups || !autocvar_g_overkill_powerups_replace)
+       {
+               return true;
+       }
+       if (item.classname == "item_strength")
+       {
+               entity wep = new(weapon_hmg);
+               setorigin(wep, item.origin);
+               wep.ok_item = true;
+               wep.noalign = Item_ShouldKeepPosition(item);
+               wep.cnt = item.cnt;
+               wep.team = item.team;
+               wep.respawntime = g_pickup_respawntime_superweapon;
+               wep.pickup_anyway = true;
+               wep.spawnfunc_checked = true;
+               Item_Initialize(wep, "weapon_hmg");
+               return true;
+       }
+       else if (item.classname == "item_shield")
+       {
+               entity wep = new(weapon_rpc);
+               setorigin(wep, item.origin);
+               wep.ok_item = true;
+               wep.noalign = Item_ShouldKeepPosition(item);
+               wep.cnt = item.cnt;
+               wep.team = item.team;
+               wep.respawntime = g_pickup_respawntime_superweapon;
+               wep.pickup_anyway = true;
+               wep.spawnfunc_checked = true;
+               Item_Initialize(wep, "weapon_rpc");
+               return true;
+       }
        return true;
  }
  
  MUTATOR_HOOKFUNCTION(ok, SetStartItems, CBC_ORDER_LAST)
  {
 -      WepSet ok_start_items = (WEPSET(MACHINEGUN) | WEPSET(VORTEX) | WEPSET(SHOTGUN));
 +      WepSet ok_start_items = (WEPSET(OVERKILL_MACHINEGUN) | WEPSET(OVERKILL_VORTEX) | WEPSET(OVERKILL_SHOTGUN));
  
        if(WEP_RPC.weaponstart > 0) { ok_start_items |= WEPSET(RPC); }
        if(WEP_HMG.weaponstart > 0) { ok_start_items |= WEPSET(HMG); }
@@@ -287,4 -292,3 +275,4 @@@ MUTATOR_HOOKFUNCTION(ok, SetModname
        M_ARGV(0, string) = "Overkill";
        return true;
  }
 +