11 public void AdvanceSec(
int a)
16 this.AdvanceMin(base.sec / 60);
22 public void AdvanceMin(
int a)
24 EClass.game.sessionMin += a;
25 EClass.player.stats.mins += a;
29 while (base.min >= 60)
34 EClass.screen.RefreshGrading();
36 else if (base.min % 3 == 2)
38 EClass.screen.RefreshGrading();
40 if (
EClass._map.footmarks.Count > 0)
42 for (
int i =
EClass._map.footmarks.Count - 1; i >= 0; i--)
46 if (footmark.remaining <= 0)
49 if (detail !=
null && detail.footmark == footmark)
51 detail.footmark =
null;
52 footmark.pos.cell.TryDespawnDetail();
54 EClass._map.footmarks.RemoveAt(i);
58 EClass.player.countNewline++;
59 if (
EClass.player.countNewline >
EClass.core.config.game.newlineCount)
62 EClass.player.countNewline = 0;
64 EClass.screen.pcOrbit.OnChangeMin();
67 zoneEvent.minElapsed += a;
72 public void AdvanceHour()
85 if (!this.shaken &&
EClass.rnd(24) == 0 && !
EClass._zone.IsRegion)
87 Msg.Say(
"earthquake");
88 Shaker.ShakeCam(
"earthquake", 1f);
91 EClass.scene.OnChangeHour();
92 EClass.world.weather.OnChangeHour();
93 EClass.player.OnAdvanceHour();
94 EClass.game.quests.OnAdvanceHour();
97 EClass._zone.Region.CheckRandomSites();
99 foreach (
Chara chara
in EClass.game.cards.globalCharas.Values)
101 if (!chara.IsPCParty && chara.currentZone !=
EClass.game.activeZone && chara.trait.UseGlobalGoal)
103 if (chara.global.goal ==
null && !chara.IsPCFaction)
106 globalGoalAdv.SetOwner(chara);
107 globalGoalAdv.Start();
109 if (chara.global.goal !=
null)
111 chara.global.goal.AdvanceHour();
115 EClass.pc.RecalculateFOV();
121 if (
EClass.rnd(30) == 0 &&
EClass.game.cards.listPackage.Count <= 2)
123 this.ShipRandomPackages();
125 if (base.month == 10)
129 if (base.month == 11)
139 public void AdvanceDay()
144 EClass.player.stats.days++;
145 if (
EClass.player.stats.days >= 90)
147 Tutorial.Reserve(
"death_penalty",
null);
154 EClass.world.CreateDayData();
156 if (!
EClass.player.prayed &&
EClass.pc.Evalue(1655) > 0)
162 EClass.player.OnAdvanceDay();
163 EClass.game.relations.UpdateRelations();
164 EClass.pc.faction.OnAdvanceDay();
167 if (!chara.IsPCFaction &&
EClass.rnd(10) == 0 && (chara.isDead || chara.currentZone ==
null || chara.currentZone.id ==
"somewhere"))
169 chara.SetHomeZone(
EClass.world.region.ListTowns().RandomItem<
Zone>());
170 chara.Revive(
null,
false);
174 if (
EClass.pc.homeZone !=
null &&
EClass.pc.homeZone.mainFaction ==
EClass.pc.faction)
178 if (
EClass.player.stats.days >= 7 &&
EClass.game.cards.globalCharas.Find(
"fiama").currentZone ==
EClass.game.StartZone &&
EClass.game.quests.GetGlobal(
"fiama_starter_gift") ==
null && !
EClass.game.quests.IsCompleted(
"fiama_starter_gift"))
180 EClass.game.quests.Add(
"fiama_starter_gift",
"fiama");
182 if (
EClass.game.quests.IsCompleted(
"exploration"))
185 num = flags.daysAfterQuestExploration;
186 flags.daysAfterQuestExploration = num + 1;
187 if (
EClass.player.flags.daysAfterQuestExploration >= 7 && !
EClass.player.flags.magicChestSent)
189 EClass.player.flags.magicChestSent =
true;
191 thing.SetStr(53,
"letter_magic_chest");
194 ThingGen.Create(
"container_magic", -1, -1),
197 EClass.world.SendPackage(p);
203 public void AdvanceMonth()
205 int month = base.month;
206 base.month = month + 1;
212 EClass.player.stats.months++;
213 EClass.player.nums.OnAdvanceMonth();
214 if (base.month % 2 == 0)
218 EClass._map.RefreshAllTiles();
221 if (thing.renderer.hasActor)
223 thing.renderer.RefreshSprite();
226 EClass.pc.faction.OnAdvanceMonth();
230 public void AdvanceYear()
232 int year = base.year;
233 base.year = year + 1;
234 EClass.player.wellWished =
false;
235 EClass.player.nums.OnAdvanceYear();
236 EClass.world.SendPackage(
ThingGen.Create(
"gift_newyear", -1, -1));
240 public void ShipGoods()
242 Thing container_shipping =
EClass.game.cards.container_shipping;
243 if (container_shipping.things.Count == 0)
251 List<Thing> list =
new List<Thing>();
252 List<string> list2 =
new List<string>();
254 if (zone ==
null || zone.branch ==
null)
256 zone =
EClass.pc.homeZone;
259 shippingResult.rawDate =
EClass.world.date.GetRaw(0);
260 shippingResult.uidZone = zone.uid;
261 shippingResult.total =
EClass.player.stats.shipMoney;
262 shippingResult.hearthLv = zone.branch.lv;
263 shippingResult.hearthExp = zone.branch.exp;
264 shippingResult.debt =
EClass.player.debt;
265 foreach (
Thing thing
in container_shipping.things)
267 if (thing.trait.CanBeShipped)
269 int price = thing.GetPrice(CurrencyType.Money,
true, PriceType.Shipping,
null);
270 int num5 = price * thing.Num;
273 num2 +=
EClass.rndHalf(thing.Num * Mathf.Min(15 + price, 10000) / 100 + 1);
287 shippingResult.hearthExpGained = num2;
288 EClass.pc.homeBranch.log.Add(
Msg.Say(
"shipped_collect"),
null);
289 foreach (
string text
in list2)
291 EClass.pc.homeBranch.log.Add(text,
null);
293 int shippingBonus =
EClass.player.stats.GetShippingBonus(
EClass.player.stats.shipMoney);
294 EClass.player.stats.shipNum += num;
295 EClass.player.stats.shipMoney += num3;
296 int shippingBonus2 =
EClass.player.stats.GetShippingBonus(
EClass.player.stats.shipMoney);
297 if (shippingBonus2 > shippingBonus)
299 num4 = shippingBonus2 - shippingBonus;
301 foreach (
Thing thing2
in list)
310 thing3 =
ThingGen.Create(
"money", -1, -1).SetNum(num3);
314 thing4 =
ThingGen.Create(
"money2", -1, -1).SetNum(num4);
316 if (thing3 !=
null && thing4 !=
null)
318 text2 =
"_and".lang(thing3.Name, thing4.Name,
null,
null,
null);
321 else if (thing3 !=
null || thing4 !=
null)
323 text2 = ((thing3 !=
null) ? thing3 : thing4).Name;
325 EClass.pc.homeBranch.log.Add(
Msg.Say((text2 ==
"") ?
"shipped_none" :
"shipped", num.ToString() ??
"", text2,
null,
null), FontColor.Good);
326 EClass.player.shippingResults.Add(shippingResult);
327 EClass.player.showShippingResult =
EClass.core.config.game.showShippingResult;
328 for (
int i = 0; i < EClass.player.shippingResults.Count - 10; i++)
330 EClass.player.shippingResults.RemoveAt(0);
332 zone.branch.statistics.ship += num3;
333 zone.branch.ModExp(num2);
336 EClass.pc.Pick(thing3,
true,
true);
340 EClass.pc.Pick(thing4,
true,
true);
345 public void ShipPackages()
347 Thing container_deliver =
EClass.game.cards.container_deliver;
348 if (container_deliver.things.Count == 0)
353 while (container_deliver.things.Count > 0)
358 Debug.Log(
"too many tries");
362 foreach (
Thing thing
in container_deliver.things)
364 int @
int = thing.GetInt(102,
null);
368 thing.SetInt(102, 0);
374 for (
int i = container_deliver.things.Count - 1; i >= 0; i--)
376 Thing c = container_deliver.things[i];
379 if (thing2.things.IsFull(0))
384 EClass.world.SendPackage(thing2);
386 EClass.pc.faction.TryPayBill(bill);
391 public void ShipLetter()
394 int lutz =
EClass.player.flags.lutz;
395 if (
EClass.player.stats.days >= 2 && lutz <= 0)
399 else if (
EClass.player.stats.days >= 5 && lutz <= 1)
403 else if (
EClass.player.stats.days >= 8 && lutz <= 2)
407 else if (
EClass.player.stats.days >= 11 && lutz <= 3)
411 else if (
EClass.player.stats.days >= 15 && lutz <= 4)
415 else if (
EClass.player.stats.days >= 17 && lutz <= 5)
419 else if (
EClass.player.stats.days >= 30 && lutz <= 6)
423 else if (
EClass.player.stats.days >= 50 && lutz <= 7)
429 EClass.player.flags.lutz = num;
431 thing.SetStr(53,
"lutz_" + num.ToString());
432 EClass.world.SendPackage(thing);
437 public void ShipRandomPackages()
439 GameDate.<>c__DisplayClass11_0 CS$<>8__locals1;
440 CS$<>8__locals1.box =
ThingGen.CreateCardboardBox(-1);
442 bool flag =
EClass.pc.homeBranch.policies.IsActive(2708, -1);
443 if (
EClass.rnd(
EClass.debug.enable ? 1 : 100) == 0 && !
EClass.player.flags.statueShipped)
445 EClass.player.flags.statueShipped =
true;
446 GameDate.<ShipRandomPackages>g__Add|11_0(
"statue_weird", 1, ref CS$<>8__locals1);
449 else if (
EClass.rnd(10) == 0)
451 GameDate.<ShipRandomPackages>g__Add|11_0(
"234", 1, ref CS$<>8__locals1);
453 else if (
EClass.rnd(5) == 0)
455 GameDate.<ShipRandomPackages>g__AddThing|11_1(
ThingGen.CreateFromCategory(
"junk", -1), 1, ref CS$<>8__locals1);
457 else if (
EClass.rnd(10) == 0)
459 GameDate.<ShipRandomPackages>g__AddThing|11_1(
ThingGen.CreateFromTag(
"garbage", -1), 1, ref CS$<>8__locals1);
461 else if (
EClass.rnd(8) == 0)
464 traitContainer.PutChara(cardRow.id);
467 else if (
EClass.rnd(8) == 0)
469 GameDate.<ShipRandomPackages>g__Add|11_0(
"plat", 1 +
EClass.rnd(4), ref CS$<>8__locals1);
472 else if (
EClass.rnd(8) == 0)
474 GameDate.<ShipRandomPackages>g__Add|11_0(
"money2", 1 +
EClass.rnd(4), ref CS$<>8__locals1);
479 string id =
"trash2";
486 id = ((
EClass.rnd(3) == 0) ?
"529" :
"1170");
497 GameDate.<ShipRandomPackages>g__Add|11_0(
id, 1, ref CS$<>8__locals1);
501 EClass.world.SendPackage(CS$<>8__locals1.box);
507 internal static void <ShipRandomPackages>g__Add|11_0(
string id,
int num, ref
GameDate.<>c__DisplayClass11_0 A_2)
509 GameDate.<ShipRandomPackages>g__AddThing|11_1(
ThingGen.Create(
id, -1, -1), num, ref A_2);
514 internal static void <ShipRandomPackages>g__AddThing|11_1(
Thing t,
int num, ref
GameDate.<>c__DisplayClass11_0 A_2)
525 public const int minPerRound = 5;