public static void PolluteAir(User user)
 {
     for (int i = 0; i < 50; i++)
     {
         WorldObjectManager.TryToAdd(WorldObjectManager.GetTypeFromName("APGenObject"), user, World.GetTopPos(World.GetRandomLandPos().XZ) + Vector3i.Up, Quaternion.Identity);
     }
 }
Esempio n. 2
0
        public override Result OnAreaValid(Player player, Vector3i position, Quaternion rotation)
        {
            Deed deed = PropertyManager.FindNearbyDeedOrCreate(player.User, position.XZ);

            foreach (var plot in WorldObject.GetOccupiedPropertyPositions(typeof(StarterCampObject), position, rotation))
            {
                PropertyManager.Claim(deed.Id, player.User, player.User.Inventory, plot);
            }

            var camp      = WorldObjectManager.TryToAdd(typeof(CampsiteObject), player.User, position, rotation, false);
            var stockpile = WorldObjectManager.TryToAdd(typeof(TinyStockpileObject), player.User, position + rotation.RotateVector(Vector3i.Right * 3), rotation, false);

            player.User.OnWorldObjectPlaced.Invoke(camp);
            player.User.Markers.Add(camp.Position3i + Vector3i.Up, camp.UILinkContent());
            player.User.Markers.Add(stockpile.Position3i + Vector3i.Up, stockpile.UILinkContent());
            var storage   = camp.GetComponent <PublicStorageComponent>();
            var changeSet = new InventoryChangeSet(storage.Inventory);

            PlayerDefaults.GetDefaultCampsiteInventory().ForEach(x =>
            {
                changeSet.AddItems(x.Key, x.Value, storage.Inventory);
            });
            changeSet.Apply();
            return(Result.Succeeded);
        }
Esempio n. 3
0
        public override InteractResult OnActLeft(InteractionContext context)
        {
            // if I target a pipe with the wrench, I transform it to a connector set to input
            if (context.HasBlock && context.Block is BaseTransportPipeBlock && Utils.SearchForConnectedInventory(context.BlockPosition.Value) != null)
            {
                //Removing the block and add the connector
                World.DeleteBlock(context.BlockPosition.Value);
                ConnectorObject connector = WorldObjectManager.TryToAdd <ConnectorObject>(context.Player.User, context.BlockPosition.Value, Quaternion.Identity);
                // If the conenctor can't be added just reset the action
                if (connector == null)
                {
                    World.SetBlock(context.Block.GetType(), context.BlockPosition.Value);
                    return(InteractResult.NoOp);
                }
                // I instanciate the connector info with the info from the pipe
                TransportPipeInfo info = null;
                if (TransportPipeManager.pipesInfo.TryGetValue(context.BlockPosition.Value, out info))
                {
                    connector.info = info;
                    context.Player.SendTemporaryMessage($"Set to input");
                    connector.mode = CONNECTOR_MODE.Input;

                    BurnCalories(context.Player);
                    UseDurability(1.0f, context.Player);

                    return(InteractResult.Success);
                }
                else
                {
                    // If the pipe don't contains any info I recreate the linker from the pipe and reset the action
                    connector.Destroy();
                    World.SetBlock(context.Block.GetType(), context.BlockPosition.Value);
                    Utils.RecreateLinker(context.BlockPosition.Value, new TransportPipeLinker());
                }
            }
            // If I use the wrench on a connector
            if (context.HasTarget && context.Target is ConnectorObject)
            {
                // I process the config inside the connector class
                (context.Target as ConnectorObject).ProcessConfig(context);
                BurnCalories(context.Player);
                UseDurability(1.0f, context.Player);
                return(InteractResult.Success);
            }
            return(InteractResult.NoOp);
        }
        public override Result OnAreaValid(Player player, Vector3i position, Quaternion rotation)
        {
            Result authAtPosOne = AuthManager.IsAuthorized(position, player.User);
            Result authAtPosTwo = AuthManager.IsAuthorized((position + rotation.RotateVector(Vector3i.Right * 3)).Round, player.User);

            if (!authAtPosOne.Success)
            {
                return(authAtPosOne);
            }
            else if (!authAtPosTwo.Success)
            {
                return(authAtPosTwo);
            }

            Deed deed = PropertyManager.FindNearbyDeedOrCreate(player.User, position.XZ);
            var  dist = position.XZ - World.GetPropertyPos(position.XZ) - (World.PropertyPlotLength / 2);

            if (dist.x == 0 || dist.y == 0)
            {
                dist = rotation.RotateVector(new Vector3i(1, 0, 1)).XZi;
            }
            dist = new Vector2i(Math.Sign(dist.x), Math.Sign(dist.y));
            Vector2i.XYIter(2).ForEach(x => PropertyManager.Claim(deed.Id, player.User, position.XZ + (new Vector2i(dist.x * x.x, dist.y * x.y) * World.PropertyPlotLength)));

            var camp      = WorldObjectManager.TryToAdd(typeof(CampsiteObject), player.User, position, rotation, false);
            var stockpile = WorldObjectManager.TryToAdd(typeof(TinyStockpileObject), player.User, position + rotation.RotateVector(Vector3i.Right * 3), rotation, false);

            player.User.OnWorldObjectPlaced.Invoke(camp);
            player.User.Markers.Add(camp.Position3i + Vector3i.Up, camp.UILinkContent());
            player.User.Markers.Add(stockpile.Position3i + Vector3i.Up, stockpile.UILinkContent());
            var storage   = camp.GetComponent <PublicStorageComponent>();
            var changeSet = new InventoryChangeSet(storage.Inventory);

            PlayerDefaults.GetDefaultCampsiteInventory().ForEach(x =>
            {
                changeSet.AddItems(x.Key, x.Value, storage.Inventory);
            });
            changeSet.Apply();
            return(Result.Succeeded);
        }