Ejemplo n.º 1
0
        public static Parcel CreateParcel(int level, int size, bool placeholder)
        {
            List <Parcel> parcels = Treasure.CreateParcelSet(level, size, placeholder);
            int           num     = Session.Random.Next() % parcels.Count;

            return(parcels[num]);
        }
Ejemplo n.º 2
0
        public static PlotPoint AutoBuild(Map map, AutoBuildData data)
        {
            PlotPoint plotPoint = new PlotPoint(string.Concat(map.Name, " Delve"))
            {
                Details = "This delve was automatically generated.",
                Element = new MapElement(map.ID, Guid.Empty)
            };
            int           level   = data.Level;
            List <Parcel> parcels = Treasure.CreateParcelSet(data.Level, Session.Project.Party.Size, false);

            foreach (MapArea area in map.Areas)
            {
                PlotPoint _encounter = new PlotPoint(area.Name);
                switch (Session.Random.Next() % 8)
                {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                {
                    _encounter.Element = DelveBuilder.get_encounter(map, area, data);
                    break;
                }

                case 6:
                {
                    _encounter.Element = DelveBuilder.get_encounter(map, area, data);
                    break;
                }

                case 7:
                {
                    _encounter.Element = DelveBuilder.get_encounter(map, area, data);
                    break;
                }
                }
                int num = 0;
                switch (Session.Random.Next() % 8)
                {
                case 0:
                case 1:
                {
                    num = 0;
                    break;
                }

                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                {
                    num = 1;
                    break;
                }

                case 7:
                {
                    num = 2;
                    break;
                }
                }
                for (int i = 0; i != num; i++)
                {
                    if (parcels.Count == 0)
                    {
                        level   = Math.Min(30, level + 1);
                        parcels = Treasure.CreateParcelSet(level, Session.Project.Party.Size, false);
                    }
                    int    num1 = Session.Random.Next() % parcels.Count;
                    Parcel item = parcels[num1];
                    parcels.RemoveAt(num1);
                    _encounter.Parcels.Add(item);
                }
                plotPoint.Subplot.Points.Add(_encounter);
            }
            return(plotPoint);
        }
Ejemplo n.º 3
0
        public static PlotPoint AutoBuild(Map map, AutoBuildData data)
        {
            PlotPoint pp = new PlotPoint(map.Name + " Delve");

            pp.Details = "This delve was automatically generated.";
            pp.Element = new MapElement(map.ID, Guid.Empty);

            int           parcel_level = data.Level;
            List <Parcel> parcels      = Treasure.CreateParcelSet(data.Level, Session.Project.Party.Size, false);

            foreach (MapArea ma in map.Areas)
            {
                PlotPoint point = new PlotPoint(ma.Name);

                switch (Session.Random.Next() % 8)
                {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    // Encounter
                    point.Element = get_encounter(map, ma, data);
                    break;

                case 6:
                    // Trap
                    point.Element = get_encounter(map, ma, data);
                    break;

                case 7:
                    // Skill challenge
                    point.Element = get_encounter(map, ma, data);
                    break;
                }

                // Treasure parcels
                int parcel_count = 0;
                switch (Session.Random.Next() % 8)
                {
                case 0:
                case 1:
                    // No parcels
                    parcel_count = 0;
                    break;

                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                    // One parcel
                    parcel_count = 1;
                    break;

                case 7:
                    // Two parcels
                    parcel_count = 2;
                    break;
                }

                for (int n = 0; n != parcel_count; ++n)
                {
                    if (parcels.Count == 0)
                    {
                        // Generate a new list of parcels of the next level
                        parcel_level = Math.Min(30, parcel_level + 1);
                        parcels      = Treasure.CreateParcelSet(parcel_level, Session.Project.Party.Size, false);
                    }

                    int    index = Session.Random.Next() % parcels.Count;
                    Parcel p     = parcels[index];
                    parcels.RemoveAt(index);

                    point.Parcels.Add(p);
                }

                pp.Subplot.Points.Add(point);
            }

            return(pp);
        }