Ejemplo n.º 1
0
 private void OnWeaponFired(BaseProjectile projectile, BasePlayer player)
 {
     if (!HasInfiniteAmmo(player))
     {
         return;
     }
     projectile.GetItem().condition = projectile.GetItem().info.condition.max;
     if (projectile.primaryMagazine.contents > 0)
     {
         return;
     }
     projectile.primaryMagazine.contents = projectile.primaryMagazine.capacity;
     projectile.SendNetworkUpdateImmediate();
 }
Ejemplo n.º 2
0
        object OnReloadWeapon(BasePlayer player, BaseProjectile projectile)
        {
#if DEBUG
            Puts("OnReloadWeapon called!");
#endif
            Item item = projectile.GetItem();
            Dictionary <string, object> weaponStats = null;

            if (weaponContainer.ContainsKey(item.info.shortname))
            {
#if DEBUG
                Puts("OnReloadWeapon: Adding weapon ");
#endif
                weaponStats = weaponContainer[item.info.shortname] as Dictionary <string, object>;
            }
            if (!(bool)weaponStats["settingactive"])
            {
#if DEBUG
                Puts($"OnReloadWeapon: Weapon type {item.info.shortname} inactive.");
#endif
                return(null);
            }

            if (hasRight(player, "maxammo") || hasRight(player, "all"))
            {
#if DEBUG
                Puts($"OnReloadWeapon: Weapon type {item.info.shortname} active - giving maxammo.");
#endif
                projectile.primaryMagazine.capacity = (int)weaponStats["maxammo"];
                projectile.SendNetworkUpdate();
            }
            return(null);
        }
Ejemplo n.º 3
0
 private void OnWeaponFired(BaseProjectile projectile, BasePlayer player)
 {
     if (!permission.UserHasPermission(player.userID.ToString(), "infinite.ammo"))
     {
         return;
     }
     if (!HasInfiniteAmmo(player))
     {
         return;
     }
     projectile.GetItem().condition = projectile.GetItem().info.condition.max;
     if (projectile.primaryMagazine.contents > 0)
     {
         return;
     }
     projectile.primaryMagazine.contents = projectile.primaryMagazine.capacity;
     projectile.SendNetworkUpdateImmediate();
 }
Ejemplo n.º 4
0
        private void DisableTaserBehaviour(BaseProjectile aBaseProjectile)
        {
            Item theItem = aBaseProjectile.GetItem();

            if (theItem != null)
            {
                theItem.name = null;
            }
            aBaseProjectile.canUnloadAmmo            = true;
            aBaseProjectile.primaryMagazine.contents = 0;
            aBaseProjectile.primaryMagazine.capacity = 16;
            TaserController theController = aBaseProjectile.GetComponent <TaserController>();

            if (theController)
            {
                UnityEngine.Object.Destroy(theController);
            }
            aBaseProjectile.SendNetworkUpdateImmediate();
        }
Ejemplo n.º 5
0
        private void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod, ProtoBuf.ProjectileShoot projectiles)
        {
            /* TODO :
             *      - Remove retarded cone of fire/bloom
             *      - Put back the old crazy recoil of Ak, f**k noobs
             */

            var item = projectile.GetItem();

            Debug($"SHOOT : {projectile.GetAimCone()} {projectile.aimCone} {projectile.aimSway}");

            var shotgunsNerfed = new int[2, 2]
            {
                { -1009492144, 30 },            // Shotgun Pump
                { 191795897, 30 }               // Double Barrel
            };

            //Debug("Shooting with : " + item.info.shortname + " (" + item.info.itemid + ")");

            for (var x = 0; x < shotgunsNerfed.Length / 2; x++)
            {
                if (shotgunsNerfed[x, 0] != item.info.itemid)
                {
                    continue;
                }
                Chance = shotgunsNerfed[x, 1];
                Random = UnityEngine.Random.Range(0, 100);
                //Debug("Shotgun fail : " + Random + " of " + Chance);
                if (Chance <= Random)
                {
                    return;
                }
                item.LoseCondition(10f);
                break;
            }

            if (item.info.itemid != 2077983581)
            {
                return;
            }
            OnPipeShotgunUse(player, item);
        }
Ejemplo n.º 6
0
        private void EnableTaserBehaviour(BaseProjectile aBaseProjectile)
        {
            Item theItem = aBaseProjectile.GetItem();

            if (theItem != null)
            {
                theItem.name = GetText(I18N_TASER, theItem.GetOwnerPlayer()?.UserIDString);
            }
            aBaseProjectile.canUnloadAmmo            = false;
            aBaseProjectile.primaryMagazine.contents = 1;
            aBaseProjectile.primaryMagazine.capacity = 0;
            TaserController theController = aBaseProjectile.GetComponent <TaserController>();

            if (theController)
            {
                UnityEngine.Object.Destroy(theController);
            }
            aBaseProjectile.gameObject.AddComponent <TaserController>().Config = config;
            aBaseProjectile.SendNetworkUpdateImmediate();
        }
Ejemplo n.º 7
0
        private object OnWeaponReload(BaseProjectile projectile, BasePlayer player)
        {
            if (configData.Debug)
            {
                Puts("OnReloadWeapon called!");
            }
            Item        item        = projectile.GetItem();
            WeaponStats weaponStats = new WeaponStats();

            if (configData.Weapons.ContainsKey(item.info.shortname))
            {
                if (configData.Debug)
                {
                    Puts("OnReloadWeapon: Adding weapon ");
                }
                weaponStats = configData.Weapons[item.info.shortname];
            }
            if (!weaponStats.settingactive)
            {
                if (configData.Debug)
                {
                    Puts($"OnReloadWeapon: Weapon type {item.info.shortname} inactive.");
                }
                return(null);
            }

            double maxammo = HasExtender(projectile) ? Math.Ceiling(weaponStats.maxammo * 1.25) : weaponStats.maxammo;

            if (HasRight(player, "maxammo") || HasRight(player, "all"))
            {
                if (configData.Debug)
                {
                    Puts($"OnReloadWeapon: Weapon type {item.info.shortname} active - giving maxammo.");
                }
                projectile.primaryMagazine.capacity = (int)maxammo;
                projectile.SendNetworkUpdate();
            }
            return(null);
        }
Ejemplo n.º 8
0
 private void OnWeaponFired(BaseProjectile projectile, BasePlayer player)
 {
     projectile.GetItem().condition = projectile.GetItem().info.condition.max;
     projectile.SendNetworkUpdateImmediate();
 }
Ejemplo n.º 9
0
 void UnlimitedAmmo(BaseProjectile projectile, BasePlayer player)
 {
     projectile.GetItem().condition = projectile.GetItem().info.condition.max;
     projectile.primaryMagazine.contents = projectile.primaryMagazine.capacity;
     projectile.SendNetworkUpdateImmediate();
 }
Ejemplo n.º 10
0
        private bool IsAmmoBlocked(BasePlayer owner, BaseProjectile proj)
        {
            Debug($"IsAmmoBlocked called on player \"{owner.displayName}\" for weapon \"{proj.GetItem()?.info.displayName.english ?? "Unknown"}\"");
            List <Item> currentAmmo = owner.inventory.FindItemIDs(proj.primaryMagazine.ammoType.itemid).ToList();
            Item        newAmmo     = null;

            Debug($"CurrentAmmo count = {currentAmmo.Count}");
            if (currentAmmo.Count == 0)
            {
                List <Item> newAmmoList = new List <Item>();
                owner.inventory.FindAmmo(newAmmoList, proj.primaryMagazine.definition.ammoTypes);
                Debug(
                    $"CurrentAmmo count equals 0. NewAmmoList count = {newAmmoList.Count}\nTrying to get the first item.");
                if (newAmmoList.Count == 0)
                {
                    return(false);
                }
                try
                {
                    newAmmo = newAmmoList[0];
                    Debug($"Successfully got item {newAmmo.info.displayName.english}");
                }
                catch (Exception e)
                {
                    PrintError($"Error in attempt to get the item from NewAmmoList. {e.GetType()}:\n{e.Message}");
                    return(false);
                }
            }
            else
            {
                Debug($"CurrentAmmo count doesn't equals 0. Getting NewAmmo out of it.");
                try
                {
                    newAmmo = currentAmmo[0];
                    Debug($"Successfully got item {newAmmo.info.displayName.english}");
                }
                catch (Exception e)
                {
                    PrintError($"Error in attempt to get the item from the CurrentAmmo list. {e.GetType()}:\n{e.Message}");
                    return(false);
                }
            }
            return(config.BlockedAmmo.Contains(newAmmo.info.displayName.english) || config.BlockedAmmo.Contains(newAmmo.info.shortname));
        }
Ejemplo n.º 11
0
 private void OnWeaponFired(BaseProjectile projectile, BasePlayer player)
 {
     projectile.GetItem().condition = projectile.GetItem().info.condition.max;
     projectile.SendNetworkUpdateImmediate();
 }