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]); }
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); }
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); }