public static Parcel CreateParcel(int value, bool placeholder) { Parcel parcel = new Parcel() { Name = string.Concat("Items worth ", value, " GP"), Value = value }; if (!placeholder) { parcel.Details = Treasure.RandomMundaneItem(value); } return(parcel); }
public static string RandomMundaneItem(int value) { List <string> strs = Treasure.create_from_gp(value); string str = ""; foreach (string str1 in strs) { if (str != "") { str = string.Concat(str, "; "); } str = string.Concat(str, str1); } return(str); }
private static List <string> create_from_gp(int gp) { int i; int _value = 0; int num = 0; List <string> strs = new List <string>(); if (Session.Random.Next() % 4 != 0) { for (i = gp; i != 0; i = i - _value * num) { _value = Treasure.get_value(i); if (_value == 0) { break; } num = i / _value; string str = Treasure.random_item_type(num != 1, true); if (num != 1) { object[] objArray = new object[] { num, " ", str, " (worth ", _value, " GP each)" }; strs.Add(string.Concat(objArray)); } else { string str1 = (TextHelper.StartsWithVowel(str) ? "an" : "a"); object[] objArray1 = new object[] { str1, " ", str, " (worth ", _value, " GP)" }; strs.Add(string.Concat(objArray1)); } } if (i != 0) { strs.Add(Treasure.coins(i)); } } else { strs.Add(Treasure.coins(gp)); } for (int j = 0; j != strs.Count; j++) { strs[j] = TextHelper.Capitalise(strs[j], false); } return(strs); }
private static Parcel get_magic_item(int level, bool placeholder) { int num = Math.Min(30, level); if (placeholder) { return(new Parcel(Treasure.get_placeholder_item(level))); } MagicItem magicItem = Treasure.RandomMagicItem(num); if (magicItem != null) { return(new Parcel(magicItem)); } Parcel parcel = new Parcel() { Details = string.Concat("Random magic item (level ", num, ")") }; return(parcel); }
public static List <Parcel> CreateParcelSet(int level, int size, bool placeholder_items) { List <Parcel> parcels = new List <Parcel>(); switch (size) { case 1: { parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); break; } case 2: { parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); break; } case 3: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); break; } case 4: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); break; } case 5: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); break; } case 6: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); break; } case 7: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); break; } case 8: { parcels.Add(Treasure.get_magic_item(level + 4, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 3, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 2, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); parcels.Add(Treasure.get_magic_item(level + 1, placeholder_items)); break; } } List <int> gpValues = Treasure.get_gp_values(level); if (size == 1) { gpValues.RemoveAt(0); } foreach (int gpValue in gpValues) { parcels.Add(Treasure.CreateParcel(gpValue, placeholder_items)); } return(parcels); }
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); }